/* * * * This program is part of the OpenLMIS logistics management information system platform software. * * Copyright © 2013 VillageReach * * * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * *   * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License along with this program.  If not, see http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  * */ package org.openlmis.distribution.domain; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import org.openlmis.core.domain.Facility; import java.util.List; import static com.fasterxml.jackson.databind.annotation.JsonSerialize.Inclusion.NON_EMPTY; /** * FacilityDistribution represents a container for Facility related attributes, FacilityVisit, EpiUse, EpiInventory, * DistributionRefrigerators, VaccinationFullCoverage, VaccinationChildCoverage, VaccinationAdultCoverage. * It represents the distribution information about vaccines for an entire facility. */ @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = false) @JsonSerialize(include = NON_EMPTY) @JsonIgnoreProperties(ignoreUnknown = true) public class FacilityDistribution { private Long facilityId; private String facilityCode; private String facilityName; private Long population; private String geographicZone; private FacilityVisit facilityVisit; private EpiUse epiUse; private DistributionRefrigerators refrigerators; private EpiInventory epiInventory; private VaccinationFullCoverage fullCoverage; private VaccinationChildCoverage childCoverage; private VaccinationAdultCoverage adultCoverage; public FacilityDistribution(FacilityVisit facilityVisit, Facility facility, Distribution distribution, List<RefrigeratorReading> readings, List<TargetGroupProduct> childrenTargetGroupProducts, List<TargetGroupProduct> adultTargetGroupProducts, List<ProductVial> childProductVials, List<ProductVial> adultProductVials) { this.setFacility(facility); this.facilityVisit = facilityVisit; this.epiUse = new EpiUse(facility, facilityVisit); this.refrigerators = new DistributionRefrigerators(facilityVisit, readings); this.epiInventory = new EpiInventory(facilityVisit, facility, distribution); this.childCoverage = new VaccinationChildCoverage(facilityVisit, facility, distribution.getPeriod(), childrenTargetGroupProducts, childProductVials); this.adultCoverage = new VaccinationAdultCoverage(facilityVisit, facility, distribution.getPeriod(), adultTargetGroupProducts, adultProductVials); } public FacilityDistribution(FacilityVisit facilityVisit, EpiUse epiUse, DistributionRefrigerators refrigerators, EpiInventory epiInventory, VaccinationFullCoverage fullCoverage, VaccinationChildCoverage childCoverage, VaccinationAdultCoverage adultCoverage) { this.facilityVisit = facilityVisit; this.epiUse = epiUse; this.refrigerators = refrigerators; this.epiInventory = epiInventory; this.fullCoverage = fullCoverage; this.childCoverage = childCoverage; this.adultCoverage = adultCoverage; } public void setFacility(Facility facility) { this.facilityId = facility.getId(); this.facilityCode = facility.getCode(); this.facilityName = facility.getName(); this.population = facility.getCatchmentPopulation(); this.geographicZone = facility.getGeographicZone().getName(); } }