diff --git a/pinery-api/src/main/java/ca/on/oicr/pinery/api/Requisition.java b/pinery-api/src/main/java/ca/on/oicr/pinery/api/Requisition.java index 16130b9c..7b00a7e6 100644 --- a/pinery-api/src/main/java/ca/on/oicr/pinery/api/Requisition.java +++ b/pinery-api/src/main/java/ca/on/oicr/pinery/api/Requisition.java @@ -1,5 +1,7 @@ package ca.on.oicr.pinery.api; +import java.time.Instant; +import java.time.LocalDate; import java.util.List; import java.util.Set; @@ -50,4 +52,8 @@ public interface Requisition { void setPauses(List pauses); void addPause(RequisitionPause pause); + + public Instant getCreated(); + + public void setCreated(Instant created); } diff --git a/pinery-lims/src/main/java/ca/on/oicr/pinery/lims/DefaultRequisition.java b/pinery-lims/src/main/java/ca/on/oicr/pinery/lims/DefaultRequisition.java index 38aec148..ccf862ee 100644 --- a/pinery-lims/src/main/java/ca/on/oicr/pinery/lims/DefaultRequisition.java +++ b/pinery-lims/src/main/java/ca/on/oicr/pinery/lims/DefaultRequisition.java @@ -3,6 +3,8 @@ import ca.on.oicr.pinery.api.Requisition; import ca.on.oicr.pinery.api.RequisitionPause; import ca.on.oicr.pinery.api.SignOff; + +import java.time.Instant; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -20,6 +22,7 @@ public class DefaultRequisition implements Requisition { private boolean stopped = false; private String stopReason; private List pauses; + private Instant created; @Override public Integer getId() { @@ -151,9 +154,19 @@ public void addPause(RequisitionPause pause) { pauses.add(pause); } + @Override + public Instant getCreated() { + return created; + } + + @Override + public void setCreated(Instant created) { + this.created = created; + } + @Override public int hashCode() { - return Objects.hash(assayIds, id, name, sampleIds, signOffs, stopped, stopReason); + return Objects.hash(assayIds, id, name, sampleIds, signOffs, stopped, stopReason, created); } @Override @@ -171,6 +184,7 @@ public boolean equals(Object obj) { && Objects.equals(sampleIds, other.sampleIds) && Objects.equals(signOffs, other.signOffs) && Objects.equals(stopped, other.stopped) - && Objects.equals(stopReason, other.stopReason); + && Objects.equals(stopReason, other.stopReason) + && Objects.equals(created, other.created); } } diff --git a/pinery-ws-dto/src/main/java/ca/on/oicr/ws/dto/Dtos.java b/pinery-ws-dto/src/main/java/ca/on/oicr/ws/dto/Dtos.java index 7d82fc56..4c398642 100644 --- a/pinery-ws-dto/src/main/java/ca/on/oicr/ws/dto/Dtos.java +++ b/pinery-ws-dto/src/main/java/ca/on/oicr/ws/dto/Dtos.java @@ -8,6 +8,7 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; @@ -653,6 +654,7 @@ public static RequisitionDto asDto(Requisition from) { } to.setStopped(from.isStopped()); to.setStopReason(from.getStopReason()); + to.setCreatedDate(format(from.getCreated())); return to; } @@ -667,18 +669,25 @@ private static String format(Date date) { if (date == null) { return null; } - return ZonedDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault()) - .truncatedTo(ChronoUnit.SECONDS) - .format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + return format(Instant.ofEpochMilli(date.getTime())); } - private static final String format(LocalDate date) { + private static String format(LocalDate date) { if (date == null) { return null; } return date.format(dateFormatter); } + private static String format(Instant date) { + if (date == null) { + return null; + } + return ZonedDateTime.ofInstant(date, ZoneId.systemDefault()) + .truncatedTo(ChronoUnit.SECONDS) + .format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + protected static String format(BigDecimal decimal) { if (decimal == null) { return null; diff --git a/pinery-ws-dto/src/main/java/ca/on/oicr/ws/dto/RequisitionDto.java b/pinery-ws-dto/src/main/java/ca/on/oicr/ws/dto/RequisitionDto.java index d37b5b4d..8e8c0b52 100644 --- a/pinery-ws-dto/src/main/java/ca/on/oicr/ws/dto/RequisitionDto.java +++ b/pinery-ws-dto/src/main/java/ca/on/oicr/ws/dto/RequisitionDto.java @@ -21,6 +21,7 @@ public class RequisitionDto { private boolean stopped = false; private String stopReason; private List pauses; + private String createdDate; public Integer getId() { return id; @@ -99,9 +100,18 @@ public void setPauses(List pauses) { this.pauses = pauses; } + @JsonProperty("created_date") + public String getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(String createdDate) { + this.createdDate = createdDate; + } + @Override public int hashCode() { - return Objects.hash(assayIds, id, name, sampleIds, signOffs, stopped, stopReason, pauses); + return Objects.hash(assayIds, id, name, sampleIds, signOffs, stopped, stopReason, pauses, createdDate); } @Override @@ -120,6 +130,7 @@ public boolean equals(Object obj) { && Objects.equals(signOffs, other.signOffs) && Objects.equals(stopped, other.stopped) && Objects.equals(stopReason, other.stopReason) - && Objects.equals(pauses, other.pauses); + && Objects.equals(pauses, other.pauses) + && Objects.equals(createdDate, other.createdDate); } }