Skip to Content.
Sympa Menu

perfsonar-dev - [pS-dev] [GEANT/SA2/ps-java-services] r6488 - trunk/perfsonar_base/src/main/java/org/perfsonar/service /measurementArchive/metadataConfig/queryGenerator

Subject: perfsonar development work

List archive

[pS-dev] [GEANT/SA2/ps-java-services] r6488 - trunk/perfsonar_base/src/main/java/org/perfsonar/service /measurementArchive/metadataConfig/queryGenerator


Chronological Thread 
  • From:
  • To:
  • Subject: [pS-dev] [GEANT/SA2/ps-java-services] r6488 - trunk/perfsonar_base/src/main/java/org/perfsonar/service /measurementArchive/metadataConfig/queryGenerator
  • Date: Tue, 4 Feb 2014 15:15:28 +0000 (GMT)

Author: dante.delvaux
Date: 2014-02-04 15:15:28 +0000 (Tue, 04 Feb 2014)
New Revision: 6488

Modified:

trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/IperfQueryGenerator.java
Log:
SQLMA - psbase1: case insensitive match of source and destination fields when
looking for existing metadata information. Fix for PSSERVICES-702.

Modified:
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/IperfQueryGenerator.java
===================================================================
---
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/IperfQueryGenerator.java
2014-02-03 23:30:31 UTC (rev 6487)
+++
trunk/perfsonar_base/src/main/java/org/perfsonar/service/measurementArchive/metadataConfig/queryGenerator/IperfQueryGenerator.java
2014-02-04 15:15:28 UTC (rev 6488)
@@ -127,13 +127,14 @@
+ "declare namespace
iperf='http://ggf.org/ns/nmwg/tools/iperf/2.0/'; \n"
+ "declare namespace
nmwgt='http://ggf.org/ns/nmwg/topology/2.0/'; \n";

+ // We declare a functx:trim function to remove leading and trailing
spaces
xQuery += "declare namespace functx = 'http://www.functx.com'; \n"
+ "declare function functx:trim ($arg as xs:string?) as
xs:string { \n"
+ " replace(replace($arg,'\\s+$',''),'^\\s+','') \n"
+ "};\n\n";

if (src == null && dst == null && keywordParameter == null) {
- // getting all metadata
+ // No source, no destination and no keyword, we fetch all the
data
xQuery += "let $res := for $i in //nmwg:metadata \n"
+ " where \n"
+ "
$i/nmwg:parameters/nmwg:parameter[(functx:trim(text())='" + eventType + "'\n"
@@ -155,6 +156,7 @@

xQuery += "let $res := \n" + " for $i in //nmwg:metadata \n" + "
where 1 \n";

+ // Event Type
if (eventType != null) {
xQuery += " and ( ($i/nmwg:parameters/nmwg:parameter[\n"
+ " (functx:trim(text())='" + eventType +
"' and functx:trim(@name)='supportedEventType') \n"
@@ -163,44 +165,52 @@
+ keywordQueryPart;
}

+ // Source End Point
if (src != null) {
if (src.isEmpty()) {
throw new PerfSONARException("error.ma.query",
"IperfQueryGenerator.getMetadataQuery: wrong src");
}
- xQuery += " and
($i/iperf:subject/nmwgt:endPointPair/nmwgt:src[functx:trim(text())='" + src +
"'] \n"
- + " or
$i/iperf:subject/nmwgt:endPointPair/nmwgt:src[functx:trim(@value)='" + src +
"'])\n";
+ // Source End Point can be a hostname or an IPv6 address, we do
a case insensitive match
+ xQuery += " and
($i/iperf:subject/nmwgt:endPointPair/nmwgt:src[upper-case(functx:trim(text()))=upper-case('"
+ src + "')] \n"
+ + " or
$i/iperf:subject/nmwgt:endPointPair/nmwgt:src[upper-case(functx:trim(@value))=upper-case('"
+ src + "')])\n";

if (!sourceElement.getPort().trim().isEmpty()) {
xQuery += " and
$i/iperf:subject/nmwgt:endPointPair/nmwgt:src[functx:trim(@port)='"
+ sourceElement.getPort().trim() + "']\n";
}
+ // Source End Point type case insensitive match
if (!sourceElement.getType().trim().isEmpty()) {
xQuery += " and
$i/iperf:subject/nmwgt:endPointPair/nmwgt:src[upper-case(functx:trim(@type))=upper-case('"
+ sourceElement.getType().trim() + "')]\n";
}
}

+ // Destination End Point
if (dst != null) {
if (dst.isEmpty()) {
throw new PerfSONARException("error.ma.query",
"IperfQueryGenerator.getMetadataQuery: wrong src");
}
- xQuery += " and
($i/iperf:subject/nmwgt:endPointPair/nmwgt:dst[functx:trim(text())='" + dst +
"'] \n"
- + " or
$i/iperf:subject/nmwgt:endPointPair/nmwgt:dst[functx:trim(@value)='" + dst +
"'])\n";
+ // Destination End Point can be a hostname or an IPv6 address,
we do a case insensitive match
+ xQuery += " and
($i/iperf:subject/nmwgt:endPointPair/nmwgt:dst[upper-case(functx:trim(text()))=upper-case('"
+ dst + "')] \n"
+ + " or
$i/iperf:subject/nmwgt:endPointPair/nmwgt:dst[upper-case(functx:trim(@value))=upper-case('"
+ dst + "')])\n";

if (!destinationElement.getPort().trim().isEmpty()) {
xQuery += " and
$i/iperf:subject/nmwgt:endPointPair/nmwgt:dst[functx:trim(@port)='"
+ destinationElement.getPort().trim() + "']\n";
}
+ // Destination End Point type case insensitive match
if (!destinationElement.getType().trim().isEmpty()) {
xQuery += " and
$i/iperf:subject/nmwgt:endPointPair/nmwgt:dst[upper-case(functx:trim(@type))=upper-case('"
+ destinationElement.getType().trim() + "')]\n";
}
}

+ // Parameters
Set<String> keySet = iperfParametersMap.keySet();
for (String key : keySet) {
String v = iperfParametersMap.get(key);
if (!v.isEmpty()) {
+ // We use case insensitive matches on parameter names and
values
xQuery += " and
$i/iperf:parameters/nmwg:parameter[(upper-case(text())=upper-case('" + v +
"') and upper-case(@name)=upper-case('" + key + "')) \n"
+ " or (upper-case(@value)=upper-case('"
+ v + "') and upper-case(@name)=upper-case('" + key + "'))] \n";
}



  • [pS-dev] [GEANT/SA2/ps-java-services] r6488 - trunk/perfsonar_base/src/main/java/org/perfsonar/service /measurementArchive/metadataConfig/queryGenerator, svn-noreply, 02/04/2014

Archive powered by MHonArc 2.6.16.

Top of Page