001    /*
002     * file WorkspaceProvider.java
003     *
004     * Licensed Materials - Property of IBM
005     * Restricted Materials of IBM
006     *
007     * (c) Copyright IBM Corporation 2004, 2008.  All Rights Reserved. 
008     * Note to U.S. Government Users Restricted Rights:  Use, duplication or  
009     * disclosure restricted by GSA ADP  Schedule Contract with IBM Corp. 
010     */
011    package javax.wvcm;
012    
013    
014    /**
015     * A WVCM workspace provider.
016     *
017     * A WVCM workspace provider is a factory for creating new new proxy objects for
018     * resources that are members of a workspace. A WVCM workspace provider also can
019     * be queried to determine recommended locations for workspaces, both to guide
020     * the placement of new workspaces as well as to locate existing resources. Once
021     * a workspace is located, the workspace resource can be queried to determine
022     * locations for other types of resources.
023     * 
024     * @since 1.0
025     */
026    public interface WorkspaceProvider extends Provider {
027    
028        public static final String IA_ROOT_LOCATION = "com.ibm.rational.wvcm.ROOT_LOCATION"; //$NON-NLS-1$
029        public static final String IA_WORKSPACE_PATH = "com.ibm.rational.wvcm.WORKSPACE_LOCATION"; //$NON-NLS-1$
030        public static final String IA_CR_HAS_ONE_PARENT = "com.ibm.rational.wvcm.ri.repo.CR_HAS_ONE_PARENT"; //$NON-NLS-1$
031        public static final String IA_STREAM_FORGETS_UNBOUND_VERSIONS = "com.ibm.rational.wvcm.ri.repo.STREAM_FORGETS_UNBOUND_VERSIONS"; //$NON-NLS-1$
032        public static final String IA_VERSION_KNOWS_PARENT = "com.ibm.rational.wvcm.ri.VERSION_KNOWS_PARENT"; //$NON-NLS-1$
033    
034    
035        /**
036         * Construct an activity proxy for the given location.
037         * 
038         * @param loc the location of the activity.
039         * @return a new proxy for an activity at this Location.
040         */
041        public Activity activity(Location loc);
042    
043        /**
044         * Construct a baseline proxy for the given location.
045         * 
046         * @param loc the location of the baseline.
047         * @return a new proxy for a baseline at this Location.
048         */
049        public Baseline baseline(Location loc);
050    
051        /**
052         * Construct a component proxy for the given location.
053         * 
054         * @param loc the location of the component.
055         * @return a new proxy for a component at this Location.
056         */
057        public Component component(Location loc);
058    
059        /**
060         * Construct a configuration proxy for the given location.
061         * 
062         * @param loc the location of the configuration.
063         * @return a new proxy for a configuration at this Location.
064         */
065        public Configuration configuration(Location loc);
066    
067        /**
068         * Construct a controllable folder proxy for the given location.
069         * 
070         * @param loc the location of the controllable folder.
071         * @return a new proxy for a controllable folder at this Location.
072         */
073        public ControllableFolder controllableFolder(Location loc);
074    
075        /**
076         * Construct a controllable resource proxy for the given location.
077         * 
078         * @param loc the location of the controllable resource.
079         * @return a new proxy for a controllable resource at this Location.
080         */
081        public ControllableResource controllableResource(Location loc);
082    
083        /**
084         * Construct a controllable symbolic link proxy for the given location.
085         * 
086         * @param loc the location of the controllable symbolic link.
087         * @return a new proxy for a controllable symbolic link at this Location.
088         */
089        public ControllableSymbolicLink controllableSymbolicLink(Location loc);
090    
091        /**
092         * Construct a folder version proxy for the given location.
093    
094         * @param loc the location of the folder version.
095         * @return a new proxy for a folder version at this Location.
096         */
097        public FolderVersion folderVersion(Location loc);
098    
099        /**
100         * Construct a stream proxy for the given location.
101    
102         * @param loc the location of the stream.
103         * @return a new proxy for a stream at this Location.
104         */
105        public Stream stream(Location loc);
106    
107        /**
108         * Construct a task proxy for the given location.
109    
110         * @param loc the location of the task.
111         * @return a new proxy for a task at this Location.
112         */
113        public Task task(Location loc);
114    
115        /**
116         * Construct a version proxy for the given location.
117         * 
118         * @param loc the location of the version.
119         * @return a new proxy for a version at this Location.
120         */
121        public Version version(Location loc);
122    
123        /**
124         * Construct a version history proxy for the given location.
125         * 
126         * @param loc the location of the version history.
127         * @return a new proxy for a version history at this Location.
128         */
129        public VersionHistory versionHistory(Location loc);
130    
131        /**
132         * Construct a workspace proxy for the given location.
133    
134         * @param loc the location of the workspace.
135         * @return a new proxy for a workspace at this Location.
136         */
137        public Workspace workspace(Location loc);
138    
139    }