diff --git a/src/main/java/ai/AIBlock.java b/src/main/java/ai/AIBlock.java index bcce03124d0b20f802058cf127237fb23fed7ebd..22e7c2f904680a1da0d190f1f8912967383d19db 100644 --- a/src/main/java/ai/AIBlock.java +++ b/src/main/java/ai/AIBlock.java @@ -86,12 +86,15 @@ public class AIBlock extends AIInteract { boolean ok = makeQuestion(questionT); if (!ok) { done = true; + TraceManager.addDev("Make question failed"); } try { - specification = AvatarSpecification.fromJSON(chatData.lastAnswer, "design", null); + TraceManager.addDev("Making specification from " + chatData.lastAnswer); + specification = AvatarSpecification.fromJSON(extractJSON(), "design", null); TraceManager.addDev(" Avatar spec=" + specification); done = true; } catch (org.json.JSONException e) { + TraceManager.addDev("Invalid JSON spec: " + extractJSON() + " because " + e.getMessage()); done = true; } } diff --git a/src/main/java/avatartranslator/AvatarSpecification.java b/src/main/java/avatartranslator/AvatarSpecification.java index 94c0c6dc7199cb476b10e08ebc8e51d573f1e37e..1f0da4317316a5ee1c241176914a063f043a65a5 100644 --- a/src/main/java/avatartranslator/AvatarSpecification.java +++ b/src/main/java/avatartranslator/AvatarSpecification.java @@ -526,7 +526,7 @@ public class AvatarSpecification extends AvatarElement implements IBSParamSpec { int indexStop = _spec.lastIndexOf('}'); if ((indexStart == -1) || (indexStop == -1) || (indexStart > indexStop)) { - throw new org.json.JSONException("Invalid JSON object"); + throw new org.json.JSONException("Invalid JSON object (start)"); } _spec = _spec.substring(indexStart, indexStop + 1); @@ -551,12 +551,14 @@ public class AvatarSpecification extends AvatarElement implements IBSParamSpec { try { JSONArray attributesA = blockO.getJSONArray("attributes"); + if (attributesA != null) { - for (int j = 0; j < attributesA.length(); j++) { - String nameA = spec.removeSpaces(attributesA.getJSONObject(j).getString("name")); - String typeA = attributesA.getJSONObject(j).getString("type"); - AvatarAttribute aa = new AvatarAttribute(nameA, AvatarType.getType(typeA), newBlock, _referenceObject); - newBlock.addAttribute(aa); + for (int j = 0; j < attributesA.length(); j++) { + String nameA = spec.removeSpaces(attributesA.getJSONObject(j).getString("name")); + String typeA = attributesA.getJSONObject(j).getString("type"); + AvatarAttribute aa = new AvatarAttribute(nameA, AvatarType.getType(typeA), newBlock, _referenceObject); + newBlock.addAttribute(aa); + } } } catch (JSONException je) { } @@ -610,11 +612,14 @@ public class AvatarSpecification extends AvatarElement implements IBSParamSpec { } } - - JSONArray connections = mainObject.getJSONArray("connections"); + JSONArray connections = null; + try { + connections = mainObject.getJSONArray("connections"); + } catch (JSONException je) { + } if (connections == null) { - jsonErrors.add("No connections between blocks"); + //jsonErrors.add("No connections between blocks"); TraceManager.addDev("No connections in json"); return spec; } diff --git a/src/main/java/ui/window/JFrameAI.java b/src/main/java/ui/window/JFrameAI.java index e45b620584185771d2d5e185a0b30b12e8dcff94..19081e9cf692f44da17cd46ee5533097a00e24de 100644 --- a/src/main/java/ui/window/JFrameAI.java +++ b/src/main/java/ui/window/JFrameAI.java @@ -404,7 +404,7 @@ public class JFrameAI extends JFrame implements ActionListener { String[] names = {"pico", "zebre", "pingouin", "chien", "minou", "kitty", "chaton", "whatsapp", "Luke Skywalker", "macareux", "ours", "italien", "paris-brest", "belle-mère", "apéro (l'abus d'alcool est dangereux pour la santé)", "carpe", "crocodile", "psychologue", "dr emacs", "3615-TTool", "100 balles et 1 mars", - "opéra (l’abus d’Alcôve est dangereux pour la santé)", "chapon", "perroquet"}; + "opéra (l’abus d’Alcôve est dangereux pour la santé)", "chapon", "perroquet", "chameau volant", "Alice", "Oasis"}; int x = (int) (Math.random() * names.length); return names[x]; } @@ -467,6 +467,7 @@ public class JFrameAI extends JFrame implements ActionListener { return ; } + TraceManager.addDev("Class of answer: " + selectedChat.aiInteract.getClass().getName()); if (selectedChat.aiInteract instanceof ai.AIBlock) {