Revision: 198
Author:
uisurumad...@gmail.com
Date: Wed Aug 29 01:53:59 2012
Log: orient db features added
http://code.google.com/a/apache-extras.org/p/metcat/source/detail?r=198
Added:
/trunk/metcatserver/src/main/java/org/apache/airavata/metcat/dataproduct/OrientDBRelationshipFinder.java
Modified:
/trunk/metcatserver/src/main/java/org/apache/airavata/metcat/dataproduct/IndexedRelationshipFinder.java
/trunk/metcatserver/src/main/java/org/apache/airavata/metcat/dataproduct/IndexingProducedThread.java
=======================================
--- /dev/null
+++
/trunk/metcatserver/src/main/java/org/apache/airavata/metcat/dataproduct/OrientDBRelationshipFinder.java
Wed Aug 29 01:53:59 2012
@@ -0,0 +1,75 @@
+package org.apache.airavata.metcat.dataproduct;
+
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.airavata.metcat.db.OrientGraphDataModel;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+
+import com.orientechnologies.orient.core.db.graph.OGraphDatabase;
+import com.orientechnologies.orient.core.record.impl.ODocument;
+import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
+
+public class OrientDBRelationshipFinder extends AbstractRelationshipFinder
{
+
+ private final Logger logger =
LogManager.getLogger(OrientDBRelationshipFinder.class);
+
+ private OrientGraphDataModel model = null;
+ private OGraphDatabase graph = null;
+
+ public OrientDBRelationshipFinder() {
+ try {
+ model = OrientGraphDataModel.getInstance();
+ graph = model.getGraphDatabase();
+ } catch (Exception ex) {
+ logger.debug(" [OrientDB] Connection error!", ex);
+ }
+ }
+
+ @Override
+ public boolean isDataProductsRelated(String dp1, String dp2) throws
Exception {
+ return this.isDataProductsRelated(dp1, dp2, 0);
+ }
+
+ @Override
+ public boolean isDataProductsRelated(String dp1, String dp2, int
depthLimit) throws Exception {
+ if (model == null) {
+ throw new Exception(" [OrientDB] OrientDB connection is not established
correctly!");
+ }
+
+ String fromVtx = model.getVertexRID(dp1);
+ String sqlquery = "select from ( traverse E.out, V.in from " + fromVtx +
+ (depthLimit > 0 ? " where $depth <= " + (depthLimit * 2) : "") +
+ ") where id = '" + dp2 + "'";
+
logger.info(" [OrientDB] Executed query: " + sqlquery);
+ List<ODocument> result = graph.query(new
OSQLSynchQuery<ODocument>(sqlquery));
+ if (result != null && result.size() > 0) return true;
+ return false;
+ }
+
+ @Override
+ public Set<String> getAllAncestors(String dp, int depth) throws Exception
{
+ if (model == null) {
+ throw new Exception(" [OrientDB] OrientDB connection is not established
correctly!");
+ }
+
+ String fromVtx = model.getVertexRID(dp);
+ String sqlquery = "select from ( traverse E.out, V.in from " + fromVtx +
+ (depth > 0 ? " where $depth <= " + (depth * 2) : "") +
+ ") where id = '" + dp + "'";
+
logger.info(" [OrientDB] Executed query: " + sqlquery);
+ List<ODocument> result = graph.query(new
OSQLSynchQuery<ODocument>(sqlquery));
+ Set<String> set = new LinkedHashSet<String>();
+ if (result != null && result.size() > 0) {
+ for (ODocument vtx : result) {
+ if (vtx.field("id") != null) {
+ set.add(vtx.field("id").toString());
+ }
+ }
+ }
+ return set;
+ }
+
+}
=======================================
---
/trunk/metcatserver/src/main/java/org/apache/airavata/metcat/dataproduct/IndexedRelationshipFinder.java
Tue Aug 28 19:44:54 2012
+++
/trunk/metcatserver/src/main/java/org/apache/airavata/metcat/dataproduct/IndexedRelationshipFinder.java
Wed Aug 29 01:53:59 2012
@@ -45,7 +45,7 @@
private final Logger logger =
LogManager.getLogger(IndexedRelationshipFinder.class);
- private static final int MAX_DEPTH_LIMIT = 10;
+ private static final int MAX_DEPTH_LIMIT = 12;
private DataModelImpl dimpl = ModelCreator.datamodelImpl;
private String startdp = null;
@@ -84,6 +84,7 @@
logger.debug(" From: " + startdp + " [start-time: " + timerange[0]
+ "]");
logger.debug(" To: " + enddp + " [start-time: " + timerange[1] + "]");
+ this.ancestors.clear();
return this.recursivelyFind(startdp, 0);
}
@@ -100,6 +101,7 @@
if (dps.containsKey(this.enddp)) return true;
for (String dp : dps.keySet()) {
+ this.ancestors.add(dp);
if (this.recursivelyFind(dp, cdepth + 1)) return true;
}
@@ -139,9 +141,9 @@
if (datap == null) return;
for (String dp : datap.keySet()) {
- this.ancestors.add(dp);
-
- this.findAncestors(dp, cdepth + 1);
+ if (this.ancestors.add(dp)) {
+ this.findAncestors(dp, cdepth + 1);
+ }
}
} catch (Exception ex) {
@@ -149,4 +151,7 @@
}
}
+ public Set<String> getAncestors() {
+ return ancestors;
+ }
}
=======================================
---
/trunk/metcatserver/src/main/java/org/apache/airavata/metcat/dataproduct/IndexingProducedThread.java
Tue Aug 28 19:44:54 2012
+++
/trunk/metcatserver/src/main/java/org/apache/airavata/metcat/dataproduct/IndexingProducedThread.java
Wed Aug 29 01:53:59 2012
@@ -68,6 +68,7 @@
Map<String, String> items =
this.dimpl.getValuesInSingleRow(ModelConfig.KEYSPACE,
ModelConfig.DATAPRODUCT_BYWORKFLOW_COLUMN_FAMILY, workflowID +
DataModel.PART_DELIMETER + "consumed");
if (items == null || items.size() == 0) {
+ logger.debug("No consumed message is received yet. Thread will sleep
for a while.");
Thread.sleep(THREAD_SLEEP_INTERVAL);
continue;
}