예제 #1
0
        //defaultParamter toRun = true
        public InstanceLoader(AgentPlateform agentPlateform, Environment environment, string filename, bool toRun)
        {
            relations = new List<Relation>();
            this.toRun = toRun;
            try
            {
                if (filename != "")
                {
                    this.environment = environment;
                    this.agentPlateform = agentPlateform;
                    this.model = this.environment.Model;

                    XDocument parser;
                    this.basedir = filename;

                    //parser = XDocument.Load(filename);
                    String s = MascaretApplication.Instance.readFlow(filename);
                    parser = XDocument.Parse(s);

                    _parseInstances(parser.Root);
                    _addRelations();
                }
                relations.Clear();
            }
            catch (FileLoadException)
            {
            }
        }
예제 #2
0
        //typedef KnowledgeBase* (*BaseInitFunc)();
        //int _id=0;
        public void parseInstances(AgentPlateform agentPlateform, Environment environment, string filename, bool toRun)
        {
            this.toRun = toRun;
            this.environment = environment;
            this.agentPlateform = agentPlateform;
            this.model = this.environment.Model;
            XDocument parser = null;
            this.basedir = filename;
            parser = XDocument.Load(filename);

            _parseInstances(parser.Root);
            _addRelations();
            relations.Clear();
        }
예제 #3
0
        protected Environment parseEnvironment(string url)
        {
            Environment env = null;
            Model model = null;

            XDocument parser = null;
            string baseDir = MascaretApplication.Instance.BaseDir;
            parser = XDocument.Load(baseDir+"/"+url);
            XElement root = parser.Root;

            foreach (XElement childNode in root.Elements())
            {
                if (childNode.Name.LocalName == "Model")
                {
                    string urlModel = "";
                    XAttribute attr = (XAttribute)childNode.Attribute("url");
                    if (attr != null) urlModel = attr.Value;
                    model = parseModel(urlModel);
                }
            }
            if (model == null)
                model = this.model;

            env = new Environment(model);
            env.Url = url;
            model.addEnvironment(env);

            MascaretApplication.Instance.VRComponentFactory.Log(baseDir);

            //InstanceLoader instanceLoader = new InstanceLoader(agentPlateform, env, url + "/" + baseDir, false);
            InstanceLoader instanceLoader = new InstanceLoader(agentPlateform, env, baseDir + "/" + url, false);

            return env;
        }
예제 #4
0
        //default parameter strIsFileName=true;
        public ModelLoader2(string str, bool strIsFileName)
        {
            _idClass = new Dictionary<String, Class>();
            //_idAsso =  new Dictionary<string, Property>();
            //_idAsso =  new MapStringProperties();
            _idOperations = new Dictionary<string, Operation>();
            _idBehaviors = new Dictionary<string, Behavior>();
            _parameters = new Dictionary<string, Parameter>();
            _partitions = new Dictionary<string, ActivityPartition>();
            _paramToType = new Dictionary<string, string>();
            _classifiers = new Dictionary<string, Classifier>();
            _callOperations = new Dictionary<CallOperationAction, string>();
            _callBehaviors = new Dictionary<CallBehaviorAction, string>();
            _callEvents = new Dictionary<CallEvent, string>();
            _signals = new Dictionary<string, Signal>();
            _events = new Dictionary<string, MascaretEvent>();
            _activityNodes = new Dictionary<string, ActivityNode>();
            _waitingNodes = new Dictionary<string, string>();
            _objectNodes = new Dictionary<string, ObjectNode>();
            _activityExpressions = new Dictionary<string, Expression>();
            _activitiesMethod = new Dictionary<string, Activity>();
            _subStateMachines = new Dictionary<string, StateMachine>();
            _subStates = new Dictionary<string, State>();
            _subStatesID = new Dictionary<string, string>();
            _primitiveTypes = new Dictionary<string, string>();
            _loader = new XDocument();

            try
            {
                String s = MascaretApplication.Instance.readFlow(str);
                _loader = XDocument.Parse(s);
                _xmi = _loader.Root;

                // MascaretApplication.Instance.logfile.WriteLine("XMI : " + _xmi.Name.LocalName.ToLower()); MascaretApplication.Instance.logfile.Flush();

                //Debug.Log (_xmi.Name);

                XElement modelNode = null;

                //   MascaretApplication.Instance.logfile.WriteLine("Parsing Model"); MascaretApplication.Instance.logfile.Flush();
                if ((_xmi.Name.LocalName.ToLower().CompareTo("uml:model") == 0) || (_xmi.Name.LocalName.ToLower().CompareTo("model") == 0))
                {
                    // MascaretApplication.Instance.logfile.WriteLine("OK"); MascaretApplication.Instance.logfile.Flush();
                    modelNode = _xmi;
                }
                else
                {
                    foreach (XElement currentNode in _xmi.Elements())
                    {
                        if (currentNode.Name.LocalName.ToLower().CompareTo("model") == 0)
                        {
                            modelNode = currentNode;
                        }
                    }
                }

                if (modelNode != null)
                {

                    XAttribute attr = (XAttribute)modelNode.Attribute("name");

                    // MascaretApplication.Instance.logfile.WriteLine("ModelName : " + attr.Value); MascaretApplication.Instance.logfile.Flush();

                    if (MascaretApplication.Instance.hasModel(attr.Value))
                    {
                        model = MascaretApplication.Instance.getModel(attr.Value);
                    }
                    else
                    {
                        model = new Model(attr.Value);
                        if (strIsFileName)
                            model.XmiUrl = str;

                        MascaretApplication.Instance.addModel(model);

                        getPrimitiveType(modelNode);
                        addStereotypes();

                        addPackage(modelNode, null);

                        _setParametersType();
                        addGeneralizations();
                        addAssociation();
                        addActivitiesAndStateMachines();
                        addCallOperations();
                        addCallBehaviors();
                        addConditions();

                        EntityClass curEntityClass = new EntityClass("undef");
                        Class classe = (Class)curEntityClass;
                        model.Package.addClasses(classe);

                        model.registerAllClasses();
                    }
                }
            }
            catch (FileLoadException)
            {
            }

            // Bouml preserved body end 0001F4E7
        }
예제 #5
0
 public Environment(Model model)
 {
     instances = new Dictionary<string, InstanceSpecification>();
     this.model = model;
 }
예제 #6
0
        public void addModel(Model model)
        {
            if (models == null)
            {
                models = new Dictionary<string, Model>();
            }

            models.Add(model.name, model);
            if (this.model == null)
                this.model = model;
        }
예제 #7
0
        Environment parseEnvironment(string url, XElement actNode, XElement orgNode, bool loadAll)
        {
            Environment env = null;

             //   logfile.WriteLine("Parsing Environment file : " + url); logfile.Flush();

            String s = readFlow(BaseDir + "/" + url);
            XDocument parser = XDocument.Parse(s);
            XElement root = parser.Root;

            //    Model model;
            XElement modelNode = root.Element("Model");
            if (modelNode != null)
            {
                string urlModel = modelNode.Attribute("url").Value;

               /// StreamWriter file = new StreamWriter("log2.txt");
               // file.WriteLine(" URL : " + url + " : " + BaseDir + "/" + urlModel);
              //  file.Flush();
              //  file.Close();
                if (model == null) model = parseModel(BaseDir+"/"+urlModel);

               // if (model.Environments.ContainsKey(url))
              //  {
               //     env = model.Environments[url];
              //  }
              //  else
               if (loadAll) {
                    env = new Environment(model);
                    env.Url = url;
                    model.addEnvironment(env);

                    InstanceLoader instanceLoader = new InstanceLoader(agentPlateform, env, BaseDir+"/"+url, true);

                    System.Console.WriteLine("SIZE of env map " + model.Environments.Count + " of model :" + model.name);

                    if (actNode != null)
                        instanceLoader.parseInstances(agentPlateform, env, actNode.Attribute("url").Value, true);

                    if (orgNode != null)
                        instanceLoader.parseInstances(agentPlateform, env, orgNode.Attribute("url").Value, true);
                }

            }
            else
                env = null;
            return env;
        }
예제 #8
0
        public virtual void parse(XElement root, bool loadAll)
        {
            XElement appliNode = root.Element("ApplicationParameters");
            XElement actnode = root.Element("Actors");
            XElement orgNode = root.Element("Organisations");

            if (agentPlateform == null)
            {
                this.VRComponentFactory.Log("Agent Plateform");
                // Parametres par defaut de l'applie ....
                string ressourceDir = "HTTPServerBaseDir";
                agentPlateform = new AgentPlateform("localhost", 8080, ressourceDir, false);
                agent = new Agent(agentPlateform, "HTTPManager", null, "");
                agent.addBehavior("SimpleCommunicationBehavior", 0.2, true);
                agentPlateform.addAgent(agent);
            }

            XElement modelNode = root.Element("Model");
            if (modelNode != null)
            {
                // Read the url
                string urlModel = modelNode.Attribute("url").Value;
                if (model == null)
                    model = parseModel(baseDir + "/" + urlModel);
            }

            foreach (XElement child in root.Elements())
            {

                if (child.Name.LocalName == "Environment")
                {
                    string envUrl = child.Attribute("url").Value;
                    Environment env = parseEnvironment(envUrl, actnode, orgNode, loadAll);
                }
            }
        }