Author: glandais
Date: 2008-02-13 11:36:42 +0000 (Wed, 13 Feb 2008)
New Revision: 899
Added:
trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceHelper.java
Modified:
trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/SimExplorerServiceStream.java
trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java
trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java
Log:
exportTo contract modification
Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/SimExplorerServiceStream.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/SimExplorerServiceStream.java 2008-02-13 11:03:22 UTC (rev 898)
+++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/SimExplorerServiceStream.java 2008-02-13 11:36:42 UTC (rev 899)
@@ -55,6 +55,7 @@
/** The local stream, set to null if stream is serialized. */
transient private BufferedInputStream bis;
+ /** true if stream is initialized. */
private boolean initialized;
/**
Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java 2008-02-13 11:03:22 UTC (rev 898)
+++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java 2008-02-13 11:36:42 UTC (rev 899)
@@ -77,6 +77,20 @@
throws SimExplorerServiceException;
/**
+ * Update.
+ *
+ * @param token the token
+ * @param oldVersion the old version
+ * @param newVersion the new version
+ * @param oldUuid the old uuid
+ * @param deleteOldElement
+ *
+ * @throws SimExplorerServiceException the sim explorer service exception
+ */
+ void update(String token, String oldUuid, Version oldVersion, MetaData newVersion, boolean deleteOldElement)
+ throws SimExplorerServiceException;
+
+ /**
* Retrieve metadata (latest version).
*
* @param token the token
@@ -147,21 +161,6 @@
Attachment attachment) throws SimExplorerServiceException;
/**
- * Export element to another service.
- *
- * @param token the token
- * @param otherService the other service
- * @param uuid the uuid
- * @param version the version
- *
- * @return the version
- *
- * @throws SimExplorerServiceException the sim explorer service exception
- */
- Version exportElementTo(String token, StorageService otherService,
- String uuid, String version) throws SimExplorerServiceException;
-
- /**
* Retrieve number of elements matching query.
*
* @param token the token
Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-02-13 11:03:22 UTC (rev 898)
+++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-02-13 11:36:42 UTC (rev 899)
@@ -50,8 +50,7 @@
/**
* The Class StorageServiceCommon.
*/
-public abstract class StorageServiceCommon implements StorageService,
- XmlConstants {
+public abstract class StorageServiceCommon implements StorageService, XmlConstants {
/** The xml attachment. */
private Attachment xmlAttachment = null;
@@ -63,8 +62,7 @@
*
* @throws SimExplorerStorageException the sim explorer storage exception
*/
- protected abstract StorageEngine getStorageEngine()
- throws SimExplorerStorageException;
+ protected abstract StorageEngine getStorageEngine() throws SimExplorerStorageException;
/**
* Gets the xML attachment.
@@ -83,8 +81,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#getMetadata(java.lang.String, java.lang.String)
*/
- public MetaData getMetadata(String token, String uuid)
- throws SimExplorerServiceException {
+ public MetaData getMetadata(String token, String uuid) throws SimExplorerServiceException {
try {
return getStorageEngine().getMetadata(token, uuid);
} catch (SimExplorerStorageException e) {
@@ -95,11 +92,9 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#getMetadata(java.lang.String, java.lang.String, java.lang.String)
*/
- public MetaData getMetadata(String token, String uuid, String version)
- throws SimExplorerServiceException {
+ public MetaData getMetadata(String token, String uuid, String version) throws SimExplorerServiceException {
try {
- return getStorageEngine().getMetadata(token, uuid,
- new Version(version));
+ return getStorageEngine().getMetadata(token, uuid, new Version(version));
} catch (SimExplorerStorageException e) {
throw new SimExplorerServiceException(e);
}
@@ -108,12 +103,10 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#findFullText(java.lang.String, java.lang.String, boolean, int, int, int)
*/
- public MetaData[] findFullText(String token, String query,
- boolean onlyLatest, int indexStart, int count, int dateOrder)
- throws SimExplorerServiceException {
+ public MetaData[] findFullText(String token, String query, boolean onlyLatest, int indexStart, int count,
+ int dateOrder) throws SimExplorerServiceException {
try {
- return getStorageEngine().findFullText(token, query, onlyLatest,
- indexStart, count, dateOrder);
+ return getStorageEngine().findFullText(token, query, onlyLatest, indexStart, count, dateOrder);
} catch (SimExplorerStorageException e) {
throw new SimExplorerServiceException(e);
}
@@ -122,11 +115,9 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#findFullTextCount(java.lang.String, java.lang.String, boolean)
*/
- public int findFullTextCount(String token, String query, boolean onlyLatest)
- throws SimExplorerServiceException {
+ public int findFullTextCount(String token, String query, boolean onlyLatest) throws SimExplorerServiceException {
try {
- return getStorageEngine().findFullTextCount(token, query,
- onlyLatest);
+ return getStorageEngine().findFullTextCount(token, query, onlyLatest);
} catch (SimExplorerStorageException e) {
throw new SimExplorerServiceException(e);
}
@@ -135,11 +126,9 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#findApplicationsCount(java.lang.String, boolean)
*/
- public int findApplicationsCount(String token, boolean onlyLatest)
- throws SimExplorerServiceException {
+ public int findApplicationsCount(String token, boolean onlyLatest) throws SimExplorerServiceException {
try {
- return getStorageEngine().findElementsByTypeCount(token,
- VALUE_METADATA_TYPE_EA, onlyLatest);
+ return getStorageEngine().findElementsByTypeCount(token, VALUE_METADATA_TYPE_EA, onlyLatest);
} catch (SimExplorerStorageException e) {
throw new SimExplorerServiceException(e);
}
@@ -148,13 +137,11 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#findApplications(java.lang.String, boolean, int, int, int)
*/
- public MetaData[] findApplications(String token, boolean onlyLatest,
- int start, int count, int dateOrder)
+ public MetaData[] findApplications(String token, boolean onlyLatest, int start, int count, int dateOrder)
throws SimExplorerServiceException {
try {
- return getStorageEngine()
- .findElementsByType(token, VALUE_METADATA_TYPE_EA,
- onlyLatest, start, count, dateOrder);
+ return getStorageEngine().findElementsByType(token, VALUE_METADATA_TYPE_EA, onlyLatest, start, count,
+ dateOrder);
} catch (SimExplorerStorageException e) {
throw new SimExplorerServiceException(e);
}
@@ -163,17 +150,16 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#getLoggableElement(java.lang.String, java.lang.String, java.lang.String)
*/
- public LoggableElement getLoggableElement(String token, String uuid,
- String version) throws SimExplorerServiceException {
+ public LoggableElement getLoggableElement(String token, String uuid, String version)
+ throws SimExplorerServiceException {
MetaData mde = getMetadata(token, uuid, version);
try {
LoggableElement le;
- BaseEntityFactory<? extends DataEntity> factory = BaseEntityFactory
- .getFactory(LoggableElement.class.getPackage().getName()
- + DOT + mde.getType());
- le = (LoggableElement) factory.loadElement(getStorageEngine()
- .retrieveData(token, mde, getXMLAttachment()));
+ BaseEntityFactory<? extends DataEntity> factory = BaseEntityFactory.getFactory(LoggableElement.class
+ .getPackage().getName()
+ + DOT + mde.getType());
+ le = (LoggableElement) factory.loadElement(getStorageEngine().retrieveData(token, mde, getXMLAttachment()));
return le;
} catch (Exception e) {
@@ -191,8 +177,7 @@
*
* @throws SimExplorerServiceException the sim explorer service exception
*/
- public MetaData saveElement(String token, SimExplorerServiceStream zipStream)
- throws SimExplorerServiceException {
+ public MetaData saveElement(String token, SimExplorerServiceStream zipStream) throws SimExplorerServiceException {
String xmlFile = null;
Map<Attachment, String> attachments = new HashMap<Attachment, String>();
@@ -207,24 +192,19 @@
xmlFile = getStorageEngine().storeTempData(zis);
} else {
if (entryName.startsWith(FILE_DATA_PREFIX)) {
- String fileName = entryName.replace(
- FILE_DATA_PREFIX + FOLDER_SEPARATOR, "");
+ String fileName = entryName.replace(FILE_DATA_PREFIX + FOLDER_SEPARATOR, "");
- String zipMD5 = Attachment
- .getHashFromUniqueId(fileName);
- fileName = Attachment
- .getFileNameFromUniqueId(fileName);
+ String zipMD5 = Attachment.getHashFromUniqueId(fileName);
+ fileName = Attachment.getFileNameFromUniqueId(fileName);
MD5InputStream md5Stream = new MD5InputStream(zis);
- String idFile = getStorageEngine().storeTempData(
- md5Stream);
+ String idFile = getStorageEngine().storeTempData(md5Stream);
String localMD5 = MD5.asHex(md5Stream.hash());
if (!localMD5.equals(zipMD5)) {
- throw new SimExplorerServiceException(
- _("simexplorer.service.invalidhash"));
+ throw new SimExplorerServiceException(_("simexplorer.service.invalidhash"));
}
@@ -260,16 +240,13 @@
* @throws SimExplorerServiceException the exception
*/
public MetaData saveElement(String token, SimExplorerServiceStream xmlFile,
- Map<Attachment, SimExplorerServiceStream> attachments)
- throws SimExplorerServiceException {
+ Map<Attachment, SimExplorerServiceStream> attachments) throws SimExplorerServiceException {
try {
// Store temporary data
String idxml = getStorageEngine().storeTempData(xmlFile);
Map<Attachment, String> idsattachment = new HashMap<Attachment, String>();
- for (Map.Entry<Attachment, SimExplorerServiceStream> entry : attachments
- .entrySet()) {
- String idattachment = getStorageEngine().storeTempData(
- entry.getValue());
+ for (Map.Entry<Attachment, SimExplorerServiceStream> entry : attachments.entrySet()) {
+ String idattachment = getStorageEngine().storeTempData(entry.getValue());
idsattachment.put(entry.getKey(), idattachment);
}
MetaData elementSaved = saveElement(token, idxml, idsattachment);
@@ -295,13 +272,11 @@
*
* @throws SimExplorerServiceException the sim explorer service exception
*/
- public InputStream retrieveElementData(String token, String uuid,
- String version, Attachment attachment)
+ public InputStream retrieveElementData(String token, String uuid, String version, Attachment attachment)
throws SimExplorerServiceException {
try {
MetaData mde = getMetadata(token, uuid, version);
- InputStream stream = getStorageEngine().retrieveData(token, mde,
- attachment);
+ InputStream stream = getStorageEngine().retrieveData(token, mde, attachment);
return new SimExplorerServiceStream(stream);
} catch (Exception e) {
@@ -320,12 +295,10 @@
*
* @throws SimExplorerServiceException the sim explorer service exception
*/
- public InputStream retrieveElementXML(String token, String uuid,
- String version) throws SimExplorerServiceException {
+ public InputStream retrieveElementXML(String token, String uuid, String version) throws SimExplorerServiceException {
MetaData mde = getMetadata(token, uuid, version);
try {
- InputStream xmlStream = getStorageEngine().retrieveData(token, mde,
- getXMLAttachment());
+ InputStream xmlStream = getStorageEngine().retrieveData(token, mde, getXMLAttachment());
return new SimExplorerServiceStream(xmlStream);
} catch (Exception e) {
throw new SimExplorerServiceException(e);
@@ -344,24 +317,21 @@
*
* @throws SimExplorerServiceException the sim explorer service exception
*/
- public InputStream retrieveElementFull(String token, String uuid,
- String version) throws SimExplorerServiceException {
+ public InputStream retrieveElementFull(String token, String uuid, String version)
+ throws SimExplorerServiceException {
LoggableElement element = getLoggableElement(token, uuid, version);
MetaData mde = element.getMetaData();
try {
PipedOutputStream pipedOut = new PipedOutputStream();
Map<String, InputStream> files = new HashMap<String, InputStream>();
- files.put(FILE_XML, getStorageEngine().retrieveData(token, mde,
- getXMLAttachment()));
+ files.put(FILE_XML, getStorageEngine().retrieveData(token, mde, getXMLAttachment()));
List<LoggableElement> children = element.getChildren();
for (LoggableElement loggableElement : children) {
MetaData thisMde = loggableElement.getMetaData();
- List<Attachment> attachments = loggableElement.getMetaData()
- .getAttachments();
+ List<Attachment> attachments = loggableElement.getMetaData().getAttachments();
for (Attachment attachment : attachments) {
- files.put(FILE_DATA_PREFIX + FOLDER_SEPARATOR
- + attachment.getUniqueId(), getStorageEngine()
+ files.put(FILE_DATA_PREFIX + FOLDER_SEPARATOR + attachment.getUniqueId(), getStorageEngine()
.retrieveData(token, thisMde, attachment));
}
}
@@ -389,52 +359,41 @@
*
* @throws Exception the exception
*/
- private MetaData saveElement(String token, String idxml,
- Map<Attachment, String> idsattachment) throws Exception {
+ private MetaData saveElement(String token, String idxml, Map<Attachment, String> idsattachment) throws Exception {
// Load metadata xml
- MetaDataFactory<MetaData> mdeFactory = MetaDataFactory
- .getFactory(MetaData.class);
- MetaData metaData = mdeFactory
- .loadElementFromParentXML(getStorageEngine().retrieveTempData(
- idxml));
+ MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class);
+ MetaData metaData = mdeFactory.loadElementFromParentXML(getStorageEngine().retrieveTempData(idxml));
// Compute element hash
- metaData.setHash(mdeFactory.computeHash(getStorageEngine()
- .retrieveTempData(idxml)));
+ metaData.setHash(mdeFactory.computeHash(getStorageEngine().retrieveTempData(idxml)));
if (notExists(token, metaData)) {
// Process version rules
if (processVersionRules(token, metaData)) {
// Update XML
- InputStream newXml = mdeFactory.replaceElementInParentXML(
- getStorageEngine().retrieveTempData(idxml), metaData);
+ InputStream newXml = mdeFactory.replaceElementInParentXML(getStorageEngine().retrieveTempData(idxml),
+ metaData);
getStorageEngine().storeTempData(idxml, newXml);
}
- if (metaData.getType() != null
- && VALUE_METADATA_TYPE_EA.equals(metaData.getType())) {
+ if (metaData.getType() != null && VALUE_METADATA_TYPE_EA.equals(metaData.getType())) {
// Save components
- saveSubElements(token, idxml,
- KEY_EXPLORATIONAPPLICATION_COMPONENTS,
- KEY_EXPLORATIONAPPLICATION_COMPONENT_NODE,
- idsattachment);
+ saveSubElements(token, idxml, KEY_EXPLORATIONAPPLICATION_COMPONENTS,
+ KEY_EXPLORATIONAPPLICATION_COMPONENT_NODE, idsattachment);
// Save exploration data
- saveSubElements(token, idxml, KEY_EXPLORATIONAPPLICATION_DATA,
- KEY_EXPLORATIONAPPLICATION_DATA_NODE, idsattachment);
+ saveSubElements(token, idxml, KEY_EXPLORATIONAPPLICATION_DATA, KEY_EXPLORATIONAPPLICATION_DATA_NODE,
+ idsattachment);
}
- if (metaData.getType() != null
- && VALUE_METADATA_TYPE_COMPONENT.equals(metaData.getType())) {
+ if (metaData.getType() != null && VALUE_METADATA_TYPE_COMPONENT.equals(metaData.getType())) {
// Save libraries
- saveSubElements(token, idxml, KEY_COMPONENT_LIBRARIES,
- KEY_COMPONENT_LIBRARY_NODE, idsattachment);
+ saveSubElements(token, idxml, KEY_COMPONENT_LIBRARIES, KEY_COMPONENT_LIBRARY_NODE, idsattachment);
}
// Prepare saving
Map<Attachment, InputStream> attachments = new HashMap<Attachment, InputStream>();
- attachments.put(getXMLAttachment(), getStorageEngine()
- .retrieveTempData(idxml));
+ attachments.put(getXMLAttachment(), getStorageEngine().retrieveTempData(idxml));
List<Attachment> realAttachments = metaData.getAttachments();
for (Attachment attachment : realAttachments) {
@@ -443,12 +402,10 @@
// Check hash of attachments
if (idAttachment == null) {
- throw new SimExplorerServiceException(
- _("simexplorer.service.attachmentnotfund"));
+ throw new SimExplorerServiceException(_("simexplorer.service.attachmentnotfund"));
}
- attachments.put(attachment, getStorageEngine()
- .retrieveTempData(idAttachment));
+ attachments.put(attachment, getStorageEngine().retrieveTempData(idAttachment));
}
@@ -471,65 +428,50 @@
*
* @throws Exception the exception
*/
- private void saveSubElements(String token, String idxml,
- String entitiesNode, String entityNode,
+ private void saveSubElements(String token, String idxml, String entitiesNode, String entityNode,
Map<Attachment, String> idsattachment) throws Exception {
- BaseEntityFactory<MetaData> elementFactory = MetaDataFactory
- .getFactory(MetaData.class);
+ BaseEntityFactory<MetaData> elementFactory = MetaDataFactory.getFactory(MetaData.class);
- Document document = BaseEntityFactory.getXMLBuilder().parse(
- getStorageEngine().retrieveTempData(idxml));
+ Document document = BaseEntityFactory.getXMLBuilder().parse(getStorageEngine().retrieveTempData(idxml));
Element rootElement = (Element) document.getFirstChild();
// Elements
- Element entitiesElement = elementFactory.getXMLElementByTagName(
- rootElement, entitiesNode);
- Set<Element> entityElements = elementFactory.getXMLElementsByTagName(
- entitiesElement, entityNode);
+ Element entitiesElement = elementFactory.getXMLElementByTagName(rootElement, entitiesNode);
+ Set<Element> entityElements = elementFactory.getXMLElementsByTagName(entitiesElement, entityNode);
for (Element element : entityElements) {
- String elementDataId = getStorageEngine().storeTempData(
- BaseEntityFactory.serializeElement(element));
+ String elementDataId = getStorageEngine().storeTempData(BaseEntityFactory.serializeElement(element));
saveElement(token, elementDataId, idsattachment);
getStorageEngine().deleteTempData(elementDataId);
}
}
- /**
- * Update.
- *
- * @param token the token
- * @param oldVersion the old version
- * @param newVersion the new version
- * @param oldUuid the old uuid
- *
- * @throws SimExplorerServiceException the sim explorer service exception
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.service.StorageService#update(java.lang.String, java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version, fr.cemagref.simexplorer.is.entities.metadata.MetaData)
*/
- protected void update(String token, String oldUuid, Version oldVersion,
- MetaData newVersion) throws SimExplorerServiceException {
+ public void update(String token, String oldUuid, Version oldVersion, MetaData newVersion, boolean deleteOldElement)
+ throws SimExplorerServiceException {
Map<Attachment, InputStream> attachments = new HashMap<Attachment, InputStream>();
try {
- MetaData oldMetaData = getStorageEngine().getMetadata(token,
- oldUuid, oldVersion);
+ MetaData oldMetaData = getStorageEngine().getMetadata(token, oldUuid, oldVersion);
- InputStream oldXml = getStorageEngine().retrieveData(token,
- oldMetaData, getXMLAttachment());
+ InputStream oldXml = getStorageEngine().retrieveData(token, oldMetaData, getXMLAttachment());
- MetaDataFactory<MetaData> mdeFactory = MetaDataFactory
- .getFactory(MetaData.class);
- InputStream newXml = mdeFactory.replaceElementInParentXML(oldXml,
- newVersion);
+ MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class);
+ InputStream newXml = mdeFactory.replaceElementInParentXML(oldXml, newVersion);
attachments.put(getXMLAttachment(), newXml);
List<Attachment> realAttachments = oldMetaData.getAttachments();
for (Attachment attachment : realAttachments) {
- attachments.put(attachment, getStorageEngine().retrieveData(
- token, oldMetaData, attachment));
+ attachments.put(attachment, getStorageEngine().retrieveData(token, oldMetaData, attachment));
}
+ if (deleteOldElement) {
+ getStorageEngine().deleteElement(token, oldUuid, oldVersion);
+ }
getStorageEngine().saveElement(token, newVersion, attachments);
getStorageEngine().commit();
} catch (Exception e) {
@@ -537,18 +479,6 @@
}
}
- /* (non-Javadoc)
- * @see fr.cemagref.simexplorer.is.service.StorageService#exportElementTo(java.lang.String, fr.cemagref.simexplorer.is.service.StorageService, java.lang.String, java.lang.String)
- */
- @Override
- public Version exportElementTo(String token, StorageService otherService,
- String uuid, String version) throws SimExplorerServiceException {
-
- // TODO Auto-generated method stub
-
- return null;
- }
-
/**
* Process version rules.
*
@@ -559,26 +489,21 @@
*
* @throws Exception the exception
*/
- protected boolean processVersionRules(String token, MetaData metaData)
- throws Exception {
+ protected boolean processVersionRules(String token, MetaData metaData) throws Exception {
// This one will always be the latest
metaData.setLatest(true);
// Check existing version in storage
- MetaData previousVersion = getStorageEngine().getMetadata(token,
- metaData.getUuid());
+ MetaData previousVersion = getStorageEngine().getMetadata(token, metaData.getUuid());
// Version rules
if (previousVersion != null) {
previousVersion.setLatest(false);
- update(token, previousVersion.getUuid(), previousVersion
- .getVersion(), previousVersion);
+ update(token, previousVersion.getUuid(), previousVersion.getVersion(), previousVersion, false);
// Increment version only if needed
- if (metaData.getVersion().compareTo(
- incrementVersion(previousVersion.getVersion())) <= 0) {
- metaData.setVersion(incrementVersion(
- previousVersion.getVersion()).toString());
+ if (metaData.getVersion().compareTo(incrementVersion(previousVersion.getVersion())) <= 0) {
+ metaData.setVersion(incrementVersion(previousVersion.getVersion()).toString());
}
return true;
@@ -587,19 +512,16 @@
}
private boolean notExists(String token, MetaData metaData) throws Exception {
- MetaData previousVersion = getStorageEngine().getMetadata(token,
- metaData.getUuid());
+ MetaData previousVersion = getStorageEngine().getMetadata(token, metaData.getUuid());
- if (previousVersion != null
- && previousVersion.getHash().equals(metaData.getHash())) {
+ if (previousVersion != null && previousVersion.getHash().equals(metaData.getHash())) {
if (metaData.getVersion().compareTo(previousVersion.getVersion()) < 0) {
metaData.setVersion(previousVersion.getVersion().toString());
} else {
Version versionToUpgrade = previousVersion.getVersion().clone();
previousVersion.setVersion(metaData.getVersion().toString());
- update(token, previousVersion.getUuid(), versionToUpgrade,
- previousVersion);
+ update(token, previousVersion.getUuid(), versionToUpgrade, previousVersion, false);
}
return false;
@@ -619,11 +541,9 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#getVersions(java.lang.String, java.lang.String)
*/
- public Version[] getVersions(String token, String uuid)
- throws SimExplorerServiceException {
+ public Version[] getVersions(String token, String uuid) throws SimExplorerServiceException {
try {
- Set<MetaData> versions = getStorageEngine().getElementVersions(
- token, uuid);
+ Set<MetaData> versions = getStorageEngine().getElementVersions(token, uuid);
Iterator<MetaData> iterator = versions.iterator();
Version[] result = new Version[versions.size()];
int i = 0;
@@ -640,8 +560,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#deleteElement(java.lang.String, java.lang.String, java.lang.String)
*/
- public void deleteElement(String token, String uuid, String version)
- throws SimExplorerServiceException {
+ public void deleteElement(String token, String uuid, String version) throws SimExplorerServiceException {
try {
getStorageEngine().deleteElement(token, uuid, new Version(version));
getStorageEngine().commit();
@@ -653,8 +572,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.service.StorageService#deleteElement(java.lang.String, java.lang.String)
*/
- public void deleteElement(String token, String uuid)
- throws SimExplorerServiceException {
+ public void deleteElement(String token, String uuid) throws SimExplorerServiceException {
try {
getStorageEngine().deleteElements(token, uuid);
getStorageEngine().commit();
Added: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceHelper.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceHelper.java (rev 0)
+++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceHelper.java 2008-02-13 11:36:42 UTC (rev 899)
@@ -0,0 +1,52 @@
+/*
+* ##% Copyright (C) 2008 Code Lutin, Gabriel Landais
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+* ##% */
+package fr.cemagref.simexplorer.is.service;
+
+import java.io.InputStream;
+
+import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
+import fr.cemagref.simexplorer.is.entities.metadata.Version;
+
+public class StorageServiceHelper {
+
+ /**
+ * Export element to another service.
+ *
+ * @param token the token
+ * @param uuid the uuid
+ * @param version the version
+ * @param fromService the from service
+ * @param toService the to service
+ *
+ * @return the version
+ *
+ * @throws SimExplorerServiceException the sim explorer service exception
+ */
+ public static MetaData exportElementTo(String token, StorageService fromService, StorageService toService,
+ String uuid, String version) throws SimExplorerServiceException {
+ InputStream fromElement = fromService.retrieveElementFull(token, uuid, version);
+ MetaData toElement = toService.saveElement(token, new SimExplorerServiceStream(fromElement));
+ fromService.update(token, uuid, new Version(version), toElement, false);
+ return toElement;
+ }
+
+ protected StorageServiceHelper() {
+ // not instanciable
+ }
+
+}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java 2008-02-13 11:03:22 UTC (rev 898)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java 2008-02-13 11:36:42 UTC (rev 899)
@@ -279,10 +279,11 @@
}
@Override
- public Version exportElementTo(String token, StorageService otherService,
- String uuid, String version) throws SimExplorerServiceException {
+ public void update(String token, String oldUuid, Version oldVersion, MetaData newVersion, boolean deleteOldElement)
+ throws SimExplorerServiceException {
checkImplemented();
- return null;
}
+
+
}