001/*
002 * file CcViewTag.java
003 * 
004 * Licensed Materials - Property of IBM
005 * Restricted Materials of IBM 
006 *
007 * com.ibm.rational.wvcm.stp.cc.CcViewTag
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
021import com.ibm.rational.wvcm.stpex.StpExEnumeration;
022
023/**
024 * <p>
025 * A proxy for a ClearCase view tag - the handle by which a ClearCase view
026 * is identified and managed.
027 * </p>
028 * <p>
029 * View tags are treated as distinct objects from views in order to allow the 
030 * for retrieval of basic view info and passing of handles to views without
031 * incurring the overhead of actually opening a real view connection.
032 * </p>
033 */
034
035public interface CcViewTag extends CcResource {
036    
037    /**
038     * Type of ClearCase view.
039     * View type is one of
040     * <bl>
041     * <li>Dynamic.
042     * </li>
043     * <li>Snapshot.
044     * </li>
045     * <li>Web.
046     * </li>
047     * <li>Automatic.
048     * </bl>
049     * <br>
050     * For more information, see the ClearCase Reference Manual.
051     */
052    enum ViewType implements StpExEnumeration {
053        /** This is a dynamic view. */
054        DYNAMIC,
055
056        /** This is a snapshot view */
057        SNAPSHOT,
058
059        /** This a web view. */
060        WEB,
061        
062        /** This is an automatic view. */
063        AUTOMATIC;
064    }
065
066    /** Is this a tag for a UCM view? */
067    PropertyName<Boolean> IS_UCM_VIEW =
068        new PropertyName<Boolean>(PROPERTY_NAMESPACE,
069                                  "is-ucm-view");
070    
071    /**
072     * Returns the value of this proxy's {@link #IS_UCM_VIEW} property.
073     * 
074     * @return true if the view tag is for a UCM view, else false
075     * @throws WvcmException
076     *             if this proxy doesn't define a value for this property.
077     */
078    boolean getIsUcmView() throws WvcmException;
079    
080    /** Is the View represented by this tag started? */
081    PropertyName<Boolean> IS_ACTIVE =
082        new PropertyName<Boolean>(PROPERTY_NAMESPACE,
083                                  "is-active");
084    
085    /**
086     * Returns the value of this proxy's {@link #IS_ACTIVE} property.
087     * 
088     * @return true if the view tag is for an active  view, else false
089     * @throws WvcmException
090     *             if this proxy doesn't define a value for this property.
091     */
092    boolean getIsActive() throws WvcmException;
093    
094    /**
095     * Sets the value of this proxy's (@link #IS_ACTIVE) property.
096     * @param isActive true to start the server for this view; false to stop it
097     */
098    void setIsActive(boolean isActive) throws WvcmException;
099
100
101    /** The view to which this tag refers */
102    PropertyName<CcView> VIEW =
103        new PropertyName<CcView>(PROPERTY_NAMESPACE, "view");
104    
105    /**
106     * Returns the value of this proxy's {@link #VIEW} property.
107     * 
108     * @return the view to which this tag refers, as CcView instance
109     * @throws WvcmException
110     *             if this proxy doesn't define a value for this property.
111     */
112    CcView getView() throws WvcmException;
113
114    /** Kind of view to which this tag refers */
115    PropertyName<ViewType> VIEW_TYPE =
116        new PropertyName<ViewType>(PROPERTY_NAMESPACE,
117                                   "view-tag-view-type");
118    
119    /**
120     * Returns the value  of this proxy's {@link #VIEW_TYPE} property.
121     * 
122     * @return Kind of view this tag refers to.
123     * @throws WvcmException
124     *             if this proxy doesn't define a value for this property.
125     */
126    ViewType getViewType () throws WvcmException;
127    
128    /** The registry region this tag resides in */
129    PropertyName<CcRegistryRegion> REGISTRY_REGION =
130        new PropertyName<CcRegistryRegion>(PROPERTY_NAMESPACE, "viewtag-registry-region");
131    
132    /**
133     * Returns the value of this proxy's {@link #REGISTRY_REGION} property.
134     * 
135     * @return The registry region of this view tag.
136     * @throws WvcmException 
137     *             if this proxy doesn't define a value for this property.
138     */
139    CcRegistryRegion getRegistryRegion() throws WvcmException;
140}