001    /*
002     * file CcVobTag.java
003     * 
004     * Licensed Materials - Property of IBM
005     * Restricted Materials of IBM 
006     *
007     * com.ibm.rational.wvcm.stp.cc.CcVobTag
008     *
009     * (C) Copyright IBM Corporation 2008, 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 javax.wvcm.PropertyNameList.PropertyName;
019    import javax.wvcm.WvcmException;
020    
021    /**
022     * <p>
023     * A proxy for a ClearCase VOB tag - the handle by which a ClearCase VOB
024     * is identified and managed.
025     * </p>
026     * <p>
027     * VOB tags are treated as distinct objects from VOBs in order to allow for 
028     * the retrieval of basic VOB info and passing of handles to VOBs without
029     * incurring the overhead of actually opening a real VOB connection.
030     * </p>
031     */
032    
033    public interface CcVobTag extends CcResource {
034    
035        /** Global path for this VOB's storage */
036        PropertyName<String> GLOBAL_PATH =
037            new PropertyName<String>(PROPERTY_NAMESPACE, "global-path");
038        
039        /**
040         * Returns the value of this proxy's {@link #GLOBAL_PATH} property.
041         * 
042         * @return global pathname for this VOB's storage 
043         * @throws WvcmException
044         *             if this proxy doesn't define a value for this property.
045         */
046        public String getGlobalPath() throws WvcmException;
047    
048        /** Name of host on which the VOB resides */
049        PropertyName<String> HOST_NAME =
050            new PropertyName<String>(PROPERTY_NAMESPACE, "host-name");
051        
052        /**
053         * Returns the value of this proxy's {@link #HOST_NAME} property.
054         * 
055         * @return host name for this VOB
056         * @throws WvcmException
057         *             if this proxy doesn't define a value for this property.
058         */
059        public String getHostName() throws WvcmException;
060    
061        /** Host specific path for this VOB's storage */
062        PropertyName<String> HOST_PATH =
063            new PropertyName<String>(PROPERTY_NAMESPACE, "host-path");
064    
065        /**
066         * Returns the value of this proxy's {@link #HOST_PATH} property.
067         * 
068         * @return host specific pathname for this VOB's storage 
069         * @throws WvcmException
070         *             if this proxy doesn't define a value for this property.
071         */
072        public String getHostPath() throws WvcmException;
073    
074        /** Is the VOB represented by this tag mounted?
075         * <p>
076         * NOTE: When this property is read/written using a
077         * method with a view context which is a proxy for an 
078         * automatic view, it will get/set the state of a 
079         * client-side mount for that view.  Without a view 
080         * context, it gets/sets the per-system, server-side mount.
081         * Specifying a view context that is not a proxy for an
082         * automatic view will result in an error.
083         * </p>
084         */
085        PropertyName<Boolean> IS_MOUNTED =
086            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-mounted");
087    
088        /**
089         * Returns the value of this proxy's {@link #IS_MOUNTED} property.
090         * 
091         * @return true if the VOB tag is for a VOB that is mounted, else false
092         * @throws WvcmException
093         *             if this proxy doesn't define a value for this property.
094         */
095        boolean getIsMounted() throws WvcmException;
096        
097        /**
098         * Sets the value of this proxy's (@link #IS_MOUNTED) property.
099         * @param mount true to mount this VOB, else false to unmount it
100         */
101        void setIsMounted(boolean mount) throws WvcmException;
102    
103        /** Is this a tag for a project VOB? */
104        PropertyName<Boolean> IS_PROJECT_VOB =
105            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-project-vob");
106    
107        /**
108         * Returns the value of this proxy's {@link #IS_PROJECT_VOB} property.
109         * 
110         * @return true if the VOB tag is for a project VOB, else false
111         * @throws WvcmException
112         *             if this proxy doesn't define a value for this property.
113         */
114        boolean getIsProjectVob() throws WvcmException;
115    
116        /** Is this a tag for a public VOB? */
117        PropertyName<Boolean> IS_PUBLIC =
118            new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-public");
119    
120        /**
121         * Returns the value of this proxy's {@link #IS_PUBLIC} property.
122         * 
123         * @return true if the VOB tag is for a publicVOB, else false
124         * @throws WvcmException
125         *             if this proxy doesn't define a value for this property.
126         */
127        boolean getIsPublic() throws WvcmException;
128    
129        /** 
130         * Mount options specified for this VOB tag in the registry.
131         */
132        PropertyName<String> MOUNT_OPTIONS =
133            new PropertyName<String>(PROPERTY_NAMESPACE, "mount-options");
134    
135        /**
136         * Returns the value of this proxy's {@link #MOUNT_OPTIONS} property.
137         * 
138         * @return string of mount options, null if none were specified.
139         * @throws WvcmException
140         *             if this proxy doesn't define a value for this property.
141         */
142        String getMountOptions() throws WvcmException;
143    
144        /** The VOB to which this tag refers */
145        PropertyName<CcVob> VOB =
146            new PropertyName<CcVob>(PROPERTY_NAMESPACE, "vob");
147    
148        /**
149         * Returns the value of this proxy's {@link #VOB} property.
150         * 
151         * @return the VOB to which this tag refers, as a CcVob instance
152         * @throws WvcmException
153         *             if this proxy doesn't define a value for this property.
154         */
155        CcVob getVob() throws WvcmException;
156        
157        /** The registry region this tag resides in */
158        PropertyName<CcRegistryRegion> REGISTRY_REGION =
159            new PropertyName<CcRegistryRegion>(PROPERTY_NAMESPACE, "vobtag-registry-region");
160        
161        /**
162         * Returns the value of this proxy's {@link #REGISTRY_REGION} property.
163         * 
164         * @return A proxy for the registry region of this VOB tag.
165         * @throws WvcmException 
166         *             if this proxy doesn't define a value for this property.
167         */
168        CcRegistryRegion getRegistryRegion() throws WvcmException;
169    }