diff --git a/src/main/java/models/objectOrientedTransfer/DataTransferContext.java b/src/main/java/models/objectOrientedTransfer/DataTransferContext.java index 45a855d..04b10d0 100644 --- a/src/main/java/models/objectOrientedTransfer/DataTransferContext.java +++ b/src/main/java/models/objectOrientedTransfer/DataTransferContext.java @@ -1,5 +1,6 @@ package models.objectOrientedTransfer; +import parser.ArrayValue; import parser.JsonValue; import parser.StringValue; import parser.Value; @@ -85,17 +86,21 @@ if (value instanceof JsonValue) { for (StringValue keyValue : ((JsonValue) value).getJson().keySet()) { String key = keyValue.getStringValue(); - if (key.equals("relations")) { + if (key.equals("relations")) {//この部分は動作未確認(おそらくまだ動かない) relations = new ArrayList<>(); - continue; + ArrayValue arrayValue = ((ArrayValue)((JsonValue) value).getValue(keyValue)); + List relationValues = arrayValue.getValues(); + for(Value relationValue:relationValues){ + relations.add(getRelation(relationValue)); + } } else if (key.equals("transfer")) { - setTransfer(((JsonValue) value).getValue(keyValue)); + transferRelation = getRelation(((JsonValue) value).getValue(keyValue)); } } } } - private void setTransfer(Value value) { + private Relation getRelation(Value value){ if (value instanceof JsonValue) { MultiplicityValue multiplicityValue = null; List srcEdges = new ArrayList<>(); @@ -107,13 +112,7 @@ } else if (key.equals("dst")) { setEdges((StringValue) ((JsonValue) value).getValue(keyValue), dstEdges); } else if (key.equals("style")) { - StringValue styleValue = (StringValue) ((JsonValue) value).getValue(keyValue); - String style = styleValue.getStringValue(); - if (style.equals("PUSH")) { - transferStyle = PushPullValue.PUSH; - } else if (style.equals("PULL")) { - transferStyle = PushPullValue.PULL; - } + setTransferStyle((StringValue) ((JsonValue) value).getValue(keyValue)); } else if (key.equals("multiplicity")) { StringValue multi = (StringValue) ((JsonValue) value).getValue(keyValue); String multiplicity = multi.getStringValue(); @@ -127,27 +126,40 @@ multiplicityValue = MultiplicityValue.OneToMany; } } else if (key.equals("data")) { - Value dataTransferValue = ((JsonValue) value).getValue(keyValue); - if (dataTransferValue instanceof JsonValue) { - for (StringValue dataTransferValueKeyValue : ((JsonValue) dataTransferValue).getJson().keySet()) { - String dataTransferValueKey = dataTransferValueKeyValue.getStringValue(); - if (dataTransferValueKey.equals("type")) { - String type = ((StringValue) ((JsonValue) dataTransferValue).getValue(dataTransferValueKeyValue)).getStringValue(); - dataType = new ObjectNode(type); - } else if (dataTransferValueKey.equals("name")) { - String name = ((StringValue) ((JsonValue) dataTransferValue).getValue(dataTransferValueKeyValue)).getStringValue(); - dataName = name; - } - } - } else { - throw new ExpectedJsonValue("jsonのtransferのdataが足りていません"); - } + setTransferData(((JsonValue) value).getValue(keyValue)); } } if (multiplicityValue == null) { throw new RuntimeException("multiplicityが存在していません"); } - transferRelation = new Relation(srcEdges, dstEdges, multiplicityValue); + return new Relation(srcEdges,dstEdges,multiplicityValue); + } + throw new ExpectedJsonValue("Jsonではありません。"); + } + + private void setTransferStyle(StringValue stringValue){ + String style = stringValue.getStringValue(); + if (style.equals("PUSH")) { + transferStyle = PushPullValue.PUSH; + } else if (style.equals("PULL")) { + transferStyle = PushPullValue.PULL; + } + } + + private void setTransferData(Value dataTransferValue){ + if (dataTransferValue instanceof JsonValue) { + for (StringValue dataTransferValueKeyValue : ((JsonValue) dataTransferValue).getJson().keySet()) { + String dataTransferValueKey = dataTransferValueKeyValue.getStringValue(); + if (dataTransferValueKey.equals("type")) { + String type = ((StringValue) ((JsonValue) dataTransferValue).getValue(dataTransferValueKeyValue)).getStringValue(); + dataType = new ObjectNode(type); + } else if (dataTransferValueKey.equals("name")) { + String name = ((StringValue) ((JsonValue) dataTransferValue).getValue(dataTransferValueKeyValue)).getStringValue(); + dataName = name; + } + } + } else { + throw new ExpectedJsonValue("jsonのtransferのdataが足りていません"); } }