@Entity
@Table(name = "hst_data")
@NamedQueries({
@NamedQuery(
name = HstData.FIND_WITH_EVENTS,
query = "select d " +
"from HstData d " +
"join fetch d.hstEvents " +
"where d.id = :id "
),
@NamedQuery(
name = HstData.FIND_WITH_SIGNALS,
query = "select d " +
"from HstData d " +
"join fetch d.hstSignals " +
"where d.id = :id "
),
@NamedQuery(
name = HstData.FIND_WITH_SIGNALS_AND_EVENTS,
query = "select d " +
"from HstData d " +
"join fetch d.hstEvents " +
"join fetch d.hstSignals " +
"where d.id = :id "
),
@NamedQuery(
name = HstData.FIND_WITH_RAW_DATA,
query = "select d " +
"from HstData d " +
"join fetch d.hstRaw " +
"where d.id = :id "
),
@NamedQuery(
name = HstData.FIND_WITH_NO_DATA,
query = "select d " +
"from HstData d " +
"where d.id = :id "
),
@NamedQuery(
name = HstData.FIND_WITH_ALL_DATA,
query = "select d " +
"from HstData d " +
"join fetch d.hstEvents " +
"join fetch d.hstSignals " +
"join fetch d.hstRaw " +
"where d.id = :id "
),
@NamedQuery(
name = HstData.FIND_COLLECTION_WITH_EVENTS_DATA,
query = "select d " +
"from HstData d " +
"join fetch d.hstEvents " +
"where d.id in :ids "
),
@NamedQuery(
name = HstData.FIND_COLLECTION_WITH_NO_DATA,
query = "select d " +
"from HstData d " +
"where d.id in :ids"
)
})
@EqualsAndHashCode(exclude = {"id", "lastModified"})
@ToString
public class HstData implements Serializable {
private static final int MAX_PRODUCT_NAME_LENGTH = 16;
private static final int MAX_SERIAL_NUMBER_LENGTH = 18;
private static final int MAX_SOFTWARE_ID_LENGTH = 16;
private static final int MAX_PRODUCT_CODE_LENGTH = 10;
public static final String FIND_WITH_EVENTS = "findHstDataWithEventsById";
public static final String FIND_WITH_SIGNALS = "findHstDataWithSignalsById";
public static final String FIND_WITH_SIGNALS_AND_EVENTS = "findHstDataWithSignalsAndEventsById";
public static final String FIND_WITH_RAW_DATA = "findHstDataWithRawDataById";
public static final String FIND_WITH_ALL_DATA = "findHstDataWithAllDataById";
public static final String FIND_COLLECTION_WITH_EVENTS_DATA = "findHstDataCollectionWithEventsDataById";
public static final String FIND_WITH_NO_DATA = "findHstDataWithNoDataById";
public static final String FIND_COLLECTION_WITH_NO_DATA = "findHstDataCollection";
public static final AnalysisParameter DEFAULT_ANALYSIS_PARAMETER = AnalysisParameter.AASM2007;
public static final String ALC_DEVICE_CODE = "0000000D";
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum AnalysisParameter {
AASM2012("aasm2012"), AASM2007("aasm2007"), CLASSIC("classic");
@Getter
private String label;
}
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum AnalysisType {
MANUAL("manual"),
AUTOMATIC("automatic");
@Getter
private String label;
public static AnalysisType getDefault() {
return AUTOMATIC;
}
}
@SuppressWarnings("UnusedDeclaration")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
private long id;
@NotNull
@Getter
@Setter
private LocalDateTime lastModified;
@NotNull
@Length(max = MAX_PRODUCT_NAME_LENGTH)
@Getter
@Setter
private String productName;
@NotNull
@Length(max = MAX_SERIAL_NUMBER_LENGTH)
@Getter
@Setter
private String serialNumber;
@NotNull
@Length(max = MAX_SOFTWARE_ID_LENGTH)
@Getter
@Setter
private String softwareId;
@NotNull
@Length(max = MAX_PRODUCT_CODE_LENGTH)
@Getter
@Setter
private String productCode;
@Enumerated(STRING)
@NotNull
@Getter
@Setter
private AnalysisParameter analysisParameter;
@Enumerated(STRING)
@NotNull
@Getter
@Setter
private AnalysisType analysisType;
@Column(name = "hst_raw_id", insertable = false, updatable = false)
@Getter
private Long hstRawId;
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "hst_raw_id")
private HstRaw hstRaw;
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "hst_events_id")
private HstEvents hstEvents;
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "hst_signals_id")
private HstSignals hstSignals;
}