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; }
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; }