From 263c852801ffdbc3a0a28877081a04c331e4348a Mon Sep 17 00:00:00 2001 From: Letitia Li <letitia.li@telecom-paristech.fr> Date: Tue, 8 Nov 2016 09:50:08 +0100 Subject: [PATCH] UPPAAL fix --- src/ui/AvatarDesignPanelTranslator.java | 99 ++++++++++++++----------- 1 file changed, 57 insertions(+), 42 deletions(-) diff --git a/src/ui/AvatarDesignPanelTranslator.java b/src/ui/AvatarDesignPanelTranslator.java index 9f91d8c73a..49f9d2bc93 100644 --- a/src/ui/AvatarDesignPanelTranslator.java +++ b/src/ui/AvatarDesignPanelTranslator.java @@ -209,7 +209,7 @@ public class AvatarDesignPanelTranslator { tgsp = (AvatarBDSafetyPragma)tgc; values = tgsp.getValues(); for (String s: values){ - if (checkSafetyPragma(s, _blocks, _as){ + if (checkSafetyPragma(s, _blocks, _as)){ _as.addSafetyPragma(s); } } @@ -221,6 +221,7 @@ public class AvatarDesignPanelTranslator { if (_pragma.contains("=") && !_pragma.contains("==")){ return false; } + String header = _pragma.split(" ")[0]; if (_pragma.contains("-->")){ //will be implies String state1 = _pragma.split("-->")[0]; @@ -228,24 +229,14 @@ public class AvatarDesignPanelTranslator { if (!state1.contains(".") || !state2.contains(".")){ return false; } - - String block2 = state2.split(".")[0]; - String attr2 = state2.split(".")[1]; - boolean s1p1=false; - boolean s1p2=false; - boolean s2p1=false; - boolean s2p2 =false; - if (state1.contains("=="){ + if (state1.contains("==")){ String p1 = state1.split("==")[0]; String p2 = state1.split("==")[1]; String block1 = p1.split("\\.")[0]; String attr1 = p1.split("\\.")[1]; AvatarBlock bl1 = as.getBlockWithName(block1); if (bl1 !=null){ - if (bl1.getIndexOfAvatarAttributeWithName(attr1)!=-1){ - s1p1=true; - } - else { + if (bl1.getIndexOfAvatarAttributeWithName(attr1)==-1){ return false; } } @@ -258,10 +249,7 @@ public class AvatarDesignPanelTranslator { attr1=p2.split("\\.")[1]; bl1 = as.getBlockWithName(block1); if (bl1 !=null){ - if (bl1.getIndexOfAvatarAttributeWithName(attr1)!=-1){ - s1p2=true; - } - else { + if (bl1.getIndexOfAvatarAttributeWithName(attr1)==-1){ return false; } } @@ -270,47 +258,74 @@ public class AvatarDesignPanelTranslator { } } - else { - s1p2=true; - } } else { String block1 = state1.split("\\.")[0]; String attr1 = state1.split("\\.")[1]; AvatarBlock bl1 = as.getBlockWithName(block1); if (bl1 !=null){ - if (bl1.getIndexOfAvatarAttributeWithName(attr1)!=-1){ - s1p1=true; - s1p2=true; + AvatarStateMachine asm = bl1.getStateMachine(); + if (bl1.getIndexOfAvatarAttributeWithName(attr1)==-1 && asm.getStateWithName(attr1)==null){ + return false; } - else { - AvatarStateMachine asm = bl1.getStateMachine(); - if (asm.getStateWithName(attr1)!=null){ - s1p1=true; - s1p2=true; + } + else { + return false; + } + } + //check the second half of implies + if (state2.contains("==")){ + String p1 = state2.split("==")[0]; + String p2 = state2.split("==")[1]; + String block1 = p1.split("\\.")[0]; + String attr1 = p1.split("\\.")[1]; + AvatarBlock bl1 = as.getBlockWithName(block1); + if (bl1 !=null){ + if (bl1.getIndexOfAvatarAttributeWithName(attr1)==-1){ + return false; + } + } + else { + return false; + } + if (p2.contains(".")){ + //parse attr + block1=p2.split("\\.")[0]; + attr1=p2.split("\\.")[1]; + bl1 = as.getBlockWithName(block1); + if (bl1 !=null){ + if (bl1.getIndexOfAvatarAttributeWithName(attr1)==-1){ + return false; } } + else { + return false; + } + } } - if (state2.contains("=="){ - } else { - AvatarBlock bl2 = as.getBlockWithName(block2); - if (bl2 !=null){ - if (bl2.getIndexOfAvatarAttributeWithName(attr2)!=-1){ - found2=true; - } - else { - AvatarStateMachine asm = bl2.getStateMachine(); - if (asm.getStateWithName(attr2)!=null){ - found2=true; - } + String block1 = state2.split("\\.")[0]; + String attr1 = state2.split("\\.")[1]; + AvatarBlock bl1 = as.getBlockWithName(block1); + if (bl1 !=null){ + AvatarStateMachine asm = bl1.getStateMachine(); + if (bl1.getIndexOfAvatarAttributeWithName(attr1)==-1 && asm.getStateWithName(attr1)==null){ + return false; } } + else { + return false; + } } } - String header = _pragma.split(" ")[0]; - if (header.equals("E[]") || + else if (header.equals("E[]") || header.equals("E<>") || header.equals("A[]") || header.equals("A<>")){ + return true; + } + else { + return false; + } + return false; } public String reworkPragma(String _pragma, LinkedList<AvatarBDBlock> _blocks) { String ret = ""; -- GitLab