diff --git a/src/main/java/ui/avatarsmd/AvatarSMDReceiveSignal.java b/src/main/java/ui/avatarsmd/AvatarSMDReceiveSignal.java index 8deb1f95ec369db5cb6972dd80d0530f28fa836d..4f596167e6e2b30528bcd40014b0a4cb7588a1b6 100644 --- a/src/main/java/ui/avatarsmd/AvatarSMDReceiveSignal.java +++ b/src/main/java/ui/avatarsmd/AvatarSMDReceiveSignal.java @@ -200,93 +200,96 @@ public class AvatarSMDReceiveSignal extends AvatarSMDBasicComponent implements C Color c = g.getColor(); if (reference !=null){ //References must be in the form "The max delay between send/recieve signal:(signalname) and send/receive signal (signalname) is (less than/greater than) X. - String req= ((AvatarRDRequirement) reference).getText().trim(); - if (req.contains("The max delay between")){ - //Attempt to parse string - boolean lessThan= req.contains(" less than "); - String sig1 = req.split(" between ")[1].split(" and ")[0].trim(); - String sig2 = req.split(" and ")[1].split(" is ")[0].trim(); - String num = req.split(" than ")[1]; - - num = num.replaceAll("\\.",""); - - int refNum = -1; - try { - refNum = Integer.valueOf(num); - } - catch(Exception e){ - } - - if (sig1.equals("receive signal: " + value.split("\\(")[0])){ - if (sig2.replaceAll(": ","-").equalsIgnoreCase(s)){ - //Compare times - int tActual=Integer.valueOf(latencyVals.get(s.split(":")[0])); - if (refNum>0){ - if (lessThan){ - if (tActual < refNum){ - g.setColor(Color.GREEN); - } - else { - g.setColor(Color.RED); - } - } - else { - if (tActual> refNum){ - g.setColor(Color.GREEN); + if (reference instanceof AvatarRDRequirement){ + String req= ((AvatarRDRequirement) reference).getText().trim(); + if (req.contains("The max delay between")){ + //Attempt to parse string + boolean lessThan= req.contains(" less than "); + String sig1 = req.split(" between ")[1].split(" and ")[0].trim(); + String sig2 = req.split(" and ")[1].split(" is ")[0].trim(); + String num = req.split(" than ")[1]; + + num = num.replaceAll("\\.",""); + + int refNum = -1; + try { + refNum = Integer.valueOf(num); + } + catch(Exception e){ + } + + if (sig1.equals("receive signal: " + value.split("\\(")[0])){ + if (sig2.replaceAll(": ","-").equalsIgnoreCase(s)){ + //Compare times + int tActual=Integer.valueOf(latencyVals.get(s.split(":")[0])); + if (refNum>0){ + if (lessThan){ + if (tActual < refNum){ + g.setColor(Color.GREEN); + } + else { + g.setColor(Color.RED); + } } else { - g.setColor(Color.RED); + if (tActual> refNum){ + g.setColor(Color.GREEN); + } + else { + g.setColor(Color.RED); + } } } } } - } - else if (sig2.equals("receive signal: " + value.split("\\(")[0])){ - if (sig1.replaceAll(": ","-").trim().equalsIgnoreCase(s.split(":")[0].trim())){ - //Compare times - int tActual=Integer.valueOf(latencyVals.get(s)); - //System.out.println(refNum + " " + tActual); - if (refNum>0){ - if (lessThan){ - if (tActual < refNum){ - g.setColor(Color.GREEN); + else if (sig2.equals("receive signal: " + value.split("\\(")[0])){ + if (sig1.replaceAll(": ","-").trim().equalsIgnoreCase(s.split(":")[0].trim())){ + //Compare times + int tActual=Integer.valueOf(latencyVals.get(s)); + //System.out.println(refNum + " " + tActual); + if (refNum>0){ + if (lessThan){ + if (tActual < refNum){ + g.setColor(Color.GREEN); + } + else { + g.setColor(Color.RED); + } } else { - g.setColor(Color.RED); - } - } - else { - if (tActual> refNum){ - g.setColor(Color.GREEN); - } - else { - g.setColor(Color.RED); + if (tActual> refNum){ + g.setColor(Color.GREEN); + } + else { + g.setColor(Color.RED); + } } } } } } } - } - /*if (reference instanceof TMLADReadChannel){ - // System.out.println("ref " + reference.toString().split(": ")[1].split("\\(")[0] + " " + s.split("-")[1].split(":")[0]); - TMLADReadChannel rc = (TMLADReadChannel) reference; - ConcurrentHashMap<String, String> refLats =rc.getLatencyMap(); - //System.out.println("referencelats " + refLats); - for (String checkpoint:refLats.keySet()){ - if (s.split("\\-")[1].split(":")[0].equals(checkpoint.split("channel:")[1].split(" ")[0])){ - String time=refLats.get(checkpoint); - int tdip= Integer.valueOf(time); - int tav=Integer.valueOf(latencyVals.get(s)); - if (Math.abs(tdip-tav)>tdip){ - g.setColor(Color.RED); - } - else { - g.setColor(Color.GREEN); + if (reference instanceof TMLADReadChannel){ + // System.out.println("ref " + reference.toString().split(": ")[1].split("\\(")[0] + " " + s.split("-")[1].split(":")[0]); + TMLADReadChannel rc = (TMLADReadChannel) reference; + ConcurrentHashMap<String, String> refLats =rc.getLatencyMap(); + //System.out.println("referencelats " + refLats); + for (String checkpoint:refLats.keySet()){ + if (s.split("\\-")[1].split(":")[0].equals(checkpoint.split("channel:")[1].split(" ")[0])){ + String time=refLats.get(checkpoint); + int tdip= Integer.valueOf(time); + int tav=Integer.valueOf(latencyVals.get(s)); + if (Math.abs(tdip-tav)>tdip){ + g.setColor(Color.RED); + } + else { + g.setColor(Color.GREEN); + } } } } - }*/ + } + g.drawString(latencyVals.get(s), x-latencyX/2, y-latencyY*index/2); g.setColor(c); index++; @@ -387,9 +390,9 @@ public class AvatarSMDReceiveSignal extends AvatarSMDBasicComponent implements C } String val = jdas.getSignal(); - if (jdas.getReference()!=null){ + //if (jdas.getReference()!=null){ reference = jdas.getReference(); - } + //} if (val.indexOf('(') == -1) { val += "()"; } diff --git a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java index 7a1cf09d2ca06b4f780142414bd68cf62d208542..291f80dd6f43f0a2f4f19bc7e3c2de0a81e52cea 100644 --- a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java +++ b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java @@ -174,6 +174,12 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicComponent implements Chec drawLatencyInformation(g); } } + if (reference!=null){ + if (reference instanceof AvatarRDRequirement){ + AvatarRDRequirement refReq = (AvatarRDRequirement) reference; + g.drawString("ref: "+ refReq.getValue(), x, y+height1+textY); + } + } } public void drawLatencyInformation(Graphics g){ @@ -184,25 +190,99 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicComponent implements Chec g.drawRect(x-latencyX-w, y-latencyY*index-textHeight, w+4, textHeight); g.drawLine(x,y,x-latencyX, y-latencyY*index); Color c = g.getColor(); - if (reference instanceof TMLADWriteChannel){ - // System.out.println("ref " + reference.toString().split(": ")[1].split("\\(")[0] + " " + s.split("-")[1].split(":")[0]); - TMLADWriteChannel rc = (TMLADWriteChannel) reference; - ConcurrentHashMap<String, String> refLats =rc.getLatencyMap(); - //System.out.println("referencelats " + refLats); - for (String checkpoint:refLats.keySet()){ - if (s.split("\\-")[1].split(":")[0].equals(checkpoint.split(":")[1].split(" ")[0])){ - String time=refLats.get(checkpoint); - int tdip= Integer.valueOf(time); - int tav=Integer.valueOf(latencyVals.get(s)); - if (Math.abs(tdip-tav)>tdip){ - g.setColor(Color.RED); + if (reference !=null){ + //References must be in the form "The max delay between send/recieve signal:(signalname) and send/receive signal (signalname) is (less than/greater than) X. + String req= ((AvatarRDRequirement) reference).getText().trim(); + if (req.contains("The max delay between")){ + //Attempt to parse string + boolean lessThan= req.contains(" less than "); + String sig1 = req.split(" between ")[1].split(" and ")[0].trim(); + String sig2 = req.split(" and ")[1].split(" is ")[0].trim(); + String num = req.split(" than ")[1]; + + num = num.replaceAll("\\.",""); + + int refNum = -1; + try { + refNum = Integer.valueOf(num); + } + catch(Exception e){ + } + if (sig1.equals(sig2)){ + // + } + else if (sig1.equals("send signal: " + value.split("\\(")[0])){ + if (sig2.replaceAll(": ","-").equalsIgnoreCase(s)){ + //Compare times + int tActual=Integer.valueOf(latencyVals.get(s.split(":")[0])); + if (refNum>0){ + if (lessThan){ + if (tActual < refNum){ + g.setColor(Color.GREEN); + } + else { + g.setColor(Color.RED); + } + } + else { + if (tActual> refNum){ + g.setColor(Color.GREEN); + } + else { + g.setColor(Color.RED); + } + } + } } - else { - g.setColor(Color.GREEN); + } + else if (sig2.equals("send signal: " + value.split("\\(")[0])){ + if (sig1.replaceAll(": ","-").trim().equalsIgnoreCase(s.split(":")[0].trim())){ + //Compare times + int tActual=Integer.valueOf(latencyVals.get(s)); + //System.out.println(refNum + " " + tActual); + if (refNum>0){ + if (lessThan){ + if (tActual < refNum){ + g.setColor(Color.GREEN); + } + else { + g.setColor(Color.RED); + } + } + else { + if (tActual> refNum){ + g.setColor(Color.GREEN); + } + else { + g.setColor(Color.RED); + } + } + } + } + } + } + if (reference instanceof TMLADWriteChannel){ + // System.out.println("ref " + reference.toString().split(": ")[1].split("\\(")[0] + " " + s.split("-")[1].split(":")[0]); + TMLADWriteChannel rc = (TMLADWriteChannel) reference; + ConcurrentHashMap<String, String> refLats =rc.getLatencyMap(); + //System.out.println("referencelats " + refLats); + for (String checkpoint:refLats.keySet()){ + if (s.split("\\-")[1].split(":")[0].equals(checkpoint.split(":")[1].split(" ")[0])){ + String time=refLats.get(checkpoint); + int tdip= Integer.valueOf(time); + int tav=Integer.valueOf(latencyVals.get(s)); + if (Math.abs(tdip-tav)>tdip){ + g.setColor(Color.RED); + } + else { + g.setColor(Color.GREEN); + } } } } } + + g.drawString(latencyVals.get(s), x-latencyX/2, y-latencyY*index/2); g.setColor(c); index++; @@ -301,9 +381,9 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicComponent implements Chec } String val = jdas.getSignal(); - if (jdas.getReference()!=null){ + // if (jdas.getReference()!=null ){ reference = jdas.getReference(); - } + //} if (val.indexOf('(') == -1) { val += "()"; diff --git a/src/main/java/ui/window/JDialogAvatarSignal.java b/src/main/java/ui/window/JDialogAvatarSignal.java index d9221b49964b59bf1945c7c20c63dce1ed9e2d4e..f4c3e1a4a09c67567a1ec5f9b9d402a34bb5f4e6 100755 --- a/src/main/java/ui/window/JDialogAvatarSignal.java +++ b/src/main/java/ui/window/JDialogAvatarSignal.java @@ -168,13 +168,14 @@ public class JDialogAvatarSignal extends JDialogBase implements ActionListener panel1.add(signal, c1); //panel1.setEditable(true); - //Reference to DIPLODOCUS signal + //Reference to DIPLODOCUS signal or Requirement c1.gridwidth = 1; c1.fill = GridBagConstraints.HORIZONTAL; c1.anchor = GridBagConstraints.CENTER; panel1.add(new JLabel("Reference Requirement"),c1); c1.gridwidth = GridBagConstraints.REMAINDER; //end row refChecks = new JComboBox<TGComponent>(refs); + refChecks.insertItemAt(null, 0); if (reference!=null){ refChecks.setSelectedItem(reference); }