Package org.exist.xquery.value

Examples of org.exist.xquery.value.Sequence


      throw new XPathException(this, ErrorCodes.XPST0017, "function id requires one argument");
        }
        if(contextItem != null)
      {contextSequence = contextItem.toSequence();}

        Sequence result;
        boolean processInMem = false;
        final Expression arg = getArgument(0);
    final Sequence idval = arg.eval(contextSequence);
   
    if(idval.isEmpty() || (getArgumentCount() == 1 && contextSequence != null && contextSequence.isEmpty()))
            {result = Sequence.EMPTY_SEQUENCE;}
        else {
        String nextId;
        DocumentSet docs = null;
            if (getArgumentCount() == 2) {
                // second argument should be a node, whose owner document will be
                // searched for the id
                final Sequence nodes = getArgument(1).eval(contextSequence);
                if (nodes.isEmpty()) {
                    logger.error(ErrorCodes.XPDY0002 + " No node or context item for fn:id");
                    throw new XPathException(this, ErrorCodes.XPDY0002, "XPDY0002: no node or context item for fn:id", nodes);
                }
                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;}
View Full Code Here


                {context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT SEQUENCE", contextSequence);}
            if (contextItem != null)
                {context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT ITEM", contextItem.toSequence());}
        }          
       
        Sequence result;
        final Sequence seq = getArguments(contextSequence, contextItem)[0];
    if (seq.isEmpty())
            {result = Sequence.EMPTY_SEQUENCE;}
        else {
                final Sequence tmp = new ValueSequence();
                Item item;
                for(final SequenceIterator i = seq.iterate(); i.hasNext(); ) {
                    item = i.nextItem();
                    tmp.add(item);
                }
                result = new ValueSequence();
                for (int i = seq.getItemCount() - 1; i >= 0; i--) {
                    result.add(tmp.itemAt(i));
                }
        }

        if (context.getProfiler().isEnabled())
            {context.getProfiler().end(this, "", result);}
View Full Code Here

                {context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT SEQUENCE", contextSequence);}
            if (contextItem != null)
                {context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT ITEM", contextItem.toSequence());}
        }
       
        Sequence seq;
        Sequence result;
       
        if (contextItem != null)
          {contextSequence = contextItem.toSequence();}
        /*
 
View Full Code Here

            if (contextItem != null)
                {context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT ITEM", contextItem.toSequence());}
        }
       
       
        Sequence seq;
        Sequence result;
        Item item;
        if (contextItem != null)
          {contextSequence = contextItem.toSequence();}
    if (contextSequence == null || contextSequence.isEmpty())
      {result = Sequence.EMPTY_SEQUENCE;}           
       
    //If we have one argumment, we take it into account
    if (getSignature().getArgumentCount() > 0)
      {seq = getArgument(0).eval(contextSequence, contextItem);}
    //Otherwise, we take the context sequence and we iterate over it
    else
      {seq = contextSequence;}
   
    if (seq == null)
      {throw new XPathException(this, ErrorCodes.XPDY0002, "Undefined context item");}

        if (seq.isPersistentSet())
            {result = new ExtArrayNodeSet(seq.getItemCount());}
        else
            {result = new ValueSequence(seq.getItemCount());}

    for (final SequenceIterator i = seq.iterate(); i.hasNext(); ) {
      item = i.nextItem();
            if (!Type.subTypeOf(item.getType(), Type.NODE))
                {throw new XPathException(this, ErrorCodes.XPTY0004,  "Item is not a node; got '" + item + "'", seq);}
            final Sequence s = item.toSequence();

            if (s.isPersistentSet()) {
                final NodeProxy p = s.toNodeSet().get(0);
                result.add(new NodeProxy(p.getDocument()));
            } else {
                if (seq.hasOne() && item.getType() == Type.ATTRIBUTE) {
                  result.add(item);
                } else {
View Full Code Here

                {context.getProfiler().message(this, Profiler.START_SEQUENCES,
                "CONTEXT ITEM", contextItem.toSequence());}
        }
        if (contextItem != null)
            {contextSequence = contextItem.toSequence();}
        Sequence result;
        if (getArgumentCount() == 0)
            {result = IntegerValue.ZERO;}
        else
            {result = new IntegerValue(getArgument(0).eval(contextSequence).getItemCount());}
        if (context.getProfiler().isEnabled())
View Full Code Here

        } else {
            Item current;
            String arg;
            NodeSet nodes;
            result = new ExtArrayNodeSet();
            Sequence temp;
            for (final SequenceIterator i = contextSequence.iterate(); i.hasNext();) {
                current = i.nextItem();
                arg = searchTerm.eval(current.toSequence()).getStringValue();
                nodes = path == null ? contextSequence.toNodeSet() :
                    path.eval(current.toSequence()).toNodeSet();
View Full Code Here

                {context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT SEQUENCE", contextSequence);}
            if (contextItem != null)
                {context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT ITEM", contextItem.toSequence());}
        }              
       
        Sequence result;
    IntegerValue precision = null;
    final Sequence seq = getArgument(0).eval(contextSequence, contextItem);
    if (seq.isEmpty())
      {result = Sequence.EMPTY_SEQUENCE;}
        else {   
            if (contextItem != null)
          {contextSequence = contextItem.toSequence();}
           
        if (getSignature().getArgumentCount() > 1) {
          precision = (IntegerValue) getArgument(1).eval(contextSequence, contextItem).itemAt(0).convertTo(Type.INTEGER);
        }
           
          final Item item = seq.itemAt(0);
          NumericValue value;
          if (item instanceof NumericValue) {
        value = (NumericValue) item;
      } else {
        value = (NumericValue) item.convertTo(Type.NUMBER);
View Full Code Here

                "DEPENDENCIES", Dependency.getDependenciesName(this.getDependencies()));
            if (contextSequence != null)
                {context.getProfiler().message(this, Profiler.START_SEQUENCES,
                    "CONTEXT SEQUENCE", contextSequence);}
        }
        Sequence result;
        if (args[0].isEmpty()) {
            result = StringValue.EMPTY_STRING;
        } else {
            final StringBuilder buf = new StringBuilder();
            for (final SequenceIterator i = args[0].iterate(); i.hasNext(); ) {
View Full Code Here

      } catch (final XPathException e) {
            throw new XPathException(this, ErrorCodes.FORG0002, "invalid argument to fn:resolve-uri(): " + e.getMessage(), null, e);
      }
    }
   
    Sequence result;

    final Sequence seq = getArgument(0).eval(contextSequence);
    if (seq.isEmpty()) {     
      result = Sequence.EMPTY_SEQUENCE;
    } else {
      AnyURIValue relative;
      try {
        final Item item = seq.itemAt(0).convertTo(Type.ANY_URI);
        relative = (AnyURIValue)item;
      } catch (final XPathException e) {       
            throw new XPathException(this, ErrorCodes.FORG0002, "invalid argument to fn:resolve-uri(): " + e.getMessage(), seq, e);
      }     
      URI relativeURI;
View Full Code Here

        }
          
    if(contextItem != null)
      {contextSequence = contextItem.toSequence();}
   
        Sequence result;
        final Expression arg = getArgument(0);   
    // case 1: if the argument expression returns a node set,
    // subtract the set from the context node set and return
    // the remaining set
    if (Type.subTypeOf(arg.returnsType(), Type.NODE) &&
            (contextSequence == null || contextSequence.isPersistentSet()) &&
            !Dependency.dependsOn(arg, Dependency.CONTEXT_ITEM)) {
      if (contextSequence == null || contextSequence.isEmpty()) {
        // TODO: special treatment if the context sequence is empty:
        // within a predicate, we just return the empty sequence
        // otherwise evaluate the argument and return a boolean result         
//        if (inPredicate && !inWhereClause)
//                    result = Sequence.EMPTY_SEQUENCE;
//        else
                    result = evalBoolean(contextSequence, contextItem, arg);
      } else {
          result = contextSequence.toNodeSet().copy();

          if (inPredicate) {
            for (final SequenceIterator i = result.iterate(); i.hasNext();) {
              final NodeProxy item = (NodeProxy) i.nextItem();
//              item.addContextNode(getExpressionId(), item);
              if (contextId != Expression.NO_CONTEXT_ID)
                            {item.addContextNode(contextId, item);}
              else
                {item.addContextNode(getExpressionId(), item);}
            }
          }

          // evaluate argument expression
          final Sequence argSeq = arg.eval(result);
          NodeSet argSet;
          if (contextId != Expression.NO_CONTEXT_ID) {
            argSet = argSeq.toNodeSet().getContextNodes(contextId);
          } else {
            argSet = argSeq.toNodeSet().getContextNodes(getExpressionId());
          }
          result = ((NodeSet)result).except(argSet);
            }
     
    // case 2: simply invert the boolean value
View Full Code Here

TOP

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

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.