Exemple #1
0
 def __createPackage(self, outputFile=None):
     title = self.__manifest.get("title")
     manifest = self.__createManifest()
     context = JAXBContext.newInstance("au.edu.usq.fascinator.ims")
     m = context.createMarshaller()
     m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, True)
     writer = StringWriter()
     jaxbElem = ObjectFactory.createManifest(ObjectFactory(), manifest)
     m.marshal(jaxbElem, writer)
     writer.close()
     
     if outputFile is not None:
         print "writing to %s..." % outputFile
         out = FileOutputStream(outputFile)
     else:
         print "writing to http output stream..."
         filename = urllib.quote(title.replace(" ", "_"))
         response.setHeader("Content-Disposition", "attachment; filename=%s.zip" % filename)
         out = response.getOutputStream("application/zip")
     
     zipOut = ZipOutputStream(out)
     
     zipOut.putNextEntry(ZipEntry("imsmanifest.xml"))
     IOUtils.write(writer.toString(), zipOut)
     zipOut.closeEntry()
     
     oidList = self.__manifest.getList("manifest//id")
     for oid in oidList:
         obj = Services.getStorage().getObject(oid)
         for pid in obj.getPayloadIdList():
             payload = obj.getPayload(pid)
             if not PayloadType.Annotation.equals(payload.getType()):
                 zipOut.putNextEntry(ZipEntry("resources/%s/%s" % (oid, pid)))
                 IOUtils.copy(payload.open(), zipOut)
                 payload.close()
                 zipOut.closeEntry()
         obj.close()
     zipOut.close()
     out.close()
Exemple #2
0
 def __createPackage(self, outputFile=None):
     manifest = self.__createManifest()
     context = JAXBContext.newInstance("au.edu.usq.fascinator.ims")
     m = context.createMarshaller()
     m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, True)
     writer = StringWriter()
     jaxbElem = ObjectFactory.createManifest(ObjectFactory(), manifest)
     m.marshal(jaxbElem, writer);
     writer.close()
     
     if outputFile is not None:
         print " * imscp.py: writing to %s..." % outputFile
         out = FileOutputStream(outputFile)
     else:
         print " * imscp.py: writing to http output stream..."
         response.setHeader("Content-Disposition", "attachment; filename=%s.zip" % self.__portal.getName())
         out = response.getOutputStream("application/zip")
     
     zipOut = ZipOutputStream(out)
     
     zipOut.putNextEntry(ZipEntry("imsmanifest.xml"))
     IOUtils.write(writer.toString(), zipOut)
     zipOut.closeEntry()
     
     for key in self.__portalManifest.keySet():
         item = self.__portalManifest.get(key)
         oid = item.get("id")
         obj = Services.getStorage().getObject(oid)
         for payload in obj.getPayloadList():
             pid = payload.getId()
             if pid != "SOF-META":
                 zipOut.putNextEntry(ZipEntry("%s/%s" % (key[5:], pid)))
                 IOUtils.copy(payload.getInputStream(), zipOut)
                 zipOut.closeEntry()
     
     zipOut.close()
     out.close()