diff --git a/src/main/java/ai/AIUseCaseDiagram.java b/src/main/java/ai/AIUseCaseDiagram.java index ff7c4d2aacf625e48474b0da3fee174d5456c418..e70608eff286e550dacaabc72655f9bf63f33cc9 100644 --- a/src/main/java/ai/AIUseCaseDiagram.java +++ b/src/main/java/ai/AIUseCaseDiagram.java @@ -99,6 +99,7 @@ public class AIUseCaseDiagram extends AIInteract { public String namesOfActors = ""; public String namesOfUseCases = ""; + public String connections = ""; public AIUseCaseDiagram(AIChatData _chatData) { super(_chatData); @@ -147,6 +148,9 @@ public class AIUseCaseDiagram extends AIInteract { //specification0 = AvatarSpecification.fromJSONConnection(json, "design", null, true); //errors = AvatarSpecification.getJSONErrors(); } else if (stage == 2) { + connections = ""; + errors = new ArrayList<>(); + connections = getConnections(json, errors); /*specification = AvatarSpecification.fromJSON(json, "design", null, true); if (specification != null) { specification.addSignalsAndConnection(specification0); @@ -261,6 +265,13 @@ public class AIUseCaseDiagram extends AIInteract { return ad.getActorNames(); } + private String getConnections(String _spec, ArrayList<String> _errors) throws org.json.JSONException { + AvatarUseCaseDiagram ad = new AvatarUseCaseDiagram("", null); + _errors.addAll(ad.makeConnectionsFromJson(_spec)); + + return ad.getActorNames(); + } + diff --git a/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java b/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java index 3f8b5cd668c9f6ec8df7218f8df088c3a4278108..dfe2866eb90e5869b6042c5d0f55077a775a8ca4 100644 --- a/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java +++ b/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java @@ -155,6 +155,55 @@ public class AvatarUseCaseDiagram extends AvatarElement { return errors; } + public ArrayList<String> makeConnectionsFromJson(String _json) { + ArrayList<String> errors = new ArrayList<>(); + + if (_json == null) { + errors.add("No \"usecases\" array in json"); + return errors; + } + int indexStart = _json.indexOf('{'); + int indexStop = _json.lastIndexOf('}'); + + if ((indexStart == -1) || (indexStop == -1) || (indexStart > indexStop)) { + errors.add("Invalid JSON object (start or stop)"); + return errors; + } + + _json = _json.substring(indexStart, indexStop + 1); + + //TraceManager.addDev("Cut spec: " + _spec); + + JSONObject mainObject = new JSONObject(_json); + JSONArray useCasesJ = mainObject.getJSONArray("connections"); + + if (useCasesJ == null) { + TraceManager.addDev("No \"connections\" array in json"); + errors.add("No \"connections\" array in json"); + return errors; + } + + for (int i = 0; i < useCasesJ.length(); i++) { + JSONObject useCase = useCasesJ.getJSONObject(i); + String elt1 = useCase.getString("element1"); + if (elt1 == null) { + errors.add("element1 #" + i + " does not exist"); + } else { + elt1 = Conversion.replaceAllString(elt1.trim(), " ", ""); + String elt2 = useCase.getString("element2"); + if (elt2 == null) { + errors.add("element2 #" + i + " does not exist"); + } else { + elt2 = Conversion.replaceAllString(elt2.getString("name").trim(), " ", ""); + + } + } + } + + + return errors; + } + public String getActorNames() { StringBuffer sb = new StringBuffer(); for(AvatarActor actor: actors) {