--- /dev/null
+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 CollectorExample2 {\r
+\r
+ public static void main(String[] args) throws HistoryException, BindingException, AccessorException {\r
+ \r
+ /// Example2: Record variable "MyVariable" to two history \r
+ /// items "MyVariable-interval=0.5" and "MyVariable-deadband=5"\r
+ \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 two History Item and Collector Item configurations\r
+ HistoryAndCollectorItem i1 = new HistoryAndCollectorItem();\r
+ i1.id = "MyVariable-interval=0.5";\r
+ i1.format = sampleFormat;\r
+ i1.interval = 0.5;\r
+ i1.variableId = "MyVariable";\r
+ \r
+ HistoryAndCollectorItem i2 = new HistoryAndCollectorItem();\r
+ i2.id = "MyVariable-deadband=5";\r
+ i2.format = sampleFormat;\r
+ i2.deadband = 5.0;\r
+ i2.variableId = "MyVariable";\r
+\r
+ // Create the item in the history\r
+ history.create( i1, i2 );\r
+\r
+ /// Prepare Collector\r
+ Collector collector = History.createCollector(history, FlushPolicy.NoFlush);\r
+ \r
+ // Initialize Collector (Items)\r
+ collector.addItem( i1 );\r
+ collector.addItem( i2 );\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 for one variable. \r
+ collector.setValue("MyVariable", Bindings.DOUBLE, myItemValue);\r
+ \r
+ // End collector step - MyVariable is written to two HistoryItems\r
+ collector.endStep();\r
+ }\r
+ \r
+ } finally {\r
+ // Flush values\r
+ collector.flush();\r
+ collector.close();\r
+ }\r
+ \r
+ }\r
+\r
+}\r