summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/lifecycle/routingHelpers/ViewpointDataHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'source/com/c2kernel/lifecycle/routingHelpers/ViewpointDataHelper.java')
-rwxr-xr-xsource/com/c2kernel/lifecycle/routingHelpers/ViewpointDataHelper.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/source/com/c2kernel/lifecycle/routingHelpers/ViewpointDataHelper.java b/source/com/c2kernel/lifecycle/routingHelpers/ViewpointDataHelper.java
new file mode 100755
index 0000000..754bd8f
--- /dev/null
+++ b/source/com/c2kernel/lifecycle/routingHelpers/ViewpointDataHelper.java
@@ -0,0 +1,79 @@
+package com.c2kernel.lifecycle.routingHelpers;
+
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.entity.proxy.ItemProxy;
+import com.c2kernel.lookup.EntityPath;
+import com.c2kernel.persistency.ClusterStorage;
+import com.c2kernel.persistency.outcome.Outcome;
+import com.c2kernel.persistency.outcome.Viewpoint;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.utils.XmlElementParser;
+
+/**
+ * @author XSeb74
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+public class ViewpointDataHelper
+{
+ static Object[] errArr = { "" };
+ /**
+ * Method get.
+ * @param value
+ * @return String[]
+ * @throws Exception
+ */
+ /**@param value : EntityPath:ActivityPath:XPathInOutcome*/
+ public static Object [] get(String value) throws Exception
+ {
+ //Syntax of search : <EntityPath>/<ViewpointPath>:<XPathinOutcome>
+ String entityPath;
+ String viewpoint;
+ String xpath;
+ Object[] retArr;
+
+ // find syskey, viewname, xpath
+ int firstSlash = value.indexOf("/");
+ if (firstSlash > 0) {
+ entityPath = value.substring(0, firstSlash);
+ int startXPath = value.indexOf(":");
+ if (startXPath==-1) {
+ viewpoint = value.substring(firstSlash + 1);
+ xpath = null;
+ } else {
+ viewpoint = value.substring(firstSlash + 1, startXPath);
+ xpath = value.substring(startXPath+1);
+ }
+ }
+ else return errArr;
+
+ // find entity
+ EntityPath sourcePath;
+ try
+ {
+ sourcePath = new EntityPath(Integer.parseInt(entityPath));
+ } catch (Exception e) {
+ sourcePath = new EntityPath(entityPath);
+ }
+
+ try {
+ // load viewpoint
+ ItemProxy dataSource = (ItemProxy)Gateway.getProxyManager().getProxy(sourcePath);
+ Viewpoint view = (Viewpoint)dataSource.getObject(ClusterStorage.VIEWPOINT + "/" + viewpoint);
+ Outcome outcome = view.getOutcome();
+ if (xpath == null) {
+ retArr = new Object[1];
+ retArr[0] = outcome;
+ }
+ else
+ retArr = XmlElementParser.parse(outcome.getData(), xpath);
+ return retArr;
+
+ } catch (ObjectNotFoundException e) {
+ return errArr;
+ }
+ }
+}