From 4a01965e78ce4120d7e58ed505eebb0af2975b88 Mon Sep 17 00:00:00 2001 From: Daniel Scalzi Date: Mon, 30 Mar 2020 12:54:55 -0400 Subject: [PATCH] Fix relationships. --- .../systemnavigation3d/domain/dto/CI.groovy | 2 +- .../systemnavigation3d/domain/dto/HA.groovy | 2 + .../systemnavigation3d/domain/dto/HG.groovy | 2 + .../systemnavigation3d/domain/dto/XH.groovy | 2 - .../geia/GeiaDataSource.java | 4 +- .../geia/XMLGeiaDataSource.java | 76 +++++++++++-------- 6 files changed, 52 insertions(+), 36 deletions(-) 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 5079387..9d88a43 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,5 +39,5 @@ class CI implements GeiaEntity { @XmlElement(name = "task_provision_logistics_support_analysis_control_number_type") String taskProvisionLcnType - transient List hgChildren = new ArrayList<>() + transient HG hgChild } diff --git a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/HA.groovy b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/HA.groovy index b0e8377..96b3060 100644 --- a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/HA.groovy +++ b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/HA.groovy @@ -18,4 +18,6 @@ class HA implements GeiaEntity { @XmlElement(name = "item_name") String itemName + transient XH xhParent; + } diff --git a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/HG.groovy b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/HG.groovy index 6c4aed8..375efa5 100644 --- a/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/HG.groovy +++ b/src/main/groovy/com/lmco/spectrum/systemnavigation3d/domain/dto/HG.groovy @@ -27,4 +27,6 @@ class HG implements GeiaEntity { @XmlElement(name = "logistics_support_analysis_control_number_type") String lcnType + transient HA haParent + } 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 311dbf4..386595c 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,6 +24,4 @@ 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 ab0deee..8b5e7be 100644 --- a/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/GeiaDataSource.java +++ b/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/GeiaDataSource.java @@ -12,12 +12,10 @@ 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); + CI getCI(CA src, String cageCode, String taskProvisionReferenceNumber); } 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 3232f53..2098719 100644 --- a/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/XMLGeiaDataSource.java +++ b/src/main/java/com/lmco/spectrum/systemnavigation3d/geia/XMLGeiaDataSource.java @@ -56,40 +56,33 @@ private void processGeiaStd() { for(XA xa : xaList) { pairXAWithChildren(xa); } - - for(XH xh : xhList){ - pairXHWithChildren(xh); - } } private void pairXAWithChildren(XA src) { getEntities(XB.class) .stream() - .filter(xb -> xb.getLcnIndentureCode().charAt(0) == 'A' && src.getEndItemAcronymCode().equals(xb.getEndItemAcronymCode())) + .filter(xb -> xb.getLcnIndentureCode().charAt(0) == 'A' + && src.getEndItemAcronymCode().equals(xb.getEndItemAcronymCode())) .forEach(xb -> { pairXBWithChildren(xb); src.getXbChildren().add(xb); }); } - 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() - .filter(xb -> xb.getLcn().startsWith(src.getLcn()) && xb.getLcnIndentureCode().charAt(0)-1 == src.getLcnIndentureCode().charAt(0)) + .filter(xb -> xb.getLcn().startsWith(src.getLcn()) + && xb.getLcnIndentureCode().charAt(0)-1 == src.getLcnIndentureCode().charAt(0) + && xb.getEndItemAcronymCode().equals(src.getEndItemAcronymCode())) .forEach(xb -> { pairXBWithChildren(xb); src.getXbChildren().add(xb); }); getEntities(CA.class) .stream() - .filter(ca -> src.getLcn().equals(ca.getLcn())) + .filter(ca -> src.getLcn().equals(ca.getLcn()) + && src.getEndItemAcronymCode().equals(ca.getEndItemAcronymCode())) .forEach(ca -> { pairCAWithChildren(ca); src.getCaChildren().add(ca); @@ -99,18 +92,46 @@ private void pairXBWithChildren(XB src) { private void pairCAWithChildren(CA src){ getEntities(CI.class) .stream() - .filter(ci -> src.getLcn().equals(ci.getLcn())) + .filter(ci -> src.getLcn().equals(ci.getLcn()) + && src.getEndItemAcronymCode().equals(ci.getEndItemAcronymCode())) .forEach(ci -> { - pairCIWithChildren(ci); + pairCIWithHGChild(ci); src.getCiChildren().add(ci); }); } - private void pairCIWithChildren(CI src){ + private void pairCIWithHGChild(CI src){ getEntities(HG.class) .stream() - .filter(hg -> src.getLcn().equals(hg.getLcn())) - .forEach((hg -> src.getHgChildren().add(hg))); + .filter(hg -> src.getLcn().equals(hg.getLcn()) + && src.getTaskProvisionCageCode().equals(hg.getCageCode()) + && src.getTaskProvisionReferenceNumber().equals(hg.getReferenceNumber()) + && src.getEndItemAcronymCode().equals(hg.getEndItemAcronymCode())) + .findFirst() + .ifPresent(hg -> { + pairHGWithHAParent(hg); + src.setHgChild(hg); + }); + } + + private void pairHGWithHAParent(HG src) { + getEntities(HA.class) + .stream() + .filter(ha -> ha.getCageCode().equals(src.getCageCode()) + && ha.getReferenceNumber().equals(src.getReferenceNumber())) + .findFirst() + .ifPresent(ha -> { + pairHAWithXHParent(ha); + src.setHaParent(ha); + }); + } + + private void pairHAWithXHParent(HA src){ + getEntities(XH.class) + .stream() + .filter(xh -> xh.getCageCode().equals(src.getCageCode())) + .findFirst() + .ifPresent(src::setXhParent); } @Override @@ -118,9 +139,6 @@ 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); @@ -142,13 +160,11 @@ public CA getCA(XB src, String taskCode) { } @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); + public CI getCI(CA src, String cageCode, String taskProvisionReferenceNumber){ + return src.getCiChildren() + .stream() + .filter(ci -> ci.getTaskProvisionCageCode().equals(cageCode) + && ci.getTaskProvisionReferenceNumber().equals(taskProvisionReferenceNumber)) + .findFirst().orElse(null); } }