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    
014    package com.ibm.rational.wvcm.stp.cc;
015    
016    import static com.ibm.rational.wvcm.stpex.StpExBase.PROPERTY_NAMESPACE;
017    
018    import java.io.File;
019    import java.util.List;
020    import java.util.Map;
021    import java.util.Vector;
022    
023    import javax.wvcm.Feedback;
024    import javax.wvcm.PropertyNameList.PropertyName;
025    import javax.wvcm.Resource;
026    import javax.wvcm.ResourceList;
027    import javax.wvcm.Stream;
028    import javax.wvcm.WvcmException;
029    
030    import com.ibm.rational.wvcm.stp.StpActivity;
031    import com.ibm.rational.wvcm.stp.cc.CcFileAreaLockedCallback.CcFileAreaLockInfo;
032    import com.ibm.rational.wvcm.stp.cc.CcViewTag.ViewType;
033    import 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     */
043    public 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    }