Interface ProjectManagerBase
-
- All Known Subinterfaces:
ProjectManager
public interface ProjectManagerBase
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringDEFAULT_NAME_PATTERN
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description voidaddProjectListener(ProjectListener listener)Add aProjectListener.default java.lang.StringcopyProject(java.lang.String projectName, java.lang.String newProjectName)Create a copy of theRuntimeProjectnamedprojectName, usingnewProjectNameas the new project name, if possible.voidcreateOrReplaceProject(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources)Create a newRuntimeProjectwith the provided manifests and resources, or replace an existing project byprojectNameif it already exists.voidcreateProject(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources)Create a newRuntimeProjectwith the provided manifest and resources.default java.lang.StringcreateProjectSafe(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources)Create a newRuntimeProjectwith the provided manifests and resources.default java.lang.StringcreateProjectSafe(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources, java.lang.String namePattern)Create a newRuntimeProjectwith the provided manifests and resources.voiddeleteProject(java.lang.String projectName)Delete the project namedprojectName, if it exists.voidexportProject(java.lang.String projectName, java.io.OutputStream destination)Export a copy of projectprojectNameby writing the contents to thedestinationOutputStream.default java.util.Optional<RuntimeProject>getProject(java.lang.String projectName)Get a theRuntimeProjectfor 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 aRuntimeProjectfor 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 aRuntimeProjectby the givenprojectNamecontaining only resources that pass the providedResourceFilter, if it exists.java.util.Map<java.lang.String,ProjectManifest>getProjectManifests()Get aMapofProjectManifests for all current Projects.java.util.List<java.lang.String>getProjectNames()Get aListof all current project names.java.util.List<ProjectDiff.AbsoluteDiff>pull(java.util.List<ProjectSnapshot> snapshots)Pull any changes for the givensnapshots.java.util.List<ProjectDiff.AbsoluteDiff>pull(java.util.List<ProjectSnapshot> snapshots, ResourceFilter filter)Pull any changes for the givensnapshots, but only changes for resources that match thefilter.voidpush(java.util.List<ChangeOperation> changeOperations)Attempt to push a list ofChangeOperations.voidremoveProjectListener(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, NameInUseExceptionCreate a newRuntimeProjectwith 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 byprojectNamealready exists.
-
createProjectSafe
default java.lang.String createProjectSafe(java.lang.String projectName, ProjectManifest manifest, java.util.List<ProjectResource> resources) throws java.lang.IllegalArgumentException, java.io.IOExceptionCreate a newRuntimeProjectwith the provided manifests and resources.If a project by
projectNamealready exists, the suffix "_N", where N increases monotonically from 1, is appended toprojectNameuntil 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.IOExceptionCreate a newRuntimeProjectwith the provided manifests and resources.If a project by
projectNamealready exists thenamePatternis 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 ifprojectNamealready 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.IOExceptionCreate a newRuntimeProjectwith the provided manifests and resources, or replace an existing project byprojectNameif it already exists.Replacing an existing project is modeled as a push of create, modify, and delete
ChangeOperations, 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, ProjectInvalidExceptionCreate a copy of theRuntimeProjectnamedprojectName, usingnewProjectNameas the new project name, if possible.If
newProjectNamealready 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 byprojectNamedoes not exist.ProjectInvalidException- if the project byprojectNameexists but its configuration is not valid.
-
deleteProject
void deleteProject(java.lang.String projectName) throws java.io.IOException, ProjectNotFoundExceptionDelete 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 byprojectNamedoes not exist.
-
getProject
default java.util.Optional<RuntimeProject> getProject(java.lang.String projectName)
Get a theRuntimeProjectfor 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
RuntimeProjectfor the given name with all project resources in all scopes.
-
getProject
default java.util.Optional<RuntimeProject> getProject(@Nonnull java.lang.String projectName, int applicationScope)
Returns aRuntimeProjectfor 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- theApplicationScoperesources must belong to.- Returns:
- a
RuntimeProjectfor the given name loaded with all project resources that meet the given application scope.
-
getProject
java.util.Optional<RuntimeProject> getProject(@Nonnull java.lang.String projectName, ResourceFilter resourceFilter)
Get aRuntimeProjectby the givenprojectNamecontaining 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
RuntimeProjectby the givenprojectNamecontaining only resources that pass the providedResourceFilter.
-
exportProject
void exportProject(java.lang.String projectName, java.io.OutputStream destination) throws java.io.IOException, ProjectNotFoundExceptionExport a copy of projectprojectNameby writing the contents to thedestinationOutputStream.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- anOutputStreamto write the export to.- Throws:
java.io.IOExceptionProjectNotFoundException
-
getProjectManifests
java.util.Map<java.lang.String,ProjectManifest> getProjectManifests()
Get aMapofProjectManifests for all current Projects.- Returns:
- a
MapofProjectManifests, keyed by project name.
-
getProjectNames
java.util.List<java.lang.String> getProjectNames()
Get aListof all current project names.- Returns:
- a
Listof all current project names.
-
push
void push(java.util.List<ChangeOperation> changeOperations) throws ProjectPushException
Attempt to push a list ofChangeOperations.If any changes conflict with the current state a
ProjectPushExceptionwill 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 ofChangeOperations to apply.- Throws:
ProjectPushException- if any changes conflict with the current state.
-
pull
java.util.List<ProjectDiff.AbsoluteDiff> pull(java.util.List<ProjectSnapshot> snapshots) throws ProjectPullException
Pull any changes for the givensnapshots.- Parameters:
snapshots- theProjectSnapshots to pull changes for.- Returns:
ProjectDiffs for eachProjectSnapshotcontaining any resource diffs.- Throws:
ProjectPullException
-
pull
java.util.List<ProjectDiff.AbsoluteDiff> 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- theProjectSnapshots to pull changes for.filter- theResourceFilter.- Returns:
ProjectDiff.AbsoluteDiffs for eachProjectSnapshotcontaining any resource diffs.- Throws:
ProjectPullException
-
-