Author: glandais Date: 2007-12-06 18:37:03 +0000 (Thu, 06 Dec 2007) New Revision: 51 Added: trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/ trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/LuceneStorageEngine.java trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/StorageEngine.java Log: Interface et impl?\195?\169mentation du service de stockage Added: trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/LuceneStorageEngine.java =================================================================== --- trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/LuceneStorageEngine.java (rev 0) +++ trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/LuceneStorageEngine.java 2007-12-06 18:37:03 UTC (rev 51) @@ -0,0 +1,98 @@ +package org.cemagref.simexplorer.si.storage.engine; + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Collections; +import java.util.List; + +import org.cemagref.simexplorer.si.storage.database.lucene.LuceneDatabase; +import org.cemagref.simexplorer.si.storage.entities.LoggableElement; +import org.cemagref.simexplorer.si.storage.entities.Version; +import org.cemagref.simexplorer.si.storage.factories.EntityFactory; + +public class LuceneStorageEngine extends StorageEngine { + + @Override + public void close() throws Exception { + database.close(); + } + + @Override + public void exportElement(LoggableElement element, OutputStream os) + throws Exception { + LoggableElement completeElement = database.findElement(element + .getUuid(), element.getVersion()); + EntityFactory.getFactory(completeElement.getClass()).getElementXML( + element, os); + } + + @Override + public LoggableElement getElement(String uuid) throws Exception { + return database.getElementLatestVersion(uuid); + } + + @Override + public LoggableElement getElementVersion(String uuid, Version version) + throws Exception { + return database.findElement(uuid, version); + } + + @Override + public List<Version> getVersions(String uuid) throws Exception { + return database.getVersions(uuid); + } + + @Override + public LoggableElement importElement(InputStream inputStream) + throws Exception { + LoggableElement importedElement = null; + + database.pushElement(importedElement); + return importedElement; + } + + @Override + public LoggableElement newElement(LoggableElement element) throws Exception { + if (getElement(element.getUuid()) != null) { + throw new Exception(element.getUuid() + " already exist"); + } + element.setVersion("1"); + database.pushElement(element); + return getElement(element.getUuid()); + } + + @Override + public void open() throws Exception { + database = new LuceneDatabase(); + database.open(); + } + + @Override + public LoggableElement saveElement(LoggableElement element) + throws Exception { + Version version = null; + List<Version> versions = getVersions(element.getUuid()); + if (versions.size() > 0) { + Collections.sort(versions); + Collections.reverse(versions); + + version = versions.get(0); + version.incVersion(0); + } else { + version = new Version("1"); + } + + element.setVersion(version.toString()); + + database.pushElement(element); + return getElement(element.getUuid()); + } + + @Override + public LoggableElement synchronizeElement(LoggableElement element) + throws Exception { + // TODO Auto-generated method stub + return null; + } + +} Added: trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/StorageEngine.java =================================================================== --- trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/StorageEngine.java (rev 0) +++ trunk/simexplorer-si-storage/src/java/org/cemagref/simexplorer/si/storage/engine/StorageEngine.java 2007-12-06 18:37:03 UTC (rev 51) @@ -0,0 +1,41 @@ +package org.cemagref.simexplorer.si.storage.engine; + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.List; + +import org.cemagref.simexplorer.si.storage.database.Database; +import org.cemagref.simexplorer.si.storage.entities.LoggableElement; +import org.cemagref.simexplorer.si.storage.entities.Version; + +public abstract class StorageEngine { + + protected Database database; + + public abstract void open() throws Exception; + + public abstract void close() throws Exception; + + public abstract LoggableElement getElement(String uuid) throws Exception; + + public abstract List<Version> getVersions(String uuid) throws Exception; + + public abstract LoggableElement getElementVersion(String uuid, + Version version) throws Exception; + + public abstract LoggableElement newElement(LoggableElement element) + throws Exception; + + public abstract LoggableElement saveElement(LoggableElement element) + throws Exception; + + public abstract LoggableElement synchronizeElement(LoggableElement element) + throws Exception; + + public abstract void exportElement(LoggableElement element, OutputStream os) + throws Exception; + + public abstract LoggableElement importElement(InputStream inputStream) + throws Exception; + +}