]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.history/examples/org/simantics/history/examples/CollectorExample1.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.history / examples / org / simantics / history / examples / CollectorExample1.java
diff --git a/bundles/org.simantics.history/examples/org/simantics/history/examples/CollectorExample1.java b/bundles/org.simantics.history/examples/org/simantics/history/examples/CollectorExample1.java
new file mode 100644 (file)
index 0000000..0cbb776
--- /dev/null
@@ -0,0 +1,111 @@
+package org.simantics.history.examples;\r
+\r
+import java.util.UUID;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.Datatypes;\r
+import org.simantics.databoard.accessor.StreamAccessor;\r
+import org.simantics.databoard.accessor.error.AccessorException;\r
+import org.simantics.databoard.binding.RecordBinding;\r
+import org.simantics.databoard.binding.error.BindingException;\r
+import org.simantics.databoard.type.RecordType;\r
+import org.simantics.databoard.util.Bean;\r
+import org.simantics.history.Collector;\r
+import org.simantics.history.History;\r
+import org.simantics.history.HistoryAndCollectorItem;\r
+import org.simantics.history.HistoryException;\r
+import org.simantics.history.HistoryItem;\r
+import org.simantics.history.HistoryManager;\r
+import org.simantics.history.impl.FlushPolicy;\r
+\r
+public class CollectorExample1 {\r
+\r
+       public static void main(String[] args) throws HistoryException, BindingException, AccessorException {\r
+               \r
+               /// Example1: Create History Manager & Item\r
+               // Create History Manager\r
+               HistoryManager history = History.createMemoryHistory();\r
+               \r
+               // Create a sample format\r
+               RecordType sampleFormat = new RecordType();\r
+               sampleFormat.addComponent("time", Datatypes.DOUBLE );\r
+               sampleFormat.addComponent("value", Datatypes.DOUBLE );\r
+               sampleFormat.addComponent("quality", Datatypes.BYTE );\r
+               \r
+               // Create History Item configuration\r
+               String id = UUID.randomUUID().toString();\r
+               HistoryItem historyItem = new HistoryItem(id, sampleFormat);\r
+               \r
+               // Create the item in the history\r
+               history.create( historyItem );\r
+               \r
+               \r
+               \r
+               \r
+\r
+               /// Example2: Prepare Collector\r
+               Collector collector = History.createCollector(history, FlushPolicy.NoFlush);\r
+               \r
+               // Read item configuration data from history ( id and sampleFormat )\r
+               Bean hi = history.getItem( id );\r
+               \r
+               // Create collector item\r
+               HistoryAndCollectorItem ci = new HistoryAndCollectorItem();\r
+               ci.readAvailableFields( hi ); // Read: id, sampleFormat\r
+               ci.interval = 0.5;\r
+               //ci.deadband = 10;\r
+               ci.enabled = true;\r
+               ci.gain = 10.0;\r
+               ci.variableId = "MyItem";\r
+               \r
+               // Initialize Collector (Item)\r
+               collector.addItem( ci );\r
+               \r
+               try {\r
+                       // Simulate 100 steps\r
+                       for ( int i = 0; i<100; i++ ) {\r
+                               \r
+                               // Our "simulation" results \r
+                               double time = i * 0.1;\r
+                               double myItemValue = -20 + i*0.1;\r
+                               \r
+                               // Begin collector writing step\r
+                               collector.beginStep(Bindings.DOUBLE, time);\r
+                               \r
+                               // Enter values \r
+                               collector.setValue("MyItem", Bindings.DOUBLE, myItemValue);\r
+                               \r
+                               // End collector step\r
+                               collector.endStep();\r
+                       }\r
+                       \r
+               } finally {\r
+                       // Flush values\r
+                       collector.flush();\r
+                       collector.close();\r
+               }\r
+               \r
+               \r
+               \r
+               /// Print results\r
+               // Open stream from history\r
+               StreamAccessor aa = history.openStream(id, "r");\r
+               // Read sample type\r
+               RecordType sampleType = (RecordType) aa.type().componentType;\r
+               // Create bean binding\r
+               RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleType );\r
+               // Create sample object\r
+               Bean sample = (Bean) sampleBinding.createPartial();\r
+               \r
+               try {\r
+                       for (int i=0; i<aa.size(); i++) {\r
+                               aa.get(i, sampleBinding, sample);\r
+                               System.out.println(i+": "+sample);\r
+                       }\r
+               } finally {\r
+                       aa.close();\r
+               }\r
+               \r
+       }\r
+       \r
+}\r