perfsonar-dev - r1502 - in trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager: . queryGenerator
Subject: perfsonar development work
List archive
r1502 - in trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager: . queryGenerator
Chronological Thread
- From:
- To:
- Subject: r1502 - in trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager: . queryGenerator
- Date: Tue, 1 Aug 2006 07:38:30 -0400
Author: roman
Date: 2006-08-01 07:38:30 -0400 (Tue, 01 Aug 2006)
New Revision: 1502
Modified:
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/MetadataConfigurationStorageManager.java
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/SimpleMetadataConfigurationStorageManager.java
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/queryGenerator/L2PathStatusQueryGenerator.java
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/queryGenerator/UtilizationQueryGenerator.java
Log:
- saxon library is used to perform xpath/xquery on text xml file (metadata
configuration file)
- some small changes
Modified:
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/MetadataConfigurationStorageManager.java
===================================================================
---
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/MetadataConfigurationStorageManager.java
2006-08-01 11:36:05 UTC (rev 1501)
+++
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/MetadataConfigurationStorageManager.java
2006-08-01 11:38:30 UTC (rev 1502)
@@ -121,15 +121,6 @@
String query = transformations.getMetadataQuery(dataQuery);
- // this is required for eXist!
- query = ""
- + " declare namespace
nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\";
\n "
- + " declare namespace
nmtl2=\"http://ggf.org/ns/nmwg/topology/l2/3.0/\";
\n "
- + " declare namespace
nmwgtopo3=\"http://ggf.org/ns/nmwg/topology/base/3.0/\";"
- + " declare namespace
nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\";"
- + " declare namespace
netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\";"
- + "\n"
- + query;
//logger.debug("MetadataConfigurationStorageManager.fetch: "
// + "metadata query: "
@@ -359,8 +350,8 @@
if (id != null) {
if (id.trim() != "") {
- xpathQuery = ""
- + "declare namespace
nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\"; \n "
+ xpathQuery =
+ "declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n "
+
"/nmwg:store/nmwg:data[@metadataIdRef='"
+ id + "']";
}
}
Modified:
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/SimpleMetadataConfigurationStorageManager.java
===================================================================
---
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/SimpleMetadataConfigurationStorageManager.java
2006-08-01 11:36:05 UTC (rev 1501)
+++
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/SimpleMetadataConfigurationStorageManager.java
2006-08-01 11:38:30 UTC (rev 1502)
@@ -25,33 +25,29 @@
import org.ggf.ns.nmwg.base.v2_0.Key;
import org.ggf.ns.nmwg.base.v2_0.Parameter;
-import org.apache.xpath.domapi.XPathEvaluatorImpl;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.xpath.XPathEvaluator;
-import org.w3c.dom.xpath.XPathNSResolver;
-import org.w3c.dom.xpath.XPathResult;
-
-import javax.xml.transform.Transformer;
import javax.xml.transform.OutputKeys;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import java.io.File;
import java.io.OutputStreamWriter;
-import java.io.FileInputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.util.Map;
import java.util.Collection;
+import java.util.Properties;
-import javax.xml.XMLConstants;
-import javax.xml.namespace.NamespaceContext;
+import net.sf.saxon.Configuration;
+import net.sf.saxon.om.NodeInfo;
+import net.sf.saxon.om.DocumentInfo;
+import net.sf.saxon.om.SequenceIterator;
+import net.sf.saxon.query.DynamicQueryContext;
+import net.sf.saxon.query.QueryResult;
+import net.sf.saxon.query.StaticQueryContext;
+import net.sf.saxon.query.XQueryExpression;
+import net.sf.saxon.trans.XPathException;
-import org.xml.sax.InputSource;
-import javax.xml.parsers.DocumentBuilderFactory;
/**
@@ -73,7 +69,7 @@
*/
private String xmlFile = null;
- private static Document metaConfigDoc = null;
+ private static DocumentInfo metaConfigDoc = null;
protected LoggerComponent logger = null;
@@ -161,82 +157,98 @@
// "SimpleMetadataConfigurationStorageManager.fetch: "
// +"metadata query: " + query);
- try {
- XPathResult result = getXPathResults(query);
+ Configuration saxonConfig = new Configuration();
+
+ SequenceIterator elements = getQueryResult(query, saxonConfig);
- Transformer serializer =
TransformerFactory.newInstance().newTransformer();
- serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
"yes");
+ Properties props = new Properties();
+ props.setProperty(OutputKeys.METHOD, "xml");
+ props.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ props.setProperty(OutputKeys.INDENT, "yes");
- Node n = null;
- while ((n = result.iterateNext())!= null) {
- StringBuffer outputBuffer = new StringBuffer();
- OutputStream sbos = new
StringBufferOutputStream(outputBuffer);
+ try {
+ while (true) {
- if (isTextNode(n)) {
- // do nothing
- } else {
- serializer.transform(
- new DOMSource(n), new StreamResult(new
OutputStreamWriter(sbos)));
+ NodeInfo element = (NodeInfo)elements.next();
+ if (element == null) break;
- String output = "<nmwg:message
xmlns=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\" "
- +
"xmlns:perfsonar=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\" "
- +
"xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" "
- +
"xmlns:nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\" "
- +
"xmlns:nmwgtopo=\"http://ggf.org/ns/nmwg/topology/2.0/\" "
- +
"xmlns:select=\"http://ggf.org/ns/nmwg/ops/select/2.0/\" "
- +
"xmlns:netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\" "
- + ">\n"
- + outputBuffer.toString()
- + "\n</nmwg:message>";
+ StringBuffer outputBuffer = new
StringBuffer();
+ OutputStream sbos = new
StringBufferOutputStream(outputBuffer);
- String[] tagNames = {"metadata"};
- Map metadatas =
- transformations.transformResults(output, tagNames);
+ QueryResult.serialize(
+ element,
+ new StreamResult(new
OutputStreamWriter(sbos)),
+ props,
+ saxonConfig);
-
logger.debug("SimpleMetadataConfigurationStorageManager.fetch: "
- + "number of metadata elements fetched from "
- + "the metadata configuration: " +
metadatas.size());
- Collection<Metadata> collection = metadatas.values();
- for (Metadata md : collection) {
+ String output = "<nmwg:message
xmlns=\"http://ggf.org/ns/nmwg/base/2.0/\" "
+ +
"xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" "
+ + ">\n"
+ + outputBuffer.toString()
+ + "\n</nmwg:message>";
- message.addChild(md);
- Data data = getData(md.getId());
- if (data == null) continue;
- message.addChild(data);
+
//logger.debug("SimpleMetadataConfigurationStorageManager.fetch: output: "
+ // + output);
- }
+ String[] tagNames = {"metadata"};
+ Map metadatas =
+
transformations.transformResults(output, tagNames);
- }
+
logger.debug("SimpleMetadataConfigurationStorageManager.fetch: "
+ + "number of metadata
elements fetched from "
+ + "the metadata
configuration: " + metadatas.size());
- outputBuffer = null;
- sbos.close();
- sbos = null;
+ Collection<Metadata> collection =
metadatas.values();
+ for (Metadata md : collection) {
- }
+ message.addChild(md);
+ Data data = getData(md.getId());
+ if (data == null) continue;
+ message.addChild(data);
- if (message.getMetadataMap().size() == 0)
+ }
+
+ outputBuffer = null;
+ sbos.close();
+ sbos = null;
+
+ }
+
+ if (message.getMetadataMap().size() == 0)
throw new SystemException(
"warning.ma.metadata_configuration",
"SimpleMetadataConfigurationStorageManager.fetch: "
+ "No metadata in rrd metadata configuration file");
-
- } catch (Exception xpex) {
- logger.error(
+ } catch (XPathException xpex) {
+
+ logger.error(
"SimpleMetadataConfigurationStorageManager.fetch: "
- + "Unable to complete fetch action; "
+ + "Unable to complete xquery/xpath query; "
+ xpex.toString());
throw new SystemException(
"error.ma.fetching",
"SimpleMetadataConfigurationStorageManager.fetch: "
- + "Unable to complete fetch action; "
+ + "Unable to complete xquery/xpath query; "
+ xpex.toString());
- }
+
+ } catch (IOException ioex) {
+ logger.error(
+ "SimpleMetadataConfigurationStorageManager.fetch: "
+ + "Unable to complete fetch operation; "
+ + ioex.toString());
+ throw new SystemException(
+ "error.ma.fetching",
+ "SimpleMetadataConfigurationStorageManager.fetch: "
+ + "Unable to complete fetch operation; "
+ + ioex.toString());
+
+ }
return message;
@@ -247,7 +259,7 @@
throws SystemException, RequestException, DataFormatException {
// This method is not implemented in
SimpleMetadataConfigurationStorageManager
- // class. If you have this functionality you must take
RRDConfigurationStorageManager
+ // class. If you want this functionality you must take
RRDConfigurationStorageManager
// and configure xml db (eXist).
throw new SystemException(
@@ -260,45 +272,57 @@
}
- public Document getMetaConfigDocument() throws Exception {
+ public DocumentInfo getMetaConfigDoc(StaticQueryContext staticContext)
+ throws Exception {
//logger.debug(
- //
"SimpleMetadataConfigurationStorageManager.getMetaConfigDocument: "
+ //
"SimpleMetadataConfigurationStorageManager.getDocumentInfo: "
// + "metaConfigDoc is " + metaConfigDoc);
if (metaConfigDoc != null)
return metaConfigDoc;
- InputSource in = new InputSource(new FileInputStream(this.xmlFile));
-
- DocumentBuilderFactory dfactory =
DocumentBuilderFactory.newInstance();
- dfactory.setNamespaceAware(true);
- metaConfigDoc = dfactory.newDocumentBuilder().parse(in);
-
+ metaConfigDoc =
+ staticContext.buildDocument(
+ new StreamSource(
+ new File(this.xmlFile)));
+
+
return metaConfigDoc;
}
- public XPathResult getXPathResults(String query)
- throws Exception {
+ public SequenceIterator getQueryResult(
+ String query, Configuration saxonConfig) throws
SystemException {
+
+ StaticQueryContext staticContext = new
StaticQueryContext(saxonConfig);
+ SequenceIterator elements = null;
+
+ try {
+
+ XQueryExpression exp = staticContext.compileQuery(query);
- Document doc = getMetaConfigDocument();
+ DynamicQueryContext dynamicContext = new
DynamicQueryContext(saxonConfig);
+
dynamicContext.setContextItem(getMetaConfigDoc(staticContext));
+ elements = exp.iterator(dynamicContext);
+
+ } catch (Exception ex) {
- XPathEvaluator evaluator = new XPathEvaluatorImpl(doc);
- XPathNSResolver resolver = evaluator.createNSResolver(doc);
+ logger.error(
+
"SimpleMetadataConfigurationStorageManager.getQueryResult: "
+ + "Unable to complete xquery/xpath query; "
+ + ex.toString());
+ throw new SystemException(
+ "error.ma.fetching",
+
"SimpleMetadataConfigurationStorageManager.getQueryResult: "
+ + "Unable to complete xquery/xpath query; "
+ + ex.toString());
- XPathResult result = (XPathResult)
- evaluator.evaluate(
- query,
- doc,
- resolver,
- XPathResult.UNORDERED_NODE_ITERATOR_TYPE,
- null
- );
+ }
- return result;
-
+ return elements;
+
}
@@ -310,81 +334,81 @@
/**
* Returns Data object based on id of referenced metadata.
*/
- private Data getData(String id)
- throws SystemException, RequestException, DataFormatException {
+ private Data getData(String id) throws SystemException{
- String xpathQuery = "";
+ String query = "";
if (id != null) {
if (id.trim() != "") {
- xpathQuery =
"//nmwg:data[@metadataIdRef='"
+ id + "']";
+ query = "declare namespace
nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n"
+ +
"//nmwg:data[@metadataIdRef='"
+ id + "']";
}
}
//logger.debug(
// "SimpleMetadataConfigurationStorageManager.getData: "
- // + "data query: " + xpathQuery);
+ // + "data query: " + query);
try {
+
+ Configuration saxonConfig = new Configuration();
+
+ SequenceIterator elements = getQueryResult(query, saxonConfig);
+
+ Properties props = new Properties();
+ props.setProperty(OutputKeys.METHOD, "xml");
+ props.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ props.setProperty(OutputKeys.INDENT, "yes");
- XPathResult result = getXPathResults(xpathQuery);
+
- Transformer serializer =
TransformerFactory.newInstance().newTransformer();
- serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
"yes");
+ while (true) {
- Node n;
- while ((n = result.iterateNext())!= null) {
+ NodeInfo element = (NodeInfo)elements.next();
+ if (element == null) break;
- StringBuffer outputBuffer = new StringBuffer();
- OutputStream sbos = new
StringBufferOutputStream(outputBuffer);
+ StringBuffer outputBuffer = new StringBuffer();
+ OutputStream sbos = new
StringBufferOutputStream(outputBuffer);
+ QueryResult.serialize(
+ element,
+ new StreamResult(new
OutputStreamWriter(sbos)),
+ props,
+ saxonConfig);
- if (isTextNode(n)) {
- // do nothing
- } else {
- serializer.transform(
- new DOMSource(n), new StreamResult(new
OutputStreamWriter(sbos)));
- String output = "<nmwg:message
xmlns=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\" "
- +
"xmlns:perfsonar=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\" "
- +
"xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" "
- +
"xmlns:nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\" "
- +
"xmlns:nmwgtopo=\"http://ggf.org/ns/nmwg/topology/2.0/\" "
- +
"xmlns:select=\"http://ggf.org/ns/nmwg/ops/select/2.0/\" "
- +
"xmlns:netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\" "
- + ">\n"
- + outputBuffer.toString()
- + "\n</nmwg:message>";
+ String output = "<nmwg:message
xmlns=\"http://ggf.org/ns/nmwg/base/2.0/\" "
+ + "xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" "
+ + ">\n"
+ + outputBuffer.toString()
+ + "\n</nmwg:message>";
- Data data = null;
- String[] tagNames = {"data"};
- Map datas = transformations.transformResults(output,
tagNames);
+ Data data = null;
-
logger.debug("SimpleMetadataConfigurationStorageManager.getData: "
- + "number of data elements fetched
from "
- + "the metadata configuration: " +
datas.size());
+ String[] tagNames = {"data"};
+ Map datas = transformations.transformResults(output,
tagNames);
- Collection<Data> collection = datas.values();
- for (Data d : collection) {
- data = d;
- break;
- }
+
logger.debug("SimpleMetadataConfigurationStorageManager.getData: "
+ + "number of data elements fetched from "
+ + "the metadata configuration: " +
datas.size());
-
- outputBuffer = null;
- sbos.close();
- sbos = null;
-
- return data;
-
+ Collection<Data> collection = datas.values();
+ for (Data d : collection) {
+ data = d;
+ break;
}
-
+
outputBuffer = null;
sbos.close();
sbos = null;
- }
+ return data;
+
+
+ }
+
+
} catch (Exception ex) {
logger.error(
"SimpleMetadataConfigurationStorageManager.getData: "
@@ -402,22 +426,7 @@
}
- /**
- * Decide if the node is text, and so must be handled specially
- */
- private boolean isTextNode(Node n) {
- if (n == null)
- return false;
-
- short nodeType = n.getNodeType();
-
- return nodeType == Node.CDATA_SECTION_NODE || nodeType ==
Node.TEXT_NODE;
-
- }
-
-
-
// ------------------------------------ inner classes
Modified:
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/queryGenerator/L2PathStatusQueryGenerator.java
===================================================================
---
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/queryGenerator/L2PathStatusQueryGenerator.java
2006-08-01 11:36:05 UTC (rev 1501)
+++
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/queryGenerator/L2PathStatusQueryGenerator.java
2006-08-01 11:38:30 UTC (rev 1502)
@@ -95,15 +95,20 @@
+ ex.toString());
}
- String xpathQuery = "";
+ String xQuery = "";
+ String ns =
+ "declare namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/';
\n"
+ + "declare namespace
nmwgtopo3='http://ggf.org/ns/nmwg/topology/base/3.0/'; \n"
+ + "declare namespace
nmtl2='http://ggf.org/ns/nmwg/topology/l2/3.0/'; \n\n";
+
Subject subject = (Subject) metadata.getSubject();
// situation when only eventType is provided in the request
if (subject == null) {
- xpathQuery =
+ xQuery =
" let $nodeMetadata :=
\n"
+ " for $i in //nmwg:metadata
\n"
+ " where $i/nmwg:subject/nmwgtopo3:node
\n"
@@ -117,15 +122,17 @@
+ "
\n"
+ " return ($nodeMetadata, $linkMetadata)
\n";
+ xQuery = ns + xQuery;
+
//logger.debug(
// "L2PathStatusQueryGenerator.getMetadataQuery: "
// + "meta xpath/xquery query: "
- // + xpathQuery);
+ // + xQuery);
- return xpathQuery;
+ return xQuery;
}
-
+
Link link = (Link) subject.getChildrenByType("link").get(0);
@@ -139,7 +146,7 @@
if (linkGlobalName != "") {
- xpathQuery = ""
+ xQuery = ""
+ "
\n "
+ " let $globalName := '" + linkGlobalName + "'
\n "
+ "
\n "
@@ -239,7 +246,7 @@
+ " ''
\n";
- xpathQuery = "
\n "
+ xQuery = "
\n "
+ "
\n "
+ node1
+ node2
@@ -276,17 +283,17 @@
}
+ xQuery = ns + xQuery;
//logger.debug(
// "L2PathStatusQueryGenerator.getMetadataQuery: "
// + "meta xpath/xquery query: "
- // + xpathQuery);
+ // + xQuery);
+ return xQuery;
- return xpathQuery;
-
}
Modified:
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/queryGenerator/UtilizationQueryGenerator.java
===================================================================
---
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/queryGenerator/UtilizationQueryGenerator.java
2006-08-01 11:36:05 UTC (rev 1501)
+++
trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager/queryGenerator/UtilizationQueryGenerator.java
2006-08-01 11:38:30 UTC (rev 1502)
@@ -134,53 +134,55 @@
}
- String xpathQuery = "";
+ String xQuery =
+ "declare namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/'; "
+ + "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; \n\n";
if (eventType != "")
- xpathQuery += "//nmwg:parameters/nmwg:parameter[(text()='" +
eventType + "' and @name='supportedEventType') "
+ xQuery += "//nmwg:parameters/nmwg:parameter[(text()='" +
eventType + "' and @name='supportedEventType') "
+ "or (@value='" +
eventType + "' and @name='supportedEventType')]/parent::*/parent::*";
if (ipAddress != "")
- xpathQuery += "//nmwgt:ipAddress[text()='" + ipAddress +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:ipAddress[text()='" + ipAddress +
"']/parent::*/parent::*/parent::*";
if (hostName != "")
- xpathQuery += "//nmwgt:hostName[text()='" + hostName +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:hostName[text()='" + hostName +
"']/parent::*/parent::*/parent::*";
if (ifName != "")
- xpathQuery += "//nmwgt:ifName[text()='" + ifName +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:ifName[text()='" + ifName +
"']/parent::*/parent::*/parent::*";
if (ifDescription != "")
- xpathQuery += "//nmwgt:ifDescription[text()='" + ifDescription +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:ifDescription[text()='" + ifDescription +
"']/parent::*/parent::*/parent::*";
if (ifAddress != "")
- xpathQuery += "//nmwgt:ifAddress[text()='" + ifAddress +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:ifAddress[text()='" + ifAddress +
"']/parent::*/parent::*/parent::*";
if (ifIndex != "")
- xpathQuery += "//nmwgt:ifIndex[text()='" + ifIndex +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:ifIndex[text()='" + ifIndex +
"']/parent::*/parent::*/parent::*";
if (type != "")
- xpathQuery += "//nmwgt:type[text()='" + type +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:type[text()='" + type +
"']/parent::*/parent::*/parent::*";
if (direction != "")
- xpathQuery += "//nmwgt:direction[text()='" + direction +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:direction[text()='" + direction +
"']/parent::*/parent::*/parent::*";
if (authRealm != "")
- xpathQuery += "//nmwgt:authRealm[text()='" + authRealm +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:authRealm[text()='" + authRealm +
"']/parent::*/parent::*/parent::*";
if (classOfService != "")
- xpathQuery += "//nmwgt:classOfService[text()='" + classOfService
+ "']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:classOfService[text()='" + classOfService +
"']/parent::*/parent::*/parent::*";
if (capacity != "")
- xpathQuery += "//nmwgt:capacity[text()='" + capacity +
"']/parent::*/parent::*/parent::*";
+ xQuery += "//nmwgt:capacity[text()='" + capacity +
"']/parent::*/parent::*/parent::*";
//logger.debug(
// +"UtilizationQueryGenerator.getMetadataQuery: "
// + "meta query: "
- // + xpathQuery);
+ // + xQuery);
- return xpathQuery;
+ return xQuery;
}
- r1502 - in trunk/perfsonar/src/org/perfsonar/service/measurementArchive/storageManager: . queryGenerator, svnlog, 08/01/2006
Archive powered by MHonArc 2.6.16.