diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 610356b..70613b6 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -14,13 +14,12 @@ ObjectNode customers = new ObjectNode("Customers"); ObjectNode customer = new ObjectNode("Customer"); ObjectNode address = new ObjectNode("String"); -// ReferenceEdge srcEdge = new ReferenceEdge(companies, company, "company"); ReferenceEdge srcEdge = new ReferenceEdge(companies, company, "company", "String"); srcEdges.add(srcEdge); -// ReferenceEdge dstEdge = new ReferenceEdge(customers, customer, "customer"); ReferenceEdge dstEdge = new ReferenceEdge(customers, customer, "customer", "String"); dstEdges.add(dstEdge); List relations = new ArrayList<>(); +// Relation transferRelation = new Relation(company, customer, MultiplicityValue.OneToOne); Relation transferRelation = new Relation(srcEdges, dstEdges, MultiplicityValue.OneToMany); DataTransferContext context = new DataTransferContext(relations, transferRelation, address, "address", PushPullValue.PULL); diff --git a/src/main/java/models/objectOrientedTransfer/DataTransferContext.java b/src/main/java/models/objectOrientedTransfer/DataTransferContext.java index 2bc8f02..4026628 100644 --- a/src/main/java/models/objectOrientedTransfer/DataTransferContext.java +++ b/src/main/java/models/objectOrientedTransfer/DataTransferContext.java @@ -31,6 +31,10 @@ return transferRelation; } + public boolean isFlat() { + return transferRelation.isFlat(); + } + public List getSrcResource() { return transferRelation.getSrcResource(); } @@ -38,6 +42,15 @@ public List getDstResource() { return transferRelation.getDstResource(); } + + public ObjectNode getSrcFirstResource() { + return transferRelation.getSrcFirstResource(); + } + + public ObjectNode getDstFirstResource() { + return transferRelation.getDstFirstResource(); + } + public MultiplicityValue getTransferMultiplicity() { return transferRelation.getMultiplicity(); diff --git a/src/main/java/models/objectOrientedTransfer/DataTransferDesign.java b/src/main/java/models/objectOrientedTransfer/DataTransferDesign.java index a650dac..90a2fd5 100644 --- a/src/main/java/models/objectOrientedTransfer/DataTransferDesign.java +++ b/src/main/java/models/objectOrientedTransfer/DataTransferDesign.java @@ -82,14 +82,17 @@ ObjectNode srcObj = null; ObjectNode dstObj = null; if (transferStyle == PushPullValue.PUSH) { - srcObj = (ObjectNode) transferContext.getSrcResource().getFirst().getSource(); - dstObj = (ObjectNode) transferContext.getDstResource().getFirst().getSource(); + srcObj = transferContext.getSrcFirstResource(); + dstObj = transferContext.getDstFirstResource(); } else { - srcObj = (ObjectNode) transferContext.getDstResource().getFirst().getSource(); - dstObj = (ObjectNode) transferContext.getSrcResource().getFirst().getSource(); + srcObj = transferContext.getDstFirstResource(); + dstObj = transferContext.getSrcFirstResource(); } String refName = dstObj.getName().substring(0, 1).toLowerCase() + dstObj.getName().substring(1); ReferenceEdge prevReference = new ReferenceEdge(srcObj, dstObj, refName); + if (transferContext.isFlat()) { + return prevReference; + } boolean toOne = true; // potential multiplicity List srcResource = new ArrayList<>(); List dstResource = new ArrayList<>(); diff --git a/src/main/java/models/objectOrientedTransfer/Relation.java b/src/main/java/models/objectOrientedTransfer/Relation.java index c61d852..a2388ed 100644 --- a/src/main/java/models/objectOrientedTransfer/Relation.java +++ b/src/main/java/models/objectOrientedTransfer/Relation.java @@ -1,18 +1,36 @@ package models.objectOrientedTransfer; +import java.util.ArrayList; import java.util.List; public class Relation { private List srcResource; private List dstResource; private MultiplicityValue multiplicity; - + private boolean isFlat = false; + private ObjectNode srcResourceNode; + private ObjectNode dstResourceNode; + public Relation(List srcResource, List dstResource, MultiplicityValue multiplicity) { + isFlat = false; this.srcResource = srcResource; this.dstResource = dstResource; this.multiplicity = multiplicity; } + public Relation(ObjectNode srcResourceNode, ObjectNode dstResourceNode, MultiplicityValue multiplicity) { + this.isFlat = true; + this.srcResource = new ArrayList<>(); + this.dstResource = new ArrayList<>(); + this.srcResourceNode = srcResourceNode; + this.dstResourceNode = dstResourceNode; + this.multiplicity = multiplicity; + } + + public boolean isFlat() { + return isFlat; + } + public List getSrcResource() { return srcResource; } @@ -20,6 +38,20 @@ public List getDstResource() { return dstResource; } + + public ObjectNode getSrcFirstResource() { + if (isFlat) { + return srcResourceNode; + } + return (ObjectNode) srcResource.getFirst().getSource(); + } + + public ObjectNode getDstFirstResource() { + if (isFlat) { + return dstResourceNode; + } + return (ObjectNode) dstResource.getFirst().getSource(); + } public MultiplicityValue getMultiplicity() { return multiplicity;