]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.history/examples/org/simantics/history/examples/HistoryExample1.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.history / examples / org / simantics / history / examples / HistoryExample1.java
1 package org.simantics.history.examples;\r
2 \r
3 import java.util.List;\r
4 import java.util.UUID;\r
5 \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
20 \r
21 public class HistoryExample1 {\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 hi = new HistoryItem(id, sampleFormat);\r
38                 \r
39                 // Create the item in the history\r
40                 history.create( hi );\r
41                 \r
42                 /// Example 2: Write data to history item's stream (without Collector)\r
43                 {\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
50                         try {\r
51                                 \r
52                                 // Set quality\r
53                                 sample.setField(2, Bindings.BYTE, (byte)0);\r
54                                 \r
55                                 // Write 10 samples\r
56                                 for (int i=0; i<10; i++) {\r
57                                         \r
58                                         // Set time\r
59                                         sample.setField(0, Bindings.DOUBLE, 1.0*i );\r
60                                         // Set Value\r
61                                         sample.setField(1, Bindings.DOUBLE, 100.0*i );\r
62                                         \r
63                                         sa.add(sampleBinding, sample);                          \r
64                                 }\r
65                         } finally {\r
66                                 sa.flush();\r
67                                 sa.close();\r
68                         }\r
69                 }\r
70                 \r
71                 /// Example 3: Read & print data\r
72                 {\r
73                         // Open stream from history\r
74                         StreamAccessor aa = history.openStream(id, "r");\r
75                         // Read sample type\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
81                         \r
82                         try {\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
86                                 }\r
87                         } finally {\r
88                                 aa.close();\r
89                         }\r
90                 }\r
91                 \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
95                 //\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
99                 \r
100                 // ItemManager is a utility that helps in the management of items \r
101                 ItemManager im = new ItemManager( items );\r
102                         \r
103                 // Print all item Ids\r
104                 System.out.println("Items Identifiers:");\r
105                 for ( String itemId : im.toIdArray() )\r
106                 {\r
107                         System.out.println( itemId );\r
108                 }\r
109                 \r
110                 // To search an item by id, use\r
111                 List<Bean> result = im.search("id", id);\r
112                 \r
113                 // To search items of specific parameter, say file format, use\r
114                 im.search("format", sampleFormat);\r
115                 \r
116                 // Or interval\r
117                 im.search("interval", 0.1);\r
118                 \r
119         }\r
120         \r
121 }\r