X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/69d4750d05a6552a65395f2a40dfca3ae5405b03..f3ba71e33e73c61ca467a37dda2bc3b9d5f9ed1b:/src/java/simgrid/msg/ApplicationHandler.java diff --git a/src/java/simgrid/msg/ApplicationHandler.java b/src/java/simgrid/msg/ApplicationHandler.java index a3e2acb672..fd59889e31 100644 --- a/src/java/simgrid/msg/ApplicationHandler.java +++ b/src/java/simgrid/msg/ApplicationHandler.java @@ -12,9 +12,9 @@ package simgrid.msg; import java.util.Vector; +import java.util.Hashtable; import org.xml.sax.*; import org.xml.sax.helpers.*; -import java.lang.reflect.*; /** * The handler used to parse the deployment file which contains @@ -29,40 +29,41 @@ import java.lang.reflect.*; * @since SimGrid 3.3 * @since JDK1.5011 */ -public final class ApplicationHandler extends DefaultHandler -{ - - /* - * This class is used to create the processes descibed in the deployment file. - */ - class ProcessFactory - { - /** +public final class ApplicationHandler extends DefaultHandler { + + /* + * This class is used to create the processes descibed in the deployment file. + */ + class ProcessFactory { + /** * The vector which contains the arguments of the main function * of the process object. */ - public Vector args; - - /** + public Vector args; + + public Hashtable properties; + + /** * The name of the host of the process. - */ - private String hostName; - - /** + */ + private String hostName; + + /** * The function of the process. */ - private String function; - - /** + private String function; + + + /** * Default constructor. */ - public ProcessFactory(){ - this.args = new Vector(); - this.hostName = null; - this.function = null; - } - - /** + public ProcessFactory() { + this.args = new Vector(); + this.properties = new Hashtable(); + this.hostName = null; + this.function = null; + } + /** * This method is called by the start element handler. * It sets the host and the function of the process to create, * and clear the vector containing the arguments of the @@ -72,125 +73,146 @@ public final class ApplicationHandler extends DefaultHandler * @function The function of the process to create. * */ - public void setProcessIdentity(String hostName, String function){ - this.hostName = hostName; - this.function = function; - - if(!args.isEmpty()) - args.clear(); - } - - /** + public void setProcessIdentity(String hostName, String function) { + this.hostName = hostName; + this.function = function; + + if (!this.args.isEmpty()) + this.args.clear(); + + if(!this.properties.isEmpty()) + this.properties.clear(); + } + /** * This method is called by the startElement() handler. * It stores the argument of the function of the next * process to create in the vector of arguments. * * @arg The argument to add. * - */ - public void registerProcessArg(String arg){ - this.args.add(arg); - } - - public void createProcess(){ - try { - - System.out.println("Create process " + function + " on the host " + hostName); - Class cls = Class.forName(this.function); - simgrid.msg.Process process = (simgrid.msg.Process)cls.newInstance(); - process.name = process.getName(); //this.function; - process.id = simgrid.msg.Process.nextProcessId++; - Host host = Host.getByName(this.hostName); - Msg.processCreate(process,host); - - Vector args = processFactory.args; - int size = args.size(); - - for(int index = 0; index < size; index++) - process.addArg(args.get(index)); - - } catch(JniException e) - { - System.out.println(e.toString()); - e.printStackTrace(); - - } catch(NativeException e) - { - System.out.println(e.toString()); - e.printStackTrace(); - - } catch(HostNotFoundException e) { - System.out.println(e.toString()); - e.printStackTrace(); - - } catch(ClassNotFoundException e) { - System.out.println(this.function + " class not found\n The attribut function of the element process of your deployment file\n must correspond to the name of a Msg Proces class)"); - e.printStackTrace(); - - } catch(InstantiationException e) { - System.out.println("instantiation exception"); - e.printStackTrace(); - } catch (IllegalAccessException e) { - System.out.println("illegal access exception"); - e.printStackTrace(); - } catch (IllegalArgumentException e) { - System.out.println("illegal argument exception"); - e.printStackTrace(); - } - - } - } - - /* - * the ProcessFactory object used to create the processes. - */ - private ProcessFactory processFactory; + */ public void registerProcessArg(String arg) { + this.args.add(arg); + } + + public void setProperty(String id, String value) + { + this.properties.put(id,value); + } - public ApplicationHandler() { - super(); + public String getHostName() + { + return this.hostName; } + + public void createProcess() { + try { + + Class cls = Class.forName(this.function); + + simgrid.msg.Process process = (simgrid.msg.Process) cls.newInstance(); + process.name = /*process.getName();*/ this.function; + process.id = simgrid.msg.Process.nextProcessId++; + Host host = Host.getByName(this.hostName); + + MsgNative.processCreate(process, host); + Vector args = processFactory.args; + int size = args.size(); + + for (int index = 0; index < size; index++) + process.args.add(args.get(index)); + + process.properties = this.properties; + this.properties = new Hashtable(); + + } catch(JniException e) { + System.out.println(e.toString()); + e.printStackTrace(); + + } catch(NativeException e) { + System.out.println(e.toString()); + e.printStackTrace(); + + } catch(HostNotFoundException e) { + System.out.println(e.toString()); + e.printStackTrace(); + + } catch(ClassNotFoundException e) { + System.out.println(this.function + + " class not found\n The attribut function of the element process of your deployment file\n must correspond to the name of a Msg Proces class)"); + e.printStackTrace(); + + } catch(InstantiationException e) { + System.out.println("instantiation exception"); + e.printStackTrace(); + } catch(IllegalAccessException e) { + System.out.println("illegal access exception"); + e.printStackTrace(); + } catch(IllegalArgumentException e) { + System.out.println("illegal argument exception"); + e.printStackTrace(); + } + + } + } + + /* + * the ProcessFactory object used to create the processes. + */ + private ProcessFactory processFactory; + + public ApplicationHandler() { + super(); + } /** * instanciates the process factory */ - public void startDocument(){ - this.processFactory = new ProcessFactory(); - } - - public void characters(char[] caracteres, int debut, int longueur) {} // NOTHING TODO - + public void startDocument() { + this.processFactory = new ProcessFactory(); + } + + public void characters(char[]caracteres, int debut, int longueur) { + } // NOTHING TODO + /** * element handlers */ - public void startElement(String nameSpace, String localName,String qName,Attributes attr) { - if(localName.equals("process")) - onProcessIdentity(attr); - else if(localName.equals("argument")) - onProcessArg(attr); - } - + public void startElement(String nameSpace, String localName, String qName, + Attributes attr) { + if (localName.equals("process")) + onProcessIdentity(attr); + else if(localName.equals("prop")) + onProperty(attr); + else if (localName.equals("argument")) + onProcessArg(attr); + } + /** * process attributs handler. */ - public void onProcessIdentity(Attributes attr) { - processFactory.setProcessIdentity(attr.getValue(0),attr.getValue(1)); - } - - /** + public void onProcessIdentity(Attributes attr) { + processFactory.setProcessIdentity(attr.getValue(0), attr.getValue(1)); + } + + public void onProperty(Attributes attr) { + processFactory.setProperty(attr.getValue(0), attr.getValue(1)); + } + + /** * process arguments handler. */ - public void onProcessArg(Attributes attr) { - processFactory.registerProcessArg(attr.getValue(0)); - } - + public void onProcessArg(Attributes attr) { + processFactory.registerProcessArg(attr.getValue(0)); + } + /** * creates the process */ - public void endElement(String nameSpace, String localName,String qName) { - if(localName.equals("process")) -{ - processFactory.createProcess(); - } + public void endElement(String nameSpace, String localName, String qName) { + if (localName.equals("process")) { + processFactory.createProcess(); } - - public void endDocument() {} // NOTHING TODO + } + + public void endDocument() { + } // NOTHING TODO }