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 */
011package 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 */
026public 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}