|
From: <pm_...@us...> - 2012-03-12 13:50:46
|
Revision: 4536
http://mxquery.svn.sourceforge.net/mxquery/?rev=4536&view=rev
Author: pm_fischer
Date: 2012-03-12 13:50:36 +0000 (Mon, 12 Mar 2012)
Log Message:
-----------
-Dataflow analysis - node IDs for collection, document-uri()
Modified Paths:
--------------
trunk/MXQuery/src/ch/ethz/mxquery/contextConfig/Context.java
trunk/MXQuery/src/ch/ethz/mxquery/functions/fn/Collection.java
trunk/MXQuery/src/ch/ethz/mxquery/functions/fn/DocumentUri.java
trunk/MXQuery/src/ch/ethz/mxquery/update/store/llImpl/LLStoreSet.java
trunk/MXQuery/src/ch/ethz/mxquery/xdmio/XDMInputFactory.java
trunk/MXQuery/src/ch/ethz/mxquery/xdmio/xmlAdapters/XDMImportAdapter.java
Modified: trunk/MXQuery/src/ch/ethz/mxquery/contextConfig/Context.java
===================================================================
--- trunk/MXQuery/src/ch/ethz/mxquery/contextConfig/Context.java 2012-03-12 08:47:44 UTC (rev 4535)
+++ trunk/MXQuery/src/ch/ethz/mxquery/contextConfig/Context.java 2012-03-12 13:50:36 UTC (rev 4536)
@@ -186,7 +186,7 @@
public static final int NONVALIDATED_INPUT_MODE_DOM = 3;
public static final int NONVALIDATED_INPUT_MODE_SAX_TIDY = 4;
public static final int NONVALIDATED_INPUT_MODE_STAX_PROJECTION = 5;
- //public static final int NONVALIDATED_INPUT_MODE_STAX_DUMMY = 6;
+ public static final int NONVALIDATED_INPUT_MODE_STAX_DUMMY = 6;
public static final int NO_VALIDATION = 0;
public static final int IGNORE_DTD = 1;
Modified: trunk/MXQuery/src/ch/ethz/mxquery/functions/fn/Collection.java
===================================================================
--- trunk/MXQuery/src/ch/ethz/mxquery/functions/fn/Collection.java 2012-03-12 08:47:44 UTC (rev 4535)
+++ trunk/MXQuery/src/ch/ethz/mxquery/functions/fn/Collection.java 2012-03-12 13:50:36 UTC (rev 4536)
@@ -26,15 +26,17 @@
import ch.ethz.mxquery.exceptions.ErrorCodes;
import ch.ethz.mxquery.exceptions.MXQueryException;
import ch.ethz.mxquery.model.CurrentBasedIterator;
+import ch.ethz.mxquery.model.DataflowAnalysis;
import ch.ethz.mxquery.model.XDMIterator;
public class Collection extends CurrentBasedIterator {
protected XDMIterator copy(Context context, XDMIterator[] subIters, Vector nestedPredCtxStack)
throws MXQueryException {
- XDMIterator copy = new Collection();
+ Collection copy = new Collection();
copy.setContext(context, true);
copy.setSubIters(subIters);
+ copy.requiredAccess = requiredAccess;
return copy;
}
private int index = -1;
@@ -50,6 +52,8 @@
defaultCollection = true;
else {
XDMIterator it = subIters[0];
+ if ((requiredAccess & DataflowAnalysis.NODEID_ORDER)!=0)
+ it = it.require(DataflowAnalysis.NODEID_ORDER);
tok = it.next();
}
if (defaultCollection || tok == Token.END_SEQUENCE_TOKEN ) {
Modified: trunk/MXQuery/src/ch/ethz/mxquery/functions/fn/DocumentUri.java
===================================================================
--- trunk/MXQuery/src/ch/ethz/mxquery/functions/fn/DocumentUri.java 2012-03-12 08:47:44 UTC (rev 4535)
+++ trunk/MXQuery/src/ch/ethz/mxquery/functions/fn/DocumentUri.java 2012-03-12 13:50:36 UTC (rev 4536)
@@ -25,6 +25,7 @@
import ch.ethz.mxquery.datamodel.xdm.Token;
import ch.ethz.mxquery.datamodel.xdm.TokenInterface;
import ch.ethz.mxquery.exceptions.MXQueryException;
+import ch.ethz.mxquery.model.DataflowAnalysis;
import ch.ethz.mxquery.model.TokenBasedIterator;
import ch.ethz.mxquery.model.XDMIterator;
@@ -59,5 +60,9 @@
public TypeInfo getStaticType() {
return new TypeInfo(Type.ANY_URI,Type.OCCURRENCE_IND_ZERO_OR_ONE);
}
-
+
+ public XDMIterator require(int requiredOptions) throws MXQueryException {
+ // Could relax to any NODE_*
+ return super.require(requiredOptions | DataflowAnalysis.NODEID_ORDER);
+ }
}
Modified: trunk/MXQuery/src/ch/ethz/mxquery/update/store/llImpl/LLStoreSet.java
===================================================================
--- trunk/MXQuery/src/ch/ethz/mxquery/update/store/llImpl/LLStoreSet.java 2012-03-12 08:47:44 UTC (rev 4535)
+++ trunk/MXQuery/src/ch/ethz/mxquery/update/store/llImpl/LLStoreSet.java 2012-03-12 13:50:36 UTC (rev 4536)
@@ -144,6 +144,10 @@
this.stores.put(uri, ftBuf);
return ftBuf;
}
+
+ if ((requiredStorageOptions & DataflowAnalysis.NODEID_ORDER) != 0)
+ initialDataIterator = initialDataIterator.require(DataflowAnalysis.NODEID_ORDER);
+
// Streaming Store
WindowBuffer strBuf = new WindowBuffer(initialDataIterator,false, 0,10000,false);
this.stores.put(uri, strBuf);
Modified: trunk/MXQuery/src/ch/ethz/mxquery/xdmio/XDMInputFactory.java
===================================================================
--- trunk/MXQuery/src/ch/ethz/mxquery/xdmio/XDMInputFactory.java 2012-03-12 08:47:44 UTC (rev 4535)
+++ trunk/MXQuery/src/ch/ethz/mxquery/xdmio/XDMInputFactory.java 2012-03-12 13:50:36 UTC (rev 4536)
@@ -46,6 +46,7 @@
import ch.ethz.mxquery.xdmio.xmlAdapters.NonSchemaValidatingSaxImportAdapter;
import ch.ethz.mxquery.xdmio.xmlAdapters.NonValidatingDOMAdapter;
import ch.ethz.mxquery.xdmio.xmlAdapters.NonValidatingStaxAdapter;
+import ch.ethz.mxquery.xdmio.xmlAdapters.NonValidatingStaxAdapterDummy;
import ch.ethz.mxquery.xdmio.xmlAdapters.NonValidatingStaxAdapterProjection;
import ch.ethz.mxquery.xdmio.xmlAdapters.ValidatedSaxImportAdapter;
import ch.ethz.mxquery.xdmio.xmlAdapters.XPPImportAdapter;
@@ -183,9 +184,23 @@
XMLStreamReader reader = factory.createXMLStreamReader(new StreamSource(new File(uri)));
return new NonValidatingStaxAdapter(ctx,location,reader);
} catch (XMLStreamException e) {
- throw new MXQueryException(ErrorCodes.A0007_EC_IO,"I/O Error while parsing",location);
+ throw new MXQueryException(ErrorCodes.A0007_EC_IO,"I/O Error while parsing: "+e.toString(),location);
}
}
+ case Context.NONVALIDATED_INPUT_MODE_STAX_DUMMY: {
+ XMLInputFactory factory = XMLInputFactory.newInstance();
+ if (valMode == Context.NO_VALIDATION || valMode == Context.IGNORE_DTD)
+ factory.setProperty("javax.xml.stream.supportDTD", Boolean.FALSE);
+ else
+ factory.setProperty("javax.xml.stream.supportDTD", Boolean.TRUE);
+ try {
+ XMLStreamReader reader = factory.createXMLStreamReader(new StreamSource(new File(uri)));
+ return new NonValidatingStaxAdapterDummy(ctx,location,reader);
+ } catch (XMLStreamException e) {
+ throw new MXQueryException(ErrorCodes.A0007_EC_IO,"I/O Error while parsing: "+e.toString(),location);
+ }
+ }
+
case Context.NONVALIDATED_INPUT_MODE_STAX_PROJECTION: {
XMLInputFactory factory = XMLInputFactory.newInstance();
if (valMode == Context.NO_VALIDATION || valMode == Context.IGNORE_DTD)
Modified: trunk/MXQuery/src/ch/ethz/mxquery/xdmio/xmlAdapters/XDMImportAdapter.java
===================================================================
--- trunk/MXQuery/src/ch/ethz/mxquery/xdmio/xmlAdapters/XDMImportAdapter.java 2012-03-12 08:47:44 UTC (rev 4535)
+++ trunk/MXQuery/src/ch/ethz/mxquery/xdmio/xmlAdapters/XDMImportAdapter.java 2012-03-12 13:50:36 UTC (rev 4536)
@@ -312,7 +312,7 @@
public XDMIterator require(int requiredOptions) throws MXQueryException {
if ((requiredOptions & DataflowAnalysis.NODEID_ORDER) != 0)
generateNodeIds = true;
- return super.require(requiredOptions);
+ return this;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|