001/*
002* file CcView.java
003*
004* Licensed Materials - Property of IBM
005* Restricted Materials of IBM
006* 
007* com.ibm.rational.wvcm.stp.cc.CcView
008*
009* (C) Copyright IBM Corporation 2004, 2015.  All Rights Reserved. 
010* Note to U.S. Government Users Restricted Rights:  Use, duplication or  
011* disclosure restricted by GSA ADP  Schedule Contract with IBM Corp. 
012*/
013
014package com.ibm.rational.wvcm.stp.cc;
015
016import static com.ibm.rational.wvcm.stpex.StpExBase.PROPERTY_NAMESPACE;
017
018import java.io.File;
019import java.util.List;
020import java.util.Map;
021import java.util.Vector;
022
023import javax.wvcm.Feedback;
024import javax.wvcm.PropertyNameList.PropertyName;
025import javax.wvcm.Resource;
026import javax.wvcm.ResourceList;
027import javax.wvcm.Stream;
028import javax.wvcm.WvcmException;
029
030import com.ibm.rational.wvcm.stp.StpActivity;
031import com.ibm.rational.wvcm.stp.cc.CcFileAreaLockedCallback.CcFileAreaLockInfo;
032import com.ibm.rational.wvcm.stp.cc.CcViewTag.ViewType;
033import com.ibm.rational.wvcm.stpex.StpExEnumeration;
034
035/**
036 * <p>A proxy for a ClearCase view.  ClearCase "view" and WVCM "workspace"
037 * are equivalent terms for the same type of resource. 
038 * </p>
039 * <p>As of the ClearCase 8.0.1.6 release, CM API supports web, dynamic and
040 * snapshot views.
041 * </p>
042 */
043public interface CcView 
044    extends CcDirectory, javax.wvcm.Workspace
045{
046    /** Values for view text mode */
047    enum TextMode implements StpExEnumeration {
048        
049        /**
050         * A transparent interop text mode. The line terminator for text files 
051         * is a single <code>NL</code> character. The view does not transform 
052         * text file line terminators in any way. This is the default text mode 
053         * if no value is set upon view creation.
054         */
055        TRANSPARENT("transparent"),
056        
057        /**
058         * An insert_cr interop text mode. The view converts <code>NL</code> line 
059         * terminators to the <code>CR NL</code> sequence when reading from a VOB,
060         * and <code>CR NL</code> line terminators to single <code>NL</code>
061         * characters when writing to the VOB.
062         */
063        INSERT_CR("insert_cr"),
064        
065        /**
066         * An nl_to_cr interop text mode. The view converts <code>NL</code> line
067         * terminators to <code>CR</code> characters when reading from a VOB, and
068         * <code>CR</code> line terminators to single <code>NL</code> characters
069         * wehn writing to the VOB.
070         */
071        NL_TO_CR("cvt_nl_to_cr"),
072        
073        /**
074         * A strip_cr interop text mode. The view converts <code>CR NL</code> line 
075         * terminators to <code>NL</code> when reading from a VOB, and <code>NL</code> 
076         * line terminators back to the <code>CR NL</code> sequence when writing to the VOB.
077         */
078        STRIP_CR("strip_cr");
079        
080        private String m_name;
081
082        private TextMode(String name) { m_name = name; }
083
084        /* (non-Javadoc)
085         * @see java.lang.Object#toString()
086         */
087        public String toString() { return m_name; }
088    }
089    
090    /** Flags for the <code>doSynchronizeFileAreaDb</code> method */
091    enum SynchronizeFileAreaDbFlag implements StpExEnumeration {
092        
093        /**
094         * Synchronize the web view's client-side vob database with the
095         * correct information from the server. Specifying this flag
096         * requires a server connection.
097         */
098        FILE_AREA_VOB_DB("file-area-vob-db"),
099        
100        /**
101         * Synchronize the web view's client-side modified files database
102         * so that it correctly reflects files that have been modified
103         * as a result of checkouts or hijacks. Specifying this flag
104         * does <i>not</i> require a server connection.
105         */
106        FILE_AREA_MODIFIED_FILES_DB("file-area-modified-files-db");
107    
108        private String m_name;
109
110        private SynchronizeFileAreaDbFlag(String name) { m_name = name; }
111
112        /* (non-Javadoc)
113         * @see java.lang.Object#toString()
114         */
115        public String toString() { return m_name; }
116    }
117    
118    /** Flags for the doFindMergeCandidates methods */
119    enum FindmergeFlag {
120        
121        /**
122         * Just search the directory itself when searching for merge candidates,
123         * do not search the child elements
124         */
125        DIRECTORY_ONLY,        
126        
127        /**
128         * Follow VOB symbolic links when searching for merge candidates
129         */
130        FOLLOW_SYMLINKS                
131    }
132    
133    /**
134     *<p>
135     * Binds a CcActivity proxy to a CqRecord proxy without making the
136     * activity the current one for this view.
137     * </p>
138     * <p>
139     * NOTE: Unlike most API methods, the optional property request will be executed
140     * on the returned StpActivity, not the CcView proxy on which the method
141     * was invoked.
142     * </p>
143     * 
144     * <code>act</code> can either be a CcActivity proxy or a CqRecord proxy.
145     * <p>
146     * If <code>act</code> is a CcActivity proxy and the associated project is
147     * not CQ enabled, this operation simply executes the provided property
148     * request -- if any.  If the project is CQ enabled, it additionally validates
149     * that the bound CQ record is in an active state.
150     * </p>
151     * <p>
152     * If <code>act</code> is a CqRecord proxy, this operation is more
153     * involved.  First, <code>act</code> is automatically transitioned to an
154     * active state.  If this transition involves required fields, the caller
155     * may be prompted to provide values for those fields.  Next a CcActivity 
156     * resource is created in this view's stream and is bound to
157     * <code>act</code>.  
158     * </p>
159     * @param act the activity to work on - either a CqRecord or CcActivity
160     * @param feedback optional property request
161     * @return new proxy for the StpActivity, with requested properties
162     * @see javax.wvcm.Workspace#CURRENT_ACTIVITY
163     * @see com.ibm.rational.wvcm.stp.StpActivity#BOUND_CC_ACTIVITY
164     * @see com.ibm.rational.wvcm.stp.StpActivity#BOUND_CQ_RECORD
165     */
166    public StpActivity doBindActivity(StpActivity act, Feedback feedback) throws WvcmException;
167
168    /**
169     * <p>Create a new ClearCase web view based on this CcView proxy.
170     * </p>
171     * <p>
172     * Preconditions:
173     * </p>
174     * <ul>
175     * <li>This proxy must have a file-based location representing the desired
176     * path of the root directory of the file area on the local machine.
177     * The directory must not yet exist.</li>
178     * <li>The location's leaf name (the directory name) will be used as
179     * the view tag of the new view.  A view having that view-tag must not
180     * already exist.</li>
181     * <li>To create a view associated with a UCM stream, specify that stream
182     * by setting this view proxy's STREAM property.</li>
183     * </ul>
184     * <p>
185     * Postconditions:
186     * </p>
187     * <ul>
188     * <li>A ClearCase web view is created, with the view tag
189     * and local file area as described above.</li>
190     * <li>If the view proxy's STREAM property was set, the view will be
191     * associated with that stream.</li>
192     * <li>If the view proxy's VIEW_TAG_STRING property was set, the view will
193     * be assigned that tag.  Otherwise, the file area's root directory name
194     * will be used.</li>
195     * </ul>
196     * @throws WvcmException if the preconditions are not met, or if there is an
197     * error creating the view. 
198     */
199    public CcView doCreateCcWebView(Feedback feedback) throws WvcmException;
200
201    /**
202     * <p>Create a new ClearCase dynamic view based on this CcView proxy.
203     * </p>
204     * <p>
205     * Preconditions:
206     * </p>
207     * <ul>
208     * <li>The view proxy's VIEW_TAG_STRING property must be set
209     * to the desired view tag of the new view.  A view having that view 
210     * tag must not already exist.</li>
211     * <li>The view proxy's VIEW_STORAGE_PATH property must be set
212     * to the desired storage path for the new view unless a storage location
213     * is being used.
214     * <li>If a storage location is desired, rather than an explicit path.
215     * then the VIEW_STORAGE_LOCATION property must be set to that storage
216     * location.
217     * <li>To create a view associated with a UCM stream, specify that stream
218     * by setting this view proxy's STREAM property.</li>
219     * <li>The proxy's location is ignored for creation.</li>
220     * </ul>
221     * <p>
222     * Postconditions:
223     * </p>
224     * <ul>
225     * <li>A ClearCase dynamic view is created, with the view tag
226     * and storage path as described above.</li>
227     * <li>If the view proxy's STREAM property was set, the view will be
228     * associated with that stream.</li>
229     * 
230     * </ul>
231     * @throws WvcmException if the preconditions are not met, or if there is an
232     * error creating the view. 
233     */
234    public CcView doCreateCcDynamicView(Feedback feedback) throws WvcmException;
235    
236    /**
237     * <p>Create a new ClearCase automatic view based on this CcView proxy.
238     * </p>
239     * <p>
240     * Preconditions:
241     * </p>
242     * <ul>
243     * <li>The view proxy's VIEW_TAG_STRING property must be set
244     * to the desired view tag of the new view.  A view having that view 
245     * tag must not already exist.</li>
246     * <li>The view proxy's VIEW_STORAGE_PATH property must be set
247     * to the desired storage path for the new view.
248     * <li>To create a view associated with a UCM stream, specify that stream
249     * by setting this view proxy's STREAM property.</li>
250     * <li>The proxy's location is ignored for creation.</li>
251     * </ul>
252     * <p>
253     * Postconditions:
254     * </p>
255     * <ul>
256     * <li>A ClearCase automatic view is created, with the view tag
257     * and storage path as described above.</li>
258     * <li>If the view proxy's STREAM property was set, the view will be
259     * associated with that stream.</li>
260     * 
261     * </ul>
262     * @throws WvcmException if the preconditions are not met, or if there is an
263     * error creating the view. 
264     */
265    public CcView doCreateCcAutomaticView(Feedback feedback) throws WvcmException;
266    
267    /**
268     * <p>Create a new ClearCase snapshot view based on this CcView proxy.
269     * </p>
270     * <p>
271     * Preconditions:
272     * </p>
273     * <ul>
274     * <li>The view proxy's VIEW_TAG_STRING property must be set
275     * to the desired view tag of the new view.  A view having that view 
276     * tag must not already exist.</li>
277     * <li>This proxy must have a file-based location representing the desired
278     * path of the root directory of the file area on the local machine.
279     * The directory must not yet exist.</li>
280     * <li>The view proxy's VIEW_STORAGE_PATH property must be set
281     * to the desired storage path for the new view unless a storage location
282     * or colocated storage is being used.
283     * <li>If a storage location is desired, rather than an explicit path,
284     * or a colocated storage, then the VIEW_STORAGE_LOCATION property 
285     * must be set to that storage location.  
286     * <li>If a colocated server storage is desired, rather than a storage
287     * location, or an explicit path, a global path should be used for the
288     * file-based location and COLOCATED_STORAGE property must be set to true.
289     * </li>
290     * <li>To create a view associated with a UCM stream, specify that stream
291     * by setting this view proxy's STREAM property.</li>     
292     * </ul>
293     * <p>
294     * Postconditions:
295     * </p>
296     * <ul>
297     * <li>A ClearCase snapshot view is created, with the view tag, storage path
298     * and local file area as described above.</li>
299     * <li>If the view proxy's STREAM property was set, the view will be
300     * associated with that stream.</li> 
301     * 
302     * </ul>
303     * @throws WvcmException if the preconditions are not met, or if there is an
304     * error creating the view. 
305     */     
306    public CcView doCreateCcSnapshotView(Feedback feedback) throws WvcmException;
307    
308    /**
309     * <p>The rebase command reconfigures a stream by adding, dropping, or 
310     * replacing one or more of the stream's foundation baselines. The file and
311     * directory versions selected by those new baselines (and thus their 
312     * associated activities) then become visible in the stream's views.
313     * </p>
314     * <p>
315     * Preconditions:
316     * </p>
317     * <ul>
318     * <li>The baseline is not from the stream that is being rebased.</li>
319     * <li>The baseline is labeled. Baselines created by deliver operations are
320     * not labeled by default.</li>
321     * <li>Another rebase operation is not in progress.</li>
322     * <li>A deliver operation is not in progress.</li>
323     * </ul>
324     * Additional rules apply to integration streams and development
325     * streams in selecting a baseline:
326     * <ul>
327     * <li>An integration stream can be rebased only to a baseline created in 
328     * another project or to an imported or initial baseline of that project.</li>
329     * <li>A development stream can be rebased to a baseline that meets one 
330     * of the following criteria:
331     *      <ul>
332     *      <li>The baseline was created in its parent stream.</li>
333     *      <li>The baseline is in its parent stream's foundation.</li>
334     *      <li>The baseline is an ancestor of the development stream's parent
335     *       foundation baseline and created on the same stream as the parent's
336     *       foundation baseline.</li>
337     *      <li>The baseline was created in a stream other than its parent 
338     *       stream and is contained in its parent stream. A baseline is 
339     *       contained in another baseline if all changes in the first baseline
340     *       are included in the second baseline.</li> 
341     *      </ul>
342     * </li>
343     * </ul>
344     * <p>
345     * Postconditions:
346     * </p>
347     * <ul>
348     * <li>A rebase is started on the specified view. Use one of the other 
349     * methods to resume, complete, or cancel the rebase.</li>
350     * <li>The activity is set to the rebase activity.</li>
351     * <li>If <code>baselineList</code> is specified and those baselines meet 
352     * the preconditions above, the rebase will be started to those baselines.</li>
353     * <li>If <code>baselineList</code> is not specified, the rebase will be 
354     * started to the source stream's recommended baselines.</li>
355     * <li>If <code>doAutoMerge</code> is true, elements needing merge will 
356     * attempt to automatically merge on the server.</li> 
357     * </ul>
358     * 
359     * @param baselineList optional list of baselines to include
360     * @param doAutoMerge tells the rebase operation to attempt auto merges
361     * @param integrationListener optional listener to get feedback on operation
362     * @param updateListener optional listener to get feedback on view update 
363     * changes
364     * @param feedback optional property request
365     * @return new proxy to the view with requested properties
366     * 
367     * @throws WvcmException if there is an error starting the rebase operation
368     */
369    public CcView doStartRebase(
370            List<CcBaseline> baselineList,
371            boolean doAutoMerge,
372            CcListener integrationListener,
373            CcListener updateListener,
374            Feedback feedback) throws WvcmException;
375    
376    /**
377     * <p>
378     * Restarts a rebase operation from the point at which it has been 
379     * suspended. A rebase operation can be interrupted or when it encounters an
380     * external error or condition that requires more information. However, you
381     * cannot resume a rebase operation that has been successfully halted with
382     * the <code>CcView.doCancelRebase()</code> operation.
383     * </p>
384     * 
385     * @param doAutoMerge tells the rebase operation to attempt auto merges
386     * @param integrationListener optional listener to get feedback on operation
387     * @param updateListener optional listener to get feedback on view update 
388     * changes
389     * @param feedback optional property request
390     * @return new proxy to the view with requested properties
391     * @throws WvcmException if there is an error resuming the rebase operation
392     */
393    public CcView doResumeRebase(
394            boolean doAutoMerge,
395            CcListener integrationListener,
396            CcListener updateListener,
397            Feedback feedback) throws WvcmException;
398    
399
400    /**
401     * <p>
402     * Completes a rebase operation taking the following actions:
403     * </p>
404     * <ul>
405     * <li>Resumes the rebase operation</li>
406     * <li>Verifies that needed merges were made</li>
407     * <li>Checks in any versions that are checked out</li>
408     * <li>Records changes in the change set for the rebase activity</li>
409     * </ul>
410     * 
411     * @param integrationListener optional listener to get feedback on operation
412     * @param updateListener optional listener to get feedback on view update 
413     * changes
414     * @param feedback optional property request
415     * @return new proxy to the view with requested properties
416     * @throws WvcmException if there is an error completing the 
417     * rebase operation
418     */
419    public CcView doCompleteRebase(
420            CcListener integrationListener, 
421            CcListener updateListener,            
422            Feedback feedback) throws WvcmException;      
423    
424    /**
425     * <p>
426     * Cancels a rebase operation and restores the stream's previous 
427     * configuration. Deletes the integration activity and any 
428     * versions created by the rebase operation that are not yet checked in. 
429     * </p>
430     * <p>
431     * Preconditions:
432     * </p>
433     * <ul>
434     * <li>None of the versions created in the integration activity can be
435     * checked in.</li>
436     * </ul>
437     * 
438     * @param integrationListener optional listener to get feedback on operation
439     * @param updateListener optional listener to get feedback on view update 
440     * changes
441     * @param feedback optional property request
442     * @return new proxy to the view with requested properties
443     * @throws WvcmException if there is an error canceling the 
444     * rebase operation
445     */
446    public CcView doCancelRebase(
447            CcListener integrationListener, 
448            CcListener updateListener,            
449            Feedback feedback) throws WvcmException;    
450
451    /**
452     * <p>
453     * The deliver command lets you deliver work from a source stream to a 
454     * target stream in the same or a different project. This method delivers
455     * all activities in the stream that have changed since the last deliver 
456     * operation from the stream. The target stream is determined by the 
457     * <code>CcView</code> integration view passed to this method.
458     * </p>
459     * <p>
460     * Preconditions:
461     * </p>
462     * <ul>
463     * <li>A deliver operation is not currently in progress.</li>
464     * <li>A rebase operation is not currently in progress.</li>
465     * <li>The checkout states must match the project's UCM policies.</li>
466     * <li>Delivering to a non-default target stream is subject to 
467     * restrictions. Refer to the ClearCase cleartool deliver man page
468     * for details.</li>
469     * </ul>
470     * <p>
471     * Postconditions:
472     * </p>
473     * <ul>
474     * <li>A deliver is started on the specified view. Use one of the other 
475     * deliver methods to resume, complete, or cancel the deliver.</li>
476     * <li>The deliver operation creates a UCM integration activity and sets 
477     * it as the current activity in the integration view. This activity 
478     * records the change set for the deliver operation.</li>
479     * </ul>
480     * 
481     * @param integrationView the target view to deliver to
482     * @param doAutoMerge tells the deliver operation to attempt auto merges
483     * @param integrationListener optional listener to get feedback on operation
484     * @param feedback optional property request
485     * @return new proxy to the view with requested properties
486     * @throws WvcmException if there is an error starting the deliver operation
487     */
488    public CcView doStartDeliver(
489            CcView integrationView, 
490            boolean doAutoMerge,
491            CcListener integrationListener, 
492            Feedback feedback) throws WvcmException;    
493  
494    /**
495     * <p>
496     * Deliver the specified baselines from the source stream associated with 
497     * this view to the target stream associated with the specified integration 
498     * view. A development stream can deliver activities or baselines, but an
499     * integration stream can deliver only baselines. Refer to the ClearCase
500     * cleartool deliver man page for more details.
501     * </p>
502     * <p>
503     * Preconditions:
504     * </p>
505     * <ul>
506     * <li>A deliver operation is not currently in progress.</li>
507     * <li>A rebase operation is not currently in progress.</li>
508     * <li>The checkout states must match the project's UCM policies.</li>
509     * <li>Delivering to a non-default target stream is subject to 
510     * restrictions. Refer to the ClearCase cleartool deliver man page
511     * for details.</li>
512     * </ul>
513     * <p>
514     * Postconditions:
515     * </p>
516     * <ul>
517     * <li>A deliver is started on the specified view. Use one of the other 
518     * deliver methods to resume, complete, or cancel the deliver.</li>
519     * <li>The deliver operation creates a UCM integration activity and sets 
520     * it as the current activity in the integration view. This activity 
521     * records the change set for the deliver operation.</li>
522     * </ul>
523     * 
524     * @param integrationView the target view to deliver to
525     * @param baselineList list of baselines to deliver
526     * @param doAutoMerge tells the deliver operation to attempt auto merges
527     * @param integrationListener optional listener to get feedback on operation
528     * @param feedback optional property request
529     * @return new proxy to the view with requested properties
530     * @throws WvcmException if there is an error starting the deliver operation
531     */
532    public CcView doStartDeliverBaselines(            
533            CcView integrationView,
534            ResourceList<CcBaseline> baselineList,
535            boolean doAutoMerge,
536            CcListener integrationListener, 
537            Feedback feedback) throws WvcmException; 
538    
539    /**
540     * <p>
541     * Deliver the specified activities from the source stream associated with 
542     * this view to the target stream associated with the specified integration 
543     * view. The list of activities must be self-consistent: the 
544     * activities specified must not depend on the inclusion of any unspecified 
545     * activities. Refer to the ClearCase cleartool deliver man page for more
546     * details.
547     * </p>
548     * <p>
549     * Preconditions:
550     * </p>
551     * <ul>
552     * <li>A deliver operation is not currently in progress.</li>
553     * <li>A rebase operation is not currently in progress.</li>
554     * <li>The list of activities must be self-consistent.</li>
555     * <li>The checkout states must match the project's UCM policies.</li>
556     * <li>Delivering to a non-default target stream is subject to 
557     * restrictions. Refer to the ClearCase cleartool deliver man page
558     * for details.</li>
559     * </ul>
560     * <p>
561     * Postconditions:
562     * </p>
563     * <ul>
564     * <li>A deliver is started on the specified view. Use one of the other 
565     * deliver methods to resume, complete, or cancel the deliver.</li>
566     * <li>The deliver operation creates a UCM integration activity and sets 
567     * it as the current activity in the integration view. This activity 
568     * records the change set for the deliver operation.</li>
569     * </ul>
570     * 
571     * @param integrationView the target view to deliver to
572     * @param activityList optional list of activities to deliver
573     * @param doAutoMerge tells the deliver operation to attempt auto merges
574     * @param integrationListener optional listener to get feedback on operation
575     * @param feedback optional property request
576     * @return new proxy to the view with requested properties
577     * @throws WvcmException if there is an error starting the deliver operation
578     * 
579     */
580    public CcView doStartDeliverActivities(            
581            CcView integrationView,
582            ResourceList<CcActivity> activityList,
583            boolean doAutoMerge,
584            CcListener integrationListener, 
585            Feedback feedback) throws WvcmException;   
586    
587    /**
588     * <p>
589     * In a MultiSite configuration where a team of developers works at a 
590     * remote site, the project's integration stream may be mastered at a 
591     * different replica than the developers' development streams. In this 
592     * situation, the developers cannot complete deliver operations to the 
593     * integration stream. When such a stream mastership situation is 
594     * detected, the deliver operation starts but no versions are merged. 
595     * Instead, the deliver operation is left in a posted state. You must 
596     * periodically find and complete posted deliver operations. The post 
597     * deliver command lets you do such the delivery work from a source 
598     * stream to a target stream in the same or a different project. This 
599     * method delivers all activities in the stream that have changed since 
600     * the last deliver operation from the stream. The target stream is 
601     * determined by the <code>Stream</code> targetStream passed to this 
602     * method.
603     * </p>
604     * <p>
605     * Preconditions:
606     * </p>
607     * <ul>
608     * <li>A deliver operation is not currently in progress.</li>
609     * <li>A rebase operation is not currently in progress.</li>
610     * <li>The checkout states must match the project's UCM policies.</li>
611     * <li>Delivering to a non-default target stream is subject to 
612     * restrictions. Refer to the ClearCase cleartool deliver man page
613     * for details.</li>
614     * </ul>
615     * <p>
616     * Postconditions:
617     * </p>
618     * <ul>
619     * <li>A deliver is started but no versions are merged. Instead, the 
620     * deliver operation is left in a posted state. You must periodically find
621     * and complete posted deliver operations.</li>
622     * </ul>
623     * 
624     * @param targetStream the target stream to deliver to
625     * @param integrationListener optional listener to get feedback on operation
626     * @param feedback optional property request
627     * @return new proxy to the view with requested properties
628     * @throws WvcmException if there is an error starting the deliver operation
629     */
630    public CcView doStartPostDeliver(
631            Stream targetStream, 
632            CcListener integrationListener, 
633            Feedback feedback) throws WvcmException;    
634  
635    /**
636     * <p>
637     * Post deliver the specified baselines from the source stream associated 
638     * with this view to the target stream. A development stream can deliver 
639     * activities or baselines, but an integration stream can deliver only 
640     * baselines. Refer to the ClearCase cleartool deliver man page for more 
641     * details.
642     * </p>
643     * <p>
644     * Preconditions:
645     * </p>
646     * <ul>
647     * <li>A deliver operation is not currently in progress.</li>
648     * <li>A rebase operation is not currently in progress.</li>
649     * <li>The checkout states must match the project's UCM policies.</li>
650     * <li>Delivering to a non-default target stream is subject to 
651     * restrictions. Refer to the ClearCase cleartool deliver man page
652     * for details.</li>
653     * </ul>
654     * <p>
655     * Postconditions:
656     * </p>
657     * <ul>
658     * <li>A deliver is started but no versions are merged. Instead, the 
659     * deliver operation is left in a posted state. You must periodically find
660     * and complete posted deliver operations.</li>
661     * </ul>
662     * 
663     * @param targetStream the target stream to deliver to
664     * @param baselineList list of baselines to deliver
665     * @param integrationListener optional listener to get feedback on operation
666     * @param feedback optional property request
667     * @return new proxy to the view with requested properties
668     * @throws WvcmException if there is an error starting the deliver operation
669     */
670    public CcView doStartPostDeliverBaselines(            
671            Stream targetStream, 
672            ResourceList<CcBaseline> baselineList,
673            CcListener integrationListener, 
674            Feedback feedback) throws WvcmException; 
675    
676    /**
677     * <p>
678     * Post deliver the specified activities from the source stream associated 
679     * with this view to the target stream associated with the specified 
680     * integration view. The list of activities must be self-consistent: the 
681     * activities specified must not depend on the inclusion of any unspecified 
682     * activities. Refer to the ClearCase cleartool deliver man page for more
683     * details.
684     * </p>
685     * <p>
686     * Preconditions:
687     * </p>
688     * <ul>
689     * <li>A deliver operation is not currently in progress.</li>
690     * <li>A rebase operation is not currently in progress.</li>
691     * <li>The list of activities must be self-consistent.</li>
692     * <li>The checkout states must match the project's UCM policies.</li>
693     * <li>Delivering to a non-default target stream is subject to 
694     * restrictions. Refer to the ClearCase cleartool deliver man page
695     * for details.</li>
696     * </ul>
697     * <p>
698     * Postconditions:
699     * </p>
700     * <ul>
701     * <li>A deliver is started but no versions are merged. Instead, the 
702     * deliver operation is left in a posted state. You must periodically find
703     * and complete posted deliver operations.</li>
704     * </ul>
705     * 
706     * @param targetStream the target stream to deliver to
707     * @param activityList optional list of activities to deliver
708     * @param integrationListener optional listener to get feedback on operation
709     * @param feedback optional property request
710     * @return new proxy to the view with requested properties
711     * @throws WvcmException if there is an error starting the deliver operation
712     * 
713     */
714    public CcView doStartPostDeliverActivities(            
715            Stream targetStream, 
716            ResourceList<CcActivity> activityList,
717            CcListener integrationListener, 
718            Feedback feedback) throws WvcmException;  
719    
720    /**
721     * <p>
722     * Resumes a deliver operation from the point at which it was suspended. 
723     * </p>
724     * 
725     * @param integrationView the target view to deliver to
726     * @param integrationListener optional listener to get feedback on operation
727     * @param feedback optional property request
728     * @return new proxy to the view with requested properties
729     * @throws WvcmException if there is an error resuming the deliver operation
730     */    
731    public CcView doResumeDeliver(
732            CcView integrationView,
733            CcListener integrationListener,
734            Feedback feedback) throws WvcmException;    
735
736    /**
737     * <p>
738     * Resets a deliver operation in progress to use the new integration view 
739     * </p>
740     * 
741     * @param integrationView the new integration view
742     * @param integrationListener optional listener to get feedback on operation
743     * @param feedback optional property request
744     * @return new proxy to the view with requested properties
745     * @throws WvcmException if there is an error resuming the deliver operation
746     */     
747    public CcView doResetDeliver(
748            CcView integrationView,
749            CcListener integrationListener,
750            Feedback feedback) throws WvcmException;    
751
752    /**
753     * <p>
754     * Complete in-progress deliver operation taking the following actions:
755     * </p>
756     * <ul>
757     * <li>Verify that all versions in the integration view have been 
758     * successfully merged and that merge conflicts have been resolved.</li>
759     * <li>Check in resulting versions in the integration view.</li>
760     * <li>Unset the integration activity in the integration view.</li>
761     * </ul>
762     * <p>  
763     * If unresolved merge conflicts exist, the deliver operation is suspended.
764     * </p>
765     * 
766     * @param integrationView the target view to deliver to
767     * @param integrationListener optional listener to get feedback on operation
768     * @param mergeElements optional list of client maintained 
769     * <code>CcMergeElement</code>s to allow the operation to cancel any 
770     * checkouts
771     * @param feedback optional property request
772     * @return new proxy to the view with requested properties
773     * @throws WvcmException if there is an error completing the deliver
774     * operation
775     */      
776    public CcView doCompleteDeliver(
777            CcView integrationView,
778            CcListener integrationListener,
779            CcMergeElement[] mergeElements,
780            Feedback feedback) throws WvcmException;
781    
782    /**
783     * <p>
784     * Halt a deliver operation in progress, returning the source and 
785     * destination streams to their states before the deliver operation began. 
786     * Note: This method cannot cancel a deliver operation after the completion
787     * phase has begun. See ClearCase cleartool deliver man page for details.
788     * </p>
789     * 
790     * @param integrationView the target view to deliver to
791     * @param integrationListener optional listener to get feedback on operation
792     * @param mergeElements optional list of client maintained 
793     * <code>CcMergeElement</code>s to allow the operation to cancel any 
794     * checkouts
795     * @param feedback optional property request
796     * @return new proxy to the view with requested properties
797     * @throws WvcmException if there is an error cancelling the deliver 
798     * operation
799     */
800    public CcView doCancelDeliver(
801            CcView integrationView,
802            CcListener integrationListener,
803            CcMergeElement[] mergeElements,
804            Feedback feedback) throws WvcmException;
805    
806    /**
807     * <p>
808     * Runs findmerge command in this view. Searches the specified elements for merge candidates using
809     * the specified VOB resource as a search criteria. The VOB resource can be either a branch type, or
810     * a label type, or a version. Flags further define the search criteria. 
811     * Found merge candidates are returned through the listener.
812     * </p> 
813     * 
814     * @param listener optional listener to get feedback on operation. 
815     * Note: although a listener is not required, that is the only way for a consumer of this method 
816     * to receive the results of the findmerge operation.
817     * @param flags array of flags which specify the behavior of the operation
818     * @param fromVobResource VOB resource to use as a search criteria; Legal argument types include
819     * CcBranchType, CcLabelType and CcVersion
820     * @param feedback optional property request
821     * @return new proxy to the view with requested properties
822     * @throws WvcmException if there is an error completing the findmerge operation 
823     *
824     * @return new proxy to the view with requested properties
825     * @throws WvcmException
826     */
827    public CcView doFindMergeCandidates(
828            CcFindmergeListener listener,
829            FindmergeFlag []flags,
830            CcVobResource fromVobResource,
831            List<CcFile> elements,
832            Feedback feedback) throws WvcmException;
833    
834    /**
835     * <p>
836     * Runs findmerge command in this view. Searches the specified elements for merge candidates using
837     * the specified View resource as a search criteria. Flags further define the search criteria. 
838     * Found merge candidates are returned through the listener.
839     * </p> 
840     * 
841     * @param listener optional listener to get feedback on operation. 
842     * Note: although a listener is not required, that is the only way for a consumer of this method 
843     * to receive the results of the findmerge operation.
844     * @param flags array of flags which specify the behavior of the operation
845     * @param fromViewTag View tag to use as a search criteria; 
846     * @param feedback optional property request
847     * @return new proxy to the view with requested properties
848     * @throws WvcmException if there is an error completing the findmerge operation 
849     *
850     * @return new proxy to the view with requested properties
851     * @throws WvcmException
852     */
853    public CcView doFindMergeCandidates(
854            CcFindmergeListener listener,
855            FindmergeFlag []flags,
856            CcViewTag fromViewTag,
857            List<CcFile> elements,
858            Feedback feedback) throws WvcmException;
859    
860    /**
861     * <p>
862     * Runs findmerge command in this view. The specified activities are used as the search criteria.
863     * Flags further define the search criteria. Found merge candidates are returned through the listener.
864     *
865     * </p> 
866     * 
867     * @param listener optional listener to get feedback on operation. 
868     * Note: although a listener is not required, that is the only way for a consumer of this method 
869     * to receive the results of the findmerge operation.
870     * @param flags array of flags which specify the behavior of the operation
871     * @param activities list of activities whose change sets to search for merge candidates
872     * @param feedback optional property request
873     * @return new proxy to the view with requested properties
874     * @throws WvcmException if there is an error completing the findmerge operation 
875     *
876     */
877    public CcView doFindMergeCandidatesFromChangeSets(
878            CcFindmergeListener listener,
879            FindmergeFlag []flags,
880            List<CcActivity> activities,
881            Feedback feedback) throws WvcmException;
882    
883    /**
884     * <p>Upgrade this web view's file area.</p>
885     * <p>Preconditions:</p>
886     * <ul>
887     * <li>This web view's file area schema version must be older than the
888     * version supported by the currently running CM API file area management
889     * code.
890     * </li>
891     * </ul>
892     * <p>Postconditions:</p>
893     * <ul>
894     * <li>This web view's file area schema will be upgraded to the currently
895     * supported version.</li>
896     * </ul>
897     * <p>This operation has no effect on non-web views, and on web views that
898     * are already compatible.
899     * </p>
900     * @throws WvcmException if the preconditions are not met, or if there is an
901     * error upgrading the file area. 
902     */
903    public CcView doUpgradeFileArea(Feedback feedback) throws WvcmException;
904
905    /**
906     * Work on the specified activity in this CC view.
907     * <code>act</code> can either be a CcActivity proxy or a CqRecord proxy.
908     * <p>
909     * If <code>act</code> is a CcActivity proxy and the associated project is
910     * not CQ enabled, this operation simply makes it the current activity 
911     * in this view.  If the project is CQ enabled, it additionally validates 
912     * that the bound CQ record is in an active state.
913     * </p>
914     * <p>
915     * If <code>act</code> is a CqRecord proxy, this operation is more
916     * involved.  First, <code>act</code> is automatically transitioned to an
917     * active state.  If this transition involves required fields, the caller
918     * may be prompted to provide values for those fields.  Next a CcActivity 
919     * resource is created in this view's stream and is bound to
920     * <code>act</code>.  Finally, it makes the new CC activity resource the
921     * current activity in this view.
922     * </p>
923     * @param act the activity to work on - either a CqRecord or CcActivity
924     * @param feedback optional property request
925     * @return new proxy for this view, with requested properties
926     * @see javax.wvcm.Workspace#CURRENT_ACTIVITY
927     * @see com.ibm.rational.wvcm.stp.StpActivity#BOUND_CC_ACTIVITY
928     * @see com.ibm.rational.wvcm.stp.StpActivity#BOUND_CQ_RECORD
929     */
930    public CcView doWorkOnActivity(StpActivity act, Feedback feedback) throws WvcmException;
931
932    /**
933     * <p>
934     * Transitions the specified activity to the default completed state.
935     * <code>act</code> can either be a CcActivity proxy or a CqRecord proxy.
936     * </p>
937     * <p>
938     * NOTE: Unlike most API methods, the optional property request will be executed
939     * on the returned StpActivity, not the CcView proxy on which the method
940     * was invoked.
941     * </p>
942     * <p>Preconditions:</p>
943     * <ul>
944     * <li><code>act</code> is a bound CqRecord/CcActivity pair in a CQ-enabled
945     * context.</li>
946     * </ul>
947     * <p>Postconditions:</p>
948     * <ul>
949     * <li>If <code>act</code>'s CcActivity has checkouts, the operation is
950     * cancelled and there is no change to the activity.</li>
951     * <li>Transitions <code>act</code>'s CqRecord to the default completed state. 
952     * If this transition involves required fields, the caller may be prompted 
953     * to provide values for those fields.</li>
954     * <li>Unsets <code>act</code>'s CcActivity from all views'
955     * {@link javax.wvcm.Workspace#CURRENT_ACTIVITY} property.</li>
956     * </ul>
957     * @param act the activity to finish
958     * @param feedback optional property request for the activity
959     * @return new proxy for the activity, with requested properties
960     * @throws WvcmException if the preconditions are not met.
961     */
962    public StpActivity doFinishActivity(StpActivity act, Feedback feedback) 
963        throws WvcmException;
964
965    /**
966     * <p>
967     * Synchronize this web view file area's local databases to accurately reflect the 
968     * current state of the file area. The databases available to synchronize are:
969     * </p>
970     * <ul>
971     * <li>VOB database: This contains the loaded vobs in the web view. A server connection
972     * is required to synchronize this database.</li>
973     * <li>Modified files database: This contains the checkouts and hijacks in the web view.
974     * A server connection <i>not</i> required to synchronize this database.</li>
975     * </ul>
976     * @param flags array of flags which specify the databases to synchronize.
977     * @param feedback optional property request for the view
978     * @return A new proxy for this resource, whose properties are specified by feedback.
979     * @throws WvcmException
980     */
981    public CcView doSynchronizeFileAreaDb(SynchronizeFileAreaDbFlag[] flags, Feedback feedback) 
982        throws WvcmException;
983
984    /**
985     * If this view type supports asynchronous refresh (currently only Automatic Views
986     * do this), check to see if a refresh is currently in progress for this view.
987     * This applies to any refresh, not just ones initiated by this client.
988     * @return {@code true} if a refresh is in progress for this view, {@code false} if one
989     * is not or the view does not support asynchronous refresh.
990     * @throws WvcmException
991     */
992    public boolean isRefreshInProgress() throws WvcmException;
993    
994    /**
995     * Register this local web view's file area in the local file area registry.
996     * Web views are registered automatically when created, but may need to be
997     * re-registered if the registry is accidentally deleted, etc.
998     */
999    public void registerFileArea() throws WvcmException;
1000
1001    /**
1002     * Remove this local web view's file area from the local file area registry.
1003     * Once removed, this view will no longer show up when listing local views.
1004     * @see com.ibm.rational.wvcm.stp.cc.CcProvider#getClientViewList(javax.wvcm.PropertyRequestItem.PropertyRequest)
1005     */
1006    public void unregisterFileArea() throws WvcmException;
1007
1008    /**
1009     * If this is a local web or automatic view, the URL of the CCRC WAN server where this
1010     * view's view database resides.
1011     */
1012    PropertyName<String> SERVER_URL =
1013        new PropertyName<String>(PROPERTY_NAMESPACE, "server-url");
1014   
1015    /**
1016     * Get the value of this proxy's {@link #SERVER_URL} property.
1017     * @return this view's server URL
1018     * @throws WvcmException if this proxy doesn't define a value for this property.
1019     */
1020    public String getServerUrl() throws WvcmException;
1021
1022    /**
1023     * Change the URL used to connect to the CCRC WAN server on which this view resides.
1024     * Note: Web and automatic views cannot be moved from one CCRC WAN server to another.
1025     * Use this method only to change the server URL, not to try to connect to
1026     * a different server.
1027     * <p>
1028     * This may be necessary if, for example:
1029     * <ul>
1030     * <li>The CCRC WAN server administrator changes the CCRC WAN server's port number</li>
1031     * <li>The client needs a secure HTTP connection to the CCRC WAN server:
1032     *     "https://..." instead of "http://..."</li>
1033     * <li>The CCRC WAN server is moved to a different internet subdomain</li>
1034     * </ul>
1035     * Once this operation is completed, the existing view proxy instance (as well as any
1036     * proxies for other objects associated with this view) may no longer be usable.
1037     * In that case, a new provider instance (with the updated URL) will have to be created
1038     * and used to instantiate new proxies.  This is especially likely for automatic views.
1039     * @param updatedUrl the updated URL of this view's CCRC WAN server
1040     * @throws WvcmException
1041     */
1042    public void updateServerUrl(String updatedUrl) throws WvcmException;
1043
1044    /**
1045     * This view's uuid as a string.
1046     */
1047    PropertyName<String> VIEW_UUID_STRING =
1048        new PropertyName<String>(PROPERTY_NAMESPACE, "view-uuid-string");
1049  
1050    /**
1051     * Get the value of this proxy's {@link #VIEW_UUID_STRING} property.
1052     * @return this view's uuid
1053     * @throws WvcmException if this proxy doesn't define a value for this property.
1054     */
1055    public String getViewUuidString() throws WvcmException;
1056    
1057    /**
1058     * This view's view tag as a string.
1059     */
1060    PropertyName<String> VIEW_TAG_STRING =
1061        new PropertyName<String>(PROPERTY_NAMESPACE, "view-tag-string");
1062  
1063    /**
1064     * Get the value of this proxy's {@link #VIEW_TAG_STRING} property.
1065     * @return this view's view tag
1066     * @throws WvcmException if this proxy doesn't define a value for this property.
1067     */
1068    public String getViewTagString() throws WvcmException;
1069
1070    /**
1071     * Set the value of this view's {@link #VIEW_TAG_STRING} property.
1072     * This property may only be set at view creation time.
1073     * @param viewTag the view tag for the new view
1074     */
1075    void setViewTagString(String viewTag);
1076   
1077    /**
1078     * This view's view tag as a {@link CcViewTag} resource.
1079     */
1080    PropertyName<CcViewTag> VIEW_TAG =
1081        new PropertyName<CcViewTag>(PROPERTY_NAMESPACE, "view-tag");
1082   
1083    /**
1084     * Get the value of this proxy's {@link #VIEW_TAG} property.
1085     * @return this view's view tag
1086     * @throws WvcmException if this proxy doesn't define a value for this property.
1087     */
1088    public CcViewTag getViewTag() throws WvcmException;
1089   
1090    /** Kind of view to which this tag refers */
1091    PropertyName<ViewType> VIEW_TYPE =
1092        new PropertyName<ViewType>(PROPERTY_NAMESPACE,
1093                                   "view-view-type");
1094    
1095    /**
1096     * Returns the value  of this proxy's {@link #VIEW_TYPE} property.
1097     * 
1098     * @return Kind of view this tag refers to.
1099     * @throws WvcmException
1100     *             if this proxy doesn't define a value for this property.
1101     */
1102    ViewType getViewType() throws WvcmException;
1103    
1104    /**
1105     * Set the value of this view's {@link #VIEW_TYPE} property.
1106     * This property may only be set at view creation time and
1107     * is used by {@link #doCreateResource(Feedback)} to specify
1108     * the type of view to be created.  If not view type has been set,
1109     * {@link #doCreateResource(Feedback)} will create a web
1110     * view by default.
1111     * 
1112     * @param viewType the type of view to be created
1113     */
1114    void setViewType(ViewType viewType);
1115   
1116    /**
1117     * Whereas a CcView resource's {@link javax.wvcm.Folder#CHILD_MAP} property
1118     * returns the root directories of <i>all</i> VOBs, LOADED_CHILD_MAP only
1119     * returns the root directories of VOBs that are partially or fully loaded
1120     * in this view (if this is a web view or snapshot view) or mounted (if 
1121     * this is a dynamic view or automatic view).  In an automatic view, only 
1122     * the mount state of a VOB is relevant, load state is ignored.
1123     */
1124    PropertyName<Map<String,Resource>> LOADED_CHILD_MAP =
1125        new PropertyName<Map<String,Resource>>(PROPERTY_NAMESPACE, "loaded-child-map");
1126   
1127    /**
1128     * Get the value of this proxy's {@link #LOADED_CHILD_MAP} property.
1129     * @return this view's loaded child map
1130     * @throws WvcmException if this proxy doesn't define a value for this property.
1131     */
1132    public Map<String,Resource> getLoadedChildMap() throws WvcmException;
1133
1134    /**
1135     * List of VOB tags representing VOBs which are currently mounted
1136     * in this view.
1137     * This property is only supported for automatic views.
1138     */
1139    public static final PropertyName<ResourceList<CcVobTag>> MOUNTED_VOB_TAG_LIST =
1140            new PropertyName<ResourceList<CcVobTag>>(PROPERTY_NAMESPACE, "mounted-vob-tag-list");
1141
1142    /**
1143     * Returns the value of this proxy's {@link #MOUNTED_VOB_TAG_LIST} property.
1144     * 
1145     * @return list of VOB tags mounted in this view
1146     * @throws WvcmException
1147     *             if this proxy doesn't define a value for this property.
1148     */
1149    ResourceList<CcVobTag> getMountedVobTagList() throws WvcmException;
1150
1151    /**
1152     * This view's file area root directory on the local machine.
1153     * The value of this property will be null if it does not have 
1154     * a file area on the local machine.
1155     * Only supported for web, snapshot and automatic views.
1156     */
1157    PropertyName<File> FILE_AREA_ROOT_DIRECTORY =
1158        new PropertyName<File>(PROPERTY_NAMESPACE, "file-area-root-directory");
1159   
1160    /**
1161     * Returns the value of the {@link #FILE_AREA_ROOT_DIRECTORY} property.
1162     * @return This view's copy area root directory, or null if it has
1163     *         no copy area on the local machine
1164     * @throws WvcmException if this property is not defined by this proxy.
1165     */
1166    public File getFileAreaRootDirectory() throws WvcmException;
1167
1168    /**
1169     * For a UCM view, the list of root directories for all components
1170     * included in that view's stream.
1171     * Always an empty list for non-UCM views.
1172     */
1173    PropertyName<ResourceList<CcDirectory>> COMPONENT_ROOT_DIRECTORY_LIST =
1174            new PropertyName<ResourceList<CcDirectory>>(PROPERTY_NAMESPACE, "component-root-directory-list");
1175    
1176    /**
1177     * Returns the value of the {@link #COMPONENT_ROOT_DIRECTORY_LIST} property.
1178     * @return List of the component root directories for this view's UCM stream, 
1179     *         or an empty list if this is not a UCM view.
1180     * @throws WvcmException if this property is not defined by this proxy.
1181     */
1182    public ResourceList<CcDirectory> getComponentRootDirectoryList() throws WvcmException;
1183    
1184    /**
1185     * Is this web view's local file area schema version older than the version
1186     * supported by the running CM API file management code? If so, the file
1187     * area needs to be upgraded before it can be used.
1188     * 
1189     * @see com.ibm.rational.wvcm.stp.cc.CcView#doUpgradeFileArea(Feedback)
1190     */
1191    PropertyName<Boolean> FILE_AREA_NEEDS_UPGRADE =
1192        new PropertyName<Boolean>(PROPERTY_NAMESPACE, "file-area-needs-upgrade");
1193   
1194    /**
1195     * Get the value of this view's {@link #FILE_AREA_NEEDS_UPGRADE} property.
1196     * @return true if this view's local file area needs upgrading; false otherwise.
1197     * @throws WvcmException if this property is not defined by this proxy.
1198     */
1199    boolean getFileAreaNeedsUpgrade() throws WvcmException;
1200   
1201    /**
1202     * Is this view associated with a UCM stream?.
1203     */
1204    PropertyName<Boolean> IS_UCM_VIEW =
1205        new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-ucm-view");
1206   
1207    /**
1208     * Get the value of this view's {@link #IS_UCM_VIEW} property.
1209     * @return true if this view represents a UCM view; false otherwise.
1210     * @throws WvcmException if this property is not defined by this proxy.
1211     */
1212    boolean getIsUcmView() throws WvcmException;
1213   
1214    /**
1215     * This view's config spec.
1216     */
1217    PropertyName<CcConfigSpec> CONFIG_SPEC =
1218        new PropertyName<CcConfigSpec>(PROPERTY_NAMESPACE, "config-spec");
1219    
1220    /**
1221     * Get the value of this view's {@link #CONFIG_SPEC} property.
1222     * @return this view's config spec as a CcConfigSpec instance
1223     */
1224    CcConfigSpec getConfigSpec() throws WvcmException;
1225
1226    /**
1227     * Set the value of this view's {@link #CONFIG_SPEC} property.
1228     * @param configSpec the new config spec for this view
1229     */
1230    void setConfigSpec(CcConfigSpec configSpec);
1231    
1232    /**
1233     * Network region in which the dynamic view is registered.
1234     * Not supported for other view types.
1235     * This is a write only property; to determine the region for
1236     * an existing view, use the CcViewTag.REGISTRY_REGION property.
1237     */
1238    PropertyName<CcRegistryRegion> REGION =
1239        new PropertyName<CcRegistryRegion>(PROPERTY_NAMESPACE, "view-region");
1240    
1241    /**
1242     * Set the value of this view's {@link #REGION} property. This
1243     * property may only be set at view creation time.
1244     * This is a write only property.
1245     * If unspecified, the local host's network region will be used.
1246     * @param region network region in which to register the view
1247     */
1248    void setRegion(CcRegistryRegion region);
1249
1250    /**
1251     * Path to directory in which shared cleartext for an automatic view
1252     * is stored.  Not valid for other view types.
1253     * Can be set only at creation time.  If unspecified, the product 
1254     * default directory is used. 
1255     */
1256    PropertyName<String> SHARED_CLEARTEXT_STORAGE_PATH =
1257        new PropertyName<String>(PROPERTY_NAMESPACE, "shared-cltxt-stg");
1258    
1259    /** 
1260     * Get the value of this view's {@link #SHARED_CLEARTEXT_STORAGE_PATH} 
1261     * property.
1262     * Only supported for automatic views
1263     * @return Path to the shared cleartext storage this view.
1264     */
1265    String getSharedCleartextStoragePath() throws WvcmException;
1266    
1267    /**
1268     * Set the value of this view's {@link #SHARED_CLEARTEXT_STORAGE_PATH} 
1269     * property. This property may only be set at view creation time and
1270     * only for automatic views. 
1271     * If unspecified, the product default directory is used.
1272     */
1273    void setSharedCleartextStoragePath(String path);
1274    
1275    /**
1276     * Should derived objects created in this view be shared and made
1277     * available for winkin by other views?
1278     * (Dynamic views only, not supported for other view types.)
1279     */
1280    PropertyName<Boolean> SHARE_DERIVED_OBJECTS =
1281        new PropertyName<Boolean>(PROPERTY_NAMESPACE, "shared-dos");
1282    
1283    /**
1284     * Get the value of this view's {@link #SHARE_DERIVED_OBJECTS} property.
1285     * @return true if view creates shared derived objects, false otherwise
1286     */
1287    Boolean getShareDerivedObjects() throws WvcmException;
1288
1289    /**
1290     * Set the value of this view's {@link #SHARE_DERIVED_OBJECTS} property. This
1291     * property may only be set at view creation time.
1292     * If unspecified, site-wide default is used.
1293     * If unspecified and no site-wide default, derived objects will be shared.
1294     * @param shareDerivedObjects true to make derived objects available for winkin
1295     * by other views, otherwise false
1296     */
1297    void setShareDerivedObjects(Boolean shareDerivedObjects);
1298    
1299    /**
1300     * The text mode of the view. The text mode specifies the line
1301     * terminator sequence for text files in the view. If no value is
1302     * set upon view creation, defaults to {@link TextMode#TRANSPARENT}.
1303     */
1304    PropertyName<TextMode> TEXT_MODE =
1305        new PropertyName<TextMode>(PROPERTY_NAMESPACE, "text-mode");
1306    
1307    /**
1308     * Get the value of this view's {@link #TEXT_MODE} property.
1309     * @return enumeration value representing this view's text mode.
1310     * @throws WvcmException if this proxy doesn't define a value for this property.
1311     */
1312    TextMode getTextMode() throws WvcmException;
1313    
1314    /**
1315     * Set the value of this view's {@link #TEXT_MODE} property. This
1316     * property may only be set at view creation time.
1317     * @param textMode the text mode of the view.
1318     */
1319    void setTextMode(TextMode textMode);
1320    
1321    /**
1322     * Break a file area lock on this web view with the given lock info.
1323     * @param lockInfo information about the lock
1324     * @return true if the lock was broken; false otherwise
1325     * @throws WvcmException if a problem occurred breaking the lock
1326     */
1327    boolean breakFileAreaLock(CcFileAreaLockInfo lockInfo) throws WvcmException;
1328    
1329    /**
1330     * CcViewAccessInfo object contains the supported view access properties.
1331     */
1332    public static final PropertyName<CcViewAccessInfo> VIEW_ACCESS_INFO =
1333        new PropertyName<CcViewAccessInfo>(PROPERTY_NAMESPACE, "view-access-info");
1334
1335    /**
1336     * Returns the value of this proxy's {@link #VIEW_ACCESS_INFO} property.
1337     * 
1338     * @return the CcViewAccessInfo object.
1339     * @throws WvcmException
1340     *             if this proxy doesn't define a value for this property.
1341     */
1342    public CcViewAccessInfo getViewAccessInfo() throws WvcmException;
1343
1344    /**
1345     * The storage location for a dynamic or snapshot view, 
1346     * not supported for other view types.
1347     */
1348    public static final PropertyName<CcStorageLocation> VIEW_STORAGE_LOCATION =
1349        new PropertyName<CcStorageLocation>(PROPERTY_NAMESPACE, "view-stgloc");
1350    
1351    /**
1352     * Set the value of this view's {@link #VIEW_STORAGE_LOCATION} property.
1353     * This property may only be set at view creation time.
1354     * It is a write-only property.
1355     * @param viewStorageLocation the storage location for the new view
1356     */
1357    void setViewStorageLocation(CcStorageLocation viewStorageLocation);
1358
1359    /**
1360     * The storage path for a dynamic or  automatic or snapshot view,
1361     * not supported for other view types.
1362     */
1363    public static final PropertyName<String> VIEW_STORAGE_PATH =
1364        new PropertyName<String>(PROPERTY_NAMESPACE, "view-storage-path");
1365    
1366    /**
1367     * Returns the value of this proxy's {@link #VIEW_STORAGE_PATH} property.
1368     * 
1369     * @return path to the view storage
1370     * @throws WvcmException
1371     *             if this proxy doesn't define a value for this property.
1372     */
1373    public String getViewStoragePath() throws WvcmException;
1374   
1375    /**
1376     * Set the value of this view's {@link #VIEW_STORAGE_PATH} property.
1377     * This property may only be set at view creation time.
1378     * @param viewStoragePath the storage path for the new view
1379     */
1380    void setViewStoragePath(String viewStoragePath);
1381      
1382    /**
1383     * <p>
1384     * The permissions applied to this resource.
1385     * </p>
1386     */
1387    public static final PropertyName<CcPermissions> PERMISSIONS =
1388        new PropertyName<CcPermissions>(PROPERTY_NAMESPACE, "cc-permissions");
1389    
1390    /**
1391     * Returns the value of this proxy's {@link #PERMISSIONS} property.
1392     * 
1393     * @return A permissions object from which specific permissions 
1394     *         information can be extracted.
1395     * @throws WvcmException
1396     *             if this proxy doesn't define a value for this property.
1397     */
1398    public CcPermissions getPermissions() throws WvcmException;
1399
1400    /**
1401     * Does this view have non-shareable derived objects?
1402     * This property is supported for dynamic views only.
1403     */
1404    public static final PropertyName<Boolean> IS_EXPRESS =
1405        new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-express");
1406    
1407    /**
1408     * Returns the value of this proxy's {@link #IS_EXPRESS} property.
1409     * 
1410     * @return true if this view has non-shareable DOs; false otherwise.
1411     * @throws WvcmException
1412     *             if this proxy doesn't define a value for this property.
1413     */
1414    public Boolean getIsExpress() throws WvcmException;
1415
1416    /**
1417     * Are this view's permissions valid?
1418     */
1419    public static final PropertyName<Boolean> ARE_PERMISSIONS_VALID =
1420        new PropertyName<Boolean>(PROPERTY_NAMESPACE, "are-permissions-valid");
1421    
1422    /**
1423     * Returns the value of this proxy's {@link #ARE_PERMISSIONS_VALID} property.
1424     * 
1425     * @return true if this view's permissions are valid; false otherwise.
1426     * @throws WvcmException
1427     *             if this proxy doesn't define a value for this property.
1428     */
1429    public Boolean getArePermissionsValid() throws WvcmException;
1430
1431    /**
1432     * Is this view read-only?
1433     */
1434    public static final PropertyName<Boolean> IS_READ_ONLY =
1435        new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-read-only");
1436    
1437    /**
1438     * Returns the value of this proxy's {@link #IS_READ_ONLY} property.
1439     * 
1440     * @return true if this view is read-only; false otherwise.
1441     * @throws WvcmException
1442     *             if this proxy doesn't define a value for this property.
1443     */
1444    public Boolean getIsReadOnly() throws WvcmException;
1445    
1446     /**
1447     * Set the {@link #STREAM} property.
1448     * 
1449     * @param stream the {@link Stream} object that
1450     * identifies the {@link #STREAM} for this Workspace.
1451     * @see #getStream
1452     */
1453    public void setStream(Stream stream);
1454    
1455    /**
1456     * Colocate view's storage directory under snapshot view directory,
1457     * not supported for other view types.
1458     */
1459    public static final PropertyName<Boolean> COLOCATED_STORAGE = 
1460        new PropertyName<Boolean>(PROPERTY_NAMESPACE, "colocated-storage");
1461    
1462    /**
1463     * Set the {@link #COLOCATED_STORAGE} property.
1464     * This property may only be set at view creation time and only for
1465     * snapshot views.
1466     * It is a write-only property.
1467     * 
1468     * @param colocatedStorage true to create view's storage directory 
1469     * as a subdirectory of the snapshot view directory, false otherwise.
1470     * The value will default to false if not set at view creation. 
1471     */
1472    public void setColocatedStorage(Boolean colocatedStorage);
1473    
1474    /**
1475     * Indicates whether this view will preserve
1476     * the VOB modification time for files when copying them into
1477     * the view.
1478     * If {@code true}, time is preserved, if {@code false} the current
1479     * time is used.  If unspecified, the default is {@code false}.
1480     * This property can only be set at creation time, and only for 
1481     * automatic and snapshot views.<p>
1482     * 
1483     * For automatic views, this setting persists for the lifetime of
1484     * the view.<p>
1485     * 
1486     * For snapshot views, it is an initial setting that may be changed
1487     * depending on the flag for subsequent update operations. 
1488     */
1489    public static final PropertyName<Boolean> PRESERVE_VOB_MODIFIED_TIME =
1490            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "preserve-vob-modified-time");
1491    
1492    /**
1493     * Get the value of this view's {@link #PRESERVE_VOB_MODIFIED_TIME} property.
1494     * @return {@code true} if file time stamps copied into the view
1495     * will preserve the VOB modification time, {@code false} otherwise
1496     */
1497    Boolean getPreserveVobModifiedTime() throws WvcmException;
1498    
1499    /**
1500     * Set the {@link #PRESERVE_VOB_MODIFIED_TIME} property.
1501     * This property may only be set at view creation time and only for 
1502     * automatic and snapshot views.
1503     * If unspecified, VOB modification time will <em>not</em> be used
1504     * when copying files to the view.<p>
1505     * 
1506     * For automatic views, this setting persists for the lifetime of
1507     * the view.<p>
1508     * 
1509     * For snapshot views, it is an initial setting that may be changed
1510     * depending on the flag for subsequent update operations.<p>
1511     *  
1512     * @param preserveVobModifiedTime {@code true} to preserve the VOB modified
1513     * time when copying files to the view, {@code false} to use current time.
1514     */
1515    public void setPreserveVobModifiedTime(Boolean preserveVobModifiedTime);    
1516    
1517    /**
1518     * Restore entire view or select paths in the view - for automatic views only
1519     */
1520    public CcView doCcRestore (RefreshFlag[] flags, Vector<String> paths, Feedback feedback)
1521        throws WvcmException;
1522}