All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.xml.xquery.XQSequence Maven / Gradle / Ivy

/*
 * Copyright © 2003, 2004, 2005, 2006, 2007, 2008 Oracle.  All rights reserved.
 */

package javax.xml.xquery;

import javax.xml.xquery.XQItem;

/** 
 * This interface represents a sequence of items as defined in the 
 * XDM. The sequence may be materialized or non-materialized. 

* * The next method is useful to position the * XQSequence over the next item in the sequence. * If the scrollability is XQConstants.SCROLLTYPE_SCROLLABLE, * then the previous method can be called to move backwards. * * In the case of a forward only sequence, the get methods may be only called * once per item. To perform multiple gets on an item, extract the item first * from the sequence using the getItem method and * then operate on the XQItem object. * *

 * 
 *  XQPreparedExpression expr = conn.prepareExpression("for $i ..");
 *  XQSequence result = expr.executeQuery();
 * 
 *  // create the ItemTypes for string and integer
 *  XQItemType strType = conn.createAtomicType(XQItemType.XQBASETYPE_STRING);
 *  XQItemType intType = conn.createAtomicType(XQItemType.XQBASETYPE_INT);
 *
 *  // positioned before the first item
 *  while (result.next())
 *  {
 *    XQItemType type = result.getItemType();
 * 
 *    // If string, then get the string value out
 *    if (type.equals(strType))
 *      String str = result.getAtomicValue();
 *    else if (type.equals(intType))  // if it is an integer..
 *      int intval = result.getInt();
 * 
 *     ...
 *  }
 * 
 * 
* * In a sequence, the cursor may be positioned on an item, after the last item * or before the first item. The getPosition method * returns the current position number. A value of 0 indicates * that it is positioned before the first item, a value of count() + 1 * indicates that it is positioned after the last item, and any other value * indicates that it is positioned on the item at that position.

* For example, a position value of 1 indicates that it is positioned on * the item at position 1.

* * The isOnItem method may be used to find out if the cursor * is positioned on the item. When the cursor is positioned on an item, * the next method call will move the cursor to be on the next item. *

* * See also: Section 12 Serialization, XQuery API for Java * (XQJ) 1.0, which describes some general information applicable * to various XQJ serialization methods. */ public interface XQSequence extends XQItemAccessor { // ------------------------------------------------ // Sequence Iterator operations // ------------------------------------------------ /** * Moves the XQSequence's position to the given item * number in this object. If the item number is positive, the * XQSequence moves to the given item number with * respect to the beginning of the XQSequence.

* The first item is item 1, the second is item 2, and so on.

* If the given item number is negative, the XQSequence * positions itself on an absolute item position with respect to the * end of the sequence. *

* For example, calling the method absolute(-1) * positions the XQSequence on the last item; * calling the method absolute(-2) moves the * XQSequence to the next-to-last item, and so on. * absolute(0) will position the sequence before the first item. *

* An attempt to position the sequence beyond the first/last item * set leaves the current position to be before the first item or * after the last item.

* * Calling this method on an empty sequence * will return false. * * @param itempos the item position to jump to * @return true if the current position is * within the sequence, false otherwise * @exception XQException if (1) the sequence is forward only, or * (2) the sequence is in a closed state */ public boolean absolute(int itempos) throws XQException; /** * Move to the position after the last item. * * @exception XQException if (1) the sequence is forward only, * or (2) the sequence is in a closed state */ public void afterLast() throws XQException; /** * Moves to the position before the first item. * * @exception XQException if (1) the sequence is forward only, * or (2) the sequence is in a closed state */ public void beforeFirst() throws XQException; /** * Closes the sequence and frees all resources associated with this * sequence. * * Closing an XQSequence object also implicitly closes all * XQItem objects obtained from it. * * All methods other than the isClosed * or close method will raise exceptions when invoked * after closing the sequence. * Calling close on an XQSequence object * that is already closed has no effect. * * @exception XQException if there are errors during closing of * the sequence */ public void close() throws XQException; // release resources /** * Checks if the sequence is closed. * * @return true if the sequence is in * a closed state, false otherwise */ public boolean isClosed(); /** * Returns a number indicating the number of items in the sequence. * * @return the number of items in this sequence * @exception XQException if (1) the sequence is forward-only, or (2) * the sequence is closed */ public int count() throws XQException; /** * Gets the current cursor position.

* 0 indicates that the position is before the first item * and count() + 1 indicates position after the last item. * A specific position indicates that the cursor is positioned on * the item at that position. Use the isOnItem * method to verify if the cursor is positioned on the item.

* * Calling this method on an empty sequence * will return 0. * * @return the current cursor position in this sequence * * @exception XQException if (1) the sequence is forward-only, or (2) * the sequence is closed */ public int getPosition() throws XQException; /** * Check if the sequence is positioned on an item or not. * Calling this method on an empty sequence * will return false. * * * @return true if the sequence is currently * positioned on an item, false if sequence * is positioned before the first item, or after the last * item * @exception XQException if the sequence is in a closed state */ public boolean isOnItem() throws XQException; /** * Checks if the sequence is scrollable. * * @return true if the sequence can be scrolled * backward or forward, false otherwise * @exception XQException if the sequence is in a closed state */ public boolean isScrollable() throws XQException; /** * Moves to the first item in the sequence. The method returns * true, if it was able to move to the first item in the sequence * false, otherwise. Calling this method on an empty sequence * will return false. * * @return true if the sequence was positioned * on the first item, false otherwise * @exception XQException if (1) the sequence is forward only, * or (2) the sequence is in a closed state */ public boolean first() throws XQException; /** * Get the current item as an immutable XQItem object. * In case of an XQResultSequence, the item is an * XQResultItem. * In the case of forward only sequences, this method or any other * get or write method may only be called once on the curent item.

* * The XQItem object is dependent on the sequence from which * it was created and is only valid for the duration of XQSequence * lifetime. Thus, the XQSequence is closed, this XQItem * object will be implicitly closed and it can no longer be used. * * @return an XQItem object * @exception XQException if (1) there are errors retrieving the item, * or (2) in the case of a forward only sequence, * a get or write method has already been invoked * on the current item. */ public XQItem getItem() throws XQException; /** * Read the entire sequence starting from the current position as an * XMLStreamReader object, as described in * Section 12.1 Serializing an XDM instance into a StAX event stream * (XMLStreamReader), XQuery API for Java (XQJ) 1.0. * * Note that the serialization process might fail, in which case a * XQException is thrown. * * While the stream is being read, the application MUST NOT do any other * concurrent operations on the sequence. The operation on the stream is * undefined if the underlying sequence position or state is changed by * concurrent operations. * * After all items are written to the stream, the current position of the * cursor is set to point after the last item. * * Also, in the case of forward only sequences, this method may only be * called if the current item has not yet been read through any of the get * or write methods. * * @return an XML reader object as XMLStreamReader * @exception XQException if (1) there are errors accessing any of the items * in the sequence, (2) the sequence is in a closed state, * (3) in the case of a forward only sequence, a get or write * method has already been invoked on the current item, or * (4) in case of an error during serialization of the sequence * into a StAX event stream as defined in Section 12.1 * Serializing an XDM instance into a StAX event stream * (XMLStreamReader), XQuery API for Java (XQJ) 1.0 */ public javax.xml.stream.XMLStreamReader getSequenceAsStream() throws XQException; /** * Serializes the sequence starting from the current position to a String * according to the * XSLT 2.0 and XQuery 1.0 serialization. * * Serialization parameters, which influence how serialization is * performed, can be specified. Refer to the * * XSLT 2.0 and XQuery 1.0 serialization * and Section 12 Serialization, XQuery * API for Java (XQJ) 1.0 for more information. * * Reading the sequence during the serialization process performs implicit * next operations to read the items. * * After all items are written to the stream, the current position of the * cursor is set to point after the last item. * * Also, in the case of forward only sequences, this method may only be * called if the current item has not yet been read through any of the get * or write methods. * * @param props specifies the serialization parameters, * null is considered equivalent to an * empty Properties object * @return the serialized representation of the sequence * @exception XQException if (1) there are errors accessing the items in * the sequence, (2) there are errors * during serialization, (3) the sequence is in a closed state, * or (4) in the case of a forward only sequence, a get or * write method has already been invoked on the current item */ public java.lang.String getSequenceAsString(java.util.Properties props) throws XQException; /** * Checks if the current position is after the last item in the sequence. * Calling this method on an empty sequence * will return false. * * @return true if the current position is * after the last item, false otherwise * @exception XQException if (1) the sequence is forward only, * or (2) the sequence is in a closed state */ public boolean isAfterLast() throws XQException; /** * Checks if the current position before the first item in the sequence. * Calling this method on an empty sequence * will return false. * * @return true if the current position is * before the first item, false otherwise * @exception XQException if (1) the sequence is forward only, * or (2) the sequence is in a closed state */ public boolean isBeforeFirst() throws XQException; /** * Checks if the current position at the first item in the sequence. * Calling this method on an empty sequence * will return false. * * @return true if the current position is at * the first item, false otherwise * @exception XQException if (1) the sequence is forward only, * or (2) the sequence is in a closed state */ public boolean isFirst() throws XQException; /** * Checks if the current position at the last item in the sequence. * Calling this method on an empty sequence * will return false. * * @return true if the current position is at * the last item, false otherwise * @exception XQException if (1) the sequence is forward only, * or (2) the sequence is in a closed state */ public boolean isLast() throws XQException; /** * Moves to the last item in the sequence. This method returns * true, if it was able to move to the last item in the sequence * false, otherwise. Calling this method on an empty sequence * will return false. * * @return true if the sequence was positioned * on the last item, false otherwise * @exception XQException if (1) the sequence is forward only, * or (2) the sequence is in a closed state */ public boolean last() throws XQException; /** * Moves to the next item in the sequence. Calling this method on an empty sequence * will return false. * * @return true if the new item is valid, * false if there are no more items * @exception XQException if the sequence is in a closed state */ public boolean next() throws XQException; /** * Moves to the previous item in the sequence. Calling this method on an empty sequence * will return false. * * @return true if the new current position is * within the sequence, (i.e., not before first); * false otherwise. * @exception XQException if (1) the sequence is forward only, or * (2) the sequence is in a closed state. */ public boolean previous() throws XQException; // only if scrollable /** * Moves the cursor a relative number of items, either positive or negative. * Attempting to move beyond the first/last item in the sequence positions * the sequence before/after the the first/last item. * Calling relative(0) is valid, but does not change the cursor position. *

* Note: Calling the method relative(1) is identical to calling the method * next and calling the method relative(-1) is identical * to calling the method previous(). * Calling this method on an empty sequence will return false. * * @param itempos the item position to jump to * @return true if the new current position is within * the sequence (i.e., not before first or after last); * false otherwise. * @exception XQException if (1) the sequence is forward only, or * (2) the sequence is in a closed state. */ public boolean relative (int itempos) throws XQException; /** * Serializes the sequence starting from the current position to an * OutputStream according to the * * XSLT 2.0 and XQuery 1.0 serialization. * * Serialization parameters, which influence how serialization is * performed, can be specified. Refer to the * * XSLT 2.0 and XQuery 1.0 serialization * and Section 12 Serialization, XQuery * API for Java (XQJ) 1.0 for more information. * * Reading the sequence during the serialization process performs implicit * next operations to read the items. * * After all items are written to the stream, the current position of the * cursor is set to point after the last item. * * Also, in the case of forward only sequences, this method may only be * called if the current item has not yet been read through any of the * get or write methods. * * @param os the output stream into which the sequence is to be serialized * @param props specifies the serialization parameters, * null is considered equivalent to an empty * Properties object * @exception XQException if (1) there are errors accessing the items in * the sequence, (2) there are errors * during serialization, (3) the sequence is in a closed state, * (4) in the case of a forward only sequence, a get or * write method has already been invoked on the current item, * or (5) the os parameter is null */ public void writeSequence(java.io.OutputStream os, java.util.Properties props) throws XQException; /** * Serializes the sequence starting from the current position to a Writer * according to the * XSLT 2.0 and XQuery 1.0 serialization. * * Serialization parameters, which influence how serialization is * performed, can be specified. Refer to the * * XSLT 2.0 and XQuery 1.0 serialization * and Section 12 Serialization, XQuery * API for Java (XQJ) 1.0 for more information. *
*
* Warning: When outputting to a Writer, make sure the writer's encoding * matches the encoding parameter if specified as a property or the default * encoding. *
*
* * Reading the sequence during the serialization process performs implicit * next operations to read the items. * * After all items are written to the stream, the current position of the * cursor is set to point after the last item. * * Also, in the case of forward only sequences, this method may only be * called if the current item has not yet been read through any of the get * or write methods. * * @param ow the writer object into which the sequence is to be serialized * @param props specifies the serialization parameters, * null is considered equivalent to an empty * Properties object * @exception XQException if (1) there are errors accessing the items in * the sequence, (2) there are errors during serialization, * (3) the sequence is in a closed state, * (4) in the case of a forward only sequence, a get or * write method has already been invoked on the current item, * or (5) the ow parameter is null */ public void writeSequence(java.io.Writer ow, java.util.Properties props) throws XQException; /** * Writes the entire sequence starting from the current position to a SAX * handler, as described in Section 12.2 Serializing an XDM instance * into a SAX event stream, XQuery API for Java (XQJ) 1.0. * * Note that the serialization process might fail, in which case a * XQException is thrown. * * After all items are written to the stream, the current position of the * cursor is set to point after the last item. * * Also, in the case of forward only sequences, this method may only be called * if the current item has not yet been read through any of the get or write * methods. * * The specified org.xml.sax.ContentHandler can optionally implement the * org.xml.sax.LexicalHandler interface. An implementation must check if the * specified ContentHandler implements LexicalHandler. * If the handler is a LexicalHandler comment nodes are reported, otherwise * they will be silently ignored. * * @param saxhdlr the SAX content handler, optionally a lexical handler * @exception XQException if (1) there are errors accessing any of the items * in the sequence, (2) the sequence is in a closed * state, (3) in the case of a forward only sequence, a get or * write method has already been invoked on the current item, * (4) in case of an error during serializing the XDM instance * into a SAX event stream, or (5) the saxhdlr * parameter is null */ public void writeSequenceToSAX(org.xml.sax.ContentHandler saxhdlr) throws XQException; /** * Writes the entire sequence starting from the current position to a * Result. First the sequence is normalized as described in * * XSLT 2.0 and XQuery 1.0 serialization. Subsequently it is serialized * to the Result object.
* * Note that the normalization process can fail, in which case an * XQException is thrown. * * An XQJ implementation must at least support the following * implementations: *
*

    *
  • javax.xml.transform.dom.DOMResult
  • *
  • javax.xml.transform.sax.SAXResult
  • *
  • javax.xml.transform.stream.StreamResult
  • *
*
* * @param result the result object into which the sequence * is to be serialized * @exception XQException if (1) there are errors accessing any of the items * in the sequence, (2) the sequence is in a closed * state, (3) in the case of a forward only sequence, a get or * write method has already been invoked on the current item, * (4) in case of an error while serializing the sequence * into the Result object, or (5) the * result parameter is null */ public void writeSequenceToResult(javax.xml.transform.Result result) throws XQException; };




© 2015 - 2025 Weber Informatics LLC | Privacy Policy