]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
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 CollectorExample1 {\r
22 \r
23         public static void main(String[] args) throws HistoryException, BindingException, AccessorException {\r
24                 \r
25                 /// Example1: Create History Manager & Item\r
26                 // Create History Manager\r
27                 HistoryManager history = History.createMemoryHistory();\r
28                 \r
29                 // Create a sample format\r
30                 RecordType sampleFormat = new RecordType();\r
31                 sampleFormat.addComponent("time", Datatypes.DOUBLE );\r
32                 sampleFormat.addComponent("value", Datatypes.DOUBLE );\r
33                 sampleFormat.addComponent("quality", Datatypes.BYTE );\r
34                 \r
35                 // Create History Item configuration\r
36                 String id = UUID.randomUUID().toString();\r
37                 HistoryItem historyItem = new HistoryItem(id, sampleFormat);\r
38                 \r
39                 // Create the item in the history\r
40                 history.create( historyItem );\r
41                 \r
42                 \r
43                 \r
44                 \r
45 \r
46                 /// Example2: Prepare Collector\r
47                 Collector collector = History.createCollector(history, FlushPolicy.NoFlush);\r
48                 \r
49                 // Read item configuration data from history ( id and sampleFormat )\r
50                 Bean hi = history.getItem( id );\r
51                 \r
52                 // Create collector item\r
53                 HistoryAndCollectorItem ci = new HistoryAndCollectorItem();\r
54                 ci.readAvailableFields( hi ); // Read: id, sampleFormat\r
55                 ci.interval = 0.5;\r
56                 //ci.deadband = 10;\r
57                 ci.enabled = true;\r
58                 ci.gain = 10.0;\r
59                 ci.variableId = "MyItem";\r
60                 \r
61                 // Initialize Collector (Item)\r
62                 collector.addItem( ci );\r
63                 \r
64                 try {\r
65                         // Simulate 100 steps\r
66                         for ( int i = 0; i<100; i++ ) {\r
67                                 \r
68                                 // Our "simulation" results \r
69                                 double time = i * 0.1;\r
70                                 double myItemValue = -20 + i*0.1;\r
71                                 \r
72                                 // Begin collector writing step\r
73                                 collector.beginStep(Bindings.DOUBLE, time);\r
74                                 \r
75                                 // Enter values \r
76                                 collector.setValue("MyItem", Bindings.DOUBLE, myItemValue);\r
77                                 \r
78                                 // End collector step\r
79                                 collector.endStep();\r
80                         }\r
81                         \r
82                 } finally {\r
83                         // Flush values\r
84                         collector.flush();\r
85                         collector.close();\r
86                 }\r
87                 \r
88                 \r
89                 \r
90                 /// Print results\r
91                 // Open stream from history\r
92                 StreamAccessor aa = history.openStream(id, "r");\r
93                 // Read sample type\r
94                 RecordType sampleType = (RecordType) aa.type().componentType;\r
95                 // Create bean binding\r
96                 RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleType );\r
97                 // Create sample object\r
98                 Bean sample = (Bean) sampleBinding.createPartial();\r
99                 \r
100                 try {\r
101                         for (int i=0; i<aa.size(); i++) {\r
102                                 aa.get(i, sampleBinding, sample);\r
103                                 System.out.println(i+": "+sample);\r
104                         }\r
105                 } finally {\r
106                         aa.close();\r
107                 }\r
108                 \r
109         }\r
110         \r
111 }\r