Author: tchemit Date: 2008-02-08 15:12:06 +0000 (Fri, 08 Feb 2008) New Revision: 748 Modified: trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java Log: downloads Modified: trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java =================================================================== --- trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java 2008-02-08 15:11:48 UTC (rev 747) +++ trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java 2008-02-08 15:12:06 UTC (rev 748) @@ -19,12 +19,20 @@ package fr.cemagref.simexplorer.is.service; import com.healthmarketscience.rmiio.RemoteInputStream; - import fr.cemagref.simexplorer.is.attachment.Attachment; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; +import static fr.cemagref.simexplorer.is.factories.XmlConstants.FILE_DATA_PREFIX; +import static fr.cemagref.simexplorer.is.factories.XmlConstants.FILE_XML; +import static fr.cemagref.simexplorer.is.factories.XmlConstants.FOLDER_SEPARATOR; +import org.codelutin.util.ZipStreamEncoder; +import java.io.InputStream; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; +import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.SortedMap; @@ -35,11 +43,10 @@ */ public class MockStorageServiceImpl implements StorageService { - /** The Constant SIZE. */ - static final int SIZE = 400; - protected MockDatabase base; + private Attachment xmlAttachment; + public MockStorageServiceImpl() { base = new MockDatabase(); } @@ -93,7 +100,7 @@ * @see fr.cemagref.simexplorer.is.service.StorageService#exportElement(java.lang.String, java.lang.String, java.lang.String) */ public RemoteInputStream retrieveElementXML(String token, String uuid, - String version) throws SimExplorerServiceException { + String version) throws SimExplorerServiceException { return (RemoteInputStream) checkImplemented(); } @@ -101,18 +108,75 @@ * @see fr.cemagref.simexplorer.is.service.StorageService#exportFull(java.lang.String, java.lang.String, java.lang.String) */ public RemoteInputStream retrieveElementFull(String token, String uuid, - String version) throws SimExplorerServiceException { + String version) throws SimExplorerServiceException { return (RemoteInputStream) checkImplemented(); } + /* (non-Javadoc) - * @see fr.cemagref.simexplorer.is.service.StorageService#retrieveData(java.lang.String, java.lang.String, java.lang.String, java.lang.String) - */ + * @see fr.cemagref.simexplorer.is.service.StorageService#retrieveData(java.lang.String, java.lang.String, java.lang.String, java.lang.String) + */ public RemoteInputStream retrieveElementData(String token, String uuid, - String version, Attachment attachment) throws SimExplorerServiceException { + String version, Attachment attachment) throws SimExplorerServiceException { + return null; } + /* (non-Javadoc) + * @see fr.cemagref.simexplorer.is.service.StorageService#exportFull(java.lang.String, java.lang.String, java.lang.String) + */ + public InputStream downloadElementFull(String token, String uuid, + String version) throws SimExplorerServiceException { + LoggableElement element = getLoggableElement(token, uuid, version); + try { + PipedOutputStream pipedOut = new PipedOutputStream(); + Map<String, InputStream> files = new HashMap<String, InputStream>(); + files.put(FILE_XML, (InputStream) retrieveElementData(token, uuid, version, getXMLAttachment())); + List<LoggableElement> children = element.getChildren(); + for (LoggableElement loggableElement : children) { + MetaData thisMde = loggableElement.getMetaData(); + List<Attachment> attachments; + attachments = loggableElement.getMetaData().getAttachments(); + for (Attachment attachment : attachments) { + files.put(FILE_DATA_PREFIX + FOLDER_SEPARATOR + attachment.getUniqueId(), + (InputStream) retrieveElementData(token, thisMde.getUuid(), thisMde.getVersion().toString(), attachment)); + } + } + PipedInputStream pipedIn = new PipedInputStream(pipedOut); + ZipStreamEncoder zse = new ZipStreamEncoder(files, pipedOut); + zse.start(); + return pipedIn; + } catch (Exception e) { + throw new SimExplorerServiceException(e); + } + } + + /* (non-Javadoc) + * @see fr.cemagref.simexplorer.is.service.StorageService#retrieveData(java.lang.String, java.lang.String, java.lang.String, java.lang.String) + */ + public InputStream downloadElementData(String token, String uuid, String version, Attachment attachment) throws SimExplorerServiceException { + LoggableElement element = getLoggableElement(token, uuid, version); + + try { + ElementGenerator.RandomStream stream = base.generateTextStream(); + String md5 = stream.getMd5(); + attachment.setDataHash(md5); + System.out.println("setMd5 "+ md5+" for "+element); + return stream.getStream(); + } catch (Exception e) { + throw new SimExplorerServiceException(e); + } + } + + private Attachment getXMLAttachment() { + if (xmlAttachment == null) { + xmlAttachment = new Attachment(); + xmlAttachment.setDataHash(""); + xmlAttachment.setFileName("entity.xml"); + } + return xmlAttachment; + } + public int findFullTextCount(String token, String query, boolean onlyLatest) throws SimExplorerServiceException { // TODO Changer
participants (1)
-
tchemit@users.labs.libre-entreprise.org