com.geotab.model.search.StatusDataSearch Maven / Gradle / Ivy
package com.geotab.model.search;
import com.geotab.model.entity.statusdata.StatusData;
import java.time.LocalDateTime;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* The object used to specify the arguments when searching for {@link StatusData}.
*
* When searching for status data including DeviceSearch and DiagnosticSearch the system will
* return all records that match the search criteria and interpolate the value at the provided from/to dates when there
* is no record that corresponds to the date. Interpolated records are dynamically created when the request is made and
* can be identified as not having the ID property populated. Records with an ID are stored in the database.
*
*
This search has been designed to work efficiently with these combinations of parameters:
*
* -
* Id
*
* -
* DeviceSearch + DiagnosticSearch + FromDate and/or ToDate
*
*
*
* Cannot be used with DriverGroups.
*/
@Getter @Setter
@NoArgsConstructor
public class StatusDataSearch extends Search {
/**
* Search for {@link StatusData} recorded for this DeviceSearch Id
*
*
Available DeviceSearch options are:.
*
* - id
*
*/
private DeviceSearch deviceSearch;
/**
* Search for {@link StatusData} with this DiagnosticSearch Id
*
* Available DiagnosticSearch options are:.
*
* - id
*
*/
private DiagnosticSearch diagnosticSearch;
/**
* Search for {@link StatusData} records that were logged at this date or after.
*/
private LocalDateTime fromDate;
/**
* Search for {@link StatusData} records that were logged at this date or before.
*/
private LocalDateTime toDate;
@Builder
public StatusDataSearch(String id, DeviceSearch deviceSearch,
DiagnosticSearch diagnosticSearch, LocalDateTime fromDate, LocalDateTime toDate) {
super(id);
this.deviceSearch = deviceSearch;
this.diagnosticSearch = diagnosticSearch;
this.fromDate = fromDate;
this.toDate = toDate;
}
}