perfsonar-dev - perfsonar: r5347 - in branches/new-structure-with-base2/ps-mdm-ls: contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/auxiliary contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests src/main/java/org/perfsonar/service/lookupservice src/main/java/org/perfsonar/service/lookupservice/storage src/main/java/org/perfsonar/service/lookupservice/storage/exist src/main/resources/perfsonar/conf
Subject: perfsonar development work
List archive
perfsonar: r5347 - in branches/new-structure-with-base2/ps-mdm-ls: contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/auxiliary contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests src/main/java/org/perfsonar/service/lookupservice src/main/java/org/perfsonar/service/lookupservice/storage src/main/java/org/perfsonar/service/lookupservice/storage/exist src/main/resources/perfsonar/conf
Chronological Thread
- From:
- To:
- Subject: perfsonar: r5347 - in branches/new-structure-with-base2/ps-mdm-ls: contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/auxiliary contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests src/main/java/org/perfsonar/service/lookupservice src/main/java/org/perfsonar/service/lookupservice/storage src/main/java/org/perfsonar/service/lookupservice/storage/exist src/main/resources/perfsonar/conf
- Date: Mon, 16 Nov 2009 09:31:03 -0500
Author: trzaszcz
Date: 2009-11-16 09:31:03 -0500 (Mon, 16 Nov 2009)
New Revision: 5347
Added:
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/auxiliary/MessageGenerator.py
Modified:
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/DeregistrationTest.py
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/QueryTest.py
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/RegistrationTest.py
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/EchoServiceEngine.java
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAO.java
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAOFactory.java
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/CommonExistDAOImpl.java
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/MultipleFilesExistDAOImpl.java
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryDAOSupportImpl.java
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryExistDAOImpl.java
branches/new-structure-with-base2/ps-mdm-ls/src/main/resources/perfsonar/conf/configuration.xml
Log:
refactoring
Added:
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/auxiliary/MessageGenerator.py
Modified:
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/DeregistrationTest.py
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/DeregistrationTest.py
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/DeregistrationTest.py
2009-11-16 14:31:03 UTC (rev 5347)
@@ -10,11 +10,11 @@
if __name__ == '__main__':
- f=open("../../../../inputs/LSDeregisterRequest.xml","r")
+ f=open("../../../../../inputs/LSDeregisterRequest.xml","r")
soap_template_content=f.read()
access_points=[]
-
urlPostfixes=["1","999","2","998","3","997","500","501","300","600","233","129","201","198","15","977","18","25","74","101","123","112","100","77","900","830","820","X"]
+
urlPostfixes=["1","149","2","148","3","146","145","11","78","65","100","129","141","25","15","133","18","25","74","101","123","112","100","77","49","94","17","X"]
for c in urlPostfixes :
access_points.append("http://localhost:8180/"+str(c)+"")
@@ -38,7 +38,7 @@
strResult=strResult+'%(iteration)d;%(time)f \n' %
{"iteration":t+1,"time":result_list[t]}
strResult=strResult+'avg;%(time)f \n' % {"time":(sum/len(result_list))}
- f=open("../../../results/deregistration-2-ls2-exist.txt","w")
+ f=open("../../../../../results/deregistration-2-ls2-exist.txt","w")
f.write(strResult)
print "--------------------------"
Modified:
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/QueryTest.py
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/QueryTest.py
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/QueryTest.py
2009-11-16 14:31:03 UTC (rev 5347)
@@ -10,11 +10,11 @@
if __name__ == '__main__':
- f=open("../../../../inputs/LSQueryRequest.xml","r")
+ f=open("../../../../../inputs/LSQueryRequest.xml","r")
soap_template_content=f.read()
access_points=[]
-
urlPostfixes=["1","1000","2","999","3","998","500","501","X","700","200","333","345","900","A","b","c"]
+
urlPostfixes=["1","150","2","149","3","148","68","55","X","100","81","15","47","131","A","b","c"]
for c in urlPostfixes :
access_points.append("data(/nmwg:store[@type='LSStore']/nmwg:metadata[@id='http://localhost:8180/"+str(c)+"'])")
Modified:
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/RegistrationTest.py
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/RegistrationTest.py
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests/RegistrationTest.py
2009-11-16 14:31:03 UTC (rev 5347)
@@ -10,11 +10,11 @@
if __name__ == '__main__':
- f=open("../../../../inputs/LSRegistrationRequest.xml","r")
+ f=open("../../../../../inputs/LSRegistrationRequest100.xml","r")
soap_template_content=f.read()
access_points=[]
- for c in range(1000,3000) :
+ for c in range(1,151) :
access_points.append("http://localhost:8180/"+str(c))
sender=Sender("127.0.0.1:8080")
Modified:
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/EchoServiceEngine.java
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/EchoServiceEngine.java
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/EchoServiceEngine.java
2009-11-16 14:31:03 UTC (rev 5347)
@@ -10,7 +10,7 @@
import org.perfsonar.base2.xml.nmwg.EventType;
import org.perfsonar.base2.xml.nmwg.Message;
import org.perfsonar.base2.xml.nmwg.Metadata;
-import org.perfsonar.service.lookupservice.storage.LookupServiceDAO;
+import org.perfsonar.service.lookupservice.storage.exist.CommonExistDAOImpl;
/**
* Handling EchoRequest
@@ -225,7 +225,7 @@
s = "";
try {
test = dao
-
.isDBCollection(LookupServiceDAO.LS_STORE_CONTROL_COLLECTION_TYPE); // returns
+
.isDBCollection(CommonExistDAOImpl.LS_STORE_CONTROL_COLLECTION_TYPE); //
returns
// true
// if
// so,
@@ -258,7 +258,7 @@
s = "";
try {
test = dao
-
.isDBCollection(LookupServiceDAO.LS_STORE_COLLECTION_TYPE); // returns
+
.isDBCollection(CommonExistDAOImpl.LS_STORE_COLLECTION_TYPE); // returns
// true
// if
// so,
Modified:
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAO.java
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAO.java
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAO.java
2009-11-16 14:31:03 UTC (rev 5347)
@@ -9,17 +9,6 @@
- /**
- * The name of the store collection (containing LS data/metadata
- */
- public static final String LS_STORE_COLLECTION_TYPE = "LSStore";
-
-
- /**
- * The name of the control collection of LS
- */
- public static final String LS_STORE_CONTROL_COLLECTION_TYPE =
"LSStore-control";
-
// --------------------------------------------------------- Public
methods
/**
Modified:
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAOFactory.java
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAOFactory.java
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/LookupServiceDAOFactory.java
2009-11-16 14:31:03 UTC (rev 5347)
@@ -1,10 +1,14 @@
package org.perfsonar.service.lookupservice.storage;
+import org.apache.log4j.Logger;
import org.perfsonar.base2.service.configuration.ConfigurationManager;
import org.perfsonar.base2.service.exceptions.PerfSONARException;
public class LookupServiceDAOFactory {
+
+ private static Logger
logger=Logger.getLogger(LookupServiceDAOFactory.class);
+
private static LookupServiceDAO dao = null;
private static LookupServiceDAO daoRO = null;
private static SummarizationDAO summariaztionDAO=null;
@@ -23,6 +27,7 @@
.getConfiguration().getAuxiliaryComponent(LS_DAO);
return dao;
} catch (Exception ex) {
+ logger.error(ex);
throw new PerfSONARException("no_ls_dao",
"Cannot find 'lsdao'
component");
}
@@ -39,6 +44,7 @@
.getConfiguration().getAuxiliaryComponent(LS_DAO_RO);
return daoRO;
} catch (Exception ex) {
+ logger.error(ex);
throw new PerfSONARException("no_ls_ro_dao",
"Cannot find 'lsdao-ro'
component");
}
@@ -56,6 +62,7 @@
.getConfiguration().getAuxiliaryComponent(SUMMARIZATION_DAO);
return summariaztionDAO;
} catch (Exception ex) {
+ logger.error(ex);
throw new
PerfSONARException("no_summarization_dao",
"Cannot find
'summarizationdao' component");
}
Modified:
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/CommonExistDAOImpl.java
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/CommonExistDAOImpl.java
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/CommonExistDAOImpl.java
2009-11-16 14:31:03 UTC (rev 5347)
@@ -28,6 +28,17 @@
private XMLDataStorage dataStorage;
private String dataCollection;
private DataCredential dataCredential;
+
+ /**
+ * The name of the store collection (containing LS data/metadata
+ */
+ public static final String LS_STORE_COLLECTION_TYPE = "LSStore";
+
+
+ /**
+ * The name of the control collection of LS
+ */
+ public static final String LS_STORE_CONTROL_COLLECTION_TYPE =
"LSStore-control";
public final static String DECLARE_NMWG_NAMESPACE = "declare
namespace nmwg='http://ggf.org/ns/nmwg/base/2.0/'; \n";
Modified:
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/MultipleFilesExistDAOImpl.java
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/MultipleFilesExistDAOImpl.java
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/MultipleFilesExistDAOImpl.java
2009-11-16 14:31:03 UTC (rev 5347)
@@ -11,236 +11,216 @@
import org.perfsonar.base2.xml.nmwg.Metadata;
/**
- * Implementation of LookupServiceDAO:
- * eXist HTTP connection
- * using Multiple files in separate collections: /store and /control
+ * Implementation of LookupServiceDAO: eXist HTTP connection using Multiple
+ * files in separate collections: /store and /control
*
* @author Maciej Glowiak
- * @deprecated
+ *
*/
-public class MultipleFilesExistDAOImpl extends CommonExistDAOImpl {
+public class MultipleFilesExistDAOImpl extends XQueryDAOSupportImpl{
- //
---------------------------------------------------------------constants
-
- private static final String XMLNS =
- " xmlns:nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\" " +
- " xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" " +
- "
xmlns:psservice=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/\" "
+
- " xmlns:perfsonar=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\" "+
- "
xmlns:netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\" ";
+ //
---------------------------------------------------------------constants
- private static final String LS_STORE_CONTROL_HEADER =
- "<nmwg:store " +
- XMLNS +
- "type=\"LSStore-control\">\n";
-
-
- private static final String LS_STORE_HEADER =
- "<nmwg:store " +
- XMLNS +
- "type=\"LSStore\">\n";
+ private static final String XMLNS = "
xmlns:nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\" "
+ + " xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\" "
+ + "
xmlns:psservice=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/\" "
+ + "
xmlns:perfsonar=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/\" "
+ + "
xmlns:netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\" ";
- private static final String LS_STORE_FOOTER = "\n</nmwg:store>";
+ private static final String LS_STORE_CONTROL_HEADER = "<nmwg:store "
+ + XMLNS + "type=\"LSStore-control\">\n";
- private static final String STORE_COLLECTION = "store";
+ private static final String LS_STORE_HEADER = "<nmwg:store " + XMLNS
+ + "type=\"LSStore\">\n";
- private static final String CONTROL_COLLECTION = "control";
+ private static final String LS_STORE_FOOTER = "\n</nmwg:store>";
-
- // ------------------------------------------------------instance
variables
+ private static final String STORE_COLLECTION = "store";
-
- // ------------------------------------------------------------
constructor
-
-
- public MultipleFilesExistDAOImpl() {
- super();
- }
-
-
- // --------------------------------------------------------- public
methods
-
-
- public void putLookupInfo(Metadata m, Data[] d) throws
PerfSONARException {
-
- StringBuffer sb = new StringBuffer();
- sb.append(LS_STORE_HEADER);
-
- //put metadata
-
- ElementSerializer ser = new ElementSerializer();
- ser.setStartingDocumentDeclaration(false);
- StringBufferOutputStream os = new StringBufferOutputStream(sb);
-
- //convert metadata to String
- try {
-
- //put metadata
- ser.write(os, m);
-
- //put datas
- for (int i=0; i<d.length; i++) {
- ser.write(os, d[i]);
- }
-
- } catch (Exception e) {
- throw new PerfSONARException("error/parse","Cannot serialize
elements in MulipleFilesExistDAOImpl");
- }
-
- sb.append(LS_STORE_FOOTER);
-
- System.out.println(sb.toString());
-
- //convert to md5
- String file;
- try {
- file = getStoreFile( m.getId() );
- getDataStorage().put(sb.toString(), file, getDataCredential());
- } catch (Exception e) {
- throw new PerfSONARException("error/encode","Cannot encode
metadata ID to URL");
- }
-
- }
-
- public int removeLookupInfo(String metadataId) throws PerfSONARException
{
-
- int result = 0;
- PerfSONARException pex = null;
-
- try {
- getDataStorage().delete(
- getStoreFile(metadataId), getDataCredential());
- result++;
- } catch (PerfSONARException ex) { pex=ex; }
- try {
- getDataStorage().delete(
- getControlFile(metadataId), getDataCredential());
- result++;
- } catch (PerfSONARException ex) { pex=ex; }
-
- if (result==0) throw pex; //only throw if two failed
- return result;
-
- }
+ private static final String CONTROL_COLLECTION = "control";
-
- public void setControlParameter(
- String metadataId, String parameter, String value)
- throws PerfSONARException {
- //TODO: now all parameters are replaced (whole file), should be
fixed!!!
- StringBuffer doc = new StringBuffer();
- doc.append(LS_STORE_CONTROL_HEADER);
- doc.append("<nmwg:metadata id='"+metadataId+"'>");
- doc.append("<nmwg:parameters id='control-parameters'>");
- doc.append("<nmwg:parameter name='"+parameter+"'
value='"+value+"'/>");
- doc.append("</nmwg:parameters>");
- doc.append("</nmwg:metadata>");
- doc.append(LS_STORE_FOOTER);
- getDataStorage().put(
- doc.toString(),
- getControlFile(metadataId),
- getDataCredential());
- }
+ // ------------------------------------------------------instance
variables
- public void removeControlParameter(
- String metadataId, String parameter) throws PerfSONARException {
- //TODO: now all parameters are removed (whole file), should be
fixed!!!
- removeAllControlParameters(metadataId);
- }
-
- protected void removeAllControlParameters(String metadataId)
- throws PerfSONARException {
- //TODO: to be changed - each parameter in separate file
- getDataStorage().delete(
- getControlFile(metadataId),
- getDataCredential());
- }
-
-
- public int cleanupLookupInfo(
- long timestamp, long defaultInterval) throws PerfSONARException {
-
- String xquery =
- DECLARE_NMWG_NAMESPACE +
-
- "let $now:="+timestamp+"\n" +
- "let $interval:="+defaultInterval+"\n" +
- //to be changed - get interval from parameter
-
- "for $meta in
/nmwg:store[@type='LSStore-control']/nmwg:metadata
\n" +
- " let $ts :=
data($meta/nmwg:parameters/nmwg:parameter[@name='timestamp']/@value)
cast as xs:integer\n" +
- " let $metaid := data($meta/@id)\n "+
- " where $ts + $interval < $now\n" +
- "return $metaid\n";
-
- XMLDBResult res = getDataStorage().performXQuery(
- xquery, getDataCollection(), getDataCredential());
-
- for (Element e : res.getResults()) {
- String metadataId = e.getText();
- removeLookupInfo(metadataId);
- removeAllControlParameters(metadataId);
- }
-
- return -1;
- }
+ // ------------------------------------------------------------
constructor
- // ----------------------------------------------------------------
private
-
-
- public String md5(String text) throws Exception
- {
- MessageDigest md = null;
- md = MessageDigest.getInstance("MD5");
- md.update(text.getBytes());
- byte messageDigest[] = md.digest();
- StringBuffer hexString = new StringBuffer();
+ public MultipleFilesExistDAOImpl() {
+ super();
+ }
- for (int i = 0; i < messageDigest.length; i++)
- {
- String hex = Integer.toHexString(0xFF & messageDigest[i]);
- if (hex.length() == 1)
- {
- hexString.append('0');
- }
- hexString.append(hex);
- }
- String md5val = hexString.toString();
- return md5val;
- }
-
- private String getStoreFile(String id) {
- try {
- String file = getDataCollection()+"/"+STORE_COLLECTION+"/"+
- md5(id)+".xml";
- return file;
- } catch (Exception ex) {
- return null;
- }
-
- }
+ // --------------------------------------------------------- public
methods
- private String getControlFile(String id /*, String parameter*/) {
- try {
- String file =
getDataCollection()+"/"+CONTROL_COLLECTION+"/"+md5(id)+
- /*"-"+parameter+*/ //if each parameter has unique filename
- ".xml";
- return file;
- } catch (Exception ex) {
- return null;
- }
- }
+ public void putLookupInfo(Metadata m, Data[] d) throws
PerfSONARException {
+ StringBuffer sb = new StringBuffer();
+ sb.append(LS_STORE_HEADER);
- public void putSummaryData(Metadata m) throws PerfSONARException {
- throw new RuntimeException("Not implemented");
-
+ // put metadata
+
+ ElementSerializer ser = new ElementSerializer();
+ ser.setStartingDocumentDeclaration(false);
+ StringBufferOutputStream os = new
StringBufferOutputStream(sb);
+
+ // convert metadata to String
+ try {
+
+ // put metadata
+ ser.write(os, m);
+
+ // put datas
+ for (int i = 0; i < d.length; i++) {
+ ser.write(os, d[i]);
+ }
+
+ } catch (Exception e) {
+ throw new PerfSONARException("error/parse",
+ "Cannot serialize elements in
MulipleFilesExistDAOImpl");
+ }
+
+ sb.append(LS_STORE_FOOTER);
+
+ // System.out.println(sb.toString());
+
+ // convert to md5
+ String file;
+ try {
+ file = getStoreFile(m.getId());
+ getDataStorage().put(sb.toString(), file,
getDataCredential());
+ } catch (Exception e) {
+ throw new PerfSONARException("error/encode",
+ "Cannot encode metadata ID to URL");
+ }
+
}
+ public int removeLookupInfo(String metadataId) throws
PerfSONARException {
- public void removeSummaryData() throws PerfSONARException {
- throw new RuntimeException("Not implemented");
-
+ int result = 0;
+ PerfSONARException pex = null;
+
+ try {
+ getDataStorage().delete(getStoreFile(metadataId),
+ getDataCredential());
+ result++;
+ } catch (PerfSONARException ex) {
+ pex = ex;
+ }
+ try {
+ getDataStorage().delete(getControlFile(metadataId),
+ getDataCredential());
+ result++;
+ } catch (PerfSONARException ex) {
+ pex = ex;
+ }
+
+ if (result == 0)
+ throw pex; // only throw if two failed
+ return result;
+
}
-} //MultipleFilesExistDAOImpl
+ public void setControlParameter(String metadataId, String parameter,
+ String value) throws PerfSONARException {
+ // TODO: now all parameters are replaced (whole file), should
be
+ // fixed!!!
+ StringBuffer doc = new StringBuffer();
+ doc.append(LS_STORE_CONTROL_HEADER);
+ doc.append("<nmwg:metadata id='" + metadataId + "'>");
+ doc.append("<nmwg:parameters id='control-parameters'>");
+ doc.append("<nmwg:parameter name='" + parameter + "' value='"
+ value
+ + "'/>");
+ doc.append("</nmwg:parameters>");
+ doc.append("</nmwg:metadata>");
+ doc.append(LS_STORE_FOOTER);
+ getDataStorage().put(doc.toString(),
getControlFile(metadataId),
+ getDataCredential());
+ }
+
+ public void removeControlParameter(String metadataId, String
parameter)
+ throws PerfSONARException {
+ // TODO: now all parameters are removed (whole file), should
be fixed!!!
+ removeAllControlParameters(metadataId);
+ }
+
+ protected void removeAllControlParameters(String metadataId)
+ throws PerfSONARException {
+ // TODO: to be changed - each parameter in separate file
+ getDataStorage()
+ .delete(getControlFile(metadataId),
getDataCredential());
+ }
+
+ public int cleanupLookupInfo(long timestamp, long defaultInterval)
+ throws PerfSONARException {
+
+ String xquery = DECLARE_NMWG_NAMESPACE
+ +
+
+ "let $now:="
+ + timestamp
+ + "\n"
+ + "let $interval:="
+ + defaultInterval
+ + "\n"
+ +
+ // to be changed - get interval from parameter
+
+ "for $meta in
/nmwg:store[@type='LSStore-control']/nmwg:metadata
\n"
+ + " let $ts :=
data($meta/nmwg:parameters/nmwg:parameter[@name='timestamp']/@value)
cast as xs:integer\n"
+ + " let $metaid := data($meta/@id)\n "
+ + " where $ts + $interval < $now\n" +
"return $metaid\n";
+
+ XMLDBResult res = getDataStorage().performXQuery(xquery,
+ getDataCollection(), getDataCredential());
+
+ for (Element e : res.getResults()) {
+ String metadataId = e.getText();
+ removeLookupInfo(metadataId);
+ removeAllControlParameters(metadataId);
+ }
+
+ return -1;
+ }
+
+ // ----------------------------------------------------------------
private
+
+ private String md5(String text) throws Exception {
+ MessageDigest md = null;
+ md = MessageDigest.getInstance("MD5");
+ md.update(text.getBytes());
+ byte messageDigest[] = md.digest();
+ StringBuffer hexString = new StringBuffer();
+
+ for (int i = 0; i < messageDigest.length; i++) {
+ String hex = Integer.toHexString(0xFF &
messageDigest[i]);
+ if (hex.length() == 1) {
+ hexString.append('0');
+ }
+ hexString.append(hex);
+ }
+ String md5val = hexString.toString();
+ return md5val;
+ }
+
+ private String getStoreFile(String id) {
+ try {
+ String file = getDataCollection() + "/" +
STORE_COLLECTION + "/"
+ + md5(id) + ".xml";
+ return file;
+ } catch (Exception ex) {
+ return null;
+ }
+
+ }
+
+ private String getControlFile(String id /* , String parameter */) {
+ try {
+ String file = getDataCollection() + "/" +
CONTROL_COLLECTION + "/"
+ + md5(id) +
+ /* "-"+parameter+ */// if each
parameter has unique filename
+ ".xml";
+ return file;
+ } catch (Exception ex) {
+ return null;
+ }
+ }
+
+}
Modified:
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryDAOSupportImpl.java
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryDAOSupportImpl.java
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryDAOSupportImpl.java
2009-11-16 14:31:03 UTC (rev 5347)
@@ -2,11 +2,12 @@
import org.perfsonar.base2.service.exceptions.PerfSONARException;
import org.perfsonar.base2.service.storage.xml.XMLDBResult;
+import org.perfsonar.service.lookupservice.storage.LookupServiceDAO;
import org.perfsonar.service.lookupservice.storage.XQueryDAOSupport;
-public class XQueryDAOSupportImpl extends CommonExistDAOImpl implements
- XQueryDAOSupport {
-
+public abstract class XQueryDAOSupportImpl extends CommonExistDAOImpl
implements
+ XQueryDAOSupport,LookupServiceDAO {
+
public XMLDBResult performXQuery(String xquery) throws
PerfSONARException {
XMLDBResult res = getDataStorage().performXQuery(xquery,
@@ -32,5 +33,36 @@
return true;
}
+
+ /**
+ * Returns pair of numbers separated by space: "#M #D" where #M is
number of
+ * metadata blocks with specific metadataId, #D is number of related
data
+ * blocks (metadataIdRef=metadataId)
+ *
+ * @param metadataId
+ * @return
+ * @throws PerfSONARException
+ */
+ private String countLookupInfo(String metadataId) throws
PerfSONARException {
+ String xquery = DECLARE_NMWG_NAMESPACE + "concat("
+ +
"count(/nmwg:store[@type='"
+ LS_STORE_COLLECTION_TYPE
+ +
"']/nmwg:metadata[@id='"
+ metadataId + "']), " + "' ', "
+ +
"count(/nmwg:store[@type='"
+ LS_STORE_COLLECTION_TYPE
+ +
"']/nmwg:data[@metadataIdRef='"
+ metadataId + "']))";
+
+ // remove by xquery
+ XMLDBResult res = performXQuery(xquery);
+
+ // return "M D" where M is count(metadata), D is count(data)
+ return res.getFirstElement().getText();
+
+ }
+
+ public boolean isLookupInfo(String metadataId) throws
PerfSONARException {
+
+ String result = countLookupInfo(metadataId);
+ return !("0 0".equals(result));
+ }
+
}
Modified:
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryExistDAOImpl.java
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryExistDAOImpl.java
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/src/main/java/org/perfsonar/service/lookupservice/storage/exist/XQueryExistDAOImpl.java
2009-11-16 14:31:03 UTC (rev 5347)
@@ -6,7 +6,6 @@
import org.perfsonar.base2.xml.StringBufferOutputStream;
import org.perfsonar.base2.xml.nmwg.Data;
import org.perfsonar.base2.xml.nmwg.Metadata;
-import org.perfsonar.service.lookupservice.storage.LookupServiceDAO;
/**
* Implementation of LookupServiceDAO: eXist HTTP connection using XQuery for
@@ -16,7 +15,7 @@
* @author Maciej Glowiak
*
*/
-public class XQueryExistDAOImpl extends XQueryDAOSupportImpl implements
LookupServiceDAO {
+public class XQueryExistDAOImpl extends XQueryDAOSupportImpl{
//
---------------------------------------------------------------constants
@@ -221,36 +220,4 @@
+
"']/nmwg:data[@metadataIdRef='"
+ metadataId + "']" + ")";
}
- /**
- * Returns pair of numbers separated by space: "#M #D" where #M is
number of
- * metadata blocks with specific metadataId, #D is number of related
data
- * blocks (metadataIdRef=metadataId)
- *
- * @param metadataId
- * @return
- * @throws PerfSONARException
- */
- public String countLookupInfo(String metadataId) throws
PerfSONARException {
-
- String xquery = DECLARE_NMWG_NAMESPACE + "concat("
- +
"count(/nmwg:store[@type='"
+ LS_STORE_COLLECTION_TYPE
- +
"']/nmwg:metadata[@id='"
+ metadataId + "']), " + "' ', "
- +
"count(/nmwg:store[@type='"
+ LS_STORE_COLLECTION_TYPE
- +
"']/nmwg:data[@metadataIdRef='"
+ metadataId + "']))";
-
- // remove by xquery
- XMLDBResult res = performXQuery(xquery);
-
- // return "M D" where M is count(metadata), D is count(data)
- return res.getFirstElement().getText();
-
- }
-
- public boolean isLookupInfo(String metadataId) throws
PerfSONARException {
-
- String result = countLookupInfo(metadataId);
- return !("0 0".equals(result));
-
- }
-
}
Modified:
branches/new-structure-with-base2/ps-mdm-ls/src/main/resources/perfsonar/conf/configuration.xml
===================================================================
---
branches/new-structure-with-base2/ps-mdm-ls/src/main/resources/perfsonar/conf/configuration.xml
2009-11-12 12:55:25 UTC (rev 5346)
+++
branches/new-structure-with-base2/ps-mdm-ls/src/main/resources/perfsonar/conf/configuration.xml
2009-11-16 14:31:03 UTC (rev 5347)
@@ -96,13 +96,13 @@
<!-- Lookup Service DAO -->
<component name="lsdao"
-
className="org.perfsonar.service.lookupservice.storage.exist.XQueryExistDAOImpl">
+
className="org.perfsonar.service.lookupservice.storage.exist.MultipleFilesExistDAOImpl">
<option name="exist-config" value="exist"/> <!-- reference to eXist
DB XML config-->
</component>
<!-- Lookup Service DAO with read-only permission. It is used in
LSQueryRequest -->
<component name="lsdao-ro"
-
className="org.perfsonar.service.lookupservice.storage.exist.XQueryExistDAOImpl">
+
className="org.perfsonar.service.lookupservice.storage.exist.MultipleFilesExistDAOImpl">
<option name="exist-config" value="exist-ro"/> <!-- reference to
eXist DB XML config-->
</component>
- perfsonar: r5347 - in branches/new-structure-with-base2/ps-mdm-ls: contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/auxiliary contrib/SOAPRequestAuxilary/src/pl/psnc/trzaszczka/functionalTests src/main/java/org/perfsonar/service/lookupservice src/main/java/org/perfsonar/service/lookupservice/storage src/main/java/org/perfsonar/service/lookupservice/storage/exist src/main/resources/perfsonar/conf, svnlog, 11/16/2009
Archive powered by MHonArc 2.6.16.