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
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.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
033public 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}