Class AbstractValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T>

java.lang.Object
org.n52.sensorweb.server.db.assembler.value.AbstractValueAssembler<E,V,T>
All Implemented Interfaces:
TimeOutputCreator, ValueAssembler<E,V,T>
Direct Known Subclasses:
AbstractNumericalValueAssembler, BooleanValueAssembler, CategoryValueAssembler, ProfileValueAssembler, RecordValueAssembler, TextValueAssembler, TrajectoryValueAssembler

public abstract class AbstractValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T> extends Object implements ValueAssembler<E,V,T>, TimeOutputCreator
  • Field Details

    • serviceEntityFactory

      @Inject protected ServiceEntityFactory serviceEntityFactory
      Preconfigured service entity. Alternative to accessing service entities from a database (in case there data model and mappings supports it).
      See Also:
      • assertServiceAvailable(DescribableEntity)
  • Constructor Details

  • Method Details

    • setConnectors

      @Inject public void setConnectors(Optional<List<ValueConnector>> connectors)
    • isNoDataValue

      protected boolean isNoDataValue(org.n52.series.db.beans.DataEntity<?> data, org.n52.series.db.beans.DatasetEntity dataset)
    • getData

      public org.n52.io.response.dataset.Data<V> getData(String datasetId, DbQuery dbQuery)
      Description copied from interface: ValueAssembler
      Assembles observation values as Data output.
      Specified by:
      getData in interface ValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T>
      Parameters:
      datasetId - the dataset id
      dbQuery - the query
      Returns:
      the assembled data
    • getFirstValue

      public V getFirstValue(org.n52.series.db.beans.DatasetEntity entity, DbQuery query)
      Specified by:
      getFirstValue in interface ValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T>
      Parameters:
      entity - the dataset entity
      query - the query
      Returns:
      the first value for the given dataset
    • getLastValue

      public V getLastValue(org.n52.series.db.beans.DatasetEntity entity, DbQuery query)
      Specified by:
      getLastValue in interface ValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T>
      Parameters:
      entity - the dataset entity
      query - the query
      Returns:
      the last value for the given dataset
    • assembleExpandedDataValues

      protected org.n52.io.response.dataset.Data<V> assembleExpandedDataValues(org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
      Assembles an expanded view of data values. An expanded view may include for example
      • Reference values
      • First values beyond requested timespan interval
      • Further output for each data value
      By default this returns the output of assembleDataValues(DatasetEntity, DbQuery). Implementations may override this method to include all metadata necessary for an expanded output.
      Parameters:
      dataset - the dataset
      query - the query
      Returns:
      an expanded view of assembled data
    • assembleDataValues

      protected org.n52.io.response.dataset.Data<V> assembleDataValues(org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
      Assembles data values.
      Parameters:
      dataset - the dataset
      query - the query
      Returns:
      the assembled data
    • assembleDataValueWithMetadata

      public V assembleDataValueWithMetadata(E data, org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
      Description copied from interface: ValueAssembler
      Assembles an output for a data entity containing all metadata (geometry, parameters, valid time, etc.) for a given query.
      Specified by:
      assembleDataValueWithMetadata in interface ValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T>
      Parameters:
      data - the single data entity to assemble
      dataset - the dataset the data entity belongs to
      query - the query
      Returns:
      the assembled output
    • findAll

      protected Stream<E> findAll(org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
    • prepareValue

      protected <O extends org.n52.io.response.dataset.AbstractValue<?>> O prepareValue(O value, org.n52.series.db.beans.DataEntity<?> observation, org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
      Prepares data value by setting time/time interval depending on actual query.
      Type Parameters:
      O - the type of the assembled output value
      Parameters:
      value - the actual (empty) value
      observation - the observation entity
      dataset - the dataset entity
      query - the query
      Returns:
      the value with time
    • addMetadatasIfNeeded

      protected V addMetadatasIfNeeded(E observation, V value, org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
    • addGeometry

      protected void addGeometry(org.n52.series.db.beans.DataEntity<?> dataEntity, org.n52.io.response.dataset.AbstractValue<?> value, DbQuery query)
    • getGeometry

      protected org.locationtech.jts.geom.Geometry getGeometry(org.n52.series.db.beans.GeometryEntity geometryEntity, DbQuery query)
    • addValidTime

      protected void addValidTime(org.n52.series.db.beans.DataEntity<?> observation, org.n52.io.response.dataset.AbstractValue<?> value, org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
    • addResultTime

      protected void addResultTime(org.n52.series.db.beans.DataEntity<?> observation, org.n52.io.response.dataset.AbstractValue<?> value, org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
    • addParameters

      protected void addParameters(org.n52.series.db.beans.DataEntity<?> observation, org.n52.io.response.dataset.AbstractValue<?> value, DbQuery query)
    • getClosestValueBeforeStart

      public E getClosestValueBeforeStart(org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
      Description copied from interface: ValueAssembler
      Finds the closest value before a given timespan.
      Specified by:
      getClosestValueBeforeStart in interface ValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T>
      Parameters:
      dataset - the dataset
      query - the query containing the timespan
      Returns:
      the closest value before a given timespan
    • getClosestValueAfterEnd

      public E getClosestValueAfterEnd(org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
      Description copied from interface: ValueAssembler
      Finds the closest value after a given timespan.
      Specified by:
      getClosestValueAfterEnd in interface ValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T>
      Parameters:
      dataset - the dataset
      query - the query containing the timespan
      Returns:
      the closest value after a given timespan
    • unproxy

      protected E unproxy(org.n52.series.db.beans.DataEntity<?> dataEntity)
    • getCount

      public Long getCount(org.n52.series.db.beans.DatasetEntity dataset, DbQuery query)
    • getEntityManager

      protected javax.persistence.EntityManager getEntityManager()
    • hasValidEntriesWithinRequestedTimespan

      protected boolean hasValidEntriesWithinRequestedTimespan(List<?> observations)
    • hasSingleValidReferenceValue

      protected boolean hasSingleValidReferenceValue(List<?> observations)
    • format

      protected BigDecimal format(BigDecimal value, org.n52.series.db.beans.DatasetEntity dataset)
    • format

      protected BigDecimal format(BigDecimal value, Integer scale)
    • getConnectors

      public Map<String,ValueConnector> getConnectors()
      Specified by:
      getConnectors in interface ValueAssembler<E extends org.n52.series.db.beans.DataEntity<T>,V extends org.n52.io.response.dataset.AbstractValue<?>,T>