001    /*
002     * file CcAttributeType.java
003     *
004     * Licensed Materials - Property of IBM
005     * Restricted Materials of IBM
006     *
007     * com.ibm.rational.wvcm.stp.cc.CcAttributeType
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    
014    package com.ibm.rational.wvcm.stp.cc;
015    
016    import com.ibm.rational.wvcm.stpex.StpExEnumeration;
017    
018    
019    /**
020     * <p>A proxy for a ClearCase attribute type.
021     * </p>
022     * <p>The ClearCase attribute mechanism lets you associate arbitrary
023     * name/value pairs with particular ClearCase versions or elements.
024     * </p>
025     * <p>Attributes are typically used to customize and extend standard
026     * ClearCase functionality.  For example, to notify various people in your group
027     * when particular files are modified, you could store those peoples' email
028     * addresses in an "EmailList" attribute associated with each element of interest.
029     * Then associate a checkin "post-op" trigger with those
030     * elements that reads the attribute value and sends the notice.
031     * </p>
032     * <p>You can also use the cleartool "find" command to find elements and
033     * versions based on their attributes.
034     * </p>
035     * <p>For more attribute information, see the ClearCase "Guide to Managing Software Projects"
036     * manual, and the cleartool man pages "mkattype" and "find".
037     * </p>
038     */
039    public interface CcAttributeType extends CcTypeBase
040    {
041        /**
042         * Value type of a ClearCase attribute type.
043         * The value type determines helps constrain the legal values and format of an
044         * attribute instance.  
045         */
046        enum ValueType implements StpExEnumeration
047        {
048            /** Value is an integer. */
049            INTEGER,
050    
051            /** Value is floating-point. */
052            REAL,
053            
054            /** Value is a string. */
055            STRING,
056            
057            /** Value represents a time. */
058            TIME,
059            
060            /** Value is an opaque arbitrary byte sequences. */
061            OPAQUE;
062        }
063    
064    }