comparison artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java @ 20:ff666592c1c3

Added factory listing '/factories' to web app. artifacts/trunk@51 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 09 Sep 2009 14:33:25 +0000
parents
children 1cd268e07e44
comparison
equal deleted inserted replaced
19:1259d192e3c3 20:ff666592c1c3
1 package de.intevation.artifactdatabase.rest;
2
3
4 import de.intevation.artifacts.ArtifactDatabase;
5
6 import org.restlet.data.MediaType;
7
8 import org.restlet.resource.Get;
9 import org.restlet.resource.ServerResource;
10
11 import org.restlet.ext.xml.DomRepresentation;
12
13 import java.io.IOException;
14
15 import de.intevation.artifactdatabase.XMLUtils;
16 import de.intevation.artifactdatabase.XMLUtils.ElementCreator;
17
18 import de.intevation.artifactdatabase.DefaultArtifact;
19
20 import org.w3c.dom.Document;
21 import org.w3c.dom.Element;
22
23 import org.apache.log4j.Logger;
24
25 public class FactoriesResource
26 extends ServerResource
27 {
28 private static final Logger logger = Logger.getLogger(FactoriesResource.class);
29
30 public static final String PATH = "/factories";
31
32 @Get
33 public DomRepresentation represent() {
34
35 Document document = XMLUtils.newDocument();
36
37 ElementCreator ec = new ElementCreator(
38 document,
39 DefaultArtifact.NAMESPACE_URI,
40 DefaultArtifact.NAMESPACE_PREFIX);
41
42 ArtifactDatabase db = (ArtifactDatabase)getContext()
43 .getAttributes().get("database");
44
45 Element root = ec.create("result");
46 document.appendChild(root);
47
48 Element type = ec.create("type");
49 ec.addAttr(type, "name", "factory-list");
50 root.appendChild(type);
51
52 Element factories = ec.create("factories");
53 root.appendChild(factories);
54
55 String [] factoryNames = db.getArtifactFactoryNames();
56
57 for (int i = 0; i < factoryNames.length; ++i) {
58 Element factoryElement = ec.create("factory");
59 ec.addAttr(factoryElement, "name", factoryNames[i]);
60 factories.appendChild(factoryElement);
61 }
62
63 return new DomRepresentation(
64 MediaType.APPLICATION_XML, document);
65 }
66 }
67 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

http://dive4elements.wald.intevation.org