001    /*  
002     * file CcDirectory.java
003     *
004     * Licensed Materials - Property of IBM
005     * Restricted Materials of IBM 
006     *
007     * com.ibm.rational.wvcm.stp.cc.CcDirectory
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.util.List;
019    
020    import javax.wvcm.ControllableFolder;
021    import javax.wvcm.Feedback;
022    import javax.wvcm.ResourceList;
023    import javax.wvcm.WvcmException;
024    import javax.wvcm.PropertyNameList.PropertyName;
025    
026    /**
027     * <p>
028     * A proxy for a directory in a ClearCase view.
029     * This directory is either under version control or could potentially be
030     * put under version control.
031     * </p>
032     */
033    public interface CcDirectory
034        extends CcFile, ControllableFolder 
035    {
036        /**
037         * Create a new view-private directory at the location specified by this
038         * resource.  The request will fail if a resource already exists at that
039         * location.
040         * @see javax.wvcm.ControllableResource#doCreateResource(Feedback)
041         */
042        public CcDirectory createCcDirectory(Feedback feedback) throws WvcmException;
043        
044        /**
045         * The list of String objects that identify the names of version-controlled
046         * resources in this CcDirectory that are eclipsed by non-version-controlled resources.
047         * <p>
048         * A
049         * {@link javax.wvcm.Workspace#doUpdate(ResourceList, Feedback) Workspace.doUpdate}
050         * or
051         * {@link javax.wvcm.Workspace#doMerge(ResourceList, javax.wvcm.Workspace.MergeFlag[], Feedback) Workspace.doMerge}
052         * request can give a version-controlled folder a version-controlled bound
053         * member that has the same name as an existing uncontrolled bound member.
054         * In this case, the uncontrolled bound member takes precedence and is said
055         * to &quot;eclipse&quot; the new versioned-controlled bound member.
056         */
057        PropertyName<List<String>> ECLIPSED_LIST =
058          new PropertyName<List<String>>(PROPERTY_NAMESPACE, "eclipsed-list");
059    
060        /**
061         * Get the {@link #ECLIPSED_LIST} property.
062         * @return String list of the names of the eclipsed version-controlled resources
063         * @throws WvcmException if this ControllableFolder was not created with
064         * {@link #ECLIPSED_LIST} as a wanted property.
065         */
066        List<String> getEclipsedList() throws WvcmException;
067    
068    
069        /**
070         * Are there checkouts anywhere in the tree below this directory?
071         */
072        PropertyName<Boolean> HAS_DESCENDANT_CHECKOUTS =
073            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "has-descendant-checkouts");
074        
075        /**
076         * Get the {@link #HAS_DESCENDANT_CHECKOUTS} property.
077         * @return true if there are checkouts anywhere in the tree rooted by this directory, else false.
078         * @throws WvcmException if this ControllableFolder was not created with
079         * {@link #HAS_DESCENDANT_CHECKOUTS} as a wanted property.
080         * */
081        boolean getHasDescendantCheckouts() throws WvcmException;
082    
083        
084        /**
085         * Are there hijacks anywhere in the tree below this directory?
086         * Not supported for Snapshot view resources.
087         */
088        PropertyName<Boolean> HAS_DESCENDANT_HIJACKS =
089            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "has-descendant-hijacks");
090        
091        /**
092         * Get the {@link #HAS_DESCENDANT_HIJACKS} property.
093         * @return true if there are hijacks anywhere in the tree rooted by this directory, else false.
094         * @throws WvcmException if this ControllableFolder was not created with
095         * {@link #HAS_DESCENDANT_HIJACKS} as a wanted property.
096         * */
097        public boolean getHasDescendantHijacks() throws WvcmException;
098    
099        /**
100         * A list of all checkouts in the tree below this directory. Returns a list of CcFile resources.
101         */
102        PropertyName<ResourceList<CcFile>> AGGREGATED_CHECKOUT_LIST =
103            new PropertyName<ResourceList<CcFile>>(PROPERTY_NAMESPACE, "aggregated-checkout-list");
104    
105        /**
106         * Get the {@link #AGGREGATED_CHECKOUT_LIST} property.
107         * @return List of CcFile proxies representing all checkouts in the tree rooted by this directory.
108         * @throws WvcmException if this ControllableFolder was not created with
109         * {@link #AGGREGATED_CHECKOUT_LIST} as a wanted property.
110         * */
111        ResourceList<CcFile> getAggregatedCheckoutList() throws WvcmException;
112        
113        
114        /**
115         * A list of all hijacks in the tree below this directory. Returns a list of CcFile resources.
116         * Not supported for Snapshot view resources.
117         */
118        PropertyName<ResourceList<CcFile>> AGGREGATED_HIJACK_LIST =
119            new PropertyName<ResourceList<CcFile>>(PROPERTY_NAMESPACE, "aggregated-hijack-list");
120        
121        /**
122         * Get the {@link #AGGREGATED_HIJACK_LIST} property.
123         * @return List of CcFile proxies representing all hijacks in the tree rooted by this directory.
124         * @throws WvcmException if this ControllableFolder was not created with
125         * {@link #AGGREGATED_HIJACK_LIST} as a wanted property.
126         * */
127        public ResourceList<CcFile> getAggregatedHijackList() throws WvcmException;
128        
129        /**
130         * A list of all the view private files in the tree below this directory.  Does not include
131         * checkouts, hijacks or derived objects.  Returns a list of CcFile resources.
132         * Only supported for the view root and VOB root directories of automatic views.
133         */
134        PropertyName<ResourceList<CcFile>> AGGREGATED_VIEW_PRIVATE_LIST = 
135            new PropertyName<ResourceList<CcFile>>(PROPERTY_NAMESPACE, "aggregated-view-private-list");
136        
137        /**
138         * Get the {@link #AGGREGATED_VIEW_PRIVATE_LIST} property.
139         * @return List of CcFile proxies representing view private files in the tree rooted by this directory.
140         * @throws WvcmException if this ControllableFolder was not created with
141         * {@link #AGGREGATED_VIEW_PRIVATE_LIST} as a wanted property.
142         * */
143        public ResourceList<CcFile> getAggregatedViewPrivateList() throws WvcmException;
144    
145        /**
146         * Is this directory the root of a ClearCase VOB.
147         */
148        PropertyName<Boolean> IS_VOB_ROOT =
149            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-vob-root");
150        
151        /**
152         * Returns the value of this proxy's {@link #IS_VOB_ROOT} property. 
153         * @return true if the directory is the root of a VOB, else false
154         * @throws WvcmException
155         *             if this proxy doesn't define a value for this property.
156         */
157        public boolean getIsVobRoot() throws WvcmException;
158        
159    }
160