From 191a4cb30dc1115145370e687dfca8d6577563bf Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Tue, 31 May 2016 14:31:03 +0000 Subject: [PATCH] SSDM-3092 : Export functionality, ongoing work SVN: 36599 --- .../exports-api/exports-api.py | 44 +++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/exports-api.py b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/exports-api.py index 1475dc0b702..78905717956 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/exports-api.py +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/exports-api.py @@ -19,16 +19,21 @@ import time #Java Core from java.io import ByteArrayInputStream +from org.apache.commons.io import IOUtils from java.lang import String +#Zip Format +from java.io import File; +from java.io import FileInputStream; +from java.io import FileNotFoundException; +from java.io import FileOutputStream; +from java.util.zip import ZipEntry; +from java.util.zip import ZipOutputStream; + #To obtain the openBIS URL from ch.systemsx.cisd.openbis.dss.generic.server import DataStoreServer -from __builtin__ import None OPENBISURL = DataStoreServer.getConfigParameters().getServerURL() + "/openbis/openbis" -#V1 API - To manage session workspace -from ch.systemsx.cisd.openbis.dss.client.api.v1 import DssComponentFactory - #V3 API from ch.systemsx.cisd.common.spring import HttpInvokerUtils; from ch.ethz.sis.openbis.generic.asapi.v3 import IApplicationServerApi @@ -139,13 +144,32 @@ def getFileName(rootDir, spaceCode, projCode, expCode, sampCode, dataCode, ext): fileName += "." + ext; return fileName; +def addToZipFile(fileName, zos): + file = File(fileName); + fis = FileInputStream(file); + zipEntry = ZipEntry(fileName); + zos.putNextEntry(zipEntry); + + bytes = byte[1024]; + length = fis.read(bytes); + while length >= 0: + zos.write(bytes, 0, length); + length = fis.read(bytes); + + zos.closeEntry(); + fis.close(); + def export(tr, params): sessionToken = params.get("sessionToken"); v3 = HttpInvokerUtils.createServiceStub(IApplicationServerApi, OPENBISURL + IApplicationServerApi.SERVICE_URL, 30 * 1000); objectMapper = GenericObjectMapper(); objectMapper.enable(SerializationFeature.INDENT_OUTPUT); - dss_component = DssComponentFactory.tryCreate(params.get("sessionToken"), OPENBISURL); - rootDir = str(time.time()); + + #Create temporal folder + rootDirFile = File.createTempFile(str(time.time()), None); + rootDirFile.delete(); + rootDirFile.mkdir(); + rootDir = rootDirFile.getCanonicalPath(); for entity in params.get("entities"): type = entity["type"]; @@ -208,7 +232,9 @@ def export(tr, params): if entityObj is not None and entityFilePath is not None: entityJson = String(objectMapper.writeValueAsString(entityObj)); - dss_component.putFileToSessionWorkspace(entityFilePath, ByteArrayInputStream(entityJson.getBytes())); - print entityJson; - + entityFile = File(entityFilePath); + entityFile.getParentFile().mkdirs(); + IOUtils.write(entityJson.getBytes(), FileOutputStream(entityFile)); + + print "Folder found at: " + rootDir return True \ No newline at end of file -- GitLab