Esempio n. 1
0
 private static PetriNetElement CreateTransitionFromPnmlType(string type)
 {
     PetriNetElement transition;
     switch (type)
     {
         case "AndSplit":
             transition = new AndSplit();
             break;
         case "AndJoin":
             transition = new AndJoin();
             break;
         case "OrSplit":
             transition = new OrSplit();
             break;
         case "OrJoin":
             transition = new OrJoin();
             break;
         default:
             transition = new Transition();
             break;
     }
     return transition;
 }
Esempio n. 2
0
        private static PetriNetElement GetTransitionObjectFromPnmlElement(XElement pnmlElement)
        {
            PetriNetElement transition = null;
            var toolSpecificElements = pnmlElement.Elements("toolspecific").Where(element => element.Attribute("tool") != null);

            foreach (var toolSpecificElement in toolSpecificElements)
            {
                if (toolSpecificElement.Attribute("tool").Value == "Petrifier")
                {
                    var type = toolSpecificElement.Element("transitiontype").Value;
                    transition = CreateTransitionFromPnmlType(type);

                    if (transition is IMethodReference && toolSpecificElement.Element("methodReference") != null)
                    {
                        var methodReference = (IMethodReference)transition;
                        var methodReferenceElement = toolSpecificElement.Element("methodReference");

                        if (methodReferenceElement.Element("assembly") != null)
                        {
                            methodReference.AssemblyFileName = methodReferenceElement.Element("assembly").Value;
                        }
                        methodReference.TypeName = methodReferenceElement.Element("type").Value;
                        methodReference.MethodName = methodReferenceElement.Element("method").Value;
                    }
                }
            }

            if (transition == null)
            {
                transition = new Transition();
            }

            transition.ID = pnmlElement.Attribute("id").Value;
            if (transition is ILabeledElement)
            {
                ((ILabeledElement)transition).Label = pnmlElement.Element("name").Element("text").Value;
            }

            if (pnmlElement.Element("graphics") != null)
            {
                if (pnmlElement.Element("graphics").Element("position") != null)
                {
                    transition.SetGraphicsMetadataItem("graphics.position.@x", int.Parse(pnmlElement.Element("graphics").Element("position").Attribute("x").Value));
                    transition.SetGraphicsMetadataItem("graphics.position.@y", int.Parse(pnmlElement.Element("graphics").Element("position").Attribute("y").Value));
                }
                if (pnmlElement.Element("graphics").Element("dimension") != null)
                {
                    transition.SetGraphicsMetadataItem("graphics.dimension.@x", int.Parse(pnmlElement.Element("graphics").Element("dimension").Attribute("x").Value));
                    transition.SetGraphicsMetadataItem("graphics.dimension.@y", int.Parse(pnmlElement.Element("graphics").Element("dimension").Attribute("y").Value));
                }
            }

            return transition;
        }