r763 - in trunk: simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages
Author: glandais Date: 2008-02-08 17:16:27 +0000 (Fri, 08 Feb 2008) New Revision: 763 Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceClient.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementImport.java Log: Businness rules when element already exist (versionning) Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceClient.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceClient.java 2008-02-08 16:59:05 UTC (rev 762) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceClient.java 2008-02-08 17:16:27 UTC (rev 763) @@ -18,7 +18,6 @@ package fr.cemagref.simexplorer.is.service; import static org.codelutin.i18n.I18n._; - import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.storage.SimExplorerStorageException; import fr.cemagref.simexplorer.is.storage.engine.StorageEngine; @@ -66,8 +65,9 @@ // Version rules if (previousVersion != null) { previousVersion.setLatest(false); - //getStorageEngine().update(previousVersion); - + update(token, previousVersion.getUuid(), previousVersion + .getVersion(), previousVersion); + metaData.setLatest(true); metaData.setVersion(previousVersion.getVersion().incVersion(1) .toString()); Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-02-08 16:59:05 UTC (rev 762) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-02-08 17:16:27 UTC (rev 763) @@ -517,6 +517,44 @@ } /** + * 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 + */ + protected void update(String token, String oldUuid, Version oldVersion, + MetaData newVersion) throws SimExplorerServiceException { + Map<Attachment, InputStream> attachments = new HashMap<Attachment, InputStream>(); + try { + MetaData oldMetaData = getStorageEngine().getMetadata(token, + oldUuid, oldVersion); + + attachments.put(getXMLAttachment(), getStorageEngine() + .retrieveData(token, oldMetaData, getXMLAttachment())); + + List<Attachment> realAttachments = oldMetaData.getAttachments(); + for (Attachment attachment : realAttachments) { + attachments.put(attachment, getStorageEngine().retrieveData( + token, oldMetaData, attachment)); + } + + getStorageEngine().saveElement(token, newVersion, attachments); + getStorageEngine().commit(); + } catch (SimExplorerStorageException e) { + throw new SimExplorerServiceException(e); + } + } + + /** * Process version rules. * * @param token @@ -529,27 +567,6 @@ */ protected abstract void processVersionRules(String token, MetaData metaData) throws Exception; -// { -// -// // Check existing version in storage -// MetaData previousVersion = getStorageEngine().getMetadata(token, -// metaData.getUuid(), metaData.getVersion()); -// /* -// * MetaData parentData = getStorageEngine().getElementVersion(metaData -// * .getParentData().getUuid(), metaData.getParentData() .getVersion()); -// * MetaData parentVersion = -// * getStorageEngine().getElementVersion(metaData -// * .getParentVersion().getUuid(), metaData.getParentVersion() -// * .getVersion()); -// */ -// -// // Version rules -// if (previousVersion != null) { -// metaData.setVersion(previousVersion.getVersion().incVersion(0) -// .toString()); -// } -// -// } /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.service.StorageService#getVersions(java.lang.String, java.lang.String) Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java 2008-02-08 16:59:05 UTC (rev 762) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java 2008-02-08 17:16:27 UTC (rev 763) @@ -74,7 +74,8 @@ // Version rules if (previousVersion != null) { previousVersion.setLatest(false); - // getStorageEngine().update(previousVersion); + update(token, previousVersion.getUuid(), previousVersion + .getVersion(), previousVersion); metaData.setLatest(true); metaData.setVersion(previousVersion.getVersion().incVersion(0) Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementImport.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementImport.java 2008-02-08 16:59:05 UTC (rev 762) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementImport.java 2008-02-08 17:16:27 UTC (rev 763) @@ -17,12 +17,14 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.web.pages; +import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.upload.services.UploadedFile; import com.healthmarketscience.rmiio.RemoteInputStreamServer; import com.healthmarketscience.rmiio.SimpleRemoteInputStream; import de.hsofttec.t5components.annotations.SetterGetter; +import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.ui.web.SimExplorerWebException; import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage; import fr.cemagref.simexplorer.is.ui.web.services.RemoteStorageService; @@ -40,30 +42,43 @@ @SetterGetter private UploadedFile _fileLib; + /** The element detail. */ + @InjectPage + private ElementDetail elementDetail; + /** * On success. + * + * @return the object */ - public void onSuccess() { + public Object onSuccess() { + MetaData mde = null; if (_fileEA != null) { RemoteInputStreamServer zipRemoteStream = new SimpleRemoteInputStream( _fileEA.getStream()); try { - RemoteStorageService.getStorageService().saveElement( + mde = RemoteStorageService.getStorageService().saveElement( getToken(), zipRemoteStream.export()); } catch (Exception e) { throw new SimExplorerWebException(e); } - } - if (_fileLib != null) { - RemoteInputStreamServer zipRemoteStream = new SimpleRemoteInputStream( - _fileLib.getStream()); - try { - RemoteStorageService.getStorageService().saveElement( - getToken(), zipRemoteStream.export()); - } catch (Exception e) { - throw new SimExplorerWebException(); + } else { + if (_fileLib != null) { + RemoteInputStreamServer zipRemoteStream = new SimpleRemoteInputStream( + _fileLib.getStream()); + try { + mde = RemoteStorageService.getStorageService().saveElement( + getToken(), zipRemoteStream.export()); + } catch (Exception e) { + throw new SimExplorerWebException(); + } } } + if (mde != null) { + elementDetail.setup(mde.getUuid(), mde.getVersion().toString()); + return elementDetail; + } + return this; } /* (non-Javadoc)
participants (1)
-
glandais@users.labs.libre-entreprise.org