X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.history%2Fsrc-isv%2Fhistory_manager.mediawiki;h=b0f487a2c18b7e0db447c034e537fe50d8d61f68;hb=747231cca0974ca9ed5f78caa6517ee9dcb8e4fc;hp=e8be43bdb3038497bc2a05300b707d26b3e8865c;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.history/src-isv/history_manager.mediawiki b/bundles/org.simantics.history/src-isv/history_manager.mediawiki index e8be43bdb..b0f487a2c 100644 --- a/bundles/org.simantics.history/src-isv/history_manager.mediawiki +++ b/bundles/org.simantics.history/src-isv/history_manager.mediawiki @@ -1,156 +1,156 @@ - -=History Manager= -HistoryManager is an interface for managing time-series streams (called ''items'') of sample data. There are two implementations FileHistory and MemoryHistory. The data is based on files and in-memory arrays. -
- // Create History Manager - HistoryManager history = History.createMemoryHistory(); -- -Items can be created, modified, opened, deleted. -An item is a description, that carries related meta-data aswell. The file history persists the configuration data on disc. - -To create a history item you must provide an item description for each stream. -The description is a class inherited from Bean-class. -Two fields are mandatory id:String, and format:Datatype. -Other fields are meta-data that are stored along with the history. - -Therefore it is suggested to use one of the following classes: -{| border="1" cellpadding="3" cellspacing="0" align="center" style="background-color: #f9f9f9;" -|'''Class''' || '''Description''' -|- style="background-color: #fff;" -|HistoryItem || Simplest format of HistoryManager Item { id:String, format:Datatype } -|- style="background-color: #fff;" -|HistoryAndCollectorItem || Item format for both HistoryManager and Collector. -|- style="background-color: #fff;" -|SubscriptionItem || Item format for HistoryManager, Collector, and meta-data for Simantics subscription configurations. -|} - -To create create an item in the history, specify a format, id, and an item format. -
- // Create a sample format ( simple though ) - RecordType sampleFormat = new RecordType(); - sampleFormat.addComponent("time", Datatypes.DOUBLE ); - sampleFormat.addComponent("value", Datatypes.DOUBLE ); - sampleFormat.addComponent("quality", Datatypes.BYTE ); - - // Create History Item configuration - String id = UUID.randomUUID().toString(); - HistoryItem hi = new HistoryItem(id, sampleFormat); - - // Create the item in the history - history.create( hi ); -- -The data can be written by using a collector, or by adding samples directly to a array (stream) accessor. -
- // Open item for writing - StreamAccessor sa = history.openStream(id, "rw"); - // Read sample type - RecordType sampleFormat = (RecordType) sa.type().componentType; - // Create bean based binding for the sample - RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleFormat ); - // Create sample object - Bean sample = (Bean) sampleBinding.createPartial(); - - try { - - // Set quality - sample.setField(2, Bindings.BYTE, (byte)0); - - // Write 10 samples - for (int i=0; i<10; i++) { - - // Set time - sample.setField(0, Bindings.DOUBLE, 1.0*i ); - // Set Value - sample.setField(1, Bindings.DOUBLE, 100.0*i ); - - sa.add(sampleBinding, sample); - } - - } finally { - sa.flush(); - sa.close(); - } -- -The data is read in a similiar fashion; by opening an accessor and reading samples. -
- // Open stream from history - StreamAccessor sa = history.openStream(id, "r"); - // Read sample type - RecordType sampleFormat = (RecordType) sa.type().componentType; - // Create bean binding - RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleFormat ); - // Create sample object - Bean sample = (Bean) sampleBinding.createPartial(); - - try { - for (int i=0; i- - -=File History= -FileHistory is a file and directory based history manager. - - // Create History Manager in a workarea (directory) - HistoryManager history = History.openFileHistory( workarea ); -- - -A history item is uses 2 - 3 files. All the files are located in a directory called workarea. -The file is named by escaping the id using URI encoding, and appending three file name extensions. - -{| border="1" cellpadding="3" cellspacing="0" align="center" -|- style="background-color: #f9f9f9;" -|'''File''' || '''Description''' -|- -|.txt || The item's meta-data written as serialization of the variant. The file format is no longer ascii text, but binary data. -|- -| .data || A series of samples serialized with no header. -|- -| .index || Index file that contains long offsets for each sample. Index file is used for variable sized samples only, such as strings and variable-lengthed arrays. -|} - -=Item Manager= -Item descriptions are aquired with HistoryManager#getItems(). Each item is an record containing the fields -the item was initialized with, and/or possible added later. For instance, if data was written to the item -with a Collector, the collecting parameters and collectin state data is written to a field called "collectorState". - - Bean[] items = history.getItems(); --The record is expressed with an instance of a sub-class of a bean. Known fields can be copied to user -specified class. -- HistoryItem i0 = new HistoryItem(); - i0.readAvailableFields( items[0] ); --ItemManager is an utility that aids in creating, modifying and reading item arrays. -- ItemManager im = new ItemManager( items ); --Item id's can be extracted conveniently. -- System.out.println("Items Identifiers:"); - for ( String itemId : im.toIdArray() ) - { - System.out.println( itemId ); - } --The items can be selected using one or multiple fields as patterns. -- // To search an item by id, use - Listresult = im.search("id", id); - - // To search items of specific parameter, say file format, use - im.search("format", sampleFormat); - - // Or interval - im.search("interval", 0.1); + +=History Manager= +HistoryManager is an interface for managing time-series streams (called ''items'') of sample data. There are two implementations FileHistory and MemoryHistory. The data is based on files and in-memory arrays. + + // Create History Manager + HistoryManager history = History.createMemoryHistory(); ++ +Items can be created, modified, opened, deleted. +An item is a description, that carries related meta-data aswell. The file history persists the configuration data on disc. + +To create a history item you must provide an item description for each stream. +The description is a class inherited from Bean-class. +Two fields are mandatory id:String, and format:Datatype. +Other fields are meta-data that are stored along with the history. + +Therefore it is suggested to use one of the following classes: +{| border="1" cellpadding="3" cellspacing="0" align="center" style="background-color: #f9f9f9;" +|'''Class''' || '''Description''' +|- style="background-color: #fff;" +|HistoryItem || Simplest format of HistoryManager Item { id:String, format:Datatype } +|- style="background-color: #fff;" +|HistoryAndCollectorItem || Item format for both HistoryManager and Collector. +|- style="background-color: #fff;" +|SubscriptionItem || Item format for HistoryManager, Collector, and meta-data for Simantics subscription configurations. +|} + +To create create an item in the history, specify a format, id, and an item format. ++ // Create a sample format ( simple though ) + RecordType sampleFormat = new RecordType(); + sampleFormat.addComponent("time", Datatypes.DOUBLE ); + sampleFormat.addComponent("value", Datatypes.DOUBLE ); + sampleFormat.addComponent("quality", Datatypes.BYTE ); + + // Create History Item configuration + String id = UUID.randomUUID().toString(); + HistoryItem hi = new HistoryItem(id, sampleFormat); + + // Create the item in the history + history.create( hi ); ++ +The data can be written by using a collector, or by adding samples directly to a array (stream) accessor. ++ // Open item for writing + StreamAccessor sa = history.openStream(id, "rw"); + // Read sample type + RecordType sampleFormat = (RecordType) sa.type().componentType; + // Create bean based binding for the sample + RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleFormat ); + // Create sample object + Bean sample = (Bean) sampleBinding.createPartial(); + + try { + + // Set quality + sample.setField(2, Bindings.BYTE, (byte)0); + + // Write 10 samples + for (int i=0; i<10; i++) { + + // Set time + sample.setField(0, Bindings.DOUBLE, 1.0*i ); + // Set Value + sample.setField(1, Bindings.DOUBLE, 100.0*i ); + + sa.add(sampleBinding, sample); + } + + } finally { + sa.flush(); + sa.close(); + } ++ +The data is read in a similiar fashion; by opening an accessor and reading samples. ++ // Open stream from history + StreamAccessor sa = history.openStream(id, "r"); + // Read sample type + RecordType sampleFormat = (RecordType) sa.type().componentType; + // Create bean binding + RecordBinding sampleBinding = (RecordBinding) Bindings.getBeanBinding( sampleFormat ); + // Create sample object + Bean sample = (Bean) sampleBinding.createPartial(); + + try { + for (int i=0; i+ + +=File History= +FileHistory is a file and directory based history manager. + + // Create History Manager in a workarea (directory) + HistoryManager history = History.openFileHistory( workarea ); ++ + +A history item is uses 2 - 3 files. All the files are located in a directory called workarea. +The file is named by escaping the id using URI encoding, and appending three file name extensions. + +{| border="1" cellpadding="3" cellspacing="0" align="center" +|- style="background-color: #f9f9f9;" +|'''File''' || '''Description''' +|- +|.txt || The item's meta-data written as serialization of the variant. The file format is no longer ascii text, but binary data. +|- +| .data || A series of samples serialized with no header. +|- +| .index || Index file that contains long offsets for each sample. Index file is used for variable sized samples only, such as strings and variable-lengthed arrays. +|} + +=Item Manager= +Item descriptions are aquired with HistoryManager#getItems(). Each item is an record containing the fields +the item was initialized with, and/or possible added later. For instance, if data was written to the item +with a Collector, the collecting parameters and collectin state data is written to a field called "collectorState". + + Bean[] items = history.getItems(); ++The record is expressed with an instance of a sub-class of a bean. Known fields can be copied to user +specified class. ++ HistoryItem i0 = new HistoryItem(); + i0.readAvailableFields( items[0] ); ++ItemManager is an utility that aids in creating, modifying and reading item arrays. ++ ItemManager im = new ItemManager( items ); ++Item id's can be extracted conveniently. ++ System.out.println("Items Identifiers:"); + for ( String itemId : im.toIdArray() ) + { + System.out.println( itemId ); + } ++The items can be selected using one or multiple fields as patterns. ++ // To search an item by id, use + List\ No newline at end of fileresult = im.search("id", id); + + // To search items of specific parameter, say file format, use + im.search("format", sampleFormat); + + // Or interval + im.search("interval", 0.1);