Ejemplo n.º 1
0
def compile(wd,args):
    print "changing working directory to %s" % wd
    System.setProperty("user.dir",wd);
    print args
    outstream = ByteArrayOutputStream()
    errstream = ByteArrayOutputStream()
    System.setOut(PrintStream(outstream))
    System.setErr(PrintStream(errstream))
    try: Tom.exec(config + args)
    except: pass
    return str((outstream.toString(),errstream.toString()))
Ejemplo n.º 2
0
    def crawl(site, trm , depth, linksfile):
        from java.net import URL
        from org.w3c.tidy import Tidy
        pattern = re.compile('href="/wiki/(.*?)"')
        f = open(linksfile, 'a+')
        #try:
        if depth < MAX_DEPTH:
            print 'crawling [%s]...' % trm,
            print >> f, '[%s]' % trm

            td = Tidy()
            td.setXmlOut(1)

            u = URL(site + trm)

            input = BufferedInputStream(u.openStream())
            output = ByteArrayOutputStream()
            #tidy.setInputEncoding("UTF8")
            #tidy.setOutputEncoding("UTF8")

            td.parse(input, output)
            content = output.toString()
            hits = pattern.findall(content)

            for hit in hits:
                if hit.find(":") == -1:
                    print >> f, hit
            print 'done.'
            print >> f, ''
            for hit in hits:
                if hit.find(":") == -1:
                    crawl(site, hit, depth + 1, linksfile)
        #except:
        #    print "wrong"
        f.close()
Ejemplo n.º 3
0
 def getPayloadContent(self):
     format = self.__metadata.getField("dc_format")
     slash = self.__oid.rfind("/")
     pid = self.__oid[slash+1:]
     print " *** payload content, format: %s, pid: %s *** " % (format, pid)
     contentStr = ""
     if format.startswith("text"):
         contentStr = "<pre>"
         payload = self.__storage.getPayload(self.__oid, pid)
         str = StringWriter() 
         IOUtils.copy(payload.getInputStream(), str)
         contentStr += str.toString()
         contentStr += "</pre>"
     elif format.find("vnd.ms-")>-1 or format.find("vnd.oasis.opendocument.")>-1:
         #get the html version if exist....
         pid = pid[:pid.find(".")] + ".htm"
         payload = self.__storage.getPayload(self.__oid, pid)
         saxReader = SAXReader()
         document = saxReader.read(payload.getInputStream())
         slideNode = document.selectSingleNode("//div[@class='body']")
         #linkNodes = slideNode.selectNodes("//img")
         #contentStr = slideNode.asXML();
         # encode character entities correctly
         out = ByteArrayOutputStream()
         format = OutputFormat.createPrettyPrint()
         format.setSuppressDeclaration(True)
         writer = XMLWriter(out, format)
         writer.write(slideNode)
         writer.close()
         contentStr = out.toString("UTF-8")
     return contentStr
Ejemplo n.º 4
0
def showImgWithLegend(width=None,height=None):
    """ This function shows the image and legend from current IDV window while in GUI mode. Optional arguments are width and height in pixels, they currently default to 600 and 400"""
    from java.util import Base64 ##only in java8
    from javax.imageio import ImageIO
    from java.io import ByteArrayOutputStream
    from ucar.unidata.ui.ImageUtils import resize,toBufferedImage
    import java
    import java.awt.Robot as Robot
    import java.awt.Rectangle as Rectangle
    import java.awt.Toolkit as Toolkit
    from ucar.unidata.util import Misc
    VM=idv.getViewManager()
    VMC=VM.getContents()
    VMCC=VMC.getComponent(1) # the view and legend ; 0 is left most part of view window with controls for perspective views
    siz=VMCC.getSize()
    loc= VMCC.getLocationOnScreen()
    gc= VMCC.getGraphicsConfiguration()
    loc.x -= gc.getBounds().x
    loc.y -= gc.getBounds().y
    robotx=Robot(gc.getDevice())
    VM.toFront()
    Misc.sleep(250)
    img = robotx.createScreenCapture(Rectangle(loc.x, loc.y,siz.width, siz.height))
    if width != None and height != None:
        img=toBufferedImage(resize(img,width,height));
    bos=ByteArrayOutputStream();
    ImageIO.write(img, "png", Base64.getEncoder().wrap(bos));
    data = bos.toString("UTF-8");
    return {"display":"image","data":data}
Ejemplo n.º 5
0
def tostring(element_or_tree, encoding=None, method='xml',
             xml_declaration=None, pretty_print=False, with_tail=True,
             standalone=None, doctype=None, exclusive=False,
             with_comments=True, inclusive_ns_prefixes=None):
    if isinstance(element_or_tree, _ElementTree):
        source = DOMSource(element_or_tree._dom_doc)
    else:
        source = DOMSource(element_or_tree._dom_element)

    outputstream = ByteArrayOutputStream()
    result = StreamResult(outputstream)
    transformer = transformfac.newTransformer()
    if xml_declaration:
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
                                      'no')
    else:
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
                                      'yes')
    if pretty_print:
        transformer.setOutputProperty(OutputKeys.INDENT, 'yes')
    else:
        transformer.setOutputProperty(OutputKeys.INDENT, 'no')
    transformer.transform(source, result)

    if encoding is None:
        encoding = 'ascii'
    return outputstream.toString(encoding)
Ejemplo n.º 6
0
def showImgWithFullWindow(width=None, height=None):
    """ This function shows the image from current IDV window while in GUI mode. optional arguments are width and height in pixels, they
    currently default to 600 and 400"""
    from java.util import Base64  ##only in java8
    from javax.imageio import ImageIO
    from java.io import ByteArrayOutputStream
    from ucar.unidata.ui.ImageUtils import resize, toBufferedImage
    import java
    import java.awt.Robot as Robot
    import java.awt.Rectangle as Rectangle
    import java.awt.Toolkit as Toolkit
    from ucar.unidata.util import Misc
    VM = idv.getViewManager()
    myframe = VM.getDisplayWindow().getComponent()
    robotx = Robot(myframe.getGraphicsConfiguration().getDevice())
    VM.toFront()
    #robotx.delay(250)
    Misc.sleep(350)
    pause()
    img = robotx.createScreenCapture(
        Rectangle(myframe.getX(), myframe.getY(), myframe.getWidth(),
                  myframe.getHeight()))
    if width != None and height != None:
        img = toBufferedImage(resize(img, width, height))
    bos = ByteArrayOutputStream()
    ImageIO.write(img, "png",
                  Base64.getEncoder().wrap(bos))
    data = bos.toString("UTF-8")
    return {"display": "image", "data": data}
Ejemplo n.º 7
0
    def handle(self):
        try:
            raw_xml = self.rfile.readline().strip()
            marc_xmlfile = NamedTemporaryFile(delete=False)
            marc_xmlfile.write(raw_xml)
            marc_xmlfile.close()
            print(marc_xmlfile.name)
            dynamic_context = saxon.query.DynamicQueryContext(CONFIG)
##            xml_doc = CONFIG.buildDocument(
##                StreamSource(ByteArrayInputStream(raw_xml)))
##            dynamic_context.setContextItem(xml_doc)
            dynamic_context.setParameter(
                "baseuri",
                INFO.get('base_uri', 'http://catalog/'))

            dynamic_context.setParameter(
                "marcxmluri",
                os.path.normpath(marc_xmlfile.name).replace("\\", "/"))
            dynamic_context.setParameter("serialization", "rdfxml")
            output_stream = ByteArrayOutputStream()
            result = StreamResult(output_stream)
            print("Before query")
            COMPLIED_XQUERY.run(dynamic_context, result, None)
            self.wfile.write(output_stream.toString().encode('ascii',
                                                         errors='ignore'))
            os.remove(marc_xmlfile.name)
        except:
             self.wfile.write("Error processing MARC XML:\n\t{}".format(sys.exc_info()[0]))
Ejemplo n.º 8
0
def showImgWithLegend(width=None, height=None):
    """ This function shows the image and legend from current IDV window while in GUI mode. Optional arguments are width and height in pixels, they currently default to 600 and 400"""
    from java.util import Base64  ##only in java8
    from javax.imageio import ImageIO
    from java.io import ByteArrayOutputStream
    from ucar.unidata.ui.ImageUtils import resize, toBufferedImage
    import java
    import java.awt.Robot as Robot
    import java.awt.Rectangle as Rectangle
    import java.awt.Toolkit as Toolkit
    from ucar.unidata.util import Misc
    VM = idv.getViewManager()
    VMC = VM.getContents()
    VMCC = VMC.getComponent(
        1
    )  # the view and legend ; 0 is left most part of view window with controls for perspective views
    siz = VMCC.getSize()
    loc = VMCC.getLocationOnScreen()
    gc = VMCC.getGraphicsConfiguration()
    loc.x -= gc.getBounds().x
    loc.y -= gc.getBounds().y
    robotx = Robot(gc.getDevice())
    VM.toFront()
    Misc.sleep(250)
    img = robotx.createScreenCapture(
        Rectangle(loc.x, loc.y, siz.width, siz.height))
    if width != None and height != None:
        img = toBufferedImage(resize(img, width, height))
    bos = ByteArrayOutputStream()
    ImageIO.write(img, "png",
                  Base64.getEncoder().wrap(bos))
    data = bos.toString("UTF-8")
    return {"display": "image", "data": data}
Ejemplo n.º 9
0
    def pageContent(self):
        # Object ID
        oid = self.metadata.get("id")
        # Determine MIME Type
        mimeType = "Unknown"
        mimeList = self.metadata.getList("dc_format")
        if mimeList is not None and not mimeList.isEmpty():
            mimeType = mimeList.get(0)

        # The HTML payload is the real object, display in a frame because we
        #  have no idea what kind of object it is.
        if mimeType == "text/html":
            objectPath = "http://%s:%s%s/%s/download/%s/" % \
            (self.req.serverName, self.serverPort, self.contextPath, self.portalId, oid)
            objectLink = '<a class="iframe-link-alt" href="%s">View outside the frame</a>' % objectPath
            objectFrame = '<iframe class="iframe-preview" src="%s"></iframe>' % objectPath
            return objectLink + "<br/>" + objectFrame

        # We are just rendering a HTML preview
        else:
            preview = self.metadata.get("preview")
            try:
                object = Services.getStorage().getObject(oid)
                payload = object.getPayload(preview)
                out = ByteArrayOutputStream()
                IOUtils.copy(payload.open(), out)
                payload.close()
                return out.toString("UTF-8")

            except StorageException, e:
                return
Ejemplo n.º 10
0
def showImgWithFullWindow(width=None,height=None):
    """ This function shows the image from current IDV window while in GUI mode. optional arguments are width and height in pixels, they
    currently default to 600 and 400"""
    from java.util import Base64 ##only in java8
    from javax.imageio import ImageIO
    from java.io import ByteArrayOutputStream
    from ucar.unidata.ui.ImageUtils import resize,toBufferedImage
    import java
    import java.awt.Robot as Robot
    import java.awt.Rectangle as Rectangle
    import java.awt.Toolkit as Toolkit
    from ucar.unidata.util import Misc
    VM=idv.getViewManager()
    myframe=VM.getDisplayWindow().getComponent()
    robotx = Robot(myframe.getGraphicsConfiguration().getDevice())
    VM.toFront();
    #robotx.delay(250)
    Misc.sleep(350)
    pause()
    img=robotx.createScreenCapture(Rectangle( myframe.getX(),myframe.getY(),myframe.getWidth(),myframe.getHeight()))
    if width != None and height != None:
        img=toBufferedImage(resize(img,width,height));
    bos=ByteArrayOutputStream();
    ImageIO.write(img, "png", Base64.getEncoder().wrap(bos));
    data = bos.toString("UTF-8");
    return {"display":"image","data":data}
Ejemplo n.º 11
0
 def __load(self, oid):
     template = """<div class="title" /><div class="page-toc" /><div class="body"><div>%s</div></div>"""
     print "Loading HTML preview for %s..." % oid
     if oid == "blank":
         return template % "<p>This page intentionally left blank.</p>"
     else:
         object = Services.getStorage().getObject(oid)
         
         # get preview payload or source if no preview
         pid = self.__getPreviewPid(object)
         payload = object.getPayload(pid)
         mimeType = payload.getContentType()
         
         print "pid=%s mimeType=%s" % (pid, mimeType)
         isHtml = mimeType in ["text/html", "application/xhtml+xml"]
         if isHtml or mimeType.startswith("text/"):
             out = ByteArrayOutputStream()
             IOUtils.copy(payload.open(), out)
             content = out.toString("UTF-8")
             if content.find('class="body"'):  ## assumes ICE content
                 return content
             elif isHtml:
                 return template % content
             elif mimeType == "text/plain":
                 return template % ('<pre>%s</pre>' % content)
             else:
                 return content
         elif mimeType.startswith("image/"):
             return template % ('<div rel="%s"><img src="%s" /></div>' % (oid, pid))
         else:
             return '<a href="%s" rel="%s">%s</a>' % (oid, mimeType, pid)
         payload.close()
         object.close()
Ejemplo n.º 12
0
 def parseFFmpeg(self, parent):
     if parent is not None:
         object = parent.getObject()
         if object is not None:
             payload = None
             try:
                 payload = object.getPayload("ffmpeg.info")
                 # Stream the content out to string
                 out = ByteArrayOutputStream()
                 IOUtils.copy(payload.open(), out)
                 payload.close()
                 self.__ffmpegRaw = out.toString("UTF-8")
                 out.close()
                 payload.close()
                 # And parse it
                 self.__ffmpegData = JsonSimple(self.__ffmpegRaw)
                 if self.__ffmpegData is None:
                     return False
                 else:
                     self.__ffmpegOutputs = self.__ffmpegData.getJsonSimpleMap(["outputs"])
                     return True
             except:
                 if payload is not None:
                     payload.close()
     return False
Ejemplo n.º 13
0
 def parseFFmpeg(self, parent):
     if parent is not None:
         object = parent.getObject()
         if object is not None:
             payload = None
             try:
                 payload = object.getPayload("ffmpeg.info")
                 # Stream the content out to string
                 out = ByteArrayOutputStream()
                 IOUtils.copy(payload.open(), out)
                 payload.close()
                 self.__ffmpegRaw = out.toString("UTF-8")
                 out.close()
                 payload.close()
                 # And parse it
                 jsonData = JsonConfigHelper(self.__ffmpegRaw)
                 if jsonData is None:
                     return False
                 else:
                     self.__ffmpegData = jsonData.getJsonMap("/outputs")
                     return True
             except:
                 if payload is not None:
                     payload.close()
     return False
Ejemplo n.º 14
0
 def export(self, exportType):        
     exportQuery = "%s:%s" % (self.facetField, self.facetFieldValue)
     outputType = "text/%s; charset=UTF-8" % type        
     responseHeader = "attachment; filename=%s.%s" % (self.facetFieldValue, exportType) 
     
     try:
         out = ByteArrayOutputStream() 
         recnumreq = SearchRequest(exportQuery)
         recnumreq.setParam("fl","create_timestamp")
         recnumreq.setParam("rows", "0")
         self.indexer.search(recnumreq, out)
         recnumres = SolrResult(ByteArrayInputStream(out.toByteArray()))
         self.__rowsFoundSolr = "%s" % recnumres.getNumFound()
     except:
         self.errorMsg = "Export query failure. The issue has been logged (%s - %s)." % (sys.exc_info()[0], sys.exc_info()[1])
         self.log.error("Export query threw an exception (package type was %s): %s - %s" % (self.facetFieldValue, sys.exc_info()[0], sys.exc_info()[1]))
         return
     
     out = ByteArrayOutputStream()
     req = SearchRequest(exportQuery)
     req.setParam("wt", exportType)        
     req.setParam("rows", self.__rowsFoundSolr)
     self.indexer.search(req, out)
     self.response.setHeader("Content-Disposition", responseHeader)
     writer = self.response.getPrintWriter(outputType)
     writer.println(out.toString("UTF-8"))
     writer.close()
Ejemplo n.º 15
0
def tostring(element_or_tree,
             encoding=None,
             method='xml',
             xml_declaration=None,
             pretty_print=False,
             with_tail=True,
             standalone=None,
             doctype=None,
             exclusive=False,
             with_comments=True,
             inclusive_ns_prefixes=None):
    if isinstance(element_or_tree, _ElementTree):
        source = DOMSource(element_or_tree._dom_doc)
    else:
        source = DOMSource(element_or_tree._dom_element)

    outputstream = ByteArrayOutputStream()
    result = StreamResult(outputstream)
    transformer = transformfac.newTransformer()
    if xml_declaration:
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, 'no')
    else:
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, 'yes')
    if pretty_print:
        transformer.setOutputProperty(OutputKeys.INDENT, 'yes')
    else:
        transformer.setOutputProperty(OutputKeys.INDENT, 'no')
    transformer.transform(source, result)

    if encoding is None:
        encoding = 'ascii'
    return outputstream.toString(encoding)
Ejemplo n.º 16
0
 def getPayloadContent(self):
     mimeType = self.__mimeType
     print " * single.py: payload content mimeType=%s" % mimeType
     contentStr = ""
     if mimeType.startswith("text/"):
         if mimeType == "text/html":
             contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s"></iframe>' % (
                 contextPath,
                 portalId,
                 self.__oid,
             )
         else:
             pid = self.__oid[self.__oid.rfind("/") + 1 :]
             payload = self.__storage.getPayload(self.__oid, pid)
             print " * single.py: pid=%s payload=%s" % (pid, payload)
             if payload is not None:
                 sw = StringWriter()
                 sw.write("<pre>")
                 IOUtils.copy(payload.getInputStream(), sw)
                 sw.write("</pre>")
                 sw.flush()
                 contentStr = sw.toString()
     elif (
         mimeType == "application/pdf"
         or mimeType.find("vnd.ms") > -1
         or mimeType.find("vnd.oasis.opendocument.") > -1
     ):
         # get the html version if exist...
         pid = os.path.splitext(self.__pid)[0] + ".htm"
         print " * single.py: pid=%s" % pid
         # contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s/%s"></iframe>' % \
         #    (contextPath, portalId, self.__oid, pid)
         payload = self.__storage.getPayload(self.__oid, pid)
         saxReader = SAXReader(Boolean.parseBoolean("false"))
         try:
             document = saxReader.read(payload.getInputStream())
             slideNode = document.selectSingleNode("//*[local-name()='body']")
             # linkNodes = slideNode.selectNodes("//img")
             # contentStr = slideNode.asXML();
             # encode character entities correctly
             slideNode.setName("div")
             out = ByteArrayOutputStream()
             format = OutputFormat.createPrettyPrint()
             format.setSuppressDeclaration(True)
             format.setExpandEmptyElements(True)
             writer = XMLWriter(out, format)
             writer.write(slideNode)
             writer.close()
             contentStr = out.toString("UTF-8")
         except:
             traceback.print_exc()
             contentStr = '<p class="error">No preview available</p>'
     elif mimeType.startswith("image/"):
         src = "%s/%s" % (self.__oid, self.__pid)
         contentStr = (
             '<a class="image" href="%(src)s"  style="max-width:98%%">'
             '<img src="%(src)s" style="max-width:100%%" /></a>' % {"src": self.__pid}
         )
     return contentStr
Ejemplo n.º 17
0
    def __call__(self, _input, profile_run=False, **kw):

        nsmap = dict(xsl='http://www.w3.org/1999/XSL/Transform')
        output_method = 'xml'
        output_encoding = 'utf-8'

        nodes = self.xsl_tree.xpath('xsl:output/@method', namespaces=nsmap)
        if len(nodes) > 0:
            output_method = nodes[0]

        nodes = self.xsl_tree.xpath('xsl:output/@encoding', namespaces=nsmap)
        if len(nodes) > 0:
            output_encoding = nodes[0]

        #print tostring(_input)
        if isinstance(_input, _ElementTree):
            doc_source = DOMSource(_input._dom_doc)
        elif isinstance(_input, _Element):
            # Xalan-J 2.7.1 does not support a DOMSource from an Element
            # so we build new document
            dom_doc = builder.newDocument()
            dom_root = dom_doc.importNode(_input._dom_element, True)
            dom_doc.appendChild(dom_root)
            doc_source = DOMSource(dom_doc)
        else:
            raise NotImplementedError()

        if output_method in ('xml', 'html'):

            # TODO: for testing
            outputstream = ByteArrayOutputStream()
            result = StreamResult(outputstream)
            self.transformer.transform(doc_source, result)
            bytes = outputstream.toByteArray()
            inputstream = ByteArrayInputStream(bytes)
            try:
                dom_doc = builder.parse(inputstream)
            except:
                import sys
                sys.stderr.write(bytes.tostring())
                raise
            result_tree = _ElementTree(dom_doc)
            return result_tree

            result = DOMResult()
            self.transformer.transform(doc_source, result)
            dom_doc = result.getNode()
            result_tree = _ElementTree(dom_doc)
            #print tostring(result_tree)
            return result_tree
        else:
            outputstream = ByteArrayOutputStream()
            result = StreamResult(outputstream)
            self.transformer.transform(doc_source, result)

            resultdoc = builder.newDocument()
            resulttree = _XSLTResultTree(resultdoc)
            resulttree._text = outputstream.toString(output_encoding)
            return resulttree
Ejemplo n.º 18
0
    def __call__(self, _input, profile_run=False, **kw):

        nsmap = dict(xsl='http://www.w3.org/1999/XSL/Transform')
        output_method = 'xml'
        output_encoding = 'utf-8'

        nodes = self.xsl_tree.xpath('xsl:output/@method', namespaces=nsmap)
        if len(nodes) > 0:
            output_method = nodes[0]

        nodes = self.xsl_tree.xpath('xsl:output/@encoding', namespaces=nsmap)
        if len(nodes) > 0:
            output_encoding = nodes[0]

        #print tostring(_input)
        if isinstance(_input, _ElementTree):
            doc_source = DOMSource(_input._dom_doc)
        elif isinstance(_input, _Element):
            # Xalan-J 2.7.1 does not support a DOMSource from an Element
            # so we build new document
            dom_doc = builder.newDocument()
            dom_root = dom_doc.importNode(_input._dom_element, True)
            dom_doc.appendChild(dom_root)
            doc_source = DOMSource(dom_doc)
        else:
            raise NotImplementedError()

        if output_method in ('xml', 'html'):

            # TODO: for testing
            outputstream = ByteArrayOutputStream()
            result = StreamResult(outputstream)
            self.transformer.transform(doc_source, result)
            bytes = outputstream.toByteArray()
            inputstream = ByteArrayInputStream(bytes)
            try:
                dom_doc = builder.parse(inputstream)
            except:
                import sys
                sys.stderr.write(bytes.tostring())
                raise
            result_tree = _ElementTree(dom_doc)
            return result_tree

            result = DOMResult()
            self.transformer.transform(doc_source, result)
            dom_doc = result.getNode()
            result_tree = _ElementTree(dom_doc)
            #print tostring(result_tree)
            return result_tree
        else:
            outputstream = ByteArrayOutputStream()
            result = StreamResult(outputstream)
            self.transformer.transform(doc_source, result)

            resultdoc = builder.newDocument()
            resulttree = _XSLTResultTree(resultdoc)
            resulttree._text = outputstream.toString(output_encoding)
            return resulttree
Ejemplo n.º 19
0
def BufferedImgToNotebook(img):
    from java.io import ByteArrayOutputStream
    from java.util import Base64 ##only in java8
    from javax.imageio import ImageIO
    bos=ByteArrayOutputStream();
    ImageIO.write(img, "png", Base64.getEncoder().wrap(bos));
    data = bos.toString("UTF-8");
    return {"display":"image","data":data}
Ejemplo n.º 20
0
def BufferedImgToNotebook(img):
    from java.io import ByteArrayOutputStream
    from java.util import Base64  ##only in java8
    from javax.imageio import ImageIO
    bos = ByteArrayOutputStream()
    ImageIO.write(img, "png",
                  Base64.getEncoder().wrap(bos))
    data = bos.toString("UTF-8")
    return {"display": "image", "data": data}
Ejemplo n.º 21
0
	def mouseClicked(self, s, g) :
		x = JOptionPane.showInputDialog(self.client_state, "Type your text here:")
		if x is None:
			x = ''
		bout = ByteArrayOutputStream()
		eout = EscapingOutputStream(bout)
		eout.write(x)
		y = bout.toString()
		return self._getmetadata() + "|" + "(%d,%d)|%s " % (s.x, s.y, y)
Ejemplo n.º 22
0
def getStreamData(stream):
    baos = ByteArrayOutputStream()
    lenRead = 0
    while lenRead >= 0:
        bytes = jarray.zeros(4096, 'b')
        lenRead = stream.read(bytes, 0, 4096)
        if lenRead > 0:
            baos.write(bytes, 0, lenRead)
    stream.close();  
    return baos.toString()
Ejemplo n.º 23
0
def retrieveBody(delivery):
    if delivery.properties.contentEncoding == "DEF":
        compressed = Base64.decodeBase64(String(delivery.body).getBytes("UTF-8"))
        inflated = ByteArrayOutputStream()
        inflatedOs = InflaterOutputStream(inflated)
        inflatedOs.write(compressed)
        inflatedOs.close()
        return inflated.toString("UTF-8")
    else:
        return String(delivery.body, "UTF-8")
Ejemplo n.º 24
0
 def getPayloadContent(self):
     mimeType = self.__mimeType
     print " * detail.py: payload content mimeType=%s" % mimeType
     contentStr = ""
     if mimeType == "application/octet-stream":
         dcFormat = self.__json.get("response/docs/dc_format")
         if dcFormat is not None:
             dcFormat = dcFormat[1:-1]
         print dcFormat, mimeType
         if dcFormat != mimeType:
             return "<div><em>(File not found)</em></div>"
         else:
             return "<div><em>(Binary file)</em></div>"
     elif mimeType.startswith("text/"):
         if mimeType == "text/html":
             contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s"></iframe>' % \
                 (contextPath, portalId, self.__oid)
         else:
             pid = self.__oid[self.__oid.rfind("/")+1:]
             payload = self.__storage.getPayload(self.__oid, pid)
             #print " * detail.py: pid=%s payload=%s" % (pid, payload)
             if payload is not None:
                 sw = StringWriter()
                 sw.write("<pre>")
                 IOUtils.copy(payload.getInputStream(), sw)
                 sw.write("</pre>")
                 sw.flush()
                 contentStr = sw.toString()
     elif mimeType == "application/pdf" or mimeType.find("vnd.ms")>-1 or mimeType.find("vnd.oasis.opendocument.")>-1:
         # get the html version if exist...
         pid = os.path.splitext(self.__pid)[0] + ".htm"
         print " * detail.py: pid=%s" % pid
         #contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s/%s"></iframe>' % \
         #    (contextPath, portalId, self.__oid, pid)
         payload = self.__storage.getPayload(self.__oid, pid)
         saxReader = SAXReader(Boolean.parseBoolean("false"))
         try:
             document = saxReader.read(payload.getInputStream())
             slideNode = document.selectSingleNode("//*[local-name()='body']")
             #linkNodes = slideNode.selectNodes("//img")
             #contentStr = slideNode.asXML();
             # encode character entities correctly
             slideNode.setName("div")
             out = ByteArrayOutputStream()
             format = OutputFormat.createPrettyPrint()
             format.setSuppressDeclaration(True)
             format.setExpandEmptyElements(True)
             writer = XMLWriter(out, format)
             writer.write(slideNode)
             writer.close()
             contentStr = out.toString("UTF-8")
         except:
             traceback.print_exc()
             contentStr = "<p class=\"error\">No preview available</p>"
     return contentStr
Ejemplo n.º 25
0
def retrieveBody(delivery):
    if delivery.properties.contentEncoding == "DEF":
        compressed = Base64.decodeBase64(
            String(delivery.body).getBytes("UTF-8"))
        inflated = ByteArrayOutputStream()
        inflatedOs = InflaterOutputStream(inflated)
        inflatedOs.write(compressed)
        inflatedOs.close()
        return inflated.toString("UTF-8")
    else:
        return String(delivery.body, "UTF-8")
Ejemplo n.º 26
0
def asmify(clazz, skipdebug=False):
    """ Print the ASM java code calls necessary to construct the clazz on the fly.
      Works only for classes loaded by the Fiji startup ClassLoader from .class files.
      See org.objectweb.asm.util.Printer.main method at: https://gitlab.ow2.org/asm/asm/blob/master/asm-util/src/main/java/org/objectweb/asm/util/Printer.java#L1225
      
      To see the ASM java code calls for an arbitrary .class file, run instead:
      
      $ java --classpath .:/path/to/Fiji.app/jars/asm-5.0.4.jar:/path/to/Fiji.app/jars/asm-util.4.0.jar org.objectweb.asm.util.ASMfier <package>/classname.class  """
    baos = ByteArrayOutputStream()  # expands size as needed
    tcv = TraceClassVisitor(None, ASMifier(), PrintWriter(baos))
    ClassReader(clazz).accept(tcv, ClassReader.SKIP_DEBUG if skipdebug else 0)
    return baos.toString()
Ejemplo n.º 27
0
 def getPayloadContent(self):
     mimeType = self.__mimeType
     print " * single.py: payload content mimeType=%s" % mimeType
     contentStr = ""
     if mimeType.startswith("text/"):
         if mimeType == "text/html":
             contentStr = '<iframe class="iframe-preview" src="%s/download/%s"></iframe>' % \
                 (portalPath, self.__oid)
         else:
             pid = self.__oid[self.__oid.rfind("/") + 1:]
             payload = self.__storage.getPayload(self.__oid, pid)
             print " * single.py: pid=%s payload=%s" % (pid, payload)
             if payload is not None:
                 sw = StringWriter()
                 sw.write("<pre>")
                 IOUtils.copy(payload.getInputStream(), sw)
                 sw.write("</pre>")
                 sw.flush()
                 contentStr = sw.toString()
     elif mimeType == "application/pdf" or mimeType.find(
             "vnd.ms") > -1 or mimeType.find(
                 "vnd.oasis.opendocument.") > -1:
         # get the html version if exist...
         pid = os.path.splitext(self.__pid)[0] + ".htm"
         print " * single.py: pid=%s" % pid
         #contentStr = '<iframe class="iframe-preview" src="%s/download/%s/%s"></iframe>' % \
         #    (portalPath, self.__oid, pid)
         payload = self.__storage.getPayload(self.__oid, pid)
         saxReader = SAXReader(Boolean.parseBoolean("false"))
         try:
             document = saxReader.read(payload.getInputStream())
             slideNode = document.selectSingleNode(
                 "//*[local-name()='body']")
             #linkNodes = slideNode.selectNodes("//img")
             #contentStr = slideNode.asXML();
             # encode character entities correctly
             slideNode.setName("div")
             out = ByteArrayOutputStream()
             format = OutputFormat.createPrettyPrint()
             format.setSuppressDeclaration(True)
             format.setExpandEmptyElements(True)
             writer = XMLWriter(out, format)
             writer.write(slideNode)
             writer.close()
             contentStr = out.toString("UTF-8")
         except:
             traceback.print_exc()
             contentStr = "<p class=\"error\">No preview available</p>"
     elif mimeType.startswith("image/"):
         src = "%s/%s" % (self.__oid, self.__pid)
         contentStr = '<a class="image" href="%(src)s"  style="max-width:98%%">' \
             '<img src="%(src)s" style="max-width:100%%" /></a>' % { "src": self.__pid }
     return contentStr
Ejemplo n.º 28
0
 def __tidy(self, content):
     tidy = Tidy()
     tidy.setIndentAttributes(False)
     tidy.setIndentContent(False)
     tidy.setPrintBodyOnly(True)
     tidy.setSmartIndent(False)
     tidy.setWraplen(0)
     tidy.setXHTML(False)
     tidy.setNumEntities(True)
     out = ByteArrayOutputStream()
     doc = tidy.parseDOM(ByteArrayInputStream(String(content).getBytes()), out)
     content = out.toString("UTF-8")
     return content, doc
Ejemplo n.º 29
0
def getPdf(htmlString):
    converter = CYaHPConverter()
    encoder = ByteArrayOutputStream()
    out = MimeUtility.encode(encoder, "base64");
    #out = ByteArrayOutputStream()

    properties = HashMap()
    headerFooterList = ArrayList()
    properties.put(IHtmlToPdfTransformer.PDF_RENDERER_CLASS, IHtmlToPdfTransformer.FLYINGSAUCER_PDF_RENDERER)
    converter.convertToPdf(htmlString, IHtmlToPdfTransformer.A4P, headerFooterList, 'https://reflexsystems.com/', out, properties)
    out.close()
    #return out.toString()
    return encoder.toString()
Ejemplo n.º 30
0
def showImg(width=400,height=300):
    """ This function shows the image from current IDV frame, optional arguments are width and height in pixels, they
    currently default to 400 and 300"""
    from java.util import Base64 ##only in java8
    from javax.imageio import ImageIO
    from java.io import ByteArrayOutputStream
    from ucar.unidata.ui.ImageUtils import resize,toBufferedImage
    pause()
    img=getImage() 
    img=toBufferedImage(resize(img,width,height));
    bos=ByteArrayOutputStream();
    ImageIO.write(img, "png", Base64.getEncoder().wrap(bos));
    data = bos.toString("UTF-8");
    return {"display":"image","data":data}
Ejemplo n.º 31
0
 def __tidy(self, content):
     tidy = Tidy()
     tidy.setIndentAttributes(False)
     tidy.setIndentContent(False)
     tidy.setPrintBodyOnly(True)
     tidy.setSmartIndent(False)
     tidy.setWraplen(0)
     tidy.setXHTML(True)
     tidy.setNumEntities(True)
     tidy.setShowWarnings(False)
     tidy.setQuiet(True)
     out = ByteArrayOutputStream()
     tidy.parse(IOUtils.toInputStream(content, "UTF-8"), out)
     return out.toString("UTF-8")
Ejemplo n.º 32
0
def showImg(width=None,height=None):
    """ This function shows the image from current IDV frame, optional arguments are width and height in pixels, they
    currently default to 400 and 300"""
    from java.util import Base64 ##only in java8
    from javax.imageio import ImageIO
    from java.io import ByteArrayOutputStream
    from ucar.unidata.ui.ImageUtils import resize,toBufferedImage
    pause()
    #imgx=getImage() currently not working with new changes to idv
    img=idv.getViewManager().getMaster().getImage(True)
    if width != None and height != None:
        img=toBufferedImage(resize(img,width,height));
    bos=ByteArrayOutputStream();
    ImageIO.write(img, "png", Base64.getEncoder().wrap(bos));
    data = bos.toString("UTF-8");
    return {"display":"image","data":data}
Ejemplo n.º 33
0
def showImg(width=None, height=None):
    """ This function shows the image from current IDV frame, optional arguments are width and height in pixels, they
    currently default to 400 and 300"""
    from java.util import Base64  ##only in java8
    from javax.imageio import ImageIO
    from java.io import ByteArrayOutputStream
    from ucar.unidata.ui.ImageUtils import resize, toBufferedImage
    pause()
    #imgx=getImage() currently not working with new changes to idv
    img = idv.getViewManager().getMaster().getImage(True)
    if width != None and height != None:
        img = toBufferedImage(resize(img, width, height))
    bos = ByteArrayOutputStream()
    ImageIO.write(img, "png",
                  Base64.getEncoder().wrap(bos))
    data = bos.toString("UTF-8")
    return {"display": "image", "data": data}
Ejemplo n.º 34
0
    def pageContent(self):
        # Object ID
        oid = self.metadata.getFirst("id")
        # Determine MIME Type
        mimeType = "Unknown"
        mimeList = self.metadata.getList("dc_format")
        if mimeList is not None and not mimeList.isEmpty():
            mimeType = mimeList.get(0)

        # The HTML payload is the real object, display in a frame because we
        #  have no idea what kind of object it is.
        if mimeType == "text/html":
            urlBase = self.config.getString(None, ["urlBase"])
            if urlBase is None:
                "http://%s:%s%s/" % (self.req.serverName, self.serverPort,
                                     self.contextPath)
            objectPath = "%s%s/download/%s/" % (urlBase, self.portalId, oid)
            return self.frameContent(objectPath)

        # We are rendering a HTML preview...
        else:
            preview = self.metadata.getFirst("preview")

            # ... of an IMS package or zipped website. Treat as per html above.
            if mimeType == "application/zip":
                urlBase = self.config.getString(None, ["urlBase"])
                if urlBase is None:
                    "http://%s:%s%s/" % (self.req.serverName, self.serverPort,
                                         self.contextPath)
                objectPath = "%s%s/download/%s/%s" % (urlBase, self.portalId,
                                                      oid, preview)
                return self.frameContent(objectPath)

            # ... of an HTML excerpt, such as an ICE rendition. Render in page.
            else:
                try:
                    object = Services.getStorage().getObject(oid)
                    payload = object.getPayload(preview)
                    out = ByteArrayOutputStream()
                    IOUtils.copy(payload.open(), out)
                    payload.close()
                    return out.toString("UTF-8")

                except StorageException, e:
                    return
Ejemplo n.º 35
0
 def __getPayloadContent(self, oid, pid):
     print " * combined.py: oid='%s' pid='%s'" % (oid, pid)
     payload = self.__storage.getPayload(oid, pid)
     if payload is None:
         return "<div>Error: No content for '%s'</div>" % oid
     mimeType = payload.contentType
     contentStr = ""
     if mimeType.startswith("text/"):
         if mimeType == "text/html":
             contentStr = '<iframe class="iframe-preview" src="%s/download/%s"></iframe>' % \
                 (portalPath, oid)
         else:
             sw = StringWriter()
             sw.write("<pre>")
             IOUtils.copy(payload.getInputStream(), sw)
             sw.write("</pre>")
             sw.flush()
             contentStr = sw.toString()
     elif mimeType == "application/pdf" or mimeType.find("vnd.ms")>-1 or mimeType.find("vnd.oasis.opendocument.")>-1:
         # get the html version if exist...
         pid = os.path.splitext(pid)[0] + ".htm"
         print " * combined.py: pid=%s" % pid
         payload = self.__storage.getPayload(oid, pid)
         saxReader = SAXReader(False)
         try:
             document = saxReader.read(payload.getInputStream())
             slideNode = document.selectSingleNode("//*[local-name()='body']")
             slideNode.setName("div")
             out = ByteArrayOutputStream()
             format = OutputFormat.createPrettyPrint()
             format.setSuppressDeclaration(True)
             format.setExpandEmptyElements(True)
             writer = XMLWriter(out, format)
             writer.write(slideNode)
             writer.close()
             contentStr = out.toString("UTF-8")
         except:
             traceback.print_exc()
             contentStr = "<p class=\"error\">No preview available</p>"
     elif mimeType.startswith("image/"):
         src = "%s/%s" % (oid, pid)
         contentStr = '<a class="image" href="%(src)s"  style="max-width:98%%">' \
             '<img src="%(src)s" style="max-width:100%%" /></a>' % { "src": pid }
     return contentStr
Ejemplo n.º 36
0
 def getPayloadContent(self):
     mimeType = self.__mimeType
     print " * detail.py: payload content mimeType=%s" % mimeType
     contentStr = ""
     if mimeType.startswith("text/"):
         if mimeType == "text/html":
             contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s"></iframe>' % \
                 (contextPath, portalId, self.__oid)
         else:
             pid = self.__oid[self.__oid.rfind("/")+1:]
             payload = self.__storage.getPayload(self.__oid, pid)
             print " * detail.py: pid=%s payload=%s" % (pid, payload)
             if payload is not None:
                 sw = StringWriter()
                 sw.write("<pre>")
                 IOUtils.copy(payload.getInputStream(), sw)
                 sw.write("</pre>")
                 sw.flush()
                 contentStr = sw.toString()
     elif mimeType == "application/pdf" or mimeType.find("vnd")>-1 or mimeType.find("vnd.oasis.opendocument.")>-1:
         # get the html version if exist...
         pid = os.path.splitext(self.__pid)[0] + ".htm"
         print " * detail.py: pid=%s" % pid
         #contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s/%s"></iframe>' % \
         #    (contextPath, portalId, self.__oid, pid)
         payload = self.__storage.getPayload(self.__oid, pid)
         saxReader = SAXReader(Boolean.parseBoolean("false"))
         try:
             document = saxReader.read(payload.getInputStream())
         except:
             traceback.print_exc()
         #slideNode = document.selectSingleNode("//div[@class='body']")
         slideNode = document.selectSingleNode("//*[local-name()='body']")
         #linkNodes = slideNode.selectNodes("//img")
         #contentStr = slideNode.asXML();
         # encode character entities correctly
         out = ByteArrayOutputStream()
         format = OutputFormat.createPrettyPrint()
         format.setSuppressDeclaration(True)
         writer = XMLWriter(out, format)
         writer.write(slideNode)
         writer.close()
         contentStr = out.toString("UTF-8")
     return contentStr
    class JavaCapturer(object):
        def __init__(self, stdout=True):
            if stdout:
                self._original = System.out
                self._set_stream = System.setOut
            else:
                self._original = System.err
                self._set_stream = System.setErr
            self._bytes = ByteArrayOutputStream()
            self._stream = PrintStream(self._bytes, False, "UTF-8")
            self._set_stream(self._stream)

        def release(self):
            # Original stream must be restored before closing the current
            self._set_stream(self._original)
            self._stream.close()
            output = self._bytes.toString("UTF-8")
            self._bytes.reset()
            return output
Ejemplo n.º 38
0
    class JavaCapturer(object):
        def __init__(self, stdout=True):
            if stdout:
                self._original = System.out
                self._set_stream = System.setOut
            else:
                self._original = System.err
                self._set_stream = System.setErr
            self._bytes = ByteArrayOutputStream()
            self._stream = PrintStream(self._bytes, False, 'UTF-8')
            self._set_stream(self._stream)

        def release(self):
            # Original stream must be restored before closing the current
            self._set_stream(self._original)
            self._stream.close()
            output = self._bytes.toString('UTF-8')
            self._bytes.reset()
            return output
Ejemplo n.º 39
0
def cleanData(data):
    from org.w3c.tidy import Tidy
    tidy = Tidy()
    tidy.setXHTML(True)
    tidy.setInputEncoding("UTF-8")
    tidy.setOutputEncoding("UTF-8")

    tidy.setMakeClean(False)
    tidy.setDropEmptyParas(False)
    tidy.setPrintBodyOnly(True)
    tidy.setQuoteAmpersand(True)
    tidy.setTrimEmptyElements(False)

    inputStream = ByteArrayInputStream(String(data).getBytes("UTF-8"))
    outputStream = ByteArrayOutputStream()

    tidy.parseDOM(inputStream, outputStream)

    return outputStream.toString("UTF-8")
Ejemplo n.º 40
0
    def pageContent(self):
        # Object ID
        oid = self.metadata.getFirst("id")
        # Determine MIME Type
        mimeType = "Unknown"
        mimeList = self.metadata.getList("dc_format")
        if mimeList is not None and not mimeList.isEmpty():
            mimeType = mimeList.get(0)

        # The HTML payload is the real object, display in a frame because we
        #  have no idea what kind of object it is.
        if mimeType == "text/html":
            urlBase = self.config.getString(None, ["urlBase"])
            if urlBase is None:
                "http://%s:%s%s/" % (self.req.serverName, self.serverPort, self.contextPath)
            objectPath = "%s%s/download/%s/" % (urlBase, self.portalId, oid)
            return self.frameContent(objectPath)

        # We are rendering a HTML preview...
        else:
            preview = self.metadata.getFirst("preview")

            # ... of an IMS package or zipped website. Treat as per html above.
            if mimeType == "application/zip":
                urlBase = self.config.getString(None, ["urlBase"])
                if urlBase is None:
                    "http://%s:%s%s/" % (self.req.serverName, self.serverPort, self.contextPath)
                objectPath = "%s%s/download/%s/%s" % (urlBase, self.portalId, oid, preview)
                return self.frameContent(objectPath)

            # ... of an HTML excerpt, such as an ICE rendition. Render in page.
            else:
                try:
                    object = Services.getStorage().getObject(oid)
                    payload = object.getPayload(preview)
                    out = ByteArrayOutputStream()
                    IOUtils.copy(payload.open(), out)
                    payload.close()
                    return out.toString("UTF-8")

                except StorageException, e:
                    return
Ejemplo n.º 41
0
    def _transform(self):
        try:
            input = FileInputStream(self.xsl)
            xslSource = StreamSource(input)
            xslTemplate = TransformerFactory.newInstance().newTemplates(xslSource);
            transformer = xslTemplate.newTransformer()

            output = ByteArrayOutputStream()
            result = StreamResult(output)

            source = StreamSource(FileInputStream(self.sourceXml))
            transformer.transform(source, result)

            f = open(self.targetXml, 'w')
            f.write(output.toString())

            return True
        except:
            print ("Something went wrong when trying to transform the XML.  Please be sure jython is properly installed and configured.")
            return False
Ejemplo n.º 42
0
 def __getContent(self, oid):
     slash = oid.rfind("/")
     pid = os.path.splitext(oid[slash+1:])[0] + ".htm"
     payload = Services.storage.getObject(oid).getPayload(pid)
     tidy = Tidy()
     tidy.setIndentAttributes(False)
     tidy.setIndentContent(False)
     tidy.setPrintBodyOnly(True)
     tidy.setSmartIndent(False)
     tidy.setWraplen(0)
     tidy.setXHTML(False)
     tidy.setNumEntities(True)
     out = ByteArrayOutputStream()
     try:
         doc = tidy.parseDOM(payload.getInputStream(), out)
         content = out.toString("UTF-8")
         content = self.__processMedia(oid, doc, content)
         #print "[\n%s\n]" % content
     except Exception, e:
         print " * blog.py: Failed to get content: %s" % e.getMessage()
Ejemplo n.º 43
0
    def getSourceSample(self, id, limit):
        # Get source payload
        object = self.services.getStorage().getObject(id)
        if object is not None:
            payload = object.getPayload(object.getSourceId())

        # Read to a string
        if payload is not None:
            out = ByteArrayOutputStream()
            IOUtils.copy(payload.open(), out)
            payload.close()
            string = out.toString("UTF-8")

        # Return response
        if string is not None:
            if (len(string)) > limit:
                return  string[0:limit] + "..."
            else:
                return  string
        else:
            return ""
Ejemplo n.º 44
0
    def getSourceSample(self, id, limit):
        # Get source payload
        object = self.services.getStorage().getObject(id)
        if object is not None:
            payload = object.getPayload(object.getSourceId())

        # Read to a string
        if payload is not None:
            out = ByteArrayOutputStream()
            IOUtils.copy(payload.open(), out)
            payload.close()
            string = out.toString("UTF-8")

        # Return response
        if string is not None:
            if (len(string)) > limit:
                return string[0:limit] + "..."
            else:
                return string
        else:
            return ""
Ejemplo n.º 45
0
 def alt_handle(self):
     try:
         raw_xml = self.rfile.readline().strip()
         marc_xmlfile = NamedTemporaryFile(delete=False)
         marc_xmlfile.write(raw_xml)
         marc_xmlfile.close()
         base_uri =  INFO.get('base_uri','http://catalog/')
         args = [INFO.get('saxon_xqy'),
                 'marcxmluri={}'.format(
                 os.path.normpath(marc_xmlfile.name).replace("\\", "/")),
                 'baseuri={}'.format(INFO.get('base_uri',
                                     'http://catalog/')),
                 'serialization=rdfxml']
         query = saxon.Query()
         output_stream = ByteArrayOutputStream()
         System.setOut(PrintStream(output_stream))
         query.main(args)
         self.wfile.write(output_stream.toString().encode('ascii',
                                                      errors='ignore'))
         os.remove(marc_xmlfile.name)
     except:
         self.wfile.write("Error processing MARC XML:\n\t{}".format(sys.exc_info()[0]))
Ejemplo n.º 46
0
    def getContent(self, oid, metadata):
        # Get the object
        object = Services.getStorage().getObject(oid)
        if object is None:
            return ""

        # Get the preview/source payload
        pid = metadata.getFirst("preview")
        if pid is None:
            pid = object.getSourceId()
        if pid is None:
            return ""
        payload = object.getPayload(object.getSourceId())
        if payload is None:
            return ""

        # Stream the content out to string
        out = ByteArrayOutputStream()
        IOUtils.copy(payload.open(), out)
        payload.close()
        string = out.toString("UTF-8")

        return "<pre>" + StringEscapeUtils.escapeHtml(string) + "</pre>"
Ejemplo n.º 47
0
class VTLKernel(Kernel):
    implementation = 'VTL Engine'
    implementation_version = '${python.package.version}'
    language = 'VTL'
    language_version = '2.1'
    language_info = {
        'name': 'VTL',
        'mimetype': 'text/x-vtl',
        'file_extension': '.vtl',
    }
    banner = "${project.description}"
    queryPattern = re.compile(r"^\s*\?\s*(\S+)\s*$")


    def __init__(self, *args, **kwargs):
        super(VTLKernel, self).__init__(*args, **kwargs)
        startJVM()
        from java.lang import System
        from java.io import ByteArrayOutputStream
        from java.io import PrintStream
        self.baos = ByteArrayOutputStream()
        ps = PrintStream(self.baos)
        System.setOut(ps)
        System.setErr(ps)
        it = JPackage('it')
        self.VTLSession = it.bancaditalia.oss.vtl.config.ConfigurationManager.getDefault().createSession()

   
    def sendLog(self):
        self.send_response(self.iopub_socket, 'stream', {
            'name':'Log', 
            'text':str(self.baos.toString())
        })
        self.baos.reset()
            

    def sendData(self, alias, value):
        if isinstance(value, JPackage('it').bancaditalia.oss.vtl.model.data.DataSet):
            html = convertDataSet(value)
        else:
            html = convertScalar(alias, value)
        
        self.send_response(self.iopub_socket, 'display_data', {
            'data': { 
                'text/html': html 
            }, 
            'metadata': {},
            'transient': {}
        })
    
    
    def do_execute(self, code, silent, store_history=True, user_expressions=None, allow_stdin=False):
        from java.lang import Exception
        matcher = self.queryPattern.fullmatch(code)
        try:
            user_expressions = {}
            if matcher is not None:
                name = matcher.group(1)
                self.sendData(name, self.VTLSession.resolve(name))
                self.sendLog()
            else:
                statements = self.VTLSession.addStatements(code).getWorkspace().getRules()
                self.sendLog()
                self.VTLSession.compile()
                self.sendLog()
                for statement in statements:
                    name = statement.getId()
                    self.sendData(name, self.VTLSession.resolve(name))
                self.sendLog()
                user_expressions = { str(statement.getId()): str(statement.getExpression().toString()) for statement in statements }

            response = {
                'status': 'ok',
                'execution_count': self.execution_count,
                'user_expressions': user_expressions
            }
        except Exception as ex:
            ex.printStackTrace()
            self.sendLog()

            traceback = [str(tr.toString()) for tr in ex.getStackTrace()]
            while ex.getCause() != None:
                ex = ex.getCause()
                traceback.append("Caused by " + str(ex.getClass().getName()) + ": " + str(ex.getMessage()))
                traceback.append([str(tr.toString()) for tr in ex.getStackTrace()])

            response = {
               'status' : 'error',
               'ename' : str(ex.getClass().getName()),
               'evalue' : str(ex.getMessage()),
               'traceback' : traceback 
            }
                
        return response
    
    def do_shutdown(self, restart):
        if restart:
            if not jpype.isJVMStarted():
                startJVM()
            self.VTLSession = JPackage('it').bancaditalia.oss.vtl.config.ConfigurationManager.getDefault().createSession()
        else:
            jpype.shutdownJVM()
Ejemplo n.º 48
0
    def __createEpub(self):
        title = self.__manifest.getString(None, "title")

        self.vc("response").setHeader(
            "Content-Disposition",
            "attachment; filename=%s.epub" % urllib.quote(title))
        out = self.vc("response").getOutputStream("application/epub+zip")
        zipOutputStream = ZipOutputStream(out)

        #save mimetype... and the rest of standard files in epub
        zipOutputStream.putNextEntry(ZipEntry("mimetype"))
        epubMimetypeStream = self.__getResourceAsStream("/epub/mimetype")
        IOUtils.copy(epubMimetypeStream, zipOutputStream)
        zipOutputStream.closeEntry()

        zipOutputStream.putNextEntry(ZipEntry("META-INF/container.xml"))
        epubContainerStream = self.__getResourceAsStream("/epub/container.xml")
        IOUtils.copy(epubContainerStream, zipOutputStream)
        zipOutputStream.closeEntry()

        zipOutputStream.putNextEntry(ZipEntry("OEBPS/epub.css"))
        epubcss = self.__getResourceAsStream("/epub/epub.css")
        IOUtils.copy(epubcss, zipOutputStream)
        zipOutputStream.closeEntry()

        #### Creating toc.ncx ####
        tocXml = ElementTree.Element(
            "ncx", {
                "version": "2005-1",
                "xml:lang": "en",
                "xmlns": "http://www.daisy.org/z3986/2005/ncx/"
            })
        headNode = ElementTree.Element("head")
        tocXml.append(headNode)

        headNode.append(
            ElementTree.Element("meta", {
                "name": "dtb:uid",
                "content": "1"
            }))
        headNode.append(
            ElementTree.Element("meta", {
                "name": "dtb:depth",
                "content": "1"
            }))
        headNode.append(
            ElementTree.Element("meta", {
                "name": "dtb:totalPageCount",
                "content": "1"
            }))
        headNode.append(
            ElementTree.Element("meta", {
                "name": "dtb:maxPageNumber",
                "content": "1"
            }))
        headNode.append(
            ElementTree.Element("meta", {
                "name": "dtb:generator",
                "content": "ICE v2"
            }))

        #docTitle
        docTitle = ElementTree.Element("docTitle")
        textNode = ElementTree.Element("text")
        textNode.text = title
        docTitle.append(textNode)
        tocXml.append(docTitle)

        #docAuthor
        docAuthor = ElementTree.Element("docAuthor")
        textNode = ElementTree.Element("text")
        textNode.text = "ICE v2"
        docAuthor.append(textNode)
        tocXml.append(docAuthor)

        #navMap
        navMap = ElementTree.Element("navMap")
        tocXml.append(navMap)

        #### Creating content.opf ####
        contentXml = ElementTree.Element(
            "package", {
                "version": "2.0",
                "xmlns": "http://www.idpf.org/2007/opf",
                "unique-identifier": "BookId"
            })

        metadataNode = ElementTree.Element(
            "metadata", {
                "xmlns:dc": "http://purl.org/dc/elements/1.1/",
                "xmlns:opf": "http://www.idpf.org/2007/opf"
            })
        contentXml.append(metadataNode)

        #metadata information
        metadata = ElementTree.Element("dc:title")
        metadata.text = title
        metadataNode.append(metadata)

        metadata = ElementTree.Element("dc:language")
        metadata.text = "en-AU"
        metadataNode.append(metadata)

        metadata = ElementTree.Element("dc:creator", {"opf:role": "aut"})
        metadata.text = "ICE"
        metadataNode.append(metadata)

        metadata = ElementTree.Element("dc:publisher")
        metadata.text = "University of Southern Queensland"
        metadataNode.append(metadata)

        metadata = ElementTree.Element("dc:identifier", {"id": "BookId"})
        metadata.text = title
        metadataNode.append(metadata)

        #manifest
        manifest = ElementTree.Element("manifest")
        contentXml.append(manifest)

        spine = ElementTree.Element("spine", {"toc": "ncx"})
        contentXml.append(spine)

        item = ElementTree.Element("item", {
            "id": "ncx",
            "href": "toc.ncx",
            "media-type": "text/xml"
        })
        manifest.append(item)
        css = ElementTree.Element("item", {
            "id": "style",
            "href": "epub.css",
            "media-type": "text/css"
        })
        manifest.append(css)

        count = 1
        for itemHash in self.__orderedItem:
            id, title, htmlFileName, payloadDict, isImage = self.__itemRefDict[
                itemHash]

            for payloadId in payloadDict:
                payload, payloadType = payloadDict[payloadId]
                if isinstance(payload, Payload):
                    payloadId = payloadId.lower()
                    zipEntryId = payloadId.replace(" ", "_").replace("\\", "/")
                    if payloadType == "application/xhtml+xml":
                        zipOutputStream.putNextEntry(
                            ZipEntry("OEBPS/%s" % zipEntryId))
                        ##process the html....
                        saxReader = SAXReader(False)
                        try:
                            saxDoc = saxReader.read(payload.open())
                            payload.close()
                            #                            ## remove class or style nodes
                            #                            classOrStyleNodes = saxDoc.selectNodes("//@class | //@style ")
                            #                            for classOrStyleNode in classOrStyleNodes:
                            #                                node = classOrStyleNode
                            #                                if classOrStyleNode.getParent():
                            #                                    node = classOrStyleNode.getParent()
                            #                                if node.getQualifiedName() == "img":
                            #                                    attr = node.attribute(QName("class"))
                            #                                    attr = node.attribute(QName("class"))
                            #                                    if attr:
                            #                                        node.remove(attr)
                            #                                    attr = node.attribute(QName("style"))
                            #                                    if attr:
                            #                                        node.remove(attr)

                            ## remove name in a tags
                            ahrefs = saxDoc.selectNodes(
                                "//*[local-name()='a' and @name!='']")
                            for a in ahrefs:
                                attr = a.attribute(QName("name"))
                                if attr:
                                    a.remove(attr)

                            ## fix images src name.... replace space with underscore and all lower case
                            imgs = saxDoc.selectNodes(
                                "//*[local-name()='img' and contains(@src, '_files')]"
                            )
                            for img in imgs:
                                srcAttr = img.attribute(QName("src"))
                                if srcAttr:
                                    src = srcAttr.getValue()
                                    #hash the sourcename
                                    filepath, filename = os.path.split(src)
                                    filename, ext = os.path.splitext(filename)
                                    filename = hashlib.md5(
                                        filename).hexdigest()
                                    src = os.path.join(
                                        filepath.lower().replace(" ", "_"),
                                        "node-%s%s" % (filename, ext))
                                    img.addAttribute(QName("src"),
                                                     src.replace(" ", "_"))

                            bodyNode = saxDoc.selectSingleNode(
                                "//*[local-name()='div' and @class='body']")
                            bodyNode.setName("div")

                            out = ByteArrayOutputStream()
                            format = OutputFormat.createPrettyPrint()
                            format.setSuppressDeclaration(True)
                            writer = XMLWriter(out, format)
                            writer.write(bodyNode)
                            writer.flush()
                            contentStr = out.toString("UTF-8")

                            htmlString = """<?xml version="1.0" encoding="UTF-8"?>
                                            <html xmlns="http://www.w3.org/1999/xhtml"><head><title>%s</title>
                                            <link rel="stylesheet" href="epub.css"/>
                                            </head><body>%s</body></html>"""
                            htmlString = htmlString % (title, contentStr)
                            self.__copyString(htmlString, zipOutputStream)
                            includeFile = False
                        except:
                            traceback.print_exc()
                    else:
                        #images....
                        zipOutputStream.putNextEntry(
                            ZipEntry("OEBPS/%s" % zipEntryId))
                        IOUtils.copy(payload.open(), zipOutputStream)
                        payload.close()
                        zipOutputStream.closeEntry()
                else:
                    zipOutputStream.putNextEntry(
                        ZipEntry("OEBPS/%s" % zipEntryId))
                    IOUtils.copy(payload, zipOutputStream)
                    zipOutputStream.closeEntry()

                itemNode = ElementTree.Element("item", {
                    "media-type": payloadType,
                    "href": zipEntryId
                })
                if payloadId == htmlFileName.lower():
                    itemNode.set("id", itemHash)
                else:
                    itemNode.set("id", payloadId.replace("/", "_"))
                manifest.append(itemNode)

            if not isImage:
                navPoint = ElementTree.Element(
                    "navPoint", {
                        "class": "chapter",
                        "id": "%s" % itemHash,
                        "playOrder": "%s" % count
                    })
            else:
                navPoint = ElementTree.Element(
                    "navPoint", {
                        "class": "chapter",
                        "id": "%s" % htmlFileName,
                        "playOrder": "%s" % count
                    })
            navMap.append(navPoint)
            navLabel = ElementTree.Element("navLabel")
            navPoint.append(navLabel)
            textNode = ElementTree.Element("text")
            textNode.text = title
            navLabel.append(textNode)
            content = ElementTree.Element("content")
            navPoint.append(content)
            content.set("src", htmlFileName)
            count += 1

            itemRefNode = ElementTree.Element("itemref")
            spine.append(itemRefNode)
            itemRefNode.set("idref", itemHash)

        #saving content.opf...
        zipOutputStream.putNextEntry(ZipEntry("OEBPS/content.opf"))
        self.__copyString(ElementTree.tostring(contentXml), zipOutputStream)
        zipOutputStream.closeEntry()

        #saving toc.ncx
        zipOutputStream.putNextEntry(ZipEntry("OEBPS/toc.ncx"))
        self.__copyString(ElementTree.tostring(tocXml), zipOutputStream)
        zipOutputStream.closeEntry()

        zipOutputStream.close()