Class BasicHistoricalRecord

java.lang.Object
com.inductiveautomation.ignition.gateway.history.BasicHistoricalRecord
All Implemented Interfaces:
CacheOptimizedData, CacheOptimizedSchema, DatasourceData, GroupableData, HistoricalData, Serializable

public class BasicHistoricalRecord extends Object implements DatasourceData, CacheOptimizedData, CacheOptimizedSchema, GroupableData
The basic historical record represents a specific query with columns of data. It supports many advanced features of the store and forward system- data grouping, "cache optimized" storage, etc.

This record acts both as the courier and schema of the data- it implements CacheOptimizedSchema, which means it can be serialized and will only have the column information. It can then reconstitute the original record when provided with the raw data, that was serialized separately.

See Also:
  • Field Details

  • Constructor Details

    • BasicHistoricalRecord

      public BasicHistoricalRecord()
    • BasicHistoricalRecord

      public BasicHistoricalRecord(String tableName, String loggerName)
  • Method Details

    • getFlavor

      public HistoryFlavor getFlavor()
      Description copied from interface: HistoricalData
      The very broad "flavor" designator, used to get the data to the correct sink. That is, different sinks support different types of data, and this is used to match them up.
      Specified by:
      getFlavor in interface HistoricalData
    • getColumns

      public List<HistoricalColumn> getColumns()
    • addColumn

      public void addColumn(HistoricalColumn column)
      Adds a pre-defined column to the row. This allows the caller to provide a custom column type, or use something besides the standard ValueHistoricalColumn.
    • addColumn

      public void addColumn(String name)
      Creates a value column with the given name. Values must be added later with addRow.
    • addColumn

      public void addColumn(String name, QualifiedValue value)
      Adds a column with data to the row. Quickest way to build a single row HistoricalRecord.
    • quoteColumnNames

      public boolean quoteColumnNames()
    • addRow

      public void addRow(List<Object> rowData)
    • getDataCount

      public int getDataCount()
      This returns the number of rows of this historical record.
      Specified by:
      getDataCount in interface HistoricalData
    • getLoggerName

      public String getLoggerName()
      Description copied from interface: HistoricalData
      Returns the name of the logger that should be notified when something happens to this data. If null or empty, notifications won't occur (errors, however, may still be logged to the general logger).
      Specified by:
      getLoggerName in interface HistoricalData
    • setLoggerName

      public void setLoggerName(String loggerName)
    • getTablename

      public String getTablename()
    • setTablename

      public void setTablename(String value)
    • getSchema

      public CacheOptimizedSchema getSchema()
      The basic record just returns itself as the schema. The actual values in the history columns are transient, so they don't get serialized.
      Specified by:
      getSchema in interface CacheOptimizedData
    • getSignature

      public String getSignature()
      Description copied from interface: HistoricalData
      The signature is a static string that describes this data as uniquely as possible. This will be used to group data in the data cache (for example, when displaying quarantined data), as well as uniquely identifying cacheable schemas, etc.

      Basically, the golden rule is that if two pieces of data have the same signature, the came from the same place, and are going to the same place, and in theory could be grouped together (note: they won't be, that is done with the GroupableData interface).

      Specified by:
      getSignature in interface HistoricalData
    • getValueData

      public Object getValueData()
      Specified by:
      getValueData in interface CacheOptimizedData
    • createData

      public HistoricalData createData(Object valueData) throws Exception
      Specified by:
      createData in interface CacheOptimizedSchema
      Throws:
      Exception
    • getGroupId

      public String getGroupId()
      Grouping optimization code
      Specified by:
      getGroupId in interface GroupableData
    • groupData

      public GroupableData groupData(GroupableData other)
      Description copied from interface: GroupableData
      Merge another piece of similar data into this one.
      Specified by:
      groupData in interface GroupableData
    • useBatching

      protected boolean useBatching()
      Execution code
    • storeToConnection

      public void storeToConnection(SRConnection conn) throws Exception
      Description copied from interface: DatasourceData
      Called after passing through the store and forward system, the data should store itself to the open connection. If it cannot, it should throw an exception. After several retries, the data will be quarantined.
      Specified by:
      storeToConnection in interface DatasourceData
      Throws:
      Exception
    • getQuery

      protected String getQuery(DBTranslator translator)