001/*
002* file CcElement.java
003*
004* Licensed Materials - Property of IBM
005* Restricted Materials of IBM
006* 
007* com.ibm.rational.wvcm.stp.cc.CcElement
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
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 * A proxy for a ClearCase element.
023 * <p>
024 * Items under Rational ClearCase source control (version control) are 
025 * generally referred to as elements. An element can be a design model, 
026 * C++ source file, Visual Studio project, or a DLL. Elements are typically 
027 * the objects on which you do work. About versions, elements, and VOBs: 
028 * each time you revise and check in a file or directory from a view, a new 
029 * version of that element is created. Files and directories under Rational 
030 * ClearCase control (and all of their constituent versions) are called 
031 * elements and are stored in VOBs.
032 * </p>
033 * <p>
034 * For more information about elements, see the ClearCase "Guide to Developing Software"
035 * manual, and the cleartool man page "mkelem".
036 * </p>
037 */
038public interface CcElement
039    extends javax.wvcm.VersionHistory, CcVobResource
040{
041        /**
042     * <p>
043     * The view-relative path for this element.
044     * </p>
045     * <p>
046     * NOTE: This property is only available if it is retrieved
047     * using a method with a view context, such as
048     * Resource.doReadProperties(CcView, PropertyRequest).
049     * ClearCase needs a view context to resolve element paths.
050     * </p>
051     */
052    PropertyName<String> VIEW_RELATIVE_PATH =
053        new PropertyName<String>(PROPERTY_NAMESPACE, "element-view-relative-path");
054    
055    /**
056     * Get the value of this element's {@link #VIEW_RELATIVE_PATH} property.
057     * 
058     * @return view-relative path for the element
059     * @throws WvcmException
060     *     if property was not requested, or if the view context
061     *     was not provided
062     */
063    String getViewRelativePath() throws WvcmException;
064
065    /** Get this element's element type. */
066    PropertyName<CcElementType> ELEMENT_TYPE =
067        new PropertyName<CcElementType>(PROPERTY_NAMESPACE,
068                                                      "element-element-type");
069
070    /**
071     * Get the value of this element's {@link #ELEMENT_TYPE} property.
072     * 
073     * @return element type for the element
074     * @throws WvcmException
075     *     if property was not requested
076     */
077    CcElementType getElementType() throws WvcmException;
078
079    
080}