001    /*
002     * file CcConfigSpec.java
003     *
004     *
005     * Licensed Materials - Property of IBM 
006     * Restricted Materials of IBM  
007     * 
008     * com.ibm.rational.wvcm.stp.cc.CcConfigSpec
009     * 
010     * (C) Copyright IBM Corporation 2004, 2015.  All Rights Reserved. 
011     * Note to U.S. Government Users Restricted Rights:  Use, duplication or  
012     * disclosure restricted by GSA ADP  Schedule Contract with IBM Corp. 
013     */
014    
015    package com.ibm.rational.wvcm.stp.cc;
016    
017    /**
018     * <p>
019     * The configuration specification ("config spec") for a ClearCase view.
020     * A view's config spec determines which elements appear in a view,
021     * and which version of each element is selected by the view.
022     * For snapshot and web views, the config spec also determines which
023     * files are loaded in the view.
024     * </p>
025     * <p> 
026     * A ConfigSpec has two sections, one containing element rules
027     * and one containing load rules. Methods are provided to manipulate
028     * each of these sections.
029     * </p>
030     * <p>
031     * CcView.getConfigSpec returns a ConfigSpec object.
032     * Note that it is necessary to set the CONFIG_SPEC property on the 
033     * desired view proxy and write that proxy's properties in order for 
034     * this change to take effect.
035     * </p>
036     */
037    public interface CcConfigSpec
038    {
039        /**
040         * Returns the "Element Rules" section (everything except the load rules)
041         * of the configuration specification.
042         * 
043         * @return the element rules as a single newline-separated string
044         * Returns empty string if none.
045         */
046        public String getElementRules();
047        
048        /**
049         * Returns the automatically-generated UCM section of the configuration
050         * specification.
051         * 
052         * @return the UCM-generated element rules.
053         * Returns empty string if none (i.e. if not a UCM view.)
054         */
055        public String getUcmElementRules();
056        
057        /**
058         * Returns the load-rules section of a configuration specification.
059         * 
060         * @return the load-rules, as a single newline-separated string.
061         * Returns empty string if none (i.e. if not a snapshot view or a web view).
062         */
063        public String getLoadRules();
064    
065        /**
066         * Sets the "Element Rules" (everything except the load rules) section of a ConfigSpec object.
067         * 
068         * Config specs are manipulated through the property mechanism.
069         * 
070         * For automatic views, setForceAutomaticViewUpdateFlag must be set to true for
071         * setElementRules to take effect
072         *
073         * @param elementRules a newline-separated string representing the new element rules
074         */
075        public void setElementRules(String elementRules);
076    
077        /**
078         * If true (default), element rules and load rules are updated in the config spec.
079         * If false, only load rules are updated in the config spec.
080         * 
081         * @param force
082         */
083        public void setForceAutomaticViewUpdateFlag(boolean force);
084        
085        /**
086         * Sets the load-rules section of a configuration specification.
087         * 
088         * Config specs are manipulated through the property mechanism.
089         * 
090         * 
091         * @param loadRules a newline-separated string representing the new load rules
092         */
093        public void setLoadRules(String loadRules);
094        
095        /**
096         * Returns the configuration specification minus the auto generated UCM section, if any.
097         * 
098         * @return the configuration specification, as a single newline-separated string.
099         */
100        public String getCSpec();
101        
102        /**
103         * Sets the configuration specification after adding the auto generated UCM
104         * section, if any. Note that it is necessary to set the CONFIG_SPEC
105         * property on the desired view proxy and write that proxy's properties in
106         * order for this change to take effect.
107         * 
108         * @param cspec a newline-separated string representing the new load configuration specification
109         */
110        public void setCSpec(String cspec);
111        
112        /**
113         * Returns the filtered load-rules section (i.e free from comments, if any) 
114         * of a configuration specification.
115         * 
116         * @return the filtered load-rules, as a single newline-separated string.
117         * Returns empty string if none (i.e. if not a snapshot view or a web view).
118         */
119        public String getLoadRulesNoComments();
120    }