Interface ProjectManagerBase
-
- All Known Subinterfaces:
ProjectManager
public interface ProjectManagerBase
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DEFAULT_NAME_PATTERN
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
addProjectListener(ProjectListener listener)
Add aProjectListener
.default java.lang.String
copyProject(java.lang.String projectName, java.lang.String newProjectName)
Create a copy of theRuntimeProject
namedprojectName
, usingnewProjectName
as the new project name, if possible.void
createOrReplaceProject(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources)
Create a newRuntimeProject
with the provided manifests and resources, or replace an existing project byprojectName
if it already exists.void
createProject(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources)
Create a newRuntimeProject
with the provided manifest and resources.default java.lang.String
createProjectSafe(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources)
Create a newRuntimeProject
with the provided manifests and resources.default java.lang.String
createProjectSafe(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources, java.lang.String namePattern)
Create a newRuntimeProject
with the provided manifests and resources.void
deleteProject(java.lang.String projectName)
Delete the project namedprojectName
, if it exists.void
exportProject(java.lang.String projectName, java.io.OutputStream destination)
Export a copy of projectprojectName
by writing the contents to thedestination
OutputStream
.default java.util.Optional<RuntimeProject>
getProject(java.lang.String projectName)
Get a theRuntimeProject
for the given name with all project resources in all scopes, if it exists.default java.util.Optional<RuntimeProject>
getProject(java.lang.String projectName, int applicationScope)
Returns aRuntimeProject
for the given name loaded with all project resources that meet the given application scope, if it exists.java.util.Optional<RuntimeProject>
getProject(java.lang.String projectName, ResourceFilter resourceFilter)
Get aRuntimeProject
by the givenprojectName
containing only resources that pass the providedResourceFilter
, if it exists.java.util.Map<java.lang.String,ProjectManifest>
getProjectManifests()
Get aMap
ofProjectManifest
s for all current Projects.java.util.List<java.lang.String>
getProjectNames()
Get aList
of all current project names.java.util.List<ProjectDiff>
pull(java.util.List<ProjectSnapshot> snapshots)
Pull any changes for the givensnapshots
.java.util.List<ProjectDiff>
pull(java.util.List<ProjectSnapshot> snapshots, ResourceFilter filter)
Pull any changes for the givensnapshots
, but only changes for resources that match thefilter
.void
push(java.util.List<ChangeOperation> changeOperations)
Attempt to push a list ofChangeOperation
s.void
removeProjectListener(ProjectListener listener)
Remove a previously-registeredProjectListener
.
-
-
-
Field Detail
-
DEFAULT_NAME_PATTERN
static final java.lang.String DEFAULT_NAME_PATTERN
- See Also:
- Constant Field Values
-
-
Method Detail
-
addProjectListener
void addProjectListener(ProjectListener listener)
Add aProjectListener
.- Parameters:
listener
- theProjectListener
.
-
removeProjectListener
void removeProjectListener(ProjectListener listener)
Remove a previously-registeredProjectListener
.- Parameters:
listener
- theProjectListener
.
-
createProject
void createProject(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources) throws java.lang.IllegalArgumentException, java.io.IOException, NameInUseException
Create a newRuntimeProject
with the provided manifest and resources.- Parameters:
projectName
- the name of the project to create.manifest
- theProjectManifest
.resources
- the resources, if any, to assign to the project.- Throws:
java.lang.IllegalArgumentException
- if any of the resources indicate they belong to a project other thanprojectName
.java.io.IOException
- if the project files could not be created.NameInUseException
- if a project byprojectName
already exists.
-
createProjectSafe
default java.lang.String createProjectSafe(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources) throws java.lang.IllegalArgumentException, java.io.IOException
Create a newRuntimeProject
with the provided manifests and resources.If a project by
projectName
already exists, the suffix "_N", where N increases monotonically from 1, is appended toprojectName
until a name that isn't already used is found.- Parameters:
projectName
- the name of the project to create.manifest
- theProjectManifest
.resources
- the resources, if any, to assign to the project.- Returns:
- the name of the new project.
- Throws:
java.lang.IllegalArgumentException
- if any of the resources indicate they belong to a project other thanprojectName
.java.io.IOException
- if the project files could not be created.
-
createProjectSafe
default java.lang.String createProjectSafe(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources, java.lang.String namePattern) throws java.lang.IllegalArgumentException, java.io.IOException
Create a newRuntimeProject
with the provided manifests and resources.If a project by
projectName
already exists thenamePattern
is applied to the name viaString.format(String, Object...)
, with a monotonically increasing integer value supplied, until a suitable name is found.- Parameters:
projectName
- the name of the project to create.manifest
- theProjectManifest
.resources
- the resources, if any, to assign to the project.namePattern
- the name pattern to apply ifprojectName
already exists.- Returns:
- the name of the new project.
- Throws:
java.lang.IllegalArgumentException
- if any of the resources indicate they belong to a project other thanprojectName
.java.io.IOException
- if the project files could not be created.
-
createOrReplaceProject
void createOrReplaceProject(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources) throws java.lang.IllegalArgumentException, java.io.IOException
Create a newRuntimeProject
with the provided manifests and resources, or replace an existing project byprojectName
if it already exists.Replacing an existing project is modeled as a push of create, modify, and delete
ChangeOperation
s, as opposed to deleting the existing project and creating a new one.- Parameters:
projectName
- the name of the project to create or replace.manifest
- theProjectManifest
.resources
- the resources, if any, to assign to the project.- Throws:
java.lang.IllegalArgumentException
- if any of the resources indicate they belong to a project other thanprojectName
.java.io.IOException
- if the project files could not be created.
-
copyProject
default java.lang.String copyProject(java.lang.String projectName, java.lang.String newProjectName) throws java.io.IOException, ProjectNotFoundException, ProjectInvalidException
Create a copy of theRuntimeProject
namedprojectName
, usingnewProjectName
as the new project name, if possible.If
newProjectName
already exists a suitable name will be chosen automatically viacreateProjectSafe(String, ProjectManifest, List)
.- Parameters:
projectName
- the name of the existing project to copy.newProjectName
- the name for the new project.- Returns:
- the actual name used for the new project.
- Throws:
java.io.IOException
- if the project files could not be created.ProjectNotFoundException
- if a project byprojectName
does not exist.ProjectInvalidException
- if the project byprojectName
exists but its configuration is not valid.
-
deleteProject
void deleteProject(java.lang.String projectName) throws java.io.IOException, ProjectNotFoundException
Delete the project namedprojectName
, if it exists.- Parameters:
projectName
- the name of the project to delete- Throws:
java.io.IOException
- if the project files could not be deleted.ProjectNotFoundException
- if a project byprojectName
does not exist.
-
getProject
default java.util.Optional<RuntimeProject> getProject(java.lang.String projectName)
Get a theRuntimeProject
for the given name with all project resources in all scopes, if it exists.The project returned will not have been validated. See
RuntimeProject.validateOrThrow()
.- Parameters:
projectName
- the name of the project to get.- Returns:
- the
RuntimeProject
for the given name with all project resources in all scopes.
-
getProject
default java.util.Optional<RuntimeProject> getProject(java.lang.String projectName, int applicationScope)
Returns aRuntimeProject
for the given name loaded with all project resources that meet the given application scope, if it exists.The project returned will not have been validated. See
RuntimeProject.validateOrThrow()
.- Parameters:
projectName
- the name of the project to get.applicationScope
- theApplicationScope
resources must belong to.- Returns:
- a
RuntimeProject
for the given name loaded with all project resources that meet the given application scope.
-
getProject
java.util.Optional<RuntimeProject> getProject(java.lang.String projectName, ResourceFilter resourceFilter)
Get aRuntimeProject
by the givenprojectName
containing only resources that pass the providedResourceFilter
, if it exists.The project returned will not have been validated. See
RuntimeProject.validateOrThrow()
.- Parameters:
projectName
- the name of the project to get.resourceFilter
- theResourceFilter
.- Returns:
- a
RuntimeProject
by the givenprojectName
containing only resources that pass the providedResourceFilter
.
-
exportProject
void exportProject(java.lang.String projectName, java.io.OutputStream destination) throws java.io.IOException, ProjectNotFoundException
Export a copy of projectprojectName
by writing the contents to thedestination
OutputStream
.The bytes written are composed of a zip formatted project folder that could be uncompressed and placed directly in the projects directory resulting in a functional project.
- Parameters:
projectName
- the name of the project to export.destination
- anOutputStream
to write the export to.- Throws:
java.io.IOException
ProjectNotFoundException
-
getProjectManifests
java.util.Map<java.lang.String,ProjectManifest> getProjectManifests()
Get aMap
ofProjectManifest
s for all current Projects.- Returns:
- a
Map
ofProjectManifest
s, keyed by project name.
-
getProjectNames
java.util.List<java.lang.String> getProjectNames()
Get aList
of all current project names.- Returns:
- a
List
of all current project names.
-
push
void push(java.util.List<ChangeOperation> changeOperations) throws ProjectPushException
Attempt to push a list ofChangeOperation
s.If any changes conflict with the current state a
ProjectPushException
will be thrown.It is expected that consumers of this API will then pull and resolve any conflicts before attempting to push again.
- Parameters:
changeOperations
- a list ofChangeOperation
s to apply.- Throws:
ProjectPushException
- if any changes conflict with the current state.
-
pull
java.util.List<ProjectDiff> pull(java.util.List<ProjectSnapshot> snapshots) throws ProjectPullException
Pull any changes for the givensnapshots
.- Parameters:
snapshots
- theProjectSnapshot
s to pull changes for.- Returns:
ProjectDiff
s for eachProjectSnapshot
containing any resource diffs.- Throws:
ProjectPullException
-
pull
java.util.List<ProjectDiff> pull(java.util.List<ProjectSnapshot> snapshots, ResourceFilter filter) throws ProjectPullException
Pull any changes for the givensnapshots
, but only changes for resources that match thefilter
.- Parameters:
snapshots
- theProjectSnapshot
s to pull changes for.filter
- theResourceFilter
.- Returns:
ProjectDiff
s for eachProjectSnapshot
containing any resource diffs.- Throws:
ProjectPullException
-
-