]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.history/examples/org/simantics/history/examples/HistoryExample1.java b/bundles/org.simantics.history/examples/org/simantics/history/examples/HistoryExample1.java
new file mode 100644 (file)
index 0000000..49a75c1
--- /dev/null
@@ -0,0 +1,121 @@
+package org.simantics.history.examples;\r
+\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.Datatypes;\r
+import org.simantics.databoard.accessor.StreamAccessor;\r
+import org.simantics.databoard.accessor.error.AccessorException;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.binding.RecordBinding;\r
+import org.simantics.databoard.binding.error.BindingException;\r
+import org.simantics.databoard.type.RecordType;\r
+import org.simantics.databoard.util.Bean;\r
+import org.simantics.history.History;\r
+import org.simantics.history.HistoryException;\r
+import org.simantics.history.HistoryItem;\r
+import org.simantics.history.HistoryManager;\r
+import org.simantics.history.ItemManager;\r
+\r
+public class HistoryExample1 {\r
+\r
+       public static void main(String[] args) throws HistoryException, BindingException, AccessorException {\r
+               \r
+               /// Example1: Create History Manager & Item\r
+               // Create History Manager\r
+               HistoryManager history = History.createMemoryHistory();\r
+               \r
+               // Create a sample format\r
+               RecordType sampleFormat = new RecordType();\r
+               sampleFormat.addComponent("time", Datatypes.DOUBLE );\r
+               sampleFormat.addComponent("value", Datatypes.DOUBLE );\r
+               sampleFormat.addComponent("quality", Datatypes.BYTE );\r
+               \r
+               // Create History Item configuration\r
+               String id = UUID.randomUUID().toString();\r
+               HistoryItem hi = new HistoryItem(id, sampleFormat);\r
+               \r
+               // Create the item in the history\r
+               history.create( hi );\r
+               \r
+               /// Example 2: Write data to history item's stream (without Collector)\r
+               {\r
+                       // Open item for writing\r
+                       StreamAccessor sa = history.openStream(id, "rw");\r
+                       // Create bean based binding for the sample\r
+                       RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleFormat );\r
+                       // Create sample object\r
+                       Bean sample = (Bean) sampleBinding.createPartial();\r
+                       try {\r
+                               \r
+                               // Set quality\r
+                               sample.setField(2, Bindings.BYTE, (byte)0);\r
+                               \r
+                               // Write 10 samples\r
+                               for (int i=0; i<10; i++) {\r
+                                       \r
+                                       // Set time\r
+                                       sample.setField(0, Bindings.DOUBLE, 1.0*i );\r
+                                       // Set Value\r
+                                       sample.setField(1, Bindings.DOUBLE, 100.0*i );\r
+                                       \r
+                                       sa.add(sampleBinding, sample);                          \r
+                               }\r
+                       } finally {\r
+                               sa.flush();\r
+                               sa.close();\r
+                       }\r
+               }\r
+               \r
+               /// Example 3: Read & print data\r
+               {\r
+                       // Open stream from history\r
+                       StreamAccessor aa = history.openStream(id, "r");\r
+                       // Read sample type\r
+                       RecordType sampleType = (RecordType) aa.type().componentType;\r
+                       // Create bean binding\r
+                       RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleType );\r
+                       // Create sample object\r
+                       Bean sample = (Bean) sampleBinding.createPartial();\r
+                       \r
+                       try {\r
+                               for (int i=0; i<aa.size(); i++) {\r
+                                       aa.get(i, sampleBinding, sample);\r
+                                       System.out.println(i+": "+sample);\r
+                               }\r
+                       } finally {\r
+                               aa.close();\r
+                       }\r
+               }\r
+               \r
+               /// Example 4: To search and read history items\r
+               // Read items from history. Each item is a record with various fields.\r
+               // The fields depending on usage and initialization.\r
+               //\r
+               // If collector is used, it adds a field called "collectorState" that persists\r
+               // the state data and subscription parameters. \r
+               Bean[] items = history.getItems();\r
+               \r
+               // ItemManager is a utility that helps in the management of items \r
+               ItemManager im = new ItemManager( items );\r
+                       \r
+               // Print all item Ids\r
+               System.out.println("Items Identifiers:");\r
+               for ( String itemId : im.toIdArray() )\r
+               {\r
+                       System.out.println( itemId );\r
+               }\r
+               \r
+               // To search an item by id, use\r
+               List<Bean> result = im.search("id", id);\r
+               \r
+               // To search items of specific parameter, say file format, use\r
+               im.search("format", sampleFormat);\r
+               \r
+               // Or interval\r
+               im.search("interval", 0.1);\r
+               \r
+       }\r
+       \r
+}\r