1 package org.simantics.history.examples;
\r
3 import java.util.UUID;
\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
21 public class CollectorExample2 {
\r
23 public static void main(String[] args) throws HistoryException, BindingException, AccessorException {
\r
25 /// Example2: Record variable "MyVariable" to two history
\r
26 /// items "MyVariable-interval=0.5" and "MyVariable-deadband=5"
\r
28 // Create History Manager
\r
29 HistoryManager history = History.createMemoryHistory();
\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
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
42 i1.variableId = "MyVariable";
\r
44 HistoryAndCollectorItem i2 = new HistoryAndCollectorItem();
\r
45 i2.id = "MyVariable-deadband=5";
\r
46 i2.format = sampleFormat;
\r
48 i2.variableId = "MyVariable";
\r
50 // Create the item in the history
\r
51 history.create( i1, i2 );
\r
53 /// Prepare Collector
\r
54 Collector collector = History.createCollector(history, FlushPolicy.NoFlush);
\r
56 // Initialize Collector (Items)
\r
57 collector.addItem( i1 );
\r
58 collector.addItem( i2 );
\r
61 // Simulate 100 steps
\r
62 for ( int i = 0; i<100; i++ ) {
\r
64 // Our "simulation" results
\r
65 double time = i * 0.1;
\r
66 double myItemValue = -20 + i*0.1;
\r
68 // Begin collector writing step
\r
69 collector.beginStep(Bindings.DOUBLE, time);
\r
71 // Enter values for one variable.
\r
72 collector.setValue("MyVariable", Bindings.DOUBLE, myItemValue);
\r
74 // End collector step - MyVariable is written to two HistoryItems
\r
75 collector.endStep();
\r