perfsonar-dev - [pS-dev] [GEANT/SA2/ps-java-services] r5831 - trunk/perfsonar-java-rrd-sql-ma/src/main/java/org/perfsona r/service/measurementArchive/rrdType
Subject: perfsonar development work
List archive
[pS-dev] [GEANT/SA2/ps-java-services] r5831 - trunk/perfsonar-java-rrd-sql-ma/src/main/java/org/perfsona r/service/measurementArchive/rrdType
Chronological Thread
- From:
- To:
- Subject: [pS-dev] [GEANT/SA2/ps-java-services] r5831 - trunk/perfsonar-java-rrd-sql-ma/src/main/java/org/perfsona r/service/measurementArchive/rrdType
- Date: Thu, 1 Sep 2011 11:11:55 +0100
Author: psnc.pikusa
Date: 2011-09-01 11:11:55 +0100 (Thu, 01 Sep 2011)
New Revision: 5831
Modified:
trunk/perfsonar-java-rrd-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/rrdType/SetupDataServiceEngine.java
Log:
New methods to service setupDataRequest using SQL db
Modified:
trunk/perfsonar-java-rrd-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/rrdType/SetupDataServiceEngine.java
===================================================================
---
trunk/perfsonar-java-rrd-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/rrdType/SetupDataServiceEngine.java
2011-09-01 08:40:53 UTC (rev 5830)
+++
trunk/perfsonar-java-rrd-sql-ma/src/main/java/org/perfsonar/service/measurementArchive/rrdType/SetupDataServiceEngine.java
2011-09-01 10:11:55 UTC (rev 5831)
@@ -18,6 +18,7 @@
import
org.perfsonar.service.measurementArchive.rrdType.storage.MetadataStorageDAOFactory;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
@@ -45,9 +46,15 @@
// process the base chaining
// request = messageProcess(request);
+ Message request = (Message)serviceRequest.getElement();
+ HashMap<Metadata, Data> pairs = getMetadataDataPairs(request);
+
+
+
+ /*TEMP: IMPORTANT EVERYTHING WHAT IS BELOW IS OLD CODE. The new code
is up*/
+
+ Message response = new Message();
DataStorageDAO dao = DataStorageDAOFactory.getDAO();
- Message response = new Message();
-
getRequestKey(serviceRequest, serviceResponse);
Message keyMessage = (Message) serviceResponse.getElement();
@@ -79,10 +86,73 @@
}
serviceResponse.setElement(response);
+
+ }
+
+ /**
+ * It pairs metadata and data from one message and put the pairs into
the HashMap. Because chaining is not supported, then
+ * if metadata and data counters are different it throws exception
+ * @param message
+ * @return
+ * @throws PerfSONARException when metadata counter doesn't match to
data counter
+ */
+ protected HashMap<Metadata, Data> getMetadataDataPairs(Message message)
throws PerfSONARException{
+ HashMap<Metadata, Data> pairs = new HashMap<Metadata, Data>();
+ int dataCounter = 0;
+ int metadataCounter = 0;
+
+ //This searching is O(n^2) but for most cases it will be fast because
of few pairs in request (most often only one)
+ for (Data data : message.getDataMap().values()) {
+ dataCounter++;
+ metadataCounter = 0;
+ for (Metadata metadata : message.getMetadataMap().values()) {
+ metadataCounter++;
+
if(data.getMetadataIdRef().toString().trim().equals(metadata.getId().toString().trim())){
+ pairs.put(metadata, data);
+ }
+ }
+ }
+
+ if(metadataCounter != dataCounter) throw new
PerfSONARException("wrong_message","metadata and data counter doesn't match");
+
+ return pairs;
}
+
+
+ /**
+ * It cheks metadata if it includes the full key. If it does, then there
is no query to SQL database, what saves time. It returns
+ * the map with metadata, data pairs, where metadatas doesn't include
the full key
+ * @param pairs
+ * @return
+ */
+ protected HashMap<Metadata, Data> checkMetadata(HashMap<Metadata, Data>
pairs) throws PerfSONARException{
+
+ HashMap<Metadata, Data> _pairs = new HashMap<Metadata, Data>();
+
+ for (Metadata metadata : pairs.keySet()) {
+ if (metadata.getKey() != null){
+
if(metadata.getKey().getParameters("http://ggf.org/ns/nmwg/base/2.0/") !=
null){
+
if(metadata.getKey().getParameters("http://ggf.org/ns/nmwg/base/2.0/").getFirstParameterValue("file")
== null){
+ _pairs.put(metadata,
(Data)pairs.get(metadata));
+ continue;
+ }
+ }else{
+ _pairs.put(metadata, (Data)pairs.get(metadata));
+ continue;
+ }
+ }else{
+ _pairs.put(metadata, (Data)pairs.get(metadata));
+ continue;
+ }
+ }
+
+
+ return pairs;
+
+ }
+
-
protected void getRequestKey(ServiceMessage serviceRequest,
ServiceMessage serviceResponse)
throws PerfSONARException {
@@ -95,6 +165,9 @@
throw new PerfSONARException(
"query_exception",
"no data trigger");
+
+
+
Map metadataMap = request.getMetadataMap();
Metadata metadata = (Metadata)
metadataMap.get(data.getMetadataIdRef());
- [pS-dev] [GEANT/SA2/ps-java-services] r5831 - trunk/perfsonar-java-rrd-sql-ma/src/main/java/org/perfsona r/service/measurementArchive/rrdType, svn-noreply, 09/01/2011
Archive powered by MHonArc 2.6.16.