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 CollectorExample1 {
\r
23 public static void main(String[] args) throws HistoryException, BindingException, AccessorException {
\r
25 /// Example1: Create History Manager & Item
\r
26 // Create History Manager
\r
27 HistoryManager history = History.createMemoryHistory();
\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
35 // Create History Item configuration
\r
36 String id = UUID.randomUUID().toString();
\r
37 HistoryItem historyItem = new HistoryItem(id, sampleFormat);
\r
39 // Create the item in the history
\r
40 history.create( historyItem );
\r
46 /// Example2: Prepare Collector
\r
47 Collector collector = History.createCollector(history, FlushPolicy.NoFlush);
\r
49 // Read item configuration data from history ( id and sampleFormat )
\r
50 Bean hi = history.getItem( id );
\r
52 // Create collector item
\r
53 HistoryAndCollectorItem ci = new HistoryAndCollectorItem();
\r
54 ci.readAvailableFields( hi ); // Read: id, sampleFormat
\r
59 ci.variableId = "MyItem";
\r
61 // Initialize Collector (Item)
\r
62 collector.addItem( ci );
\r
65 // Simulate 100 steps
\r
66 for ( int i = 0; i<100; i++ ) {
\r
68 // Our "simulation" results
\r
69 double time = i * 0.1;
\r
70 double myItemValue = -20 + i*0.1;
\r
72 // Begin collector writing step
\r
73 collector.beginStep(Bindings.DOUBLE, time);
\r
76 collector.setValue("MyItem", Bindings.DOUBLE, myItemValue);
\r
78 // End collector step
\r
79 collector.endStep();
\r
91 // Open stream from history
\r
92 StreamAccessor aa = history.openStream(id, "r");
\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
101 for (int i=0; i<aa.size(); i++) {
\r
102 aa.get(i, sampleBinding, sample);
\r
103 System.out.println(i+": "+sample);
\r