]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.history/examples/org/simantics/history/examples/CollectorExample2.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.history / examples / org / simantics / history / examples / CollectorExample2.java
1 package org.simantics.history.examples;\r
2 \r
3 import java.util.UUID;\r
4 \r
5 import org.simantics.databoard.Bindings;\r
6 import org.simantics.databoard.Datatypes;\r
7 import org.simantics.databoard.accessor.StreamAccessor;\r
8 import org.simantics.databoard.accessor.error.AccessorException;\r
9 import org.simantics.databoard.binding.RecordBinding;\r
10 import org.simantics.databoard.binding.error.BindingException;\r
11 import org.simantics.databoard.type.RecordType;\r
12 import org.simantics.databoard.util.Bean;\r
13 import org.simantics.history.Collector;\r
14 import org.simantics.history.History;\r
15 import org.simantics.history.HistoryAndCollectorItem;\r
16 import org.simantics.history.HistoryException;\r
17 import org.simantics.history.HistoryItem;\r
18 import org.simantics.history.HistoryManager;\r
19 import org.simantics.history.impl.FlushPolicy;\r
20 \r
21 public class CollectorExample2 {\r
22 \r
23         public static void main(String[] args) throws HistoryException, BindingException, AccessorException {\r
24                 \r
25                 /// Example2: Record variable "MyVariable" to two history  \r
26                 ///           items "MyVariable-interval=0.5" and "MyVariable-deadband=5"\r
27                 \r
28                 // Create History Manager\r
29                 HistoryManager history = History.createMemoryHistory();\r
30                 \r
31                 // Create a sample format\r
32                 RecordType sampleFormat = new RecordType();\r
33                 sampleFormat.addComponent("time", Datatypes.DOUBLE );\r
34                 sampleFormat.addComponent("value", Datatypes.DOUBLE );\r
35                 sampleFormat.addComponent("quality", Datatypes.BYTE );\r
36                 \r
37                 // Create two History Item and Collector Item configurations\r
38                 HistoryAndCollectorItem i1 = new HistoryAndCollectorItem();\r
39                 i1.id = "MyVariable-interval=0.5";\r
40                 i1.format = sampleFormat;\r
41                 i1.interval = 0.5;\r
42                 i1.variableId = "MyVariable";\r
43                 \r
44                 HistoryAndCollectorItem i2 = new HistoryAndCollectorItem();\r
45                 i2.id = "MyVariable-deadband=5";\r
46                 i2.format = sampleFormat;\r
47                 i2.deadband = 5.0;\r
48                 i2.variableId = "MyVariable";\r
49 \r
50                 // Create the item in the history\r
51                 history.create( i1, i2 );\r
52 \r
53                 /// Prepare Collector\r
54                 Collector collector = History.createCollector(history, FlushPolicy.NoFlush);\r
55                 \r
56                 // Initialize Collector (Items)\r
57                 collector.addItem( i1 );\r
58                 collector.addItem( i2 );\r
59                 \r
60                 try {\r
61                         // Simulate 100 steps\r
62                         for ( int i = 0; i<100; i++ ) {\r
63                                 \r
64                                 // Our "simulation" results \r
65                                 double time = i * 0.1;\r
66                                 double myItemValue = -20 + i*0.1;\r
67                                 \r
68                                 // Begin collector writing step\r
69                                 collector.beginStep(Bindings.DOUBLE, time);\r
70                                 \r
71                                 // Enter values for one variable. \r
72                                 collector.setValue("MyVariable", Bindings.DOUBLE, myItemValue);\r
73                                 \r
74                                 // End collector step - MyVariable is written to two HistoryItems\r
75                                 collector.endStep();\r
76                         }\r
77                         \r
78                 } finally {\r
79                         // Flush values\r
80                         collector.flush();\r
81                         collector.close();\r
82                 }\r
83                                 \r
84         }\r
85 \r
86 }\r