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