Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java @ 158:d718a4d55662
Implemented the createCollection() method in the artifact database.
artifacts/trunk@1383 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 03 Mar 2011 10:54:33 +0000 |
parents | 6e6965873a48 |
children | db0d20440b92 |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java Thu Mar 03 10:33:49 2011 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java Thu Mar 03 10:54:33 2011 +0000 @@ -11,6 +11,7 @@ import de.intevation.artifactdatabase.Backend.PersistentArtifact; import de.intevation.artifacts.Artifact; +import de.intevation.artifacts.ArtifactCollection; import de.intevation.artifacts.ArtifactCollectionFactory; import de.intevation.artifacts.ArtifactDatabase; import de.intevation.artifacts.ArtifactDatabaseException; @@ -193,6 +194,14 @@ public static final String NO_USERNAME = "Invalid username"; + // Collection constants + + /** + * Error message issued if the creation of a collection failed. + */ + public static final String COLLECTION_CREATION_FAILED = + "Creation of collection failed"; + /** * Inner class that implements the call context handed @@ -622,6 +631,10 @@ return userFactory; } + public ArtifactCollectionFactory getArtifactCollectionFactory() { + return collectionFactory; + } + public Document createArtifactWithFactory( String factoryName, CallMeta callMeta, @@ -1082,8 +1095,34 @@ public Document createCollection(String ownerId, Document data, CallMeta callMeta) - throws ArtifactDatabaseException { - throw new ArtifactDatabaseException("Not implemented, yet!"); + throws ArtifactDatabaseException + { + ArtifactCollectionFactory acf = getArtifactCollectionFactory(); + + if (acf == null) { + throw new ArtifactDatabaseException(NO_SUCH_FACTORY); + } + + ArtifactCollection ac = backend.createCollection( + ownerId, data, context, acf); + + if (ac == null) { + throw new ArtifactDatabaseException(COLLECTION_CREATION_FAILED); + } + + Document result = XMLUtils.newDocument(); + + XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( + result, + ArtifactNamespaceContext.NAMESPACE_URI, + ArtifactNamespaceContext.NAMESPACE_PREFIX); + + Element root = ec.create("result"); + result.appendChild(root); + + result.setTextContent(OPERATION_SUCCESSFUL); + + return result; } public Document deleteCollection(String collectionId, CallMeta callMeta)