perfsonar-dev - perfsonar: r3982 - trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator
Subject: perfsonar development work
List archive
perfsonar: r3982 - trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator
Chronological Thread
- From:
- To:
- Subject: perfsonar: r3982 - trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator
- Date: Tue, 10 Jun 2008 09:49:39 -0400
Author: roman
Date: 2008-06-10 09:49:39 -0400 (Tue, 10 Jun 2008)
New Revision: 3982
Modified:
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/L2PathStatusQueryGenerator.java
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/L2PathStatusQueryGeneratorTMP.java
Log:
Updated to support queries with the parameter 'keyword':
<nmwg:message type="MetadataKeyRequest"
xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
<nmwg:metadata id="meta1">
<nmwg:eventType>Path.Status</nmwg:eventType>
<nmwg:parameters>
<nmwg:parameter name="keyword"
type="project">http://geant2.net</nmwg:parameter>
</nmwg:parameters>
</nmwg:metadata>
<nmwg:data id="data1" metadataIdRef="meta1"/>
</nmwg:message>
This example request allows fetching all link metadata elements that belong
to geant2 project.
Modified:
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/L2PathStatusQueryGenerator.java
===================================================================
---
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/L2PathStatusQueryGenerator.java
2008-06-10 11:28:43 UTC (rev 3981)
+++
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/L2PathStatusQueryGenerator.java
2008-06-10 13:49:39 UTC (rev 3982)
@@ -8,6 +8,7 @@
import org.ggf.ns.nmwg.base.v2_0.Message;
import org.ggf.ns.nmwg.base.v2_0.Metadata;
import org.ggf.ns.nmwg.base.v2_0.Subject;
+import org.ggf.ns.nmwg.base.v2_0.Parameter;
import org.ggf.ns.nmwg.topology.base.v3_0.Node;
import org.ggf.ns.nmwg.topology.l2.v3_0.Link;
import org.perfsonar.base.auxiliary.AuxiliaryComponentManager;
@@ -104,6 +105,19 @@
Subject subject = (Subject) metadata.getSubject();
+ Parameter keywordParameter = metadata.getParameterByName("keyword");
+ String keywordQueryPart = "";
+ if (keywordParameter != null) {
+
+ String keyword = keywordParameter.getParameterValue();
+ String keywordType = keywordParameter.getParameterType();
+
+ if (!keyword.trim().equals("") && !keywordType.trim().equals(""))
+ keywordQueryPart = " and
$k/nmwg:parameters/nmwg:parameter[(functx:trim(text())='"+ keyword +"' and
functx:trim(@name)='keyword' and functx:trim(@type)='" + keywordType + "') or
(functx:trim(@value)='" + keyword + "' and functx:trim(@name)='keyword' and
functx:trim(@type)='" + keywordType + "')] \n";
+ else if (!keyword.trim().equals("") &&
keywordType.trim().equals(""))
+ keywordQueryPart = " and
$k/nmwg:parameters/nmwg:parameter[(functx:trim(text())='"+ keyword +"' and
functx:trim(@name)='keyword') or (functx:trim(@value)='" + keyword + "' and
functx:trim(@name)='keyword')] \n";
+ }
+
// situation when only eventType is provided in the request
if (subject == null) {
@@ -115,10 +129,11 @@
+ "
\n"
+ " let $linkMetadata :=
\n"
+ " for $k in //nmwg:metadata
\n"
- + " where
$k/nmwg:eventType[functx:trim(text())='http://ggf.org/ns/nmwg/topology/l2/3.0/link/status']
\n"
+ + " where
($k/nmwg:eventType[functx:trim(text())='http://ggf.org/ns/nmwg/topology/l2/3.0/link/status']
\n"
+ " or
\n"
- + "
$k/nmwg:parameters/nmwg:parameter[(functx:trim(text())='http://ggf.org/ns/nmwg/topology/l2/3.0/link/status'
and functx:trim(@name)='supportedEventType') \n"
- + " or
(functx:trim(@value)='http://ggf.org/ns/nmwg/topology/l2/3.0/link/status' and
functx:trim(@name)='supportedEventType')] \n"
+ + "
$k/nmwg:parameters/nmwg:parameter[(functx:trim(text())='http://ggf.org/ns/nmwg/topology/l2/3.0/link/status'
and functx:trim(@name)='supportedEventType') \n"
+ + " or
(functx:trim(@value)='http://ggf.org/ns/nmwg/topology/l2/3.0/link/status' and
functx:trim(@name)='supportedEventType')]) \n"
+ + keywordQueryPart
+ " return $k
\n"
+ "
\n"
+ " let $metaids :=
\n"
@@ -133,7 +148,9 @@
+ " return $l
\n"
+ " return $d
\n"
+ "
\n"
- + " return ($nodeMetadata, $linkMetadata, $datas)
\n";
+ + " return if ($linkMetadata != '')
\n"
+ + " then ($nodeMetadata, $linkMetadata, $datas)
\n"
+ + " else ''
";
xQuery = ns + xQuery;
Modified:
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/L2PathStatusQueryGeneratorTMP.java
===================================================================
---
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/L2PathStatusQueryGeneratorTMP.java
2008-06-10 11:28:43 UTC (rev 3981)
+++
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/L2PathStatusQueryGeneratorTMP.java
2008-06-10 13:49:39 UTC (rev 3982)
@@ -8,6 +8,7 @@
import org.ggf.ns.nmwg.base.v2_0.Message;
import org.ggf.ns.nmwg.base.v2_0.Metadata;
import org.ggf.ns.nmwg.base.v2_0.Subject;
+import org.ggf.ns.nmwg.base.v2_0.Parameter;
import org.ggf.ns.nmwg.topology.base.v3_0.Node;
import org.ggf.ns.nmwg.topology.l2.v3_0.Link;
import org.perfsonar.base.auxiliary.AuxiliaryComponentManager;
@@ -107,6 +108,19 @@
Subject subject = (Subject) metadata.getSubject();
+ Parameter keywordParameter = metadata.getParameterByName("keyword");
+ String keywordQueryPart = "";
+ if (keywordParameter != null) {
+
+ String keyword = keywordParameter.getParameterValue();
+ String keywordType = keywordParameter.getParameterType();
+
+ if (!keyword.trim().equals("") && !keywordType.trim().equals(""))
+ keywordQueryPart = " and
$k/nmwg:parameters/nmwg:parameter[(functx:trim(text())='"+ keyword +"' and
functx:trim(@name)='keyword' and functx:trim(@type)='" + keywordType + "') or
(functx:trim(@value)='" + keyword + "' and functx:trim(@name)='keyword' and
functx:trim(@type)='" + keywordType + "')] \n";
+ else if (!keyword.trim().equals("") &&
keywordType.trim().equals(""))
+ keywordQueryPart = " and
$k/nmwg:parameters/nmwg:parameter[(functx:trim(text())='"+ keyword +"' and
functx:trim(@name)='keyword') or (functx:trim(@value)='" + keyword + "' and
functx:trim(@name)='keyword')] \n";
+ }
+
// situation when only eventType is provided in the request
if (subject == null) {
@@ -118,10 +132,11 @@
+ "
\n"
+ " let $linkMetadata :=
\n"
+ " for $k in //nmwg:metadata
\n"
- + " where
$k/nmwg:eventType[functx:trim(text())='Path.Status']
\n"
+ + " where
($k/nmwg:eventType[functx:trim(text())='Path.Status']
\n"
+ " or
\n"
- + "
$k/nmwg:parameters/nmwg:parameter[(functx:trim(text())='Path.Status' and
functx:trim(@name)='supportedEventType') \n"
- + " or
(functx:trim(@value)='Path.Status' and
functx:trim(@name)='supportedEventType')] \n"
+ + "
$k/nmwg:parameters/nmwg:parameter[(functx:trim(text())='Path.Status' and
functx:trim(@name)='supportedEventType') \n"
+ + " or
(functx:trim(@value)='Path.Status' and
functx:trim(@name)='supportedEventType')]) \n"
+ + keywordQueryPart
+ " return $k
\n"
+ "
\n"
+ " let $metaids :=
\n"
@@ -136,8 +151,11 @@
+ " return $l
\n"
+ " return $d
\n"
+ "
\n"
- + " return ($nodeMetadata, $linkMetadata, $datas)
\n";
+ + " return if ($linkMetadata != '')
\n"
+ + " then ($nodeMetadata, $linkMetadata, $datas)
\n"
+ + " else ''
";
+
xQuery = ns + xQuery;
//logger.debug(
- perfsonar: r3982 - trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator, svnlog, 06/10/2008
Archive powered by MHonArc 2.6.16.