From: <jom...@us...> - 2014-08-17 17:54:36
|
Revision: 1793 http://sourceforge.net/p/jason/svn/1793 Author: jomifred Date: 2014-08-17 17:54:33 +0000 (Sun, 17 Aug 2014) Log Message: ----------- improve the API to help parsing JaCaMo project files Modified Paths: -------------- trunk/demos/distributed-jade/case2/myAllocator.java trunk/src/jason/architecture/MindInspectorWeb.java trunk/src/jason/asSemantics/Agent.java trunk/src/jason/infra/centralised/RunCentralisedMAS.java trunk/src/jason/infra/centralised/StartNewAgentGUI.java trunk/src/jason/infra/jade/JadeMASLauncherAnt.java trunk/src/jason/infra/jade/RunJadeMAS.java trunk/src/jason/mas2j/AgentParameters.java trunk/src/jason/mas2j/ClassParameters.java trunk/src/jason/mas2j/parser/MAS2JavaParser.jcc trunk/src/jason/mas2j/parser/mas2j.java Modified: trunk/demos/distributed-jade/case2/myAllocator.java =================================================================== --- trunk/demos/distributed-jade/case2/myAllocator.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/demos/distributed-jade/case2/myAllocator.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -35,7 +35,7 @@ // computes the number of agents in the project int nbAgs = 0; for (AgentParameters ap : project.getAgents()) { - nbAgs += ap.qty; + nbAgs += ap.getNbInstances(); } int agsByContainer = nbAgs / containers.size(); @@ -45,9 +45,9 @@ int i=0; for (AgentParameters ap : project.getAgents()) { String agName = ap.name; - for (int cAg = 0; cAg < ap.qty; cAg++) { + for (int cAg = 0; cAg < ap.getNbInstances(); cAg++) { String numberedAg = agName; - if (ap.qty > 1) { + if (ap.getNbInstances() > 1) { numberedAg += (cAg + 1); } String c = containers.get( i % containers.size()); Modified: trunk/src/jason/architecture/MindInspectorWeb.java =================================================================== --- trunk/src/jason/architecture/MindInspectorWeb.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/architecture/MindInspectorWeb.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -122,8 +122,9 @@ } private String getAgNameFromPath(String path) { - int nameStart = path.indexOf("agent-mind")+11; + int nameStart = path.indexOf("agent-mind"); if (nameStart < 0) return null; + nameStart += "agent-mind".length() + 1; int nameEnd = path.indexOf("/",nameStart+1); if (nameEnd >= 0) return path.substring(nameStart,nameEnd).trim(); @@ -138,7 +139,7 @@ AgArch arch = ag.getTS().getUserAgArch(); if (arch != null) { // should add a new conf for mindinspector, otherwise will start a new gui for the agent - arch.getTS().getSettings().addOption("mindinspector","web(cycle,html,history)"); + arch.getTS().getSettings().addOption("mindinspector","web(cycle,html,no_history)"); MindInspectorAgArch miArch = new MindInspectorAgArch(); arch.insertAgArch(miArch); miArch.init(); Modified: trunk/src/jason/asSemantics/Agent.java =================================================================== --- trunk/src/jason/asSemantics/Agent.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/asSemantics/Agent.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -540,7 +540,7 @@ if (sGoals != null) { try { for (Term t: ASSyntax.parseList("["+sGoals+"]")) { - Literal g = (Literal)t; + Literal g = ((Literal)t).forceFullLiteralImpl(); g.makeVarsAnnon(); if (! g.hasSource()) g.addAnnot(BeliefBase.TSelf); Modified: trunk/src/jason/infra/centralised/RunCentralisedMAS.java =================================================================== --- trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -76,16 +76,16 @@ public final static String stopMASFileName = ".stop___MAS"; public final static String defaultProjectFileName = "default.mas2j"; - private static Logger logger = Logger.getLogger(RunCentralisedMAS.class.getName()); + protected static Logger logger = Logger.getLogger(RunCentralisedMAS.class.getName()); protected static RunCentralisedMAS runner = null; - private static String urlPrefix = ""; - private static boolean readFromJAR = false; - private static MAS2JProject project; - private static boolean debug = false; + protected static String urlPrefix = ""; + protected static boolean readFromJAR = false; + protected static MAS2JProject project; + protected static boolean debug = false; - private CentralisedEnvironment env = null; - private CentralisedExecutionControl control = null; - private Map<String,CentralisedAgArch> ags = new ConcurrentHashMap<String,CentralisedAgArch>(); + protected CentralisedEnvironment env = null; + protected CentralisedExecutionControl control = null; + protected Map<String,CentralisedAgArch> ags = new ConcurrentHashMap<String,CentralisedAgArch>(); public JButton btDebug; @@ -112,7 +112,7 @@ } else { System.out.println("Jason "+Config.get().getJasonRunningVersion()); System.err.println("You should inform the MAS project file."); - JOptionPane.showMessageDialog(null,"Jason version "+Config.get().getJasonRunningVersion()+" library built on "+Config.get().getJasonBuiltDate(),"Jason", JOptionPane.INFORMATION_MESSAGE); + JOptionPane.showMessageDialog(null,"You should inform the project file as a parameter.\n\nJason version "+Config.get().getJasonRunningVersion()+" library built on "+Config.get().getJasonBuiltDate(),"Jason", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } } else { @@ -367,16 +367,16 @@ String agName = ap.name; - for (int cAg = 0; cAg < ap.qty; cAg++) { + for (int cAg = 0; cAg < ap.getNbInstances(); cAg++) { nbAg++; String numberedAg = agName; - if (ap.qty > 1) { + if (ap.getNbInstances() > 1) { numberedAg += (cAg + 1); // cannot add zeros before, it causes many compatibility problems and breaks dynamic creation // numberedAg += String.format("%0"+String.valueOf(ap.qty).length()+"d", cAg + 1); } - logger.fine("Creating agent " + numberedAg + " (" + (cAg + 1) + "/" + ap.qty + ")"); + logger.fine("Creating agent " + numberedAg + " (" + (cAg + 1) + "/" + ap.getNbInstances() + ")"); CentralisedAgArch agArch; if (isPool) { agArch = new CentralisedAgArchForPool(); Modified: trunk/src/jason/infra/centralised/StartNewAgentGUI.java =================================================================== --- trunk/src/jason/infra/centralised/StartNewAgentGUI.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/infra/centralised/StartNewAgentGUI.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -116,9 +116,9 @@ if (ap.agClass != null) { agClass = ap.agClass.getClassName(); } - for (int i = 0; i < ap.qty; i++) { + for (int i = 0; i < ap.getNbInstances(); i++) { String name = ap.name; - if (ap.qty > 1) { + if (ap.getNbInstances() > 1) { name = name + (i + 1); } // TODO: implements bb class @@ -164,7 +164,7 @@ } if (!nbAgs.getText().trim().equals("1")) { try { - ap.qty = Integer.parseInt(nbAgs.getText().trim()); + ap.setNbInstances( Integer.parseInt(nbAgs.getText().trim()) ); } catch (Exception e) { System.err.println("Number of hosts is not a number!"); } Modified: trunk/src/jason/infra/jade/JadeMASLauncherAnt.java =================================================================== --- trunk/src/jason/infra/jade/JadeMASLauncherAnt.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/infra/jade/JadeMASLauncherAnt.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -172,9 +172,9 @@ args += " -gui "; } for (AgentParameters ap: project.getAgents()) { - for (int cAg = 0; cAg < ap.qty; cAg++) { + for (int cAg = 0; cAg < ap.getNbInstances(); cAg++) { String numberedAg = ap.getAgName(); - if (ap.qty > 1) + if (ap.getNbInstances() > 1) numberedAg += (cAg + 1); if ( (container.equals("Main-Container") && ap.getHost() == null && allocator == null) || (ap.getHost() != null && ap.getHost().equals(container)) || Modified: trunk/src/jason/infra/jade/RunJadeMAS.java =================================================================== --- trunk/src/jason/infra/jade/RunJadeMAS.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/infra/jade/RunJadeMAS.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -236,11 +236,11 @@ ap.addArchClass(MindInspectorAgArch.class.getName()); } - for (int cAg = 0; cAg < ap.qty; cAg++) { + for (int cAg = 0; cAg < ap.getNbInstances(); cAg++) { String numberedAg = agName; - if (ap.qty > 1) + if (ap.getNbInstances() > 1) numberedAg += (cAg + 1); //String.format("%0"+String.valueOf(ap.qty).length()+"d", cAg + 1); - logger.info("Creating agent " + numberedAg + " (" + (cAg + 1) + "/" + ap.qty + ")"); + logger.info("Creating agent " + numberedAg + " (" + (cAg + 1) + "/" + ap.getNbInstances() + ")"); AgentController ac = cc.createNewAgent(numberedAg, JadeAgArch.class.getName(), new Object[] { ap, isDebug(), getProject().getControlClass() != null }); ags.put(numberedAg,ac); } Modified: trunk/src/jason/mas2j/AgentParameters.java =================================================================== --- trunk/src/jason/mas2j/AgentParameters.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/mas2j/AgentParameters.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -25,15 +25,30 @@ public File asSource = null; public ClassParameters agClass = null; public ClassParameters bbClass = null; - private List<ClassParameters> archClasses = new ArrayList<ClassParameters>(); - public int qty = 1; - private Map<String, String> options = null; - private String host = null; + protected int nbInstances = 1; + protected Map<String, String> options = null; + protected List<ClassParameters> archClasses = new ArrayList<ClassParameters>(); + + protected String host = null; public AgentParameters() { setupDefault(); } + public AgentParameters copy() { + AgentParameters newap = new AgentParameters(); + newap.name = this.name; + newap.asSource = new File(this.asSource.toString()); + newap.agClass = this.agClass.copy(); + newap.bbClass = this.bbClass.copy(); + newap.nbInstances = this.nbInstances; + if (this.options != null) + newap.options = new HashMap<String, String>(this.options); + newap.archClasses = new ArrayList<ClassParameters>(this.archClasses); + newap.host = this.host; + return newap; + } + public String toString() { return getAsInMASProject(); } @@ -63,8 +78,15 @@ return bbClass; } + public void setNbInstances(int i) { + nbInstances = i; + } + public int getNbInstances() { + return nbInstances; + } + public void setHost(String h) { - if (h.startsWith("\"")) + if (h != null && h.startsWith("\"")) host = h.substring(1,h.length()-1); else host = h; @@ -156,8 +178,8 @@ if (bbClass != null && bbClass.getClassName().length() > 0 && !bbClass.getClassName().equals(DefaultBeliefBase.class.getName())) { s.append("beliefBaseClass "+bbClass+" "); } - if (qty > 1) { - s.append("#"+qty+" "); + if (nbInstances > 1) { + s.append("#"+nbInstances+" "); } if (host != null && host.length() > 0) { s.append("at \""+host+"\""); @@ -168,13 +190,17 @@ public Settings getAsSetts(boolean debug, boolean forceSync) { Settings stts = new Settings(); if (options != null) { - String s = ""; String v = ""; + Map<String,Object> opt = new HashMap<String, Object>(); + //String s = ""; String v = ""; for (String key: options.keySet()) { - s += v + key + "=" + options.get(key); - v = ","; + opt.put(key, options.get(key)); + //s += v + key + "=" + options.get(key); + //v = ","; } - if (s.length() > 0) { - stts.setOptions("["+s+"]"); + if (!opt.isEmpty()) { + stts.setOptions(opt); + //if (s.length() > 0) { + // stts.setOptions("["+s+"]"); } } if (debug) { Modified: trunk/src/jason/mas2j/ClassParameters.java =================================================================== --- trunk/src/jason/mas2j/ClassParameters.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/mas2j/ClassParameters.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -32,6 +32,13 @@ } } + public ClassParameters copy() { + ClassParameters newcp = new ClassParameters(this.className); + newcp.parameters = new ArrayList<String>(this.parameters); + newcp.host = this.host; + return newcp; + } + public void setClassName(String cn) { className = cn; } Modified: trunk/src/jason/mas2j/parser/MAS2JavaParser.jcc =================================================================== --- trunk/src/jason/mas2j/parser/MAS2JavaParser.jcc 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/mas2j/parser/MAS2JavaParser.jcc 2014-08-17 17:54:33 UTC (rev 1793) @@ -242,7 +242,7 @@ | <BBCLASS> ag.bbClass = classDef() | - "#" qty = <NUMBER> { ag.qty = Integer.parseInt(qty.image); } + "#" qty = <NUMBER> { ag.setNbInstances( Integer.parseInt(qty.image) ); } | <AT> host = <STRING> { ag.setHost(host.image); } )* Modified: trunk/src/jason/mas2j/parser/mas2j.java =================================================================== --- trunk/src/jason/mas2j/parser/mas2j.java 2014-08-05 18:38:39 UTC (rev 1792) +++ trunk/src/jason/mas2j/parser/mas2j.java 2014-08-17 17:54:33 UTC (rev 1793) @@ -174,7 +174,7 @@ case 40: jj_consume_token(40); qty = jj_consume_token(NUMBER); - ag.qty = Integer.parseInt(qty.image); + ag.setNbInstances( Integer.parseInt(qty.image) ); break; case AT: jj_consume_token(AT); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |