/* * Copyright (c) 2014. The Trustees of Indiana University. * * This version of the code is licensed under the MPL 2.0 Open Source license with additional * healthcare disclaimer. If the user is an entity intending to commercialize any application * that uses this code in a for-profit venture, please contact the copyright holder. */ package com.muzima.model.observation; import com.muzima.api.model.Encounter; import com.muzima.api.model.Observation; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class EncounterWithObservations { private Encounter encounter; private List<Observation> observations = new ArrayList<Observation>(); public Encounter getEncounter() { return encounter; } public void setEncounter(Encounter encounter) { this.encounter = encounter; } public List<Observation> getObservations() { Collections.sort(observations, observationDateTimeComparator); return observations; } public void setObservations(List<Observation> observations) { this.observations = observations; } public void addObservation(Observation observation) { encounter = observation.getEncounter(); observations.add(observation); } private Comparator<Observation> observationDateTimeComparator = new Comparator<Observation>() { @Override public int compare(Observation lhs, Observation rhs) { int isConceptNameEqual = lhs.getConcept().getName().compareTo(rhs.getConcept().getName()); if(isConceptNameEqual != 0){ return isConceptNameEqual; } return -lhs.getObservationDatetime().compareTo(rhs.getObservationDatetime()); } }; @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof EncounterWithObservations)) return false; EncounterWithObservations that = (EncounterWithObservations) o; if (!encounter.equals(that.encounter)) return false; if (!observations.equals(that.observations)) return false; return true; } @Override public int hashCode() { int result = encounter.hashCode(); result = 31 * result + observations.hashCode(); return result; } }