Package org.exist.xquery.value

Examples of org.exist.xquery.value.NodeValue


                Collection target = (path==null) ? root : XMLDBAbstractCollectionManipulator.createCollection(root, path);
               
                  MimeType mime = MimeTable.getInstance().getContentTypeFor(name);
                 
                try{
                  NodeValue content = ModuleUtils.streamToXML(context, new ByteArrayInputStream(baos.toByteArray()));
                  resource = target.createResource(name, "XMLResource");
                  ContentHandler handler = ((XMLResource)resource).setContentAsSAX();
                  handler.startDocument();
                  content.toSAX(context.getBroker(), handler, null);
                  handler.endDocument();
                } catch(SAXException e){
                  resource = target.createResource(name, "BinaryResource");
                  resource.setContent(baos.toByteArray());
                    }
View Full Code Here


                    "CONTEXT ITEM", contextItem.toSequence());}
        }
        final Sequence seq = getArgument(0).eval(contextSequence, contextItem);
        Sequence result = Sequence.EMPTY_SEQUENCE;
        if (!seq.isEmpty()) {
            final NodeValue value = (NodeValue) seq.itemAt(0);
            if (value.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                final NodeProxy node = (NodeProxy) value;
                //Returns the empty sequence if the node is not a document node.
                if (node.isDocument()) {
                    final XmldbURI path = node.getDocument().getURI();
                    result = new AnyURIValue(path);
View Full Code Here

                    prefix = "";
                }

                String uri = null;

                final NodeValue node = (NodeValue) args[1].itemAt(0);
                if (node.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                    NodeProxy proxy = (NodeProxy) node;
                    final NodeSet ancestors = proxy.getAncestors(contextId, true);
                    for (final Iterator<NodeProxy> i = ancestors.iterator(); i.hasNext();) {
                        proxy = i.next();
                        final ElementImpl e = (ElementImpl) proxy.getNode();
View Full Code Here

                }
                if (!Type.subTypeOf(nodes.itemAt(0).getType(), Type.NODE)) {
                    logger.error(ErrorCodes.XPTY0004 + " fn:id() argument is not a node");
                  throw new XPathException(this, ErrorCodes.XPTY0004, "XPTY0004: fn:id() argument is not a node", nodes);
                }
                NodeValue node = (NodeValue)nodes.itemAt(0);
                if (node.getImplementationType() == NodeValue.IN_MEMORY_NODE)
                  //TODO : how to enforce this ?
                  //If $node, or the context item if the second argument is omitted,
                  //is a node in a tree whose root is not a document node [err:FODC0001] is raised                    processInMem = true;
                    {processInMem = true;}
                else {
View Full Code Here

                    return false;
                }
            }
            if (a.getType() != b.getType())
                {return false;}
            NodeValue nva = (NodeValue) a, nvb = (NodeValue) b;
            if (nva == nvb) {return true;}
            try {
                //Don't use this shortcut for in-memory nodes
                //since the symbol table is ignored.
                if (nva.getImplementationType() != NodeValue.IN_MEMORY_NODE &&
                    nva.equals(nvb))
                    {return true;} // shortcut!
            } catch (final XPathException e) {
                // apparently incompatible values, do manual comparison
            }
            Node na, nb;
            switch(a.getType()) {
            case Type.DOCUMENT:
                // NodeValue.getNode() doesn't seem to work for document nodes
                na = nva instanceof Node ? (Node) nva : ((NodeProxy) nva).getDocument();
                nb = nvb instanceof Node ? (Node) nvb : ((NodeProxy) nvb).getDocument();
                return compareContents(na, nb);
            case Type.ELEMENT:
                na = nva.getNode();
                nb = nvb.getNode();
                return compareElements(na, nb);
            case Type.ATTRIBUTE:
                na = nva.getNode();
                nb = nvb.getNode();
                return compareNames(na, nb)
                    && safeEquals(na.getNodeValue(), nb.getNodeValue());
            case Type.PROCESSING_INSTRUCTION:
            case Type.NAMESPACE:
                na = nva.getNode(); nb = nvb.getNode();
                return safeEquals(na.getNodeName(), nb.getNodeName()) &&
                    safeEquals(nva.getStringValue(), nvb.getStringValue());
            case Type.TEXT:
            case Type.COMMENT:
                return safeEquals(nva.getStringValue(), nvb.getStringValue());
            default:
                throw new RuntimeException("unexpected item type " + Type.getTypeName(a.getType()));
            }
        } catch (final XPathException e) {
            logger.error(e.getMessage());
View Full Code Here

            for (int i = --start; i < start + howmany; i++, j++) {
                item = seq.itemAt(i);
                if (item == null)
                    {continue;}
                if (item.getType() == Type.ELEMENT) {
                    final NodeValue node = (NodeValue) item;
                    xml[j] = serializer.serialize(node);
                } else {
                    xml[j] = item.getStringValue();
                }
            }
View Full Code Here

        Integer hits;
        try {
      for (final SequenceIterator i = results.iterate(); i.hasNext(); ) {
          final Item item = i.nextItem();
          if(Type.subTypeOf(item.getType(), Type.NODE)) {
              final NodeValue node = (NodeValue)item;
              if(node.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                  final NodeProxy p = (NodeProxy)node;
                  if ((documents = (TreeMap) collections.get(p.getDocument().getCollection().getURI())) == null) {
                      documents = new TreeMap();
                      collections.put(p.getDocument().getCollection().getURI(), documents);
                  }
View Full Code Here

            String targetSRS = null;
            if (isCalledAs("transform")) {
                if (args[0].isEmpty())
                    result = Sequence.EMPTY_SEQUENCE;
                else {
                    NodeValue geometryNode = (NodeValue) args[0].itemAt(0);
                    //Try to get the geometry from the index
                    String sourceSRS = null;
                    if (geometryNode.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                        sourceSRS = indexWorker.getGeometricPropertyForNode(context, (NodeProxy)geometryNode, "SRS_NAME").getStringValue();
                        geometry = indexWorker.getGeometryForNode(context.getBroker(), (NodeProxy)geometryNode, false);               
                        hasUsedIndex = true;
                    }
                    //Otherwise, build it
                    if (geometry == null) {
                        sourceSRS = ((Element)geometryNode.getNode()).getAttribute("srsName").trim();
                        geometry = indexWorker.streamNodeToGeometry(context, geometryNode);
                    }
                    if (geometry == null) {
                        logger.error("Unable to get a geometry from the node");
                        throw new XPathException("Unable to get a geometry from the node");
                    }
                    targetSRS = args[1].itemAt(0).getStringValue().trim();
                    geometry = indexWorker.transformGeometry(geometry, sourceSRS, targetSRS);
                }
            } else if (isCalledAs("WKTtoGML")) {
                if (args[0].isEmpty())
                    result = Sequence.EMPTY_SEQUENCE;
                else {
                    String wkt = args[0].itemAt(0).getStringValue();
                    WKTReader wktReader = new WKTReader();
                    try {
                        geometry = wktReader.read(wkt);
                    } catch (ParseException e) {
                        logger.error(e.getMessage());
                        throw new XPathException(e);
                    }
                    if (geometry == null) {
                        logger.error("Unable to get a geometry from the node");
                        throw new XPathException("Unable to get a geometry from the node");
                    }
                    targetSRS = args[1].itemAt(0).getStringValue().trim();
                }
            } else if (isCalledAs("buffer")) {
                if (args[0].isEmpty())
                    result = Sequence.EMPTY_SEQUENCE;
                else {
                    NodeValue geometryNode = (NodeValue) args[0].itemAt(0);
                    //Try to get the geometry from the index
                    if (geometryNode.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                        targetSRS = indexWorker.getGeometricPropertyForNode(context, (NodeProxy)geometryNode, "SRS_NAME").getStringValue();
                        geometry = indexWorker.getGeometryForNode(context.getBroker(), (NodeProxy)geometryNode, false);
                        hasUsedIndex = true;
                    }
                    //Otherwise, build it
                    if (geometry == null) {
                        targetSRS =  ((Element)geometryNode.getNode()).getAttribute("srsName").trim();
                        geometry = indexWorker.streamNodeToGeometry(context, geometryNode);
                    }
                    if (geometry == null) {
                        logger.error("Unable to get a geometry from the node");
                        throw new XPathException("Unable to get a geometry from the node");
                    }

                    double distance = ((DoubleValue)args[1].itemAt(0)).getDouble();
                    int quadrantSegments = 8;
                    int endCapStyle = BufferOp.CAP_ROUND;
                    if (getArgumentCount() > 2 && Type.subTypeOf(args[2].itemAt(0).getType(), Type.INTEGER))
                        quadrantSegments = ((IntegerValue)args[2].itemAt(0)).getInt();
                    if (getArgumentCount() > 3 && Type.subTypeOf(args[3].itemAt(0).getType(), Type.INTEGER))
                        endCapStyle = ((IntegerValue)args[3].itemAt(0)).getInt();
                    switch (endCapStyle) {
                        case BufferOp.CAP_ROUND:
                        case BufferOp.CAP_BUTT:
                        case BufferOp.CAP_SQUARE:
                            //OK
                            break;
                        default:
                        {
                            logger.error("Invalid line end style");
                            throw new XPathException("Invalid line end style");
                        }
                    }
                    geometry = geometry.buffer(distance, quadrantSegments, endCapStyle);
                }
            } else if (isCalledAs("getBbox")) {
                if (args[0].isEmpty())
                    result = Sequence.EMPTY_SEQUENCE;
                else {
                    NodeValue geometryNode = (NodeValue) args[0].itemAt(0);
                    //Try to get the geometry from the index
                    if (geometryNode.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                        targetSRS = indexWorker.getGeometricPropertyForNode(context, (NodeProxy)geometryNode, "SRS_NAME").getStringValue();
                        geometry = indexWorker.getGeometryForNode(context.getBroker(), (NodeProxy)geometryNode, false);
                        hasUsedIndex = true;
                    }
                    //Otherwise, build it
                    if (geometry == null) {
                        targetSRS = ((Element)geometryNode.getNode()).getAttribute("srsName").trim();
                        geometry = indexWorker.streamNodeToGeometry(context, geometryNode);
                    }
                    if (geometry == null) {
                        logger.error("Unable to get a geometry from the node");
                        throw new XPathException("Unable to get a geometry from the node");
                    }
                    geometry = geometry.getEnvelope();
                }
            } else if (isCalledAs("convexHull")) {
                if (args[0].isEmpty())
                    result = Sequence.EMPTY_SEQUENCE;
                else {
                    NodeValue geometryNode = (NodeValue) args[0].itemAt(0);
                    //Try to get the geometry from the index
                    if (geometryNode.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                        targetSRS = indexWorker.getGeometricPropertyForNode(context, (NodeProxy)geometryNode, "SRS_NAME").getStringValue();
                        geometry = indexWorker.getGeometryForNode(context.getBroker(), (NodeProxy)geometryNode, false);               
                        hasUsedIndex = true;
                    }
                    //Otherwise, build it
                    if (geometry == null) {
                        targetSRS = ((Element)geometryNode.getNode()).getAttribute("srsName").trim();
                        geometry = indexWorker.streamNodeToGeometry(context, geometryNode);
                    }
                    if (geometry == null) {
                        logger.error("Unable to get a geometry from the node");
                        throw new XPathException("Unable to get a geometry from the node");
                    }
                    geometry = geometry.convexHull();
                }
            } else if (isCalledAs("boundary")) {
                if (args[0].isEmpty())
                    result = Sequence.EMPTY_SEQUENCE;
                else {
                    NodeValue geometryNode = (NodeValue) args[0].itemAt(0);
                    //Try to get the geometry from the index
                    if (geometryNode.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                        targetSRS = indexWorker.getGeometricPropertyForNode(context, (NodeProxy)geometryNode, "SRS_NAME").getStringValue();
                        geometry = indexWorker.getGeometryForNode(context.getBroker(), (NodeProxy)geometryNode, false);
                        hasUsedIndex = true;
                    }
                    //Otherwise, build it
                    if (geometry == null) {
                        targetSRS = ((Element)geometryNode.getNode()).getAttribute("srsName").trim();
                        geometry = indexWorker.streamNodeToGeometry(context, geometryNode);
                    }
                    if (geometry == null) {
                        logger.error("Unable to get a geometry from the node");
                        throw new XPathException("Unable to get a geometry from the node");
                    }
                    geometry = geometry.getBoundary();
                }
            } else {
                Geometry geometry1 = null;
                Geometry geometry2 = null;
                if (args[0].isEmpty() && args[1].isEmpty())
                    result = Sequence.EMPTY_SEQUENCE;
                else if (!args[0].isEmpty() && args[1].isEmpty())
                    result = args[0].itemAt(0).toSequence();
                else if (args[0].isEmpty() && !args[1].isEmpty())
                    result = args[1].itemAt(0).toSequence();
                else {
                    NodeValue geometryNode1 = (NodeValue) args[0].itemAt(0);
                    NodeValue geometryNode2 = (NodeValue) args[1].itemAt(0);
                    String srsName1 = null;
                    String srsName2 = null;
                    //Try to get the geometries from the index
                    if (geometryNode1.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                        srsName1 = indexWorker.getGeometricPropertyForNode(context, (NodeProxy)geometryNode1, "SRS_NAME").getStringValue();
                        geometry1 = indexWorker.getGeometryForNode(context.getBroker(), (NodeProxy)geometryNode1, false);
                        hasUsedIndex = true;
                    }
                    if (geometryNode2.getImplementationType() == NodeValue.PERSISTENT_NODE) {
                        srsName2 = indexWorker.getGeometricPropertyForNode(context, (NodeProxy)geometryNode2, "SRS_NAME").getStringValue();
                        geometry2 = indexWorker.getGeometryForNode(context.getBroker(), (NodeProxy)geometryNode2, false);
                        hasUsedIndex = true;
                    }
                    //Otherwise build them
                    if (geometry1 == null) {
                        srsName1 = ((Element)geometryNode1.getNode()).getAttribute("srsName").trim();
                        geometry1 = indexWorker.streamNodeToGeometry(context, geometryNode1);
                    }
                    if (geometry2 == null) {
                        srsName2 = ((Element)geometryNode2.getNode()).getAttribute("srsName").trim();
                        geometry2 = indexWorker.streamNodeToGeometry(context, geometryNode2);
                    }
                    if (geometry1 == null) {
                        logger.error("Unable to get a geometry from the first node");
                        throw new XPathException("Unable to get a geometry from the first node");
View Full Code Here

    @Override
    public Sequence eval(final Sequence[] args, final Sequence contextSequence) throws XPathException {
       
        Sequence bodies = Sequence.EMPTY_SEQUENCE;
        String href = null;
        NodeValue request = null;
       
        switch(getArgumentCount()) {
            case 3:
                bodies = args[2];
            case 2: {
View Full Code Here

            /* callback function */
            FunctionReference ref = (FunctionReference) args[2].itemAt(0);

            Map<String, String> mappings = new HashMap<>();
            if (args[3].hasOne()) {
                NodeValue namespaces = (NodeValue) args[3].itemAt(0);
                parseMappings(namespaces, mappings);
            }

            return streamContent(ce, binary, args[1], ref, mappings, args[4]);

View Full Code Here

TOP

Related Classes of org.exist.xquery.value.NodeValue

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.