]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.charts/src/org/simantics/charts/Charts.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.charts / src / org / simantics / charts / Charts.java
diff --git a/bundles/org.simantics.charts/src/org/simantics/charts/Charts.java b/bundles/org.simantics.charts/src/org/simantics/charts/Charts.java
new file mode 100644 (file)
index 0000000..69aea11
--- /dev/null
@@ -0,0 +1,77 @@
+package org.simantics.charts;\r
+\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import org.simantics.Simantics;\r
+import org.simantics.charts.editor.ChartData;\r
+import org.simantics.charts.editor.ChartKeys;\r
+import org.simantics.databoard.binding.error.BindingException;\r
+import org.simantics.databoard.util.Bean;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.request.PossibleModel;\r
+import org.simantics.history.HistoryException;\r
+import org.simantics.history.HistorySamplerItem;\r
+import org.simantics.history.ItemManager;\r
+import org.simantics.history.util.subscription.SamplingFormat;\r
+import org.simantics.modeling.subscription.SubscriptionItem;\r
+import org.simantics.modeling.subscription.SubscriptionItemQuery;\r
+import org.simantics.project.IProject;\r
+import org.simantics.utils.datastructures.hints.IHintContext.Key;\r
+\r
+/**\r
+ * Main facade for externally dealing with the trending system.\r
+ * \r
+ * @author Tuukka Lehtonen\r
+ * @author Antti Villberg\r
+ * \r
+ */\r
+public final class Charts {\r
+\r
+    public static void resetChartEditorData(IProject project, Resource model, ChartData editorData) {\r
+        if (editorData != null) {\r
+            project.setHint(ChartKeys.chartSourceKey(model), editorData);\r
+        } else {\r
+            project.removeHint(ChartKeys.chartSourceKey(model));\r
+        }\r
+    }\r
+\r
+       public static HistorySamplerItem createHistorySamplerItem(ReadGraph graph, Resource subscriptionItem) throws DatabaseException {\r
+               \r
+               try {\r
+\r
+                       Resource model = graph.syncRequest(new PossibleModel(subscriptionItem));\r
+                       if ( model == null ) {\r
+                               throw new DatabaseException("There is no model for " + subscriptionItem);\r
+                       }\r
+\r
+                       Key chartDataKey = ChartKeys.chartSourceKey(model);\r
+\r
+                       final ChartData data = Simantics.getProject().getHint(chartDataKey);\r
+                       if ( data == null ) {\r
+                               throw new DatabaseException("There is no chart data for " + model);\r
+                       }\r
+\r
+                       ItemManager im = new ItemManager( data.history.getItems() );\r
+\r
+                       SubscriptionItem i = graph.syncRequest(new SubscriptionItemQuery(subscriptionItem));\r
+\r
+                       List<Bean> items = im.search("variableId", i.variableId);\r
+                       Collections.sort(items, SamplingFormat.INTERVAL_COMPARATOR);\r
+                       if (items.isEmpty()) new DatabaseException("There is history item for " + i.variableId);\r
+                       Bean config = items.get(0);\r
+                       String historyId = (String) config.getFieldUnchecked("id");\r
+\r
+                       return new HistorySamplerItem(data.collector, data.history, historyId, System.identityHashCode(data));\r
+\r
+               } catch (HistoryException e) {\r
+                       throw new DatabaseException(e);\r
+               } catch (BindingException e) {\r
+                       throw new DatabaseException(e);\r
+               }\r
+       \r
+       }\r
+\r
+}\r