001    /*
002     * file CcVob.java
003     *
004     * Licensed Materials - Property of IBM
005     * Restricted Materials of IBM 
006     *
007     * com.ibm.rational.wvcm.stp.cc.CcVob
008     *
009     * (C) Copyright IBM Corporation 2004, 2011.  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.PropertyNameList.PropertyName;
021    import javax.wvcm.ResourceList;
022    import javax.wvcm.WvcmException;
023    
024    import com.ibm.rational.wvcm.stp.StpRepository;
025    
026    /**
027     * <p>
028     * A proxy for a ClearCase versioned object base (VOB) - the repository for all
029     * server-side ClearCase resources.
030     * </p>
031     * <p>
032     * A VOB can either be a regular VOB or project VOB. A project VOB is a
033     * partcular type of VOB that may contain UCM project metadata - projects,
034     * streams, activities, components, and baselines.
035     * </p>
036     */
037    public interface CcVob extends StpRepository, CcVobResource
038    {
039        /** List of attribute types in this VOB. Includes global types. */
040        PropertyName<ResourceList<CcAttributeType>> ATTRIBUTE_TYPE_LIST =
041            new PropertyName<ResourceList<CcAttributeType>>(PROPERTY_NAMESPACE,
042                                                            "attribute-type-list");
043    
044        /**
045         * Get the value of this proxy's {@link #ATTRIBUTE_TYPE_LIST} property. Note
046         * that this includes global types higher up the Admin VOB 
047         * hierarchy with no local copy in this VOB.
048         * 
049         * @return list of attribute types in this VOB as AttributeType instances.
050         * @throws WvcmException if this proxy doesn't define a value for this
051         *             property.
052         */
053        public ResourceList<CcAttributeType> getAttributeTypeList()
054            throws WvcmException;
055    
056        /** List of branch types in this VOB. Includes global types. */
057        PropertyName<ResourceList<CcBranchType>> BRANCH_TYPE_LIST =
058            new PropertyName<ResourceList<CcBranchType>>(PROPERTY_NAMESPACE,
059                                                         "branch-type-list");
060    
061        /**
062         * Get the value of this proxy's {@link #BRANCH_TYPE_LIST} property. Note
063         * that this includes global types higher up the Admin VOB 
064         * hierarchy with no local copy in this VOB.
065         * 
066         * @return list of branch types in this VOB as BranchType instances.
067         * @throws WvcmException if this proxy doesn't define a value for this
068         *             property.
069         */
070        public ResourceList<CcBranchType> getBranchTypeList() throws WvcmException;
071    
072        /** @deprecated */
073        PropertyName<Boolean> CAN_CREATE_BRANCH_TYPE =
074            new PropertyName<Boolean>(PROPERTY_NAMESPACE,
075                                      "can-create-branch-type");
076    
077        /** @deprecated */
078        boolean getCanCreateBranchType() throws WvcmException;
079    
080        /** @deprecated */
081        PropertyName<Boolean> CAN_CREATE_LABEL_TYPE =
082            new PropertyName<Boolean>(PROPERTY_NAMESPACE,
083                                      "can-create-label-type");
084    
085        /** @deprecated */
086        boolean getCanCreateLabelType()throws WvcmException;
087    
088        /** @deprecated */
089        PropertyName<Boolean> CAN_CREATE_POLICY =
090            new PropertyName<Boolean>(PROPERTY_NAMESPACE,
091                                      "can-create-policy");
092    
093        /** @deprecated */
094        boolean getCanCreatePolicy()throws WvcmException;
095    
096        /** @deprecated */
097        PropertyName<Boolean> CAN_CREATE_ROLEMAP =
098            new PropertyName<Boolean>(PROPERTY_NAMESPACE,
099                                      "can-create-rolemap");
100    
101        /** @deprecated */
102        boolean getCanCreateRolemap()throws WvcmException;
103    
104        /**
105         * List of UCM components in this project VOB.
106         * This property is only supported on project VOBs.
107         */
108        PropertyName<ResourceList<CcComponent>> COMPONENT_LIST =
109            new PropertyName<ResourceList<CcComponent>>(PROPERTY_NAMESPACE,
110                                                        "component-list");
111    
112        /**
113         * Get the value of this proxy's {@link #COMPONENT_LIST} property.
114         * 
115         * @return list of components in this VOB as UcmComponent instances.
116         * @throws WvcmException if this proxy doesn't define a value for this
117         *             property.
118         */
119        public ResourceList<CcComponent> getComponentList() throws WvcmException;
120    
121        /** List of element types in this VOB. Includes global types. */
122        PropertyName<ResourceList<CcElementType>> ELEMENT_TYPE_LIST =
123            new PropertyName<ResourceList<CcElementType>>(PROPERTY_NAMESPACE,
124                                                          "element-type-list");
125    
126        /**
127         * Get the value of this proxy's {@link #ELEMENT_TYPE_LIST} property. Note
128         * that this includes global types higher up the Admin VOB 
129         * hierarchy with no local copy in this VOB.
130         * 
131         * @return list of element types in this VOB as ElementType instances.
132         * @throws WvcmException if this proxy doesn't define a value for this
133         *             property.
134         */
135        public ResourceList<CcElementType> getElementTypeList()
136            throws WvcmException;
137    
138        /** List of hyperlink types in this VOB. Includes global types. */
139        PropertyName<ResourceList<CcHyperlinkType>> HYPERLINK_TYPE_LIST =
140            new PropertyName<ResourceList<CcHyperlinkType>>(PROPERTY_NAMESPACE,
141                                                            "hyperlink-type-list");
142    
143        /**
144         * Get the value of this proxy's {@link #HYPERLINK_TYPE_LIST} property. Note
145         * that this includes global types higher up the Admin VOB 
146         * hierarchy with no local copy in this VOB.
147         * 
148         * @return list of hyperlink types in this VOB as HyperlinkType instances.
149         * @throws WvcmException if this proxy doesn't define a value for this
150         *             property.
151         */
152        public ResourceList<CcHyperlinkType> getHyperlinkTypeList()
153            throws WvcmException;
154    
155        /** Is this VOB a project VOB? */
156        PropertyName<Boolean> IS_PROJECT_VOB =
157            new PropertyName<Boolean>(PROPERTY_NAMESPACE,
158                                      "is-project-vob");
159    
160        /**
161         * Returns the value of this proxy's {@link #IS_PROJECT_VOB} property.
162         * 
163         * @return true if this VOB is a project VOB, else false
164         * @throws WvcmException if this proxy doesn't define a value for this
165         *             property.
166         */
167        boolean getIsProjectVob() throws WvcmException;
168    
169        /** Is this VOB replicated? */
170        PropertyName<Boolean> IS_REPLICATED =
171            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-replicated");
172    
173        /**
174         * Returns the value of this proxy's {@link #IS_REPLICATED} property.
175         * 
176         * @return true if the VOB is replicated, else false
177         * @throws WvcmException
178         *             if this proxy doesn't define a value for this property.
179         */
180        boolean getIsReplicated() throws WvcmException;
181    
182        /** List of label types in this VOB. Includes global types. */
183        PropertyName<ResourceList<CcLabelType>> LABEL_TYPE_LIST =
184            new PropertyName<ResourceList<CcLabelType>>(PROPERTY_NAMESPACE,
185                                                        "label-type-list");
186    
187        /**
188         * Get the value of this proxy's {@link #LABEL_TYPE_LIST} property. Note
189         * that this includes global types higher up the Admin VOB 
190         * hierarchy with no local copy in this VOB.
191         * 
192         * @return list of label types in this VOB as LabelType instances.
193         * @throws WvcmException if this proxy doesn't define a value for this
194         *             property.
195         */
196        public ResourceList<CcLabelType> getLabelTypeList() throws WvcmException;
197    
198        /** 
199         * Ordered list of Admin VOBs for this VOB with the immediate parent first 
200         * and the furthest ancestor last.
201         */
202        PropertyName<ResourceList<CcVob>> ORDERED_ADMIN_VOB_LIST =
203            new PropertyName<ResourceList<CcVob>>(PROPERTY_NAMESPACE,
204                                                          "ordered-admin-vob-list");
205    
206        /**
207         * Get the value of this proxy's {@link #ORDERED_ADMIN_VOB_LIST} property.
208         * 
209         * @return list of Admin VOBs for this VOB
210         * @throws WvcmException if this proxy doesn't define a value for this
211         *             property.
212         */
213        public ResourceList<CcVob> getOrderedAdminVobList() throws WvcmException;
214    
215        /**
216         * This project VOB's root UCM project folder.
217         * This property is only supported on project VOBs.
218         */
219        PropertyName<CcProjectFolder> ROOT_PROJECT_FOLDER =
220            new PropertyName<CcProjectFolder>(PROPERTY_NAMESPACE,
221                                              "root-project-folder");
222    
223        /**
224         * Returns the value of this proxy's {@link #ROOT_PROJECT_FOLDER} property.
225         * 
226         * @return A client proxy for this project VOB's root project folder
227         * @throws WvcmException if this proxy doesn't define a value for this
228         *             property.
229         */
230        public CcProjectFolder getRootProjectFolder() throws WvcmException;
231    
232        /**
233         * This VOB's db schema version.
234         */
235        PropertyName<Long> SCHEMA_VERSION =
236            new PropertyName<Long>(PROPERTY_NAMESPACE, "schema-version");
237        
238        /**
239         * Get the value of this proxy's {@link #SCHEMA_VERSION} property.
240         * @return long indicating VOB's schema version
241         * @throws WvcmException if this proxy doesn't define a value for this
242         *             property.
243         */
244        public long getSchemaVersion() throws WvcmException;
245        
246        /** List of trigger types in this VOB */
247        PropertyName<ResourceList<CcTriggerType>> TRIGGER_TYPE_LIST =
248            new PropertyName<ResourceList<CcTriggerType>>(PROPERTY_NAMESPACE,
249                                                          "trigger-type-list");
250    
251        /**
252         * Get the value of this proxy's {@link #TRIGGER_TYPE_LIST} property.
253         * 
254         * @return list of trigger types in this VOB as TriggerType instances.
255         * @throws WvcmException if this proxy doesn't define a value for this
256         *             property.
257         */
258        public ResourceList<CcTriggerType> getTriggerTypeList()
259            throws WvcmException;
260    
261        /** This VOB's VOB tag as a string in the current registry region. */
262        PropertyName<String> VOB_TAG_STRING = new PropertyName<String>(PROPERTY_NAMESPACE,
263                                                                "vob-tag-string");
264    
265        /**
266         * Returns the value of this proxy's {@link #VOB_TAG_STRING} property.
267         * 
268         * @return this VOB's VOB tag
269         * @throws WvcmException if this proxy doesn't define a value for this
270         *             property.
271         */
272        public String getVobTagString() throws WvcmException;
273        
274        /** 
275         * This VOB's VOB tag as a {@link CcVobTag} resource in the current
276         * registry region. 
277         */
278        PropertyName<CcVobTag> VOB_TAG = 
279            new PropertyName<CcVobTag>(PROPERTY_NAMESPACE, "vob-tag");
280        
281        /**
282         * Returns the value of this proxy's {@link #VOB_TAG} property.
283         * 
284         * @return this VOB's VOB tag
285         * @throws WvcmException if this proxy doesn't define a value for this
286         *             property.
287         */
288        public CcVobTag getVobTag() throws WvcmException;
289    
290        /**
291         * The list of MultiSite replicas of this VOB.
292         * This list may be incomplete; other replicas may exist, but their
293         * creation packets have not yet been imported at the current replica.
294         */
295        PropertyName<ResourceList<CcReplica>> REPLICA_LIST =
296            new PropertyName<ResourceList<CcReplica>>(
297                    PROPERTY_NAMESPACE, "replica-list");
298    
299        /**
300         * Returns the value of this proxy's {@link #REPLICA_LIST} property.
301         * 
302         * @return this VOB's list of replicas as a list of CcReplica instances
303         * @throws WvcmException if this proxy doesn't define a value for this
304         *             property.
305         */
306        public ResourceList<CcReplica> getReplicaList() throws WvcmException;
307    
308        /**
309         * Check to see if a type with the given name is visible in this VOB.
310         * To be visible a type must be an ordinary or local type defined in the VOB
311         * or a global type in the AdminVOB hierarchy above this VOB which has
312         * not yet been instantiated.
313         * @param labelName  Name of the label to look for.
314         * @return  true if a label with that name is visible from this VOB, else false.
315         */
316        public boolean doIsLabelTypeVisible(String labelName) throws WvcmException;
317        
318        /** Is atomic checkin enabled in this VOB? */
319        PropertyName<Boolean> IS_ATOMIC_CHECKIN_ENABLED =
320            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-atomic-checkin-enabled");
321        
322        /**
323         * Returns the value of this proxy's {@link #IS_ATOMIC_CHECKIN_ENABLED} property.
324         * 
325         * @return true if atomic checkin is enabled in this VOB; false otherwise
326         * @throws WvcmException if this proxy doesn't define a value for this
327         *             property.
328         */
329        public boolean getIsAtomicCheckinEnabled() throws WvcmException;
330        
331        /**
332         * @deprecated
333         */
334        PropertyName<List<String>> ACCESS_CONTROLLED_RESOURCE_TYPE_LIST = 
335            new PropertyName<List<String>>(PROPERTY_NAMESPACE, "access-controlled-resource-type-list");
336    
337        /**
338         * @deprecated
339         */
340        public List<String> getAccessControlledResourceTypeList() throws WvcmException;
341            
342    }