1 package org.simantics.history.examples;
\r
3 import java.util.List;
\r
4 import java.util.UUID;
\r
6 import org.simantics.databoard.Bindings;
\r
7 import org.simantics.databoard.Datatypes;
\r
8 import org.simantics.databoard.accessor.StreamAccessor;
\r
9 import org.simantics.databoard.accessor.error.AccessorException;
\r
10 import org.simantics.databoard.binding.Binding;
\r
11 import org.simantics.databoard.binding.RecordBinding;
\r
12 import org.simantics.databoard.binding.error.BindingException;
\r
13 import org.simantics.databoard.type.RecordType;
\r
14 import org.simantics.databoard.util.Bean;
\r
15 import org.simantics.history.History;
\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.ItemManager;
\r
21 public class HistoryExample1 {
\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 hi = new HistoryItem(id, sampleFormat);
\r
39 // Create the item in the history
\r
40 history.create( hi );
\r
42 /// Example 2: Write data to history item's stream (without Collector)
\r
44 // Open item for writing
\r
45 StreamAccessor sa = history.openStream(id, "rw");
\r
46 // Create bean based binding for the sample
\r
47 RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleFormat );
\r
48 // Create sample object
\r
49 Bean sample = (Bean) sampleBinding.createPartial();
\r
53 sample.setField(2, Bindings.BYTE, (byte)0);
\r
56 for (int i=0; i<10; i++) {
\r
59 sample.setField(0, Bindings.DOUBLE, 1.0*i );
\r
61 sample.setField(1, Bindings.DOUBLE, 100.0*i );
\r
63 sa.add(sampleBinding, sample);
\r
71 /// Example 3: Read & print data
\r
73 // Open stream from history
\r
74 StreamAccessor aa = history.openStream(id, "r");
\r
76 RecordType sampleType = (RecordType) aa.type().componentType;
\r
77 // Create bean binding
\r
78 RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleType );
\r
79 // Create sample object
\r
80 Bean sample = (Bean) sampleBinding.createPartial();
\r
83 for (int i=0; i<aa.size(); i++) {
\r
84 aa.get(i, sampleBinding, sample);
\r
85 System.out.println(i+": "+sample);
\r
92 /// Example 4: To search and read history items
\r
93 // Read items from history. Each item is a record with various fields.
\r
94 // The fields depending on usage and initialization.
\r
96 // If collector is used, it adds a field called "collectorState" that persists
\r
97 // the state data and subscription parameters.
\r
98 Bean[] items = history.getItems();
\r
100 // ItemManager is a utility that helps in the management of items
\r
101 ItemManager im = new ItemManager( items );
\r
103 // Print all item Ids
\r
104 System.out.println("Items Identifiers:");
\r
105 for ( String itemId : im.toIdArray() )
\r
107 System.out.println( itemId );
\r
110 // To search an item by id, use
\r
111 List<Bean> result = im.search("id", id);
\r
113 // To search items of specific parameter, say file format, use
\r
114 im.search("format", sampleFormat);
\r
117 im.search("interval", 0.1);
\r