package org.openlmis.distribution.domain; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import org.openlmis.core.domain.Facility; import org.openlmis.core.domain.ProcessingPeriod; import java.util.ArrayList; import java.util.Collections; import java.util.List; import static java.util.Arrays.asList; /** * VaccinationAdultCoverage represents a container for list of AdultCoverageLineItem. */ @Data @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper = true) public class VaccinationAdultCoverage extends VaccinationCoverage { private static final List<String> validProductVials = Collections.unmodifiableList(asList("Tetanus")); List<AdultCoverageLineItem> adultCoverageLineItems = new ArrayList<>(); public VaccinationAdultCoverage(FacilityVisit facilityVisit, Facility facility, ProcessingPeriod period, List<TargetGroupProduct> adultTargetGroupProducts, List<ProductVial> adultProductVial) { super(facilityVisit, facility, adultProductVial, validProductVials); List<String> validDemographicGroups = Collections.unmodifiableList( asList("Pregnant Women", "MIF 15-49 years - Community", "MIF 15-49 years - Students", "MIF 15-49 years - Workers", "Students not MIF", "Workers not MIF", "Other not MIF")); createAdultCoverageLineItems(facilityVisit, facility, period, adultTargetGroupProducts, validDemographicGroups); } private void createAdultCoverageLineItems(FacilityVisit facilityVisit, Facility facility, ProcessingPeriod period, List<TargetGroupProduct> adultTargetGroupProducts, List<String> demographicGroups) { for (String demographicGroup : demographicGroups) { TargetGroupProduct targetGroupForLineItem = getTargetGroupForLineItem(adultTargetGroupProducts, demographicGroup); this.adultCoverageLineItems.add(new AdultCoverageLineItem(facilityVisit, facility, targetGroupForLineItem, demographicGroup, period.getNumberOfMonths())); } } }