Author: glandais Date: 2007-12-11 17:08:37 +0000 (Tue, 11 Dec 2007) New Revision: 65 Added: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageService.java trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/MetaDataParser.java trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/Parser.java Log: Initialisation du point d'entr?\195?\169e du service de stockage Added: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageService.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageService.java (rev 0) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageService.java 2007-12-11 17:08:37 UTC (rev 65) @@ -0,0 +1,44 @@ +package fr.cemagref.simexplorer.is.storage.service; + +import java.io.InputStream; + +import org.w3c.dom.Document; + +import fr.cemagref.simexplorer.is.storage.engine.StorageEngine; +import fr.cemagref.simexplorer.is.storage.entities.data.LoggableElement; +import fr.cemagref.simexplorer.is.storage.entities.metadata.MetaDataEntity; +import fr.cemagref.simexplorer.is.storage.xml.MetaDataParser; + +public class StorageService { + + private StorageEngine storageEngine; + + public StorageService() { + super(); + storageEngine = new StorageEngine(); + } + + public void open() throws Exception { + storageEngine.open(); + } + + public void close() throws Exception { + storageEngine.close(); + } + + public LoggableElement saveElement(InputStream xmlFile, + InputStream attachment) throws Exception { + String idxml = storageEngine.storeTempData(xmlFile); + String idattachment = null; + if (attachment != null) { + idattachment = storageEngine.storeTempData(attachment); + } + + MetaDataEntity metaData = MetaDataParser.parse(storageEngine + .retrieveTempData(idxml)); + LoggableElement result = null; + + return result; + } + +} Added: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/MetaDataParser.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/MetaDataParser.java (rev 0) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/MetaDataParser.java 2007-12-11 17:08:37 UTC (rev 65) @@ -0,0 +1,30 @@ +package fr.cemagref.simexplorer.is.storage.xml; + +import java.io.InputStream; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import fr.cemagref.simexplorer.is.storage.entities.metadata.MetaDataEntity; + +public class MetaDataParser extends Parser { + + private static String KEY_METADATA = "metadata"; + + private static String KEY_UUID = "metadata"; + private static String KEY_VERSION = "version"; + + public static MetaDataEntity parse(InputStream xmlStream) throws Exception { + MetaDataEntity mde = new MetaDataEntity(); + + Document document = getBuilder().parse(xmlStream); + Element rootElement = (Element) document.getFirstChild(); + Element metadataElement = getElementByTagName(rootElement, KEY_METADATA); + + mde.setUuid(getProperty(metadataElement, KEY_UUID)); + mde.setVersion(getProperty(metadataElement, KEY_VERSION)); + + return mde; + } + +} Added: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/Parser.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/Parser.java (rev 0) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/Parser.java 2007-12-11 17:08:37 UTC (rev 65) @@ -0,0 +1,72 @@ +package fr.cemagref.simexplorer.is.storage.xml; + +import java.util.HashSet; +import java.util.Set; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.Text; + +public class Parser { + + private static DocumentBuilder documentBuilder = null; + + public static synchronized DocumentBuilder getBuilder() throws Exception { + if (documentBuilder == null) { + DocumentBuilderFactory factory = DocumentBuilderFactory + .newInstance(); + documentBuilder = factory.newDocumentBuilder(); + return documentBuilder; + } + return documentBuilder; + } + + protected static String getProperty(Element xmlElement, String tagName) { + Element element = getElementByTagName(xmlElement, tagName); + if (element != null) { + return element.getFirstChild().getNodeValue(); + } else { + return null; + } + } + + protected static void setProperty(Document document, Element xmlElement, + String tagName, Object value) { + if (value != null) { + Element xmlProperty = document.createElement(tagName); + Text xmlDescriptionText = document.createTextNode(value.toString()); + xmlProperty.appendChild(xmlDescriptionText); + xmlElement.appendChild(xmlProperty); + } + } + + protected static Element getElementByTagName(Element xmlElement, String tagName) { + Set<Element> elements = getElementsByTagName(xmlElement, tagName); + if (elements.size() > 0) { + return elements.iterator().next(); + } else { + return null; + } + } + + protected static Set<Element> getElementsByTagName(Element xmlElement, + String tagName) { + Set<Element> elements = new HashSet<Element>(); + + NodeList nodes = xmlElement.getChildNodes(); + for (int i = 0; i < nodes.getLength(); i++) { + Node node = nodes.item(i); + if (node instanceof Element + && tagName.equals(((Element) node).getTagName())) { + elements.add((Element) node); + } + } + return elements; + } + +}
participants (1)
-
glandais@users.labs.libre-entreprise.org