r564 - in trunk: simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/factories simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/util simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/tools simexplorer-is-web/src/main/webapp
Author: glandais Date: 2008-01-31 13:31:00 +0000 (Thu, 31 Jan 2008) New Revision: 564 Added: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/util/ZipStreamEncoder.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/tools/ZipAttachment.java Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/Component.java trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationApplication.java trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationData.java trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/Library.java trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/LoggableElement.java trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/factories/BaseEntityFactory.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/ElementGenerator.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementExport.java trunk/simexplorer-is-web/src/main/webapp/ElementExport.tml Log: Removed ByteArray streams copy to piped streams Export element as zip Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/Component.java =================================================================== --- trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/Component.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/Component.java 2008-01-31 13:31:00 UTC (rev 564) @@ -18,6 +18,8 @@ package fr.cemagref.simexplorer.is.entities.data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; import java.util.Set; public class Component extends LoggableElement implements Serializable { @@ -61,4 +63,11 @@ this.libraries = libraries; } + @Override + public List<LoggableElement> getDirectChildren() { + List<LoggableElement> directChildren = new ArrayList<LoggableElement>(); + directChildren.addAll(libraries); + return directChildren; + } + } Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationApplication.java =================================================================== --- trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationApplication.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationApplication.java 2008-01-31 13:31:00 UTC (rev 564) @@ -18,6 +18,8 @@ package fr.cemagref.simexplorer.is.entities.data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; import java.util.Set; public class ExplorationApplication extends LoggableElement implements Serializable { @@ -43,4 +45,12 @@ this.components = components; } + @Override + public List<LoggableElement> getDirectChildren() { + List<LoggableElement> directChildren = new ArrayList<LoggableElement>(); + directChildren.addAll(explorations); + directChildren.addAll(components); + return directChildren; + } + } Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationData.java =================================================================== --- trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationData.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationData.java 2008-01-31 13:31:00 UTC (rev 564) @@ -18,6 +18,7 @@ package fr.cemagref.simexplorer.is.entities.data; import java.io.Serializable; +import java.util.List; import java.util.Set; public class ExplorationData extends LoggableElement implements Serializable { @@ -71,4 +72,9 @@ this.valuesMap = valuesMap; } + @Override + public List<LoggableElement> getDirectChildren() { + return null; + } + } Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/Library.java =================================================================== --- trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/Library.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/Library.java 2008-01-31 13:31:00 UTC (rev 564) @@ -18,9 +18,15 @@ package fr.cemagref.simexplorer.is.entities.data; import java.io.Serializable; +import java.util.List; public class Library extends LoggableElement implements Serializable { private static final long serialVersionUID = -5635619075345573945L; + @Override + public List<LoggableElement> getDirectChildren() { + return null; + } + } Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/LoggableElement.java =================================================================== --- trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/LoggableElement.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/LoggableElement.java 2008-01-31 13:31:00 UTC (rev 564) @@ -17,6 +17,9 @@ * ##% */ package fr.cemagref.simexplorer.is.entities.data; +import java.util.ArrayList; +import java.util.List; + import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; public abstract class LoggableElement extends DataEntity { @@ -41,9 +44,26 @@ @Override public String toString() { - if (metaData==null) { + if (metaData == null) { return super.toString(); } - return metaData.getName()+" ["+metaData.getVersion()+']'; + return metaData.getName() + " [" + metaData.getVersion() + ']'; } + + public abstract List<LoggableElement> getDirectChildren(); + + public List<LoggableElement> getChildren() { + List<LoggableElement> directChildren = getDirectChildren(); + + List<LoggableElement> children = new ArrayList<LoggableElement>(); + if (directChildren != null) { + for (LoggableElement element : directChildren) { + children.add(element); + children.addAll(element.getChildren()); + } + } + + return children; + } + } Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/factories/BaseEntityFactory.java =================================================================== --- trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/factories/BaseEntityFactory.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/factories/BaseEntityFactory.java 2008-01-31 13:31:00 UTC (rev 564) @@ -17,9 +17,9 @@ * ##% */ package fr.cemagref.simexplorer.is.factories; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.InputStream; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -171,7 +171,7 @@ */ public InputStream saveElement(String rootNodeName, E element) throws Exception { - ByteArrayOutputStream os = new ByteArrayOutputStream(); + PipedOutputStream os = new PipedOutputStream(); org.w3c.dom.Document xmlDocument = getXMLBuilder().newDocument(); // DOM properties @@ -189,7 +189,7 @@ Transformer transformer = tf.newTransformer(); transformer.transform(domSource, result); - InputStream is = new ByteArrayInputStream(os.toByteArray()); + InputStream is = new PipedInputStream(os); return is; } @@ -283,15 +283,14 @@ xmlDocument.appendChild(xmlDocument.importNode(node, true)); DOMSource domSource = new DOMSource(xmlDocument); - ByteArrayOutputStream os = new ByteArrayOutputStream(); + PipedOutputStream os = new PipedOutputStream(); StreamResult result = new StreamResult(os); TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.transform(domSource, result); - ByteArrayInputStream inputStream; - inputStream = new ByteArrayInputStream(os - .toByteArray()); + PipedInputStream inputStream; + inputStream = new PipedInputStream(os); return inputStream; } Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/ElementGenerator.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/ElementGenerator.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/ElementGenerator.java 2008-01-31 13:31:00 UTC (rev 564) @@ -17,9 +17,9 @@ * ##% */ package fr.cemagref.simexplorer.is.service; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.InputStream; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -211,14 +211,14 @@ } public InputStream generateTextStream() throws Exception { - ByteArrayOutputStream os = new ByteArrayOutputStream(); + PipedOutputStream os = new PipedOutputStream(); int wordcount = 300 + r.nextInt(300); StringBuffer sb = new StringBuffer(); for (int i = 0; i < wordcount; i++) { sb.append(randomstrings[r.nextInt(cs)]).append(" "); } os.write(sb.toString().getBytes()); - InputStream is = new ByteArrayInputStream(os.toByteArray()); + InputStream is = new PipedInputStream(os); return is; } } Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java 2008-01-31 13:31:00 UTC (rev 564) @@ -25,7 +25,6 @@ import java.util.TreeMap; import com.healthmarketscience.rmiio.RemoteInputStream; -import com.healthmarketscience.rmiio.RemoteOutputStream; import fr.cemagref.simexplorer.is.entities.data.ExplorationApplication; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; @@ -82,10 +81,14 @@ return mockData().get(uuid); } - public void exportElement(String token, RemoteOutputStream xmlOutputStream, String uuid, String version) throws SimExplorerServiceException { - checkImplemented(); + public RemoteInputStream exportElement(String token, String uuid, String version) throws SimExplorerServiceException { + return (RemoteInputStream) checkImplemented(); } + public RemoteInputStream exportFull(String token, String uuid, String version) throws SimExplorerServiceException { + return (RemoteInputStream) checkImplemented(); + } + public RemoteInputStream retrieveData(String token, String uuid, String version, String dataKey) throws SimExplorerServiceException { return null; } @@ -158,4 +161,5 @@ // TODO Auto-generated method stub } + } Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java 2008-01-31 13:31:00 UTC (rev 564) @@ -22,7 +22,6 @@ import javax.ejb.Remote; import com.healthmarketscience.rmiio.RemoteInputStream; -import com.healthmarketscience.rmiio.RemoteOutputStream; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; @@ -107,19 +106,30 @@ throws SimExplorerServiceException; /** - * Export element to a remote stream + * Export XML of element to a remote stream * * @param token - * @param xmlOutputStream - * RMIIO stream where to save data * @param uuid * @param version + * @return RMIIO stream with data * @throws SimExplorerServiceException */ - void exportElement(String token, RemoteOutputStream xmlOutputStream, - String uuid, String version) throws SimExplorerServiceException; + RemoteInputStream exportElement(String token, String uuid, String version) + throws SimExplorerServiceException; /** + * Export full element to a remote stream as a zip + * + * @param token + * @param uuid + * @param version + * @return RMIIO stream with data + * @throws SimExplorerServiceException + */ + RemoteInputStream exportFull(String token, String uuid, String version) + throws SimExplorerServiceException; + + /** * Retrieve data related to an entity * * @param token 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-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-01-31 13:31:00 UTC (rev 564) @@ -17,19 +17,19 @@ * ##% */ package fr.cemagref.simexplorer.is.service; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; +import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; -import java.io.IOException; -import java.util.ArrayList; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; +import java.rmi.RemoteException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.zip.Deflater; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; -import java.rmi.RemoteException; +import java.util.zip.ZipOutputStream; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -37,8 +37,6 @@ import com.healthmarketscience.rmiio.RemoteInputStream; import com.healthmarketscience.rmiio.RemoteInputStreamClient; import com.healthmarketscience.rmiio.RemoteInputStreamServer; -import com.healthmarketscience.rmiio.RemoteOutputStream; -import com.healthmarketscience.rmiio.RemoteOutputStreamClient; import com.healthmarketscience.rmiio.SimpleRemoteInputStream; import fr.cemagref.simexplorer.is.contenttype.ContentType; @@ -48,8 +46,9 @@ import fr.cemagref.simexplorer.is.factories.BaseEntityFactory; import fr.cemagref.simexplorer.is.factories.MetaDataEntityFactory; import fr.cemagref.simexplorer.is.factories.XmlConstants; +import fr.cemagref.simexplorer.is.storage.StorageException; import fr.cemagref.simexplorer.is.storage.engine.StorageEngine; -import fr.cemagref.simexplorer.is.storage.StorageException; +import fr.cemagref.simexplorer.is.storage.util.ZipStreamEncoder; public abstract class StorageServiceCommon implements StorageService, XmlConstants { @@ -241,25 +240,52 @@ } } - public void exportElement(String token, RemoteOutputStream xmlOutputStream, - String uuid, String version) throws SimExplorerServiceException { + public RemoteInputStream exportElement(String token, String uuid, + String version) throws SimExplorerServiceException { MetaDataEntity mde = getMetadata(token, uuid, version); try { InputStream xmlStream = getStorageEngine().retrieveData(token, mde, KEY_XML); - OutputStream os = RemoteOutputStreamClient.wrap(xmlOutputStream); + RemoteInputStreamServer remoteStream = new SimpleRemoteInputStream( + xmlStream); + return remoteStream.export(); + } catch (StorageException e) { + throw new SimExplorerServiceException(e); + } catch (IOException e) { + throw new SimExplorerServiceException(e); + } - // Buffer copy stream to stream - BufferedInputStream bin = new BufferedInputStream(xmlStream); - BufferedOutputStream bout = new BufferedOutputStream(os); - while (true) { - int datum = bin.read(); - if (datum == -1) { - break; + } + + public RemoteInputStream exportFull(String token, String uuid, + String version) throws SimExplorerServiceException { + LoggableElement element = getElement(token, uuid, version); + MetaDataEntity mde = element.getMetaData(); + try { + PipedOutputStream pipedOut = new PipedOutputStream(); + Map<String, InputStream> files = new HashMap<String, InputStream>(); + + files.put(FILE_XML, getStorageEngine().retrieveData(token, mde, + KEY_XML)); + List<LoggableElement> children = element.getChildren(); + for (LoggableElement loggableElement : children) { + MetaDataEntity thisMde = loggableElement.getMetaData(); + Map<String, ContentType> attachments = loggableElement + .getMetaData().getAttachments(); + for (Map.Entry<String, ContentType> kv : attachments.entrySet()) { + files.put(FILE_DATA_PREFIX + "/" + kv.getKey(), + getStorageEngine().retrieveData(token, thisMde, + kv.getKey())); } - bout.write(datum); } - bout.flush(); + + ZipStreamEncoder zse = new ZipStreamEncoder(files, pipedOut); + zse.start(); + + PipedInputStream pipedIn = new PipedInputStream(pipedOut); + RemoteInputStreamServer remoteStream = new SimpleRemoteInputStream( + pipedIn); + return remoteStream.export(); } catch (StorageException e) { throw new SimExplorerServiceException(e); } catch (IOException e) { Added: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/util/ZipStreamEncoder.java =================================================================== --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/util/ZipStreamEncoder.java (rev 0) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/util/ZipStreamEncoder.java 2008-01-31 13:31:00 UTC (rev 564) @@ -0,0 +1,67 @@ +/* +* ##% 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.storage.util; + +import java.io.IOException; +import java.io.InputStream; +import java.io.PipedOutputStream; +import java.util.Map; +import java.util.zip.Deflater; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +public class ZipStreamEncoder extends Thread { + + static final int BUFFER = 2048; + + private Map<String, InputStream> files; + private PipedOutputStream os; + + private ZipOutputStream zos; + + public ZipStreamEncoder(Map<String, InputStream> files, PipedOutputStream os) { + super(); + this.files = files; + this.os = os; + + zos = new ZipOutputStream(this.os); + zos.setMethod(ZipOutputStream.DEFLATED); + zos.setLevel(Deflater.BEST_COMPRESSION); + } + + public void run() { + byte data[] = new byte[BUFFER]; + try { + for (Map.Entry<String, InputStream> kv : files.entrySet()) { + ZipEntry entry = new ZipEntry(kv.getKey()); + InputStream origin = kv.getValue(); + zos.putNextEntry(entry); + int count; + while ((count = origin.read(data, 0, BUFFER)) != -1) { + zos.write(data, 0, count); + } + origin.close(); + } + + zos.close(); + } catch (IOException e) { + // TODO + } + } + +} Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementExport.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementExport.java 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementExport.java 2008-01-31 13:31:00 UTC (rev 564) @@ -17,8 +17,6 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.web.pages; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.List; @@ -32,8 +30,6 @@ import com.healthmarketscience.rmiio.RemoteInputStream; import com.healthmarketscience.rmiio.RemoteInputStreamClient; -import com.healthmarketscience.rmiio.RemoteOutputStreamServer; -import com.healthmarketscience.rmiio.SimpleRemoteOutputStream; import fr.cemagref.simexplorer.is.contenttype.ContentType; import fr.cemagref.simexplorer.is.entities.data.Component; @@ -45,8 +41,8 @@ import fr.cemagref.simexplorer.is.ui.web.SimExplorerWebException; import fr.cemagref.simexplorer.is.ui.web.services.RemoteStorageService; import fr.cemagref.simexplorer.is.ui.web.tools.AttachmentStreamResponse; -import fr.cemagref.simexplorer.is.ui.web.tools.DownloadableFile; import fr.cemagref.simexplorer.is.ui.web.tools.XMLAttachment; +import fr.cemagref.simexplorer.is.ui.web.tools.ZipAttachment; public class ElementExport extends ElementPageDetail { @@ -60,21 +56,36 @@ MetaDataEntity mde = getMetadata(); - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - RemoteOutputStreamServer xmlRemoteOutputStream = new SimpleRemoteOutputStream( - bos); try { - RemoteStorageService.getStorageService().exportElement(getToken(), - xmlRemoteOutputStream.export(), mde.getUuid(), - mde.getVersion().toString()); + RemoteInputStream ris = RemoteStorageService.getStorageService() + .exportElement(getToken(), mde.getUuid(), + mde.getVersion().toString()); + InputStream stream = RemoteInputStreamClient.wrap(ris); + response = new XMLAttachment(stream, mde.getType() + "." + + mde.getUuid() + ".v" + mde.getVersion()); } catch (Exception e) { throw new SimExplorerWebException(e); } - ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); - response = new XMLAttachment(bis, mde.getType() + "." + mde.getUuid() - + ".v" + mde.getVersion()); + return response; + } + public Object onActionFromDownloadFull() { + Object response; + + MetaDataEntity mde = getMetadata(); + + try { + RemoteInputStream ris = RemoteStorageService.getStorageService() + .exportFull(getToken(), mde.getUuid(), + mde.getVersion().toString()); + InputStream stream = RemoteInputStreamClient.wrap(ris); + response = new ZipAttachment(stream, mde.getType() + "." + + mde.getUuid() + ".v" + mde.getVersion()); + } catch (Exception e) { + throw new SimExplorerWebException(e); + } + return response; } @@ -132,7 +143,7 @@ } if (getElement() instanceof Library) { node = generateLibrary((Library) getElement()); - } + } return node; } @@ -253,8 +264,8 @@ } node.setChildren(children); - node.setColumns(generateStringArray("Library", library - .getMetaData().getName())); + node.setColumns(generateStringArray("Library", library.getMetaData() + .getName())); return node; } Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/tools/ZipAttachment.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/tools/ZipAttachment.java (rev 0) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/tools/ZipAttachment.java 2008-01-31 13:31:00 UTC (rev 564) @@ -0,0 +1,30 @@ +/* +* ##% 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.ui.web.tools; + +import java.io.InputStream; + +public class ZipAttachment extends AttachmentStreamResponse { + + public ZipAttachment(InputStream is, String filenameIn) { + super(is, filenameIn); + this.contentType = "application/zip"; + this.extension = "zip"; + } + +} Modified: trunk/simexplorer-is-web/src/main/webapp/ElementExport.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/ElementExport.tml 2008-01-30 15:48:12 UTC (rev 563) +++ trunk/simexplorer-is-web/src/main/webapp/ElementExport.tml 2008-01-31 13:31:00 UTC (rev 564) @@ -3,6 +3,8 @@ <p><t:actionlink t:id="downloadXML">${message:downloadxml}</t:actionlink> </p> + <p><t:actionlink t:id="downloadFull">${message:downloadfull}</t:actionlink> + </p> <p> <h2>${message:attachments}</h2>
participants (1)
-
glandais@users.labs.libre-entreprise.org