Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java @ 26:83a059c204f8
Connected /create with artifact db.
artifacts/trunk@61 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 10 Sep 2009 12:29:57 +0000 |
parents | 72abee95fd64 |
children | c2d53bd30ab8 |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java Thu Sep 10 09:23:53 2009 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java Thu Sep 10 12:29:57 2009 +0000 @@ -22,6 +22,10 @@ import java.io.IOException; +import de.intevation.artifacts.ArtifactNamespaceContext; +import de.intevation.artifacts.ArtifactDatabase; +import de.intevation.artifacts.Artifact; + /** * @author Sascha L. Teichmann (sascha.teichmann@intevation) */ @@ -32,6 +36,12 @@ public static final String PATH = "/create"; + public static final String XPATH_FACTORY = "/action/factory/@name"; + + public static final String NO_FACTORY_MESSAGE = "No factory given"; + + public static final String NO_ARTIFACT_CREATED = "No artifact created"; + @Post public Representation represent() { @@ -50,8 +60,35 @@ response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST, ioe); return new EmptyRepresentation(); } + + String factory = XMLUtils.xpathString( + inputDocument, + XPATH_FACTORY, + ArtifactNamespaceContext.INSTANCE); + + if (factory == null || factory.length() == 0) { + Response response = getResponse(); + response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST, NO_FACTORY_MESSAGE); + return new EmptyRepresentation(); + } + + if (logger.isDebugEnabled()) { + logger.debug("Create artifact with factory '" + factory + "'"); + } + + ArtifactDatabase db = (ArtifactDatabase)getContext() + .getAttributes().get("database"); + + Artifact artifact = db.createArtifactWithFactory(factory); + + if (artifact == null) { + Response response = getResponse(); + response.setStatus(Status.CLIENT_ERROR_UNPROCESSABLE_ENTITY, NO_ARTIFACT_CREATED); + return new EmptyRepresentation(); + } - Document outputDocument = XMLUtils.newDocument(); + Document outputDocument = artifact.describe( + db.getArtifactContext()); return new DomRepresentation( MediaType.APPLICATION_XML, outputDocument);