From fd4f4e42db165cab5e67c4b068c45939b8728a7d Mon Sep 17 00:00:00 2001 From: Samantha Hunsley Date: Thu, 26 Mar 2020 21:33:17 -0400 Subject: [PATCH] Added relationships for CA CI XH HA HG --- .../systemnavigation3d/domain/dto/CA.groovy | 2 + .../systemnavigation3d/domain/dto/CI.groovy | 1 + .../systemnavigation3d/domain/dto/XH.groovy | 2 + .../geia/GeiaDataSource.java | 7 +++ .../geia/XMLGeiaDataSource.java | 54 ++++++++++++++++++- 5 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/CA.groovy b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/CA.groovy index 6ddf92c..259ed8e 100644 --- a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/CA.groovy +++ b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/CA.groovy @@ -45,4 +45,6 @@ class CA implements GeiaEntity { @XmlElement(name = "preventive_maintenance_checks_and_services_indicator_code") String preventiveMaintenanceChecksAndServicesIndicatorCode + transient List ciChildren = new ArrayList<>() + } diff --git a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/CI.groovy b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/CI.groovy index 7d02eed..5079387 100644 --- a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/CI.groovy +++ b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/CI.groovy @@ -39,4 +39,5 @@ class CI implements GeiaEntity { @XmlElement(name = "task_provision_logistics_support_analysis_control_number_type") String taskProvisionLcnType + transient List hgChildren = new ArrayList<>() } diff --git a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/XH.groovy b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/XH.groovy index 386595c..311dbf4 100644 --- a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/XH.groovy +++ b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/XH.groovy @@ -24,4 +24,6 @@ class XH implements GeiaEntity { @XmlElement(name = "commercial_and_government_entity_state") String cageState + transient List haChildren = new ArrayList<>() + } diff --git a/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/GeiaDataSource.java b/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/GeiaDataSource.java index 03a89c5..ab0deee 100644 --- a/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/GeiaDataSource.java +++ b/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/GeiaDataSource.java @@ -3,14 +3,21 @@ import com.lmco.spectrum.systemnavigation3d.domain.dto.CA; import com.lmco.spectrum.systemnavigation3d.domain.dto.XA; import com.lmco.spectrum.systemnavigation3d.domain.dto.XB; +import com.lmco.spectrum.systemnavigation3d.domain.dto.XH; +import com.lmco.spectrum.systemnavigation3d.domain.dto.CI; +import com.lmco.spectrum.systemnavigation3d.domain.dto.HG; import java.util.List; public interface GeiaDataSource { List getXAs(); + List getXHs(); XA getXA(String endItemAcronymCode); + XH getXH(String cageCode); XB getXB(XA src, String lcn); CA getCA(XB src, String taskCode); + CI getCI(CA src, String taskProvisionReferenceNumber); + HG getHG(CI src, String referenceNumber); } diff --git a/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/XMLGeiaDataSource.java b/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/XMLGeiaDataSource.java index 7e5d722..3232f53 100644 --- a/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/XMLGeiaDataSource.java +++ b/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/XMLGeiaDataSource.java @@ -17,9 +17,11 @@ public class XMLGeiaDataSource implements GeiaDataSource { private Map, List> geiaEntityMap; private List xaList; + private List xhList; public XMLGeiaDataSource(InputStream xmlStream) { this.xaList = new ArrayList<>(); + this.xhList = new ArrayList<>(); this.geiaEntityMap = new HashMap<>(); try { @@ -49,11 +51,15 @@ private void processGeiaStd() { } xaList.addAll(getEntities(XA.class)); + xhList.addAll(getEntities(XH.class)); for(XA xa : xaList) { pairXAWithChildren(xa); } + for(XH xh : xhList){ + pairXHWithChildren(xh); + } } private void pairXAWithChildren(XA src) { @@ -66,6 +72,13 @@ private void pairXAWithChildren(XA src) { }); } + private void pairXHWithChildren(XH src){ + getEntities(HA.class) + .stream() + .filter(ha -> ha.getCageCode() == src.getCageCode()) + .forEach(ha -> src.getHaChildren().add(ha)); + } + private void pairXBWithChildren(XB src) { getEntities(XB.class) .stream() @@ -77,7 +90,27 @@ private void pairXBWithChildren(XB src) { getEntities(CA.class) .stream() .filter(ca -> src.getLcn().equals(ca.getLcn())) - .forEach(ca -> src.getCaChildren().add(ca)); // TODO process CA children + .forEach(ca -> { + pairCAWithChildren(ca); + src.getCaChildren().add(ca); + }); + } + + private void pairCAWithChildren(CA src){ + getEntities(CI.class) + .stream() + .filter(ci -> src.getLcn().equals(ci.getLcn())) + .forEach(ci -> { + pairCIWithChildren(ci); + src.getCiChildren().add(ci); + }); + } + + private void pairCIWithChildren(CI src){ + getEntities(HG.class) + .stream() + .filter(hg -> src.getLcn().equals(hg.getLcn())) + .forEach((hg -> src.getHgChildren().add(hg))); } @Override @@ -85,11 +118,19 @@ public List getXAs() { return xaList; } + @Override + public List getXHs() {return xhList;} + @Override public XA getXA(String endItemAcronymCode) { return xaList.stream().filter(xa -> xa.getEndItemAcronymCode().equals(endItemAcronymCode)).findFirst().orElse(null); } + @Override + public XH getXH(String cageCode){ + return xhList.stream().filter(xh -> xh.getCageCode().equals(cageCode)).findFirst().orElse(null); + } + @Override public XB getXB(XA src, String lcn) { return src.getXbChildren().stream().filter(xb -> xb.getLcn().equals(lcn)).findFirst().orElse(null); @@ -99,4 +140,15 @@ public XB getXB(XA src, String lcn) { public CA getCA(XB src, String taskCode) { return src.getCaChildren().stream().filter(ca -> ca.getTaskCode().equals(taskCode)).findFirst().orElse(null); } + + @Override + public CI getCI(CA src, String taskProvisionReferenceNumber){ + return src.getCiChildren().stream().filter(ci -> ci.getTaskProvisionReferenceNumber().equals(taskProvisionReferenceNumber)).findFirst().orElse(null); + } + + @Override + public HG getHG(CI src, String referenceNumber) + { + return src.getHgChildren().stream().filter(hg -> hg.getReferenceNumber().equals(referenceNumber)).findFirst().orElse(null); + } }