Author: glandais Date: 2008-02-17 19:45:22 +0000 (Sun, 17 Feb 2008) New Revision: 1044 Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java Log: Delete business rules 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-17 15:54:06 UTC (rev 1043) +++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-02-17 19:45:22 UTC (rev 1044) @@ -24,6 +24,7 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -149,7 +150,7 @@ LoggableElement le; BaseEntityFactory<? extends DataEntity> factory; - factory = BaseEntityFactory.getFactory(LoggableElement.class.getPackage().getName() + DOT + mde.getType()); + factory = BaseEntityFactory.getFactory(LoggableElement.class.getPackage().getName() + DOT + mde.getType()); le = (LoggableElement) factory.loadElement(getStorageEngine().retrieveData(token, mde, getXMLAttachment())); return le; @@ -250,7 +251,7 @@ } Document document; InputStream xmlData = getStorageEngine().retrieveTempData(idxml); - try { + try { document = BaseEntityFactory.getXMLBuilder().parse(xmlData); } catch (Exception e) { throw new SimExplorerTechnicalException(e); @@ -374,8 +375,8 @@ InputStream currentXml = getStorageEngine().retrieveData(token, currentMetaData, getXMLAttachment()); InputStream newXml = null; - MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class); - newXml = mdeFactory.modifyMedataElementStream(currentXml, elementToUpdate); + MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class); + newXml = mdeFactory.modifyMedataElementStream(currentXml, elementToUpdate); attachments.put(getXMLAttachment(), newXml); @@ -411,6 +412,11 @@ * @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 SimExplorerException { + MetaData[] metadatasUsedBy = getMetadatasUsedBy(token, uuid, version); + if (metadatasUsedBy.length > 0) { + throw new SimExplorerBusinessException(_("simexplorer.service.business.notdeletable")); + } + // FIXME getStorageEngine().deleteElement(token, uuid, new Version(version)); getStorageEngine().commit(); @@ -420,6 +426,20 @@ * @see fr.cemagref.simexplorer.is.service.StorageService#deleteElement(java.lang.String, java.lang.String) */ public void deleteElement(String token, String uuid) throws SimExplorerException { + Set<MetaData> allUsedByList = new HashSet<MetaData>(); + Version[] versions = getVersions(token, uuid); + for (int i = 0; i < versions.length; i++) { + Version aVersion = versions[i]; + MetaData[] versionUsedBy = getMetadatasUsedBy(token, uuid, aVersion.toString()); + for (int j = 0; j < versionUsedBy.length; j++) { + MetaData metaData = versionUsedBy[j]; + allUsedByList.add(metaData); + } + } + if (allUsedByList.size() > 0) { + throw new SimExplorerBusinessException(_("simexplorer.service.business.notdeletable.allversions")); + } + // FIXME getStorageEngine().deleteElements(token, uuid); getStorageEngine().commit(); @@ -466,11 +486,11 @@ metaData.setParentVersionUuid(previousVersion.getUuid()); metaData.setParentVersionVersion(previousVersion.getVersion().toString()); - // get metadata factory - MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class); + // get metadata factory + MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class); - // Update XML with version updated - mdeFactory.replaceMetadataInXML(document, xmlNode, metaData); + // Update XML with version updated + mdeFactory.replaceMetadataInXML(document, xmlNode, metaData); } } @@ -580,12 +600,12 @@ private MetaData saveElement(String token, Document document, Element xmlNode, Map<Attachment, String> idsattachment) throws SimExplorerException { MetaData metaData; - // Load metadata xml - MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class); - metaData = mdeFactory.loadElementFromParentXML(xmlNode); + // Load metadata xml + MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class); + metaData = mdeFactory.loadElementFromParentXML(xmlNode); - // Compute element hash - metaData.setHash(mdeFactory.computeHash(xmlNode)); + // Compute element hash + metaData.setHash(mdeFactory.computeHash(xmlNode)); if (notExists(token, metaData)) { @@ -609,7 +629,7 @@ // Prepare saving Map<Attachment, InputStream> attachments = new HashMap<Attachment, InputStream>(); - attachments.put(getXMLAttachment(), BaseEntityFactory.serializeElement(xmlNode)); + attachments.put(getXMLAttachment(), BaseEntityFactory.serializeElement(xmlNode)); List<Attachment> realAttachments = metaData.getAttachments(); for (Attachment attachment : realAttachments) { @@ -646,7 +666,7 @@ String entityNode, Map<Attachment, String> idsattachment) throws SimExplorerException { BaseEntityFactory<MetaData> elementFactory; - elementFactory = MetaDataFactory.getFactory(MetaData.class); + elementFactory = MetaDataFactory.getFactory(MetaData.class); // Elements Element entitiesElement = elementFactory.getXMLElementByTagName(node, entitiesNode);
participants (1)
-
glandais@users.labs.libre-entreprise.org