Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix relationships.
  • Loading branch information
dds14002 committed Mar 30, 2020
1 parent fd4f4e4 commit 4a01965
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 36 deletions.
Expand Up @@ -39,5 +39,5 @@ class CI implements GeiaEntity {
@XmlElement(name = "task_provision_logistics_support_analysis_control_number_type")
String taskProvisionLcnType

transient List<HG> hgChildren = new ArrayList<>()
transient HG hgChild
}
Expand Up @@ -18,4 +18,6 @@ class HA implements GeiaEntity {
@XmlElement(name = "item_name")
String itemName

transient XH xhParent;

}
Expand Up @@ -27,4 +27,6 @@ class HG implements GeiaEntity {
@XmlElement(name = "logistics_support_analysis_control_number_type")
String lcnType

transient HA haParent

}
Expand Up @@ -24,6 +24,4 @@ class XH implements GeiaEntity {
@XmlElement(name = "commercial_and_government_entity_state")
String cageState

transient List<HA> haChildren = new ArrayList<>()

}
Expand Up @@ -12,12 +12,10 @@ import java.util.List;
public interface GeiaDataSource {

List<XA> getXAs();
List<XH> 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);

}
Expand Up @@ -56,40 +56,33 @@ public class XMLGeiaDataSource implements GeiaDataSource {
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);
Expand All @@ -99,28 +92,53 @@ public class XMLGeiaDataSource implements GeiaDataSource {
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
public List<XA> getXAs() {
return xaList;
}

@Override
public List<XH> getXHs() {return xhList;}

@Override
public XA getXA(String endItemAcronymCode) {
return xaList.stream().filter(xa -> xa.getEndItemAcronymCode().equals(endItemAcronymCode)).findFirst().orElse(null);
Expand All @@ -142,13 +160,11 @@ public class XMLGeiaDataSource implements GeiaDataSource {
}

@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);
}
}

0 comments on commit 4a01965

Please sign in to comment.