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