16 package org.zorbaxquery.api.xqj;
19 import java.math.BigDecimal;
20 import java.math.BigInteger;
22 import java.nio.CharBuffer;
23 import java.util.ArrayList;
24 import java.util.Collection;
25 import java.util.Iterator;
26 import java.util.Properties;
27 import javax.xml.datatype.DatatypeConstants;
28 import javax.xml.datatype.Duration;
29 import javax.xml.datatype.XMLGregorianCalendar;
30 import javax.xml.namespace.QName;
31 import javax.xml.stream.XMLOutputFactory;
32 import javax.xml.stream.XMLStreamReader;
33 import javax.xml.stream.XMLStreamWriter;
34 import javax.xml.transform.*;
35 import javax.xml.transform.dom.DOMSource;
36 import javax.xml.transform.sax.SAXSource;
37 import javax.xml.transform.stax.StAXResult;
38 import javax.xml.transform.stax.StAXSource;
39 import javax.xml.transform.stream.StreamResult;
40 import javax.xml.transform.stream.StreamSource;
41 import javax.xml.xquery.*;
43 import org.zorbaxquery.api.*;
76 private InMemoryStore store;
78 private boolean autocommit;
79 private boolean closed;
80 private Collection<XQExpression> cExpression;
81 private Collection<XQPreparedExpression> cPreparedExpression;
82 private Collection<XQMetaData> cMetadata;
83 private XQStaticContext lStaticContext;
85 private Properties properties;
86 private StringVector uriPaths;
87 private StringVector libPaths;
88 private StringVector modulePaths;
94 throw new XQException(
"Error returning Zorba Instance");
98 cExpression =
new ArrayList<XQExpression>();
99 cPreparedExpression =
new ArrayList<XQPreparedExpression>();
100 store = InMemoryStore.getInstance();
101 zorba = Zorba.getInstance ( store );
106 cExpression =
new ArrayList<XQExpression>();
107 cPreparedExpression =
new ArrayList<XQPreparedExpression>();
108 store = InMemoryStore.getInstance();
109 zorba = Zorba.getInstance ( store );
112 properties = aProperties;
113 for (String prop :properties.stringPropertyNames()) {
115 String[] paths = properties.getProperty(prop).split(
"[;,]");
116 uriPaths =
new StringVector();
117 for (String path: paths) {
122 String[] paths = properties.getProperty(prop).split(
"[;,]");
123 libPaths =
new StringVector();
124 for (String path: paths) {
129 String[] paths = properties.getProperty(prop).split(
"[;,]");
130 modulePaths =
new StringVector();
131 for (String path: paths) {
132 modulePaths.add(path);
136 lStaticContext =
new org.zorbaxquery.api.xqj.ZorbaXQStaticContext(zorba);
137 if (uriPaths!=null) {
138 ((org.zorbaxquery.api.xqj.ZorbaXQStaticContext)lStaticContext).setURIPaths(uriPaths);
140 if (libPaths!=null) {
141 ((org.zorbaxquery.api.xqj.ZorbaXQStaticContext)lStaticContext).setLIBPaths(libPaths);
143 if (modulePaths!=null) {
144 ((org.zorbaxquery.api.xqj.ZorbaXQStaticContext)lStaticContext).setMODPaths(modulePaths);
156 public void close() throws XQException {
159 for (XQExpression exp : cExpression ){
162 for (XQPreparedExpression exp : cPreparedExpression ){
165 }
catch (XQException e) {
166 throw new XQException(
"Error closing connection: " + e.getLocalizedMessage());
169 if (lStaticContext != null ) {
170 ((org.zorbaxquery.api.xqj.ZorbaXQStaticContext)lStaticContext).getZorbaStaticContext().destroy();
172 if (lXmlDataManager != null) {
173 lXmlDataManager.
close();
176 InMemoryStore.shutdown ( store );
181 if (lXmlDataManager==null) {
184 return lXmlDataManager;
189 isClosedXQException();
200 isClosedXQException();
211 public void commit() throws XQException {
212 isClosedXQException();
213 throw new UnsupportedOperationException(
"Zorba does not support transactions... yet...");
225 isClosedXQException();
226 XQExpression expression;
227 if (lStaticContext == null) {
228 expression =
new org.zorbaxquery.api.xqj.ZorbaXQExpression(
this);
230 expression =
new org.zorbaxquery.api.xqj.ZorbaXQExpression(
this, lStaticContext);
232 cExpression.add(expression);
246 isClosedXQException();
247 isNullXQException(value);
248 XQExpression expression =
new org.zorbaxquery.api.xqj.ZorbaXQExpression(
this, value);
249 cExpression.add(expression);
260 isClosedXQException();
261 return new org.zorbaxquery.api.xqj.ZorbaXQMetaData(
this);
283 isClosedXQException();
284 isNullXQException(value);
285 XQPreparedExpression expression;
287 if (lStaticContext == null) {
288 expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this, value);
290 expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this, value, lStaticContext);
292 cPreparedExpression.add(expression);
293 }
catch (Exception e) {
294 throw new XQException(
"Error preparing expression: "+e.getLocalizedMessage());
309 public XQPreparedExpression
prepareExpression(String
string, XQStaticContext xqsc)
throws XQException {
310 isClosedXQException();
311 isNullXQException(
string);
312 isNullXQException(xqsc);
313 XQPreparedExpression expression = null;
315 expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this,
string, xqsc);
316 cPreparedExpression.add(expression);
317 }
catch (Exception e) {
318 throw new XQException(
"Error preparing expression");
333 isClosedXQException();
334 isNullXQException(reader);
336 StringBuffer
string =
new StringBuffer();
337 CharBuffer buffer = CharBuffer.allocate(1024);
338 Writer writer =
new StringWriter();
341 while( reader.read(buffer) >= 0 ) {
343 writer.append(buffer);
347 }
catch (Exception ex) {
348 throw new XQException(
"Error preparing expression" + ex.getLocalizedMessage());
351 XQPreparedExpression expression;
352 if (lStaticContext == null) {
353 expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this, writer.toString());
355 expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this, writer.toString(), lStaticContext);
357 cPreparedExpression.add(expression);
371 public XQPreparedExpression
prepareExpression(Reader reader, XQStaticContext xqsc)
throws XQException {
372 isClosedXQException();
373 isNullXQException(reader);
374 isNullXQException(xqsc);
375 StringBuffer
string =
new StringBuffer();
376 CharBuffer buffer = CharBuffer.allocate(1024);
377 Writer writer =
new StringWriter();
379 while( reader.read(buffer) >= 0 ) {
381 writer.append(buffer);
385 }
catch (Exception ex) {
386 throw new XQException(
"Error preparing expression" + ex.getLocalizedMessage());
389 XQPreparedExpression expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this, writer.toString(), xqsc);
391 cPreparedExpression.add(expression);
405 isClosedXQException();
406 isNullXQException(in);
407 StringBuffer out =
new StringBuffer ();
409 byte[] b =
new byte[4096];
410 for (
int n; (n = in.read(b)) != -1;) {
411 out.append(
new String(b, 0, n));
413 }
catch (Exception ex) {
414 throw new XQException(
"Error preparing expression" + ex.getLocalizedMessage());
417 XQPreparedExpression expression;
418 if (lStaticContext == null) {
419 expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this, out.toString());
421 expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this, out.toString(), lStaticContext);
424 cPreparedExpression.add(expression);
425 }
catch (Exception ex) {
426 throw new XQException(
"Error preparing expression" + ex.getLocalizedMessage());
442 public XQPreparedExpression
prepareExpression(InputStream in, XQStaticContext xqsc)
throws XQException {
443 isClosedXQException();
444 isNullXQException(in);
445 isNullXQException(xqsc);
446 StringBuffer out =
new StringBuffer ();
448 byte[] b =
new byte[4096];
449 for (
int n; (n = in.read(b)) != -1;) {
450 out.append(
new String(b, 0, n));
452 }
catch (IOException ex) {
453 throw new XQException(
"Error preparing expression" + ex.getLocalizedMessage());
456 XQPreparedExpression expression = null;
458 expression =
new org.zorbaxquery.api.xqj.ZorbaXQPreparedExpression(
this, out.toString(), xqsc);
459 cPreparedExpression.add(expression);
460 }
catch (Exception ex) {
461 throw new XQException(
"Error preparing expression" + ex.getLocalizedMessage());
474 throw new UnsupportedOperationException(
"Zorba does not support transactions... yet...");
486 isClosedXQException();
487 lStaticContext =
new org.zorbaxquery.api.xqj.ZorbaXQStaticContext(zorba);
488 if (uriPaths!=null) {
489 ((org.zorbaxquery.api.xqj.ZorbaXQStaticContext)lStaticContext).setURIPaths(uriPaths);
491 if (libPaths!=null) {
492 ((org.zorbaxquery.api.xqj.ZorbaXQStaticContext)lStaticContext).setLIBPaths(libPaths);
494 if (modulePaths!=null) {
495 ((org.zorbaxquery.api.xqj.ZorbaXQStaticContext)lStaticContext).setMODPaths(modulePaths);
497 return lStaticContext;
509 isClosedXQException();
510 isNullXQException(xqsc);
511 if ((lStaticContext!=null) && (lStaticContext!=xqsc)) {
512 ((org.zorbaxquery.api.xqj.ZorbaXQStaticContext)lStaticContext).getZorbaStaticContext().delete();
514 lStaticContext = xqsc;
528 isClosedXQException();
529 isNullXQException(value);
530 isNullXQException(type);
531 if (type.getItemKind()!=XQItemType.XQITEMKIND_ATOMIC) {
532 throw new XQException(
"ItemType is not Atomic");
537 }
catch (Exception e) {
538 throw new XQException(
"Error creating item of this type " + e.getLocalizedMessage());
555 isClosedXQException();
556 isNullXQException(value);
558 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_STRING);
560 ItemFactory itemFactory = zorba.getItemFactory();
563 switch (type.getBaseType()) {
564 case XQItemType.XQBASETYPE_BOOLEAN:
565 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createBoolean(Boolean.parseBoolean(value)), type);
567 case XQItemType.XQBASETYPE_ANYURI:
568 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createAnyURI(value), type);
570 case XQItemType.XQBASETYPE_BASE64BINARY:
571 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createBase64Binary(value, value.length()), type);
573 case XQItemType.XQBASETYPE_BYTE:
574 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createByte(value.charAt(0)), type);
576 case XQItemType.XQBASETYPE_DATE:
577 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDate(value), type);
579 case XQItemType.XQBASETYPE_DATETIME:
580 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDateTime(value), type);
582 case XQItemType.XQBASETYPE_DAYTIMEDURATION:
583 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDuration(value), type);
585 case XQItemType.XQBASETYPE_DECIMAL:
586 BigDecimal dec =
new BigDecimal(value);
587 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDecimal(value), type);
589 case XQItemType.XQBASETYPE_DOUBLE:
590 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDouble(Double.parseDouble(value)), type);
592 case XQItemType.XQBASETYPE_DURATION:
593 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDuration(value), type);
595 case XQItemType.XQBASETYPE_FLOAT:
596 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createFloat(value), type);
598 case XQItemType.XQBASETYPE_GDAY:
599 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGDay(value), type);
601 case XQItemType.XQBASETYPE_GMONTH:
602 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGMonth(value), type);
604 case XQItemType.XQBASETYPE_GMONTHDAY:
605 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGMonthDay(value), type);
607 case XQItemType.XQBASETYPE_GYEAR:
608 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGYear(value), type);
610 case XQItemType.XQBASETYPE_GYEARMONTH:
611 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGYearMonth(value), type);
613 case XQItemType.XQBASETYPE_HEXBINARY:
614 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createHexBinary(value, value.length()), type);
616 case XQItemType.XQBASETYPE_INT:
617 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createInt(Integer.parseInt(value)), type);
619 case XQItemType.XQBASETYPE_INTEGER:
620 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createInteger(Integer.parseInt(value)), type);
622 case XQItemType.XQBASETYPE_LONG:
623 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createLong(Long.parseLong(value)), type);
625 case XQItemType.XQBASETYPE_NCNAME:
626 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNCName(value), type);
628 case XQItemType.XQBASETYPE_NEGATIVE_INTEGER:
629 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNegativeInteger(Long.parseLong(value)), type);
631 case XQItemType.XQBASETYPE_NONNEGATIVE_INTEGER:
632 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNonNegativeInteger(
new BigInteger(value)), type);
634 case XQItemType.XQBASETYPE_NONPOSITIVE_INTEGER:
635 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNonPositiveInteger(Long.parseLong(value)), type);
637 case XQItemType.XQBASETYPE_POSITIVE_INTEGER:
638 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createPositiveInteger(
new BigInteger(value)), type);
640 case XQItemType.XQBASETYPE_QNAME:
641 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createQName(type.getSchemaURI().toString(), value), type);
643 case XQItemType.XQBASETYPE_SHORT:
644 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createShort(Short.parseShort(value)), type);
646 case XQItemType.XQBASETYPE_STRING:
647 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createString(value), type);
649 case XQItemType.XQBASETYPE_TIME:
650 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createTime(value), type);
652 case XQItemType.XQBASETYPE_UNSIGNED_BYTE:
653 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedByte(Short.parseShort(value)), type);
655 case XQItemType.XQBASETYPE_UNSIGNED_INT:
656 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedInt(Long.parseLong(value)), type);
658 case XQItemType.XQBASETYPE_UNSIGNED_LONG:
659 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedLong(
new BigInteger(value)), type);
661 case XQItemType.XQBASETYPE_UNSIGNED_SHORT:
662 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedShort(Integer.parseInt(value)), type);
664 case XQItemType.XQBASETYPE_YEARMONTHDURATION:
665 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDuration(value), type);
668 case XQItemType.XQBASETYPE_ANYATOMICTYPE:
669 case XQItemType.XQBASETYPE_ANYSIMPLETYPE:
670 case XQItemType.XQBASETYPE_ENTITY:
671 case XQItemType.XQBASETYPE_ENTITIES:
672 case XQItemType.XQBASETYPE_ANYTYPE:
673 case XQItemType.XQBASETYPE_LANGUAGE:
674 case XQItemType.XQBASETYPE_ID:
675 case XQItemType.XQBASETYPE_IDREF:
676 case XQItemType.XQBASETYPE_IDREFS:
677 case XQItemType.XQBASETYPE_NAME:
678 case XQItemType.XQBASETYPE_NMTOKEN:
679 case XQItemType.XQBASETYPE_NMTOKENS:
680 case XQItemType.XQBASETYPE_NORMALIZED_STRING:
681 case XQItemType.XQBASETYPE_NOTATION:
682 case XQItemType.XQBASETYPE_TOKEN:
683 case XQItemType.XQBASETYPE_UNTYPED:
684 case XQItemType.XQBASETYPE_UNTYPEDATOMIC:
685 throw new UnsupportedOperationException(
"Not supported yet.");
688 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createString(value), type);
691 }
catch (Exception e) {
692 throw new XQException (
"Error parsing value" + e.getLocalizedMessage());
713 isClosedXQException();
714 isNullXQException(value);
716 if ( ! ((type.getItemKind()== XQItemType.XQITEMKIND_DOCUMENT_ELEMENT)||(type.getItemKind()== XQItemType.XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT)) ) {
717 throw new XQException(
"Invalid type");
723 XmlDataManager dm = null;
727 dm = zorba.getXmlDataManager();
729 org.zorbaxquery.api.Iterator iterator = dm.parseXML(value);
734 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(doc);
735 }
catch (Exception e) {
736 throw new XQException(
"Error creating Item" + e.getLocalizedMessage());
757 isClosedXQException();
758 isNullXQException(value);
760 StringBuffer
string =
new StringBuffer();
761 CharBuffer buffer = CharBuffer.allocate(1024);
762 Writer writer =
new StringWriter();
765 while( value.read(buffer) >= 0 ) {
767 writer.append(buffer);
771 }
catch (Exception ex) {
772 throw new XQException(
"Error preparing expression" + ex.getLocalizedMessage());
795 isClosedXQException();
796 isNullXQException(value);
798 StringBuffer out =
new StringBuffer ();
800 byte[] b =
new byte[4096];
801 for (
int n; (n = value.read(b)) != -1;) {
802 out.append(
new String(b, 0, n));
804 }
catch (Exception ex) {
805 throw new XQException(
"Error preparing expression" + ex.getLocalizedMessage());
826 isClosedXQException();
827 isNullXQException(value);
828 TransformerFactory tf = TransformerFactory.newInstance();
832 XMLOutputFactory xof = XMLOutputFactory.newInstance();
833 Writer writer =
new StringWriter();
835 XMLStreamWriter xmlStreamWriter = xof.createXMLStreamWriter(writer);
836 t = tf.newTransformer();
837 source =
new StAXSource(value);
838 result =
new StAXResult(xmlStreamWriter);
839 t.transform(source, result);
840 }
catch (Exception ex) {
841 throw new XQException(
"Error transforming xml expression" + ex.getLocalizedMessage());
847 private String nodeToString(Node node) {
848 StringWriter sw =
new StringWriter();
850 Transformer t = TransformerFactory.newInstance().newTransformer();
851 t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
"yes");
852 t.transform(
new DOMSource(node),
new StreamResult(sw));
853 }
catch (TransformerException te) {
854 System.out.println(
"nodeToString Transformer Exception" + te.getLocalizedMessage());
856 return sw.toString();
879 isClosedXQException();
880 isNullXQException(value);
882 if (value instanceof StreamSource) {
884 }
else if (value instanceof SAXSource) {
886 }
else if (value instanceof DOMSource) {
889 throw new UnsupportedOperationException(
"Not supported yet.");
906 isClosedXQException();
907 isNullXQException(value);
908 if (value instanceof XQItem) {
909 return (XQItem)value;
912 ItemFactory itemFactory = zorba.getItemFactory();
916 if (value instanceof Boolean) {
917 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_BOOLEAN);
918 }
else if (value instanceof Byte) {
919 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_BYTE);
920 }
else if (value instanceof Float) {
921 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_FLOAT);
922 }
else if (value instanceof Double) {
923 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_DOUBLE);
924 }
else if (value instanceof Integer) {
925 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_INT);
926 }
else if (value instanceof Long) {
927 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_LONG);
928 }
else if (value instanceof Short) {
929 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_SHORT);
930 }
else if (value instanceof String) {
931 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_STRING);
932 }
else if (value instanceof BigDecimal) {
933 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_DECIMAL);
934 }
else if (value instanceof BigInteger) {
935 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_INTEGER);
936 }
else if (value instanceof Duration) {
937 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_DURATION);
938 }
else if (value instanceof XMLGregorianCalendar) {
939 QName schType = ((XMLGregorianCalendar)value).getXMLSchemaType();
940 if (schType.equals(DatatypeConstants.GDAY)) {
941 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_GDAY);
942 }
else if (schType.equals(DatatypeConstants.GMONTHDAY)) {
943 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_GMONTHDAY);
944 }
else if (schType.equals(DatatypeConstants.GMONTH)) {
945 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_GMONTH);
946 }
else if (schType.equals(DatatypeConstants.GYEAR)) {
947 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_GYEAR);
948 }
else if (schType.equals(DatatypeConstants.GYEARMONTH)) {
949 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_GYEARMONTH);
950 }
else if (schType.equals(DatatypeConstants.DATETIME)) {
951 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_DATETIME);
952 }
else if (schType.equals(DatatypeConstants.DATE)) {
953 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_DATE);
954 }
else if (schType.equals(DatatypeConstants.TIME)) {
955 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_TIME);
957 }
else if (value instanceof QName) {
958 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_QNAME);
959 }
else if (value instanceof Document) {
960 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_DOCUMENT);
961 }
else if (value instanceof DocumentFragment) {
962 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_DOCUMENT);
963 }
else if (value instanceof Element){
964 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ELEMENT);
965 }
else if (value instanceof Attr) {
966 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATTRIBUTE);
967 }
else if (value instanceof Comment) {
968 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_COMMENT);
969 }
else if (value instanceof ProcessingInstruction) {
970 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_PI);
971 }
else if (value instanceof Text) {
972 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_TEXT);
974 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC);
978 switch (type.getItemKind()) {
979 case XQItemType.XQITEMKIND_ATOMIC:
980 switch (type.getBaseType()) {
981 case XQItemType.XQBASETYPE_BOOLEAN:
982 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createBoolean((Boolean)value), type);
984 case XQItemType.XQBASETYPE_ANYURI:
985 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createAnyURI(value.toString()), type);
987 case XQItemType.XQBASETYPE_BASE64BINARY:
988 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createBase64Binary(value.toString(), (value.toString()).length()), type);
990 case XQItemType.XQBASETYPE_BYTE:
991 if (value instanceof Byte) {
992 byte tmpByte = ((Byte)value).byteValue();
993 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createByte((
char)tmpByte), type);
995 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createByte((value.toString()).charAt(0)), type);
998 case XQItemType.XQBASETYPE_DATE:
999 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDate(value.toString()), type);
1001 case XQItemType.XQBASETYPE_DATETIME:
1002 if (value.toString().contains(
":")) {
1003 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDateTime(value.toString()), type);
1005 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDate(value.toString()), type);
1008 case XQItemType.XQBASETYPE_DAYTIMEDURATION:
1009 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDuration(value.toString()), type);
1011 case XQItemType.XQBASETYPE_DECIMAL:
1012 if (value instanceof BigDecimal) {
1013 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDecimal(((BigDecimal)value).toPlainString()), type);
1015 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDecimal(value.toString()), type);
1018 case XQItemType.XQBASETYPE_DOUBLE:
1019 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDouble(value.toString()), type);
1021 case XQItemType.XQBASETYPE_DURATION:
1022 if (value instanceof Duration) {
1023 Duration duration = (Duration)value;
1024 Boolean daytime = duration.isSet(DatatypeConstants.DAYS) || duration.isSet(DatatypeConstants.HOURS) ||
1025 duration.isSet(DatatypeConstants.MINUTES) || duration.isSet(DatatypeConstants.SECONDS);
1026 Boolean yearmonth = duration.isSet(DatatypeConstants.YEARS) || duration.isSet(DatatypeConstants.MONTHS);
1027 if (daytime && yearmonth){
1028 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDuration(value.toString()), type);
1029 }
else if (yearmonth) {
1030 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createYearMonthDuration(value.toString()), type);
1031 }
else if (daytime) {
1032 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDayTimeDuration(value.toString()), type);
1035 boolean yearMonth = value.toString().contains(
"Y") || value.toString().contains(
"M");
1036 boolean dayTime = value.toString().contains(
"D") || value.toString().contains(
"T");
1037 if (yearMonth && dayTime) {
1038 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDuration(value.toString()), type);
1039 }
else if (yearMonth) {
1040 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createYearMonthDuration(value.toString()), type);
1041 }
else if (dayTime) {
1042 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDayTimeDuration(value.toString()), type);
1046 case XQItemType.XQBASETYPE_FLOAT:
1047 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createFloat((Float)value), type);
1049 case XQItemType.XQBASETYPE_GDAY:
1050 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGDay(value.toString()), type);
1052 case XQItemType.XQBASETYPE_GMONTH:
1053 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGMonth(value.toString()), type);
1055 case XQItemType.XQBASETYPE_GMONTHDAY:
1056 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGMonthDay(value.toString()), type);
1058 case XQItemType.XQBASETYPE_GYEAR:
1059 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGYear(value.toString()), type);
1061 case XQItemType.XQBASETYPE_GYEARMONTH:
1062 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createGYearMonth(value.toString()), type);
1064 case XQItemType.XQBASETYPE_HEXBINARY:
1065 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createHexBinary(value.toString(), (value.toString()).length()), type);
1067 case XQItemType.XQBASETYPE_INT:
1068 case XQItemType.XQBASETYPE_INTEGER:
1069 if (value instanceof BigInteger) {
1070 BigInteger val = (BigInteger)value;
1071 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createInteger(val.longValue()), type);
1072 }
else if (value instanceof Integer) {
1073 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createInt((Integer)value), type);
1074 }
else if (value instanceof String) {
1075 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createInteger(value.toString()), type);
1077 throw new XQException (
"Error parsing integer: " + value.toString());
1080 case XQItemType.XQBASETYPE_LONG:
1081 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createLong((Long)value), type);
1083 case XQItemType.XQBASETYPE_NCNAME:
1084 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNCName(value.toString()), type);
1086 case XQItemType.XQBASETYPE_NEGATIVE_INTEGER:
1087 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNegativeInteger((Long)value), type);
1089 case XQItemType.XQBASETYPE_NONNEGATIVE_INTEGER:
1090 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNonNegativeInteger(
new BigInteger(value.toString())), type);
1092 case XQItemType.XQBASETYPE_NONPOSITIVE_INTEGER:
1093 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNonPositiveInteger((Long)value), type);
1095 case XQItemType.XQBASETYPE_POSITIVE_INTEGER:
1096 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createPositiveInteger(
new BigInteger(value.toString())), type);
1098 case XQItemType.XQBASETYPE_QNAME:
1099 if (value instanceof QName) {
1100 QName qname = (QName) value;
1101 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createQName(qname.getNamespaceURI(), qname.getPrefix(), qname.getLocalPart()), type);
1102 }
else if (value.toString().contains(
"{")) {
1103 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createQName(value.toString()), type);
1105 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createQName(
"", value.toString()), type);
1108 case XQItemType.XQBASETYPE_SHORT:
1109 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createShort((Short)value), type);
1111 case XQItemType.XQBASETYPE_STRING:
1112 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createString(value.toString()), type);
1114 case XQItemType.XQBASETYPE_TIME:
1115 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createTime(value.toString()), type);
1117 case XQItemType.XQBASETYPE_TOKEN:
1119 case XQItemType.XQBASETYPE_UNSIGNED_BYTE:
1120 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedByte((Short)value), type);
1122 case XQItemType.XQBASETYPE_UNSIGNED_INT:
1123 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedInt((Long)value), type);
1125 case XQItemType.XQBASETYPE_UNSIGNED_LONG:
1126 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedLong(
new BigInteger(value.toString())), type);
1128 case XQItemType.XQBASETYPE_UNSIGNED_SHORT:
1129 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedShort((Integer)value), type);
1131 case XQItemType.XQBASETYPE_YEARMONTHDURATION:
1132 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDuration(value.toString()), type);
1134 case XQItemType.XQBASETYPE_ANYATOMICTYPE:
1135 case XQItemType.XQBASETYPE_ANYSIMPLETYPE:
1136 case XQItemType.XQBASETYPE_ANYTYPE:
1137 case XQItemType.XQBASETYPE_ENTITIES:
1138 case XQItemType.XQBASETYPE_ENTITY:
1139 case XQItemType.XQBASETYPE_ID:
1140 case XQItemType.XQBASETYPE_IDREF:
1141 case XQItemType.XQBASETYPE_IDREFS:
1142 case XQItemType.XQBASETYPE_LANGUAGE:
1143 case XQItemType.XQBASETYPE_NAME:
1144 case XQItemType.XQBASETYPE_NMTOKEN:
1145 case XQItemType.XQBASETYPE_NMTOKENS:
1146 case XQItemType.XQBASETYPE_NORMALIZED_STRING:
1147 case XQItemType.XQBASETYPE_NOTATION:
1148 case XQItemType.XQBASETYPE_UNTYPED:
1149 case XQItemType.XQBASETYPE_UNTYPEDATOMIC:
1150 throw new XQException (
"Base type not supported yet.");
1152 throw new XQException (
"Unable to determine XQBASETYPE.");
1155 case XQItemType.XQITEMKIND_ATTRIBUTE:
1156 if (value instanceof Attr){
1157 Attr attribute = (Attr) value;
1158 Item iEmpty =
new Item();
1159 Item nodeName = itemFactory.createQName(attribute.getNamespaceURI()==null?
"":attribute.getNamespaceURI(),
1160 attribute.getPrefix()==null?
"":attribute.getPrefix(),
1161 attribute.getName()==null?
"":attribute.getName());
1162 Item nodeValue = null;
1163 if (!attribute.getValue().isEmpty()) {
1164 nodeValue = itemFactory.createQName(attribute.getNamespaceURI()==null?
"":attribute.getNamespaceURI(),
1165 attribute.getPrefix()==null?
"":attribute.getPrefix(),
1166 attribute.getValue()==null?
"":attribute.getValue());
1168 nodeValue =
new Item();
1171 Item iUntyped = itemFactory.createQName(
"http://www.w3.org/2001/XMLSchema",
"xs",
"untyped");
1172 Item attributeNode = itemFactory.createAttributeNode(iEmpty, nodeName, iUntyped, nodeValue);
1173 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(attributeNode, type);
1176 case XQItemType.XQITEMKIND_COMMENT:
1177 if (value instanceof Comment){
1178 Comment comment = (Comment) value;
1179 Item iEmpty =
new Item();
1180 Item elementNode = itemFactory.createCommentNode(iEmpty, comment.getTextContent());
1181 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(elementNode, type);
1183 Item iEmpty =
new Item();
1184 Item elementNode = itemFactory.createCommentNode(iEmpty, value.toString());
1185 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(elementNode, type);
1188 case XQItemType.XQITEMKIND_DOCUMENT:
1189 if ((value instanceof Document) || (value instanceof DocumentFragment)){
1190 DOMSource source = null;
1191 if (value instanceof Document) {
1192 source =
new DOMSource((Document)value);
1194 source =
new DOMSource((DocumentFragment)value);
1197 Transformer transformer = TransformerFactory.newInstance().newTransformer();
1198 transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
"yes");
1199 StreamResult result =
new StreamResult(
new StringWriter());
1201 transformer.transform(source, result);
1202 String xmlString = result.getWriter().toString();
1203 Item tmpItem =
new Item();
1204 if (xmlString.length()>0) {
1205 XmlDataManager dataManager = zorba.getXmlDataManager();
1206 org.zorbaxquery.api.Iterator iter = dataManager.parseXML(xmlString);
1212 tmpItem = itemFactory.createDocumentNode(
"",
"");
1215 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(tmpItem, type);
1219 case XQItemType.XQITEMKIND_ELEMENT:
1220 if (value instanceof Element){
1221 Element element = (Element) value;
1222 Item iEmpty =
new Item();
1223 Item nodeName = itemFactory.createQName(element.getNamespaceURI()==null?
"":element.getNamespaceURI(),
1224 element.getPrefix()==null?
"":element.getPrefix(),
1225 element.getNodeName()==null?
"":element.getNodeName());
1226 Item iUntyped = itemFactory.createQName(
"http://www.w3.org/2001/XMLSchema",
"xs",
"untyped");
1227 Item elementNode = itemFactory.createElementNode(iEmpty, nodeName, iUntyped,
false,
false);
1228 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(elementNode, type);
1231 case XQItemType.XQITEMKIND_PI:
1232 if (value instanceof ProcessingInstruction){
1233 ProcessingInstruction pi = (ProcessingInstruction) value;
1234 Item iEmpty =
new Item();
1235 Item elementNode = itemFactory.createPiNode(iEmpty,
1237 pi.getTextContent(),
1238 pi.getBaseURI()==null?
"":pi.getBaseURI());
1239 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(elementNode, type);
1242 case XQItemType.XQITEMKIND_TEXT:
1243 if (value instanceof Text){
1244 Text text = (Text) value;
1245 Item iEmpty =
new Item();
1246 Item elementNode = itemFactory.createTextNode(iEmpty, text.getWholeText());
1247 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(elementNode, type);
1250 case XQItemType.XQITEMKIND_DOCUMENT_ELEMENT:
1251 case XQItemType.XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT:
1252 case XQItemType.XQITEMKIND_ITEM:
1253 case XQItemType.XQITEMKIND_NODE:
1254 case XQItemType.XQITEMKIND_SCHEMA_ATTRIBUTE:
1255 case XQItemType.XQITEMKIND_SCHEMA_ELEMENT:
1256 throw new XQException (
"This item kind is currently unsupported.");
1258 throw new XQException (
"Unable to determine XQITEMKIND.");
1260 }
catch (Exception e) {
1261 throw new XQException (
"Error parsing value" + e.getLocalizedMessage());
1268 isClosedXQException();
1270 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_BOOLEAN);
1272 if (type.getBaseType() != XQItemType.XQBASETYPE_BOOLEAN) {
1273 throw new XQException(
"Type is not boolean, use proper method");
1278 ItemFactory itemFactory = zorba.getItemFactory();
1279 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createBoolean(bln));
1280 }
catch (Exception e) {
1281 throw new XQException(
"Error creating new item");
1286 private XQItem createDecimal(BigDecimal value, XQItemType type)
throws XQException {
1289 ItemFactory itemFactory = zorba.getItemFactory();
1290 switch (type.getBaseType()) {
1291 case XQItemType.XQBASETYPE_BYTE:
1292 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createByte((
char)value.byteValue()), type);
1294 case XQItemType.XQBASETYPE_INTEGER:
1295 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createInteger(value.longValue()), type);
1297 case XQItemType.XQBASETYPE_DECIMAL:
1298 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDecimalFromLong(value.longValue()), type);
1300 case XQItemType.XQBASETYPE_INT:
1301 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createInt(value.intValue()), type);
1303 case XQItemType.XQBASETYPE_LONG:
1304 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createLong(value.longValue()), type);
1306 case XQItemType.XQBASETYPE_NEGATIVE_INTEGER:
1307 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNegativeInteger(value.longValue()), type);
1309 case XQItemType.XQBASETYPE_NONNEGATIVE_INTEGER:
1310 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNonNegativeInteger(value.toBigInteger()), type);
1312 case XQItemType.XQBASETYPE_NONPOSITIVE_INTEGER:
1313 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createNonPositiveInteger(value.longValue()), type);
1315 case XQItemType.XQBASETYPE_POSITIVE_INTEGER:
1316 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createPositiveInteger(value.toBigInteger()), type);
1318 case XQItemType.XQBASETYPE_SHORT:
1319 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createShort(value.shortValue()), type);
1321 case XQItemType.XQBASETYPE_UNSIGNED_BYTE:
1322 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedByte(value.shortValue()), type);
1324 case XQItemType.XQBASETYPE_UNSIGNED_INT:
1325 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedInt(value.longValue()), type);
1327 case XQItemType.XQBASETYPE_UNSIGNED_LONG:
1328 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createUnsignedLong(value.toBigInteger()), type);
1330 case XQItemType.XQBASETYPE_UNSIGNED_SHORT:
1331 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createShort(value.shortValue()), type);
1334 throw new XQException(
"Type is not xs:decimal or a derivate.");
1336 }
catch (Exception e) {
1337 throw new XQException(
"Error creating Item: " + e.getLocalizedMessage());
1353 isClosedXQException();
1355 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_BYTE);
1357 return createDecimal(
new BigDecimal(b), type);
1371 isClosedXQException();
1373 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_DOUBLE);
1375 if (type.getBaseType() != XQItemType.XQBASETYPE_DOUBLE) {
1376 throw new XQException(
"Type is not double, use proper method");
1380 ItemFactory itemFactory = zorba.getItemFactory();
1381 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createDouble(value), type);
1382 }
catch (Exception e) {
1383 throw new XQException(
"Error Creating Item From Double" + e.getLocalizedMessage());
1399 isClosedXQException();
1401 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_FLOAT);
1403 if (type.getBaseType() != XQItemType.XQBASETYPE_FLOAT) {
1404 throw new XQException(
"Type is not float, use proper method");
1408 ItemFactory itemFactory = zorba.getItemFactory();
1409 item =
new org.zorbaxquery.api.xqj.ZorbaXQItem(itemFactory.createFloat(value), type);
1410 }
catch (Exception e) {
1411 throw new XQException(
"Error Creating Item From Float" + e.getLocalizedMessage());
1427 isClosedXQException();
1429 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_INT);
1431 switch (type.getBaseType()) {
1432 case XQItemType.XQBASETYPE_BYTE:
1433 case XQItemType.XQBASETYPE_SHORT:
1434 throw new XQException(
"Can't downgrade the Base Type from an Int number");
1438 return createDecimal(
new BigDecimal(value), type);
1452 isClosedXQException();
1454 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_LONG);
1456 switch (type.getBaseType()) {
1457 case XQItemType.XQBASETYPE_BYTE:
1458 case XQItemType.XQBASETYPE_SHORT:
1459 case XQItemType.XQBASETYPE_INT:
1460 throw new XQException(
"Can't downgrade the Base Type from an Long number");
1464 return createDecimal(
new BigDecimal(value), type);
1478 isClosedXQException();
1479 isNullXQException(value);
1481 XQItem result = null;
1484 }
catch( Exception e ) {
1485 throw new XQException(
"Error Creating Item From Node" + e.getLocalizedMessage());
1501 isClosedXQException();
1503 type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, XQItemType.XQBASETYPE_SHORT);
1505 if (type.getBaseType()==XQItemType.XQBASETYPE_BYTE) {
1506 throw new XQException(
"Can't create a Byte from a Short number");
1508 return createDecimal(
new BigDecimal(value), type);
1521 isClosedXQException();
1522 isNullXQException(value);
1523 if (value.isClosed()) {
1524 throw new XQException(
"Item is closed.");
1526 XQItem result =
new org.zorbaxquery.api.xqj.ZorbaXQItem(value);
1540 isClosedXQException();
1541 isNullXQException(value);
1542 if (value.isClosed()) {
1543 throw new XQException(
"Sequence is closed.");
1545 XQSequence result = null;
1547 result =
new org.zorbaxquery.api.xqj.ZorbaXQSequence(value);
1548 }
catch (Exception ex) {
1549 throw new XQException(
"Error creating sequence: " + ex.getLocalizedMessage());
1564 isClosedXQException();
1565 isNullXQException(value);
1566 XQSequence result = null;
1568 result =
new org.zorbaxquery.api.xqj.ZorbaXQSequence(value);
1569 }
catch (Exception ex) {
1570 throw new XQException(
"Error creating sequence: " + ex.getLocalizedMessage());
1591 isClosedXQException();
1592 if ((basetype==XQItemType.XQBASETYPE_UNTYPED) ||
1593 (basetype==XQItemType.XQBASETYPE_ANYTYPE) ||
1594 (basetype==XQItemType.XQBASETYPE_IDREFS) ||
1595 (basetype==XQItemType.XQBASETYPE_NMTOKENS) ||
1596 (basetype==XQItemType.XQBASETYPE_ENTITIES) ||
1597 (basetype==XQItemType.XQBASETYPE_ANYSIMPLETYPE)) {
1598 throw new XQException(
"Invalid base type.");
1600 XQItemType type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, basetype);
1623 throw new XQException(
"Object closed");
1625 if ((basetype==XQItemType.XQBASETYPE_UNTYPED) ||
1626 (basetype==XQItemType.XQBASETYPE_ANYTYPE) ||
1627 (basetype==XQItemType.XQBASETYPE_IDREFS) ||
1628 (basetype==XQItemType.XQBASETYPE_NMTOKENS) ||
1629 (basetype==XQItemType.XQBASETYPE_ENTITIES) ||
1630 (basetype==XQItemType.XQBASETYPE_ANYSIMPLETYPE)) {
1631 throw new XQException(
"Invalid base type.");
1633 XQItemType type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATOMIC, qname, basetype, uri);
1674 isClosedXQException();
1675 if ((basetype==XQItemType.XQBASETYPE_UNTYPED)||(basetype==XQItemType.XQBASETYPE_ANYTYPE)) {
1676 throw new XQException(
"Base Type can't be XQItemType.XQBASETYPE_UNTYPED or XQItemType.XQBASETYPE_ANYTYPE");
1678 return new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATTRIBUTE, nodename, basetype);
1726 public XQItemType
createAttributeType(QName nodename,
int basetype, QName
typename, URI schemaURI)
throws XQException {
1727 isClosedXQException();
1728 if ((basetype==XQItemType.XQBASETYPE_UNTYPED)||(basetype==XQItemType.XQBASETYPE_ANYTYPE)) {
1729 throw new XQException(
"Base Type can't be XQItemType.XQBASETYPE_UNTYPED or XQItemType.XQBASETYPE_ANYTYPE");
1731 if ((schemaURI!=null) && (
typename==null)) {
1732 throw new XQException(
"If Schema URI is specified, Base Type must be also specified");
1734 return new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ATTRIBUTE, nodename, basetype,
typename, schemaURI,
true);
1759 isClosedXQException();
1760 return new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_SCHEMA_ATTRIBUTE, nodename, basetype, uri);
1786 isClosedXQException();
1787 return new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_COMMENT);
1800 isClosedXQException();
1801 isNullXQException(elementType);
1802 if (elementType.getItemKind()!=XQItemType.XQITEMKIND_ELEMENT) {
1803 throw new XQException(
"Item Kind must be XQItemType.XQITEMKIND_ELEMENT");
1805 return new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_DOCUMENT_ELEMENT, elementType.getNodeName(), elementType.getBaseType(), elementType.getSchemaURI());
1818 isClosedXQException();
1819 if (elementType.getItemKind()!=XQItemType.XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT) {
1820 throw new XQException(
"Item Kind must be XQItemType.XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT");
1822 return new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_DOCUMENT_ELEMENT, elementType.getNodeName(), elementType.getBaseType(), elementType.getSchemaURI());
1834 isClosedXQException();
1835 return new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_DOCUMENT);
1874 isClosedXQException();
1875 XQItemType item =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ELEMENT, nodename, baseType);
1937 public XQItemType
createElementType(QName nodename,
int baseType, QName
typename, URI schemaURI,
boolean allowNill)
throws XQException {
1938 isClosedXQException();
1939 XQItemType item =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ELEMENT, nodename, baseType,
typename, schemaURI, allowNill);
1963 isClosedXQException();
1964 XQItemType item =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_SCHEMA_ELEMENT, nodename, baseType, schemaURI);
1982 isClosedXQException();
1983 XQItemType type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_ITEM);
1996 isClosedXQException();
1997 XQItemType type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_NODE);
2032 isClosedXQException();
2033 XQItemType type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_PI, piTarget);
2046 isClosedXQException();
2047 if ( ((item==null) && (occurence != XQSequenceType.OCC_EMPTY)) || ((item!=null) && (occurence == XQSequenceType.OCC_EMPTY))) {
2048 throw new XQException(
"Item is null");
2050 if (!((occurence == XQSequenceType.OCC_ZERO_OR_ONE) ||
2051 (occurence == XQSequenceType.OCC_EXACTLY_ONE) ||
2052 (occurence == XQSequenceType.OCC_ZERO_OR_MORE) ||
2053 (occurence == XQSequenceType.OCC_ONE_OR_MORE) ||
2054 (occurence == XQSequenceType.OCC_EMPTY))) {
2055 throw new XQException(
"Occurence must be from: OCC_ZERO_OR_ONE, OCC_EXACTLY_ONE, OCC_ZERO_OR_MORE, OCC_ONE_OR_MORE, OCC_EMPTY ");
2058 XQSequenceType result =
new org.zorbaxquery.api.xqj.ZorbaXQSequenceType(item, occurence);
2071 isClosedXQException();
2072 XQItemType type =
new org.zorbaxquery.api.xqj.ZorbaXQItemType(XQItemType.XQITEMKIND_TEXT);
2076 private void isClosedXQException() throws XQException {
2078 throw new XQException(
"This connection is closed");
2081 private void isNullXQException(Object value)
throws XQException {
2083 throw new XQException(
"Parameter shouldn't be null");