]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.simulation/src/org/simantics/simulation/export/CSVItemsQuery.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.simulation / src / org / simantics / simulation / export / CSVItemsQuery.java
index 86bd1a80b4970a9d8b80d54c4c6cf9e0cf982be4..a39f2e736087b08bc94f81bad8199eaae2f3ec76 100644 (file)
-package org.simantics.simulation.export;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.Databoard;\r
-import org.simantics.databoard.accessor.reference.ChildReference;\r
-import org.simantics.databoard.accessor.reference.IndexReference;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ObjectsWithType;\r
-import org.simantics.db.common.request.PossibleObjectWithType;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.request.PossibleModel;\r
-import org.simantics.db.layer0.variable.RVI;\r
-import org.simantics.db.layer0.variable.Variable;\r
-import org.simantics.db.layer0.variable.Variables;\r
-import org.simantics.db.request.Read;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.modeling.ModelingResources;\r
-import org.simantics.utils.datastructures.Pair;\r
-\r
-/**\r
- * This query finds CSV item datas\r
- *\r
- * @author toni.kalajainen@semantum.fi\r
- */\r
-public class CSVItemsQuery implements Read<List<CSVItemsQuery.CSVItem>> {\r
-       \r
-       String contentUri;\r
-       \r
-       /**\r
-        * Create query using content uris.\r
-        * \r
-        * Label format, use ""\r
-        * \r
-        * @param contentUris uri to Chart or Subscription\r
-        */\r
-       public CSVItemsQuery(String contentUri) {\r
-               this.contentUri = contentUri;\r
-       }\r
-       \r
-       @Override\r
-       public List<CSVItem> perform(ReadGraph graph) throws DatabaseException {\r
-               List<CSVItem> result = new ArrayList<CSVItem>();\r
-               Resource resource = graph.getResource(contentUri);\r
-               \r
-               Layer0 L0 = Layer0.getInstance(graph);\r
-               ModelingResources MOD = ModelingResources.getInstance(graph);  \r
-               \r
-               List<Resource> subscriptionItems = new ArrayList<Resource>();\r
-               \r
-               if ( graph.isInstanceOf(resource, MOD.Subscription ) ) {\r
-                       subscriptionItems.addAll( graph.syncRequest( new ObjectsWithType(resource, L0.ConsistsOf, MOD.Subscription_Item) ) );\r
-               } else {\r
-                       // This is probably Chart. This plugin doesn't have dependency to Chart plugin\r
-                       // We can follow HasSubscriptionItem relation anyway.\r
-                       for (Resource possibleItem : graph.getObjects( resource, L0.ConsistsOf )) {\r
-                               subscriptionItems.addAll( graph.syncRequest( new ObjectsWithType(possibleItem, L0.IsRelatedTo, MOD.Subscription_Item) ));\r
-                       }\r
-               }\r
-               \r
-               for ( Resource subscriptionItem : subscriptionItems ) {\r
-                       Resource model = graph.syncRequest( new PossibleModel(subscriptionItem) );\r
-                       Resource subscription = graph.syncRequest( new PossibleObjectWithType(subscriptionItem, L0.PartOf, MOD.Subscription) );\r
-                       if (subscription == null) continue;\r
-                       Variable configuration = Variables.getPossibleConfigurationContext(graph, subscription);\r
-                       if (configuration == null) continue;\r
-                       CSVItem item = new CSVItem();\r
-                       if ( model != null) item.modelUri = graph.getURI( model );\r
-                               \r
-                       Binding rviBinding = graph.getService(Databoard.class).getBindingUnchecked( RVI.class );\r
-            RVI rvi = graph.getPossibleRelatedValue(subscriptionItem, MOD.Subscription_Item_VariableId, rviBinding);\r
-            if (rvi == null) continue;                     \r
-                       \r
-//            Resource experiment = graph.syncRequest(new PossibleExperiment(subscriptionItem));\r
-//            String runIdentifier = ""; // experiment.getIdentifier();\r
-                       \r
-                       item.variableReference = rvi.toPossibleString(graph, configuration);\r
-            if (item.variableReference == null) continue;\r
-\r
-               item.label = removeVariablePrefixPath( item.variableReference );                                \r
-               item.unit = graph.getPossibleRelatedValue( subscriptionItem, MOD.Subscription_Item_Unit, Bindings.STRING );\r
-               result.add( item );\r
-               }\r
-                               \r
-               return result;\r
-       }\r
-       \r
-    static String removeVariablePrefixPath(String rvi) {\r
-        // Apros-specific logics:\r
-        //   1. remove path prefix\r
-        //   2. change IndexReferences (i-N) into "(N+1)" Apros-style indexing\r
-        int propIndex = rvi.indexOf('#');\r
-        if (propIndex == -1)\r
-            return rvi;\r
-        int prevSlash = rvi.lastIndexOf('/', propIndex);\r
-        if (prevSlash == -1)\r
-            return rvi;\r
-        Pair<String, Integer> attrKey = attributeKey(rvi, propIndex + 1);\r
-        return rvi.substring(prevSlash + 1, propIndex + 1) + attrKey.first\r
-                + (attrKey.second != null ? "(" + (attrKey.second + 1) + ")" : "");\r
-    }\r
-       \r
-    static Pair<String, Integer> attributeKey(String key, int start) {\r
-        int iy = key.lastIndexOf('/');\r
-        boolean isIndexed = iy >= start;\r
-        if (isIndexed) {\r
-            ChildReference child = ChildReference.parsePath(key.substring(iy + 1));\r
-            if (child instanceof IndexReference)\r
-                return Pair.make(key.substring(start, iy), ((IndexReference) child).getIndex());\r
-        }\r
-        return Pair.make(key.substring(start), null);\r
-    }\r
-    \r
-    public static class CSVItem {\r
-       public String modelUri;\r
-       public String label;\r
-       public String variableReference;\r
-       public String unit;\r
-    }\r
-    \r
-}\r
-\r
+package org.simantics.simulation.export;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.Databoard;
+import org.simantics.databoard.accessor.reference.ChildReference;
+import org.simantics.databoard.accessor.reference.IndexReference;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.request.ObjectsWithType;
+import org.simantics.db.common.request.PossibleObjectWithType;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.request.PossibleModel;
+import org.simantics.db.layer0.variable.RVI;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.db.layer0.variable.Variables;
+import org.simantics.db.request.Read;
+import org.simantics.layer0.Layer0;
+import org.simantics.modeling.ModelingResources;
+import org.simantics.utils.datastructures.Pair;
+
+/**
+ * This query finds CSV item datas
+ *
+ * @author toni.kalajainen@semantum.fi
+ */
+public class CSVItemsQuery implements Read<List<CSVItemsQuery.CSVItem>> {
+       
+       String contentUri;
+       
+       /**
+        * Create query using content uris.
+        * 
+        * Label format, use ""
+        * 
+        * @param contentUris uri to Chart or Subscription
+        */
+       public CSVItemsQuery(String contentUri) {
+               this.contentUri = contentUri;
+       }
+       
+       @Override
+       public List<CSVItem> perform(ReadGraph graph) throws DatabaseException {
+               List<CSVItem> result = new ArrayList<CSVItem>();
+               Resource resource = graph.getResource(contentUri);
+               
+               Layer0 L0 = Layer0.getInstance(graph);
+               ModelingResources MOD = ModelingResources.getInstance(graph);  
+               
+               List<Resource> subscriptionItems = new ArrayList<Resource>();
+               
+               if ( graph.isInstanceOf(resource, MOD.Subscription ) ) {
+                       subscriptionItems.addAll( graph.syncRequest( new ObjectsWithType(resource, L0.ConsistsOf, MOD.Subscription_Item) ) );
+               } else {
+                       // This is probably Chart. This plugin doesn't have dependency to Chart plugin
+                       // We can follow HasSubscriptionItem relation anyway.
+                       for (Resource possibleItem : graph.getObjects( resource, L0.ConsistsOf )) {
+                               subscriptionItems.addAll( graph.syncRequest( new ObjectsWithType(possibleItem, L0.IsRelatedTo, MOD.Subscription_Item) ));
+                       }
+               }
+               
+               for ( Resource subscriptionItem : subscriptionItems ) {
+                       Resource model = graph.syncRequest( new PossibleModel(subscriptionItem) );
+                       Resource subscription = graph.syncRequest( new PossibleObjectWithType(subscriptionItem, L0.PartOf, MOD.Subscription) );
+                       if (subscription == null) continue;
+                       Variable configuration = Variables.getPossibleConfigurationContext(graph, subscription);
+                       if (configuration == null) continue;
+                       CSVItem item = new CSVItem();
+                       if ( model != null) item.modelUri = graph.getURI( model );
+                               
+                       Binding rviBinding = graph.getService(Databoard.class).getBindingUnchecked( RVI.class );
+            RVI rvi = graph.getPossibleRelatedValue(subscriptionItem, MOD.Subscription_Item_VariableId, rviBinding);
+            if (rvi == null) continue;                     
+                       
+//            Resource experiment = graph.syncRequest(new PossibleExperiment(subscriptionItem));
+//            String runIdentifier = ""; // experiment.getIdentifier();
+                       
+                       item.variableReference = rvi.toPossibleString(graph, configuration);
+            if (item.variableReference == null) continue;
+
+               item.label = removeVariablePrefixPath( item.variableReference );                                
+               item.unit = graph.getPossibleRelatedValue( subscriptionItem, MOD.Subscription_Item_Unit, Bindings.STRING );
+               result.add( item );
+               }
+                               
+               return result;
+       }
+       
+    static String removeVariablePrefixPath(String rvi) {
+        // Apros-specific logics:
+        //   1. remove path prefix
+        //   2. change IndexReferences (i-N) into "(N+1)" Apros-style indexing
+        int propIndex = rvi.indexOf('#');
+        if (propIndex == -1)
+            return rvi;
+        int prevSlash = rvi.lastIndexOf('/', propIndex);
+        if (prevSlash == -1)
+            return rvi;
+        Pair<String, Integer> attrKey = attributeKey(rvi, propIndex + 1);
+        return rvi.substring(prevSlash + 1, propIndex + 1) + attrKey.first
+                + (attrKey.second != null ? "(" + (attrKey.second + 1) + ")" : "");
+    }
+       
+    static Pair<String, Integer> attributeKey(String key, int start) {
+        int iy = key.lastIndexOf('/');
+        boolean isIndexed = iy >= start;
+        if (isIndexed) {
+            ChildReference child = ChildReference.parsePath(key.substring(iy + 1));
+            if (child instanceof IndexReference)
+                return Pair.make(key.substring(start, iy), ((IndexReference) child).getIndex());
+        }
+        return Pair.make(key.substring(start), null);
+    }
+    
+    public static class CSVItem {
+       public String modelUri;
+       public String label;
+       public String variableReference;
+       public String unit;
+    }
+    
+}
+