diff --git a/src/main/java/de/tudresden/inf/st/pnml/CoreModelParser.java b/src/main/java/de/tudresden/inf/st/pnml/CoreModelParser.java new file mode 100644 index 0000000000000000000000000000000000000000..f46c448ba1dd7f91238956bf415fe97753fdce0f --- /dev/null +++ b/src/main/java/de/tudresden/inf/st/pnml/CoreModelParser.java @@ -0,0 +1,386 @@ +package de.tudresden.inf.st.pnml; + +import de.tudresden.inf.st.pnml.jastadd.model.*; + +import java.util.ArrayList; +import java.util.List; + +final class CoreModelParser { + + public static List<PetriNet> getPetriNets(fr.lip6.move.pnml.pnmlcoremodel.hlapi.PetriNetDocHLAPI source) throws PnmlParseException { + List<PetriNet> nets = new ArrayList<>(); + for (fr.lip6.move.pnml.pnmlcoremodel.PetriNet net : source.getNets()) { + PetriNet petriNet = getPetriNet(net); + petriNet.treeResolveAll(); + nets.add(petriNet); + } + return nets; + } + + // the get methods + + private static PetriNet getPetriNet(fr.lip6.move.pnml.pnmlcoremodel.PetriNet source) throws PnmlParseException { + PetriNet result = new PetriNet(); + fillPetriNet(source, result); + return result; + } + + private static Page getPage(fr.lip6.move.pnml.pnmlcoremodel.Page source) throws PnmlParseException { + Page result = new Page(); + fillPage(source, result); + return result; + } + + private static NodeGraphics getNodeGraphics(fr.lip6.move.pnml.pnmlcoremodel.NodeGraphics source) { + NodeGraphics result = new NodeGraphics(); + fillNodeGraphics(source, result); + return result; + } + + private static Line getLine(fr.lip6.move.pnml.pnmlcoremodel.Line source) { + Line result = new Line(); + fillLine(source, result); + return result; + } + + private static Fill getFill(fr.lip6.move.pnml.pnmlcoremodel.Fill source) { + Fill result = new Fill(); + fillFill(source, result); + return result; + } + + private static Dimension getDimension(fr.lip6.move.pnml.pnmlcoremodel.Dimension source) { + Dimension result = new Dimension(); + fillDimension(source, result); + return result; + } + + private static Offset getOffset(fr.lip6.move.pnml.pnmlcoremodel.Offset source) { + Offset result = new Offset(); + fillOffset(source, result); + return result; + } + + private static Position getPosition(fr.lip6.move.pnml.pnmlcoremodel.Position source) { + Position result = new Position(); + fillPosition(source, result); + return result; + } + + private static Name getName(fr.lip6.move.pnml.pnmlcoremodel.Name source) { + Name result = new Name(); + fillName(source, result); + return result; + } + + private static AnnotationGraphics getAnnotationGraphics(fr.lip6.move.pnml.pnmlcoremodel.AnnotationGraphics source) { + AnnotationGraphics result = new AnnotationGraphics(); + fillAnnotationGraphics(source, result); + return result; + } + + private static Font getFont(fr.lip6.move.pnml.pnmlcoremodel.Font source) { + Font result = new Font(); + fillFont(source, result); + return result; + } + + private static ToolInfo getToolInfo(fr.lip6.move.pnml.pnmlcoremodel.ToolInfo source) { + ToolInfo result = new ToolInfo(); + fillToolInfo(source, result); + return result; + } + + private static Node getNode(fr.lip6.move.pnml.pnmlcoremodel.Node source) throws PnmlParseException { + if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.PlaceNode) { + return getPlaceNode((fr.lip6.move.pnml.pnmlcoremodel.PlaceNode) source); + } else if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.TransitionNode) { + return getTransitionNode((fr.lip6.move.pnml.pnmlcoremodel.TransitionNode) source); + } else { + throw new PnmlParseException("Encountered illegal unknown subtype of Node " + source.getClass().getCanonicalName()); + } + } + + private static PlaceNode getPlaceNode(fr.lip6.move.pnml.pnmlcoremodel.PlaceNode source) throws PnmlParseException { + if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.Place) { + return getPlace((fr.lip6.move.pnml.pnmlcoremodel.Place) source); + } else if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.RefPlace) { + return getRefPlace((fr.lip6.move.pnml.pnmlcoremodel.RefPlace) source); + } else { + throw new PnmlParseException("Encountered illegal unknown subtype of PlaceNode " + source.getClass().getCanonicalName()); + } + } + + private static Place getPlace(fr.lip6.move.pnml.pnmlcoremodel.Place source) { + Place result = new Place(); + fillPlace(source, result); + return result; + } + + private static RefPlace getRefPlace(fr.lip6.move.pnml.pnmlcoremodel.RefPlace source) { + RefPlace result = new RefPlace(); + fillRefPlace(source, result); + return result; + } + + private static TransitionNode getTransitionNode(fr.lip6.move.pnml.pnmlcoremodel.TransitionNode source) throws PnmlParseException { + if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.Transition) { + return getTransition((fr.lip6.move.pnml.pnmlcoremodel.Transition) source); + } else if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.RefTransition) { + return getRefTransition((fr.lip6.move.pnml.pnmlcoremodel.RefTransition) source); + } else { + throw new PnmlParseException("Encountered illegal unknown subtype of TransitionNode " + source.getClass().getCanonicalName()); + } + } + + private static RefTransition getRefTransition(fr.lip6.move.pnml.pnmlcoremodel.RefTransition source) { + RefTransition result = new RefTransition(); + fillRefTransition(source, result); + return result; + } + + private static Transition getTransition(fr.lip6.move.pnml.pnmlcoremodel.Transition source) { + Transition result = new Transition(); + fillTransition(source, result); + return result; + } + + private static Arc getArc(fr.lip6.move.pnml.pnmlcoremodel.Arc source) { + Arc result = new Arc(); + fillArc(source, result); + return result; + } + + private static ArcGraphics getArcGraphics(fr.lip6.move.pnml.pnmlcoremodel.ArcGraphics source) { + ArcGraphics result = new ArcGraphics(); + fillArcGraphics(source, result); + return result; + } + + private static PnObject getPnObject(fr.lip6.move.pnml.pnmlcoremodel.PnObject source) throws PnmlParseException { + if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.Page) { + return getPage((fr.lip6.move.pnml.pnmlcoremodel.Page) source); + } else if (source instanceof Node) { + return getNode((fr.lip6.move.pnml.pnmlcoremodel.Node) source); + } else if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.Arc) { + return getArc((fr.lip6.move.pnml.pnmlcoremodel.Arc) source); + } else if (source instanceof fr.lip6.move.pnml.pnmlcoremodel.Node) { + return getNode((fr.lip6.move.pnml.pnmlcoremodel.Node) source); + } else { + throw new PnmlParseException("Encountered illegal unknown subtype of PnObject " + source.getClass().getCanonicalName()); + } + } + + // the fill methods + + private static void fillPetriNet(fr.lip6.move.pnml.pnmlcoremodel.PetriNet source, PetriNet result) throws PnmlParseException { + for (fr.lip6.move.pnml.pnmlcoremodel.Page page : source.getPages()) { + result.addPage(getPage(page)); + } + if (source.getName() != null) { + result.setName(getName(source.getName())); + } + for (fr.lip6.move.pnml.pnmlcoremodel.ToolInfo toolInfo : source.getToolspecifics()) { + result.addToolspecific(getToolInfo(toolInfo)); + } + result.setId(source.getId()); + if (source.getType() == fr.lip6.move.pnml.pnmlcoremodel.PNType.PTNET) { + result.setType(PNType.PTNET); + } else { + throw new PnmlParseException("Illegal Petri Net type '" + source.getType().getLiteral() + "' encountered."); + } + } + + private static void fillPage(fr.lip6.move.pnml.pnmlcoremodel.Page source, Page result) throws PnmlParseException { + fillPnObject(source, result); + + for (fr.lip6.move.pnml.pnmlcoremodel.PnObject object : source.getObjects()) { + result.addObject(getPnObject(object)); + } + if (source.getNodegraphics() != null) { + result.setNodeGraphics(getNodeGraphics(source.getNodegraphics())); + } + } + + private static void fillPnObject(fr.lip6.move.pnml.pnmlcoremodel.PnObject source, PnObject result) { + if (source.getName() != null) { + result.setName(getName(source.getName())); + } + for (fr.lip6.move.pnml.pnmlcoremodel.ToolInfo toolInfo : source.getToolspecifics()) { + result.addToolspecific(getToolInfo(toolInfo)); + } + result.setId(source.getId()); + } + + private static void fillNodeGraphics(fr.lip6.move.pnml.pnmlcoremodel.NodeGraphics source, NodeGraphics result) { + if (source.getPosition() != null) { + result.setPosition(getPosition(source.getPosition())); + } + if (source.getDimension() != null) { + result.setDimension(getDimension(source.getDimension())); + } + if (source.getFill() != null) { + result.setFill(getFill(source.getFill())); + } + if (source.getLine() != null) { + result.setLine(getLine(source.getLine())); + } + } + + private static void fillLine(fr.lip6.move.pnml.pnmlcoremodel.Line source, Line result) { + result.setColor(CSS2Color.valueOf(source.getColor().getName())); + result.setShape(LineShape.valueOf(source.getShape().getName())); + result.setWidth(source.getWidth()); + result.setStyle(LineStyle.valueOf(source.getStyle().getName())); + } + + private static void fillFill(fr.lip6.move.pnml.pnmlcoremodel.Fill source, Fill result) { + result.setColor(CSS2Color.valueOf(source.getColor().getName())); + result.setGradientcolor(CSS2Color.valueOf(source.getGradientcolor().getName())); + result.setGradientrotation(Gradient.valueOf(source.getGradientrotation().getName())); + result.setImage(source.getImage()); + } + + private static void fillDimension(fr.lip6.move.pnml.pnmlcoremodel.Dimension source, Dimension result) { + fillCoordinate(source, result); + } + + private static void fillCoordinate(fr.lip6.move.pnml.pnmlcoremodel.Coordinate source, Coordinate result) { + result.setX(source.getX()); + result.setY(source.getY()); + } + + private static void fillOffset(fr.lip6.move.pnml.pnmlcoremodel.Offset source, Offset result) { + fillCoordinate(source, result); + } + + private static void fillPosition(fr.lip6.move.pnml.pnmlcoremodel.Position source, Position result) { + fillCoordinate(source, result); + } + + private static void fillName(fr.lip6.move.pnml.pnmlcoremodel.Name source, Name result) { + fillAnnotation(source, result); + + result.setText(source.getText()); + } + + private static void fillAnnotation(fr.lip6.move.pnml.pnmlcoremodel.Annotation source, Annotation result) { + if (source.getAnnotationgraphics() != null) { + result.setAnnotationGraphics(getAnnotationGraphics(source.getAnnotationgraphics())); + } + fillLabel(source, result); + } + + private static void fillLabel(fr.lip6.move.pnml.pnmlcoremodel.Annotation source, Annotation result) { + for (fr.lip6.move.pnml.pnmlcoremodel.ToolInfo info : source.getToolspecifics()) { + result.addToolspecific(getToolInfo(info)); + } + } + + private static void fillAnnotationGraphics(fr.lip6.move.pnml.pnmlcoremodel.AnnotationGraphics source, AnnotationGraphics result) { + if (source.getOffset() != null) { + result.setOffset(getOffset(source.getOffset())); + } + if (source.getFill() != null) { + result.setFill(getFill(source.getFill())); + } + if (source.getLine() != null) { + result.setLine(getLine(source.getLine())); + } + if (source.getFont() != null) { + result.setFont(getFont(source.getFont())); + } + } + + private static void fillFont(fr.lip6.move.pnml.pnmlcoremodel.Font source, Font result) { + result.setAlign(FontAlign.valueOf(source.getAlign().getName())); + result.setDecoration(FontDecoration.valueOf(source.getDecoration().getName())); + result.setFamily(CSS2FontFamily.valueOf(source.getFamily().getName())); + result.setRotation(source.getRotation()); + result.setSize(CSS2FontSize.valueOf(source.getSize().getName())); + result.setStyle(CSS2FontStyle.valueOf(source.getStyle().getName())); + result.setWeight(CSS2FontWeight.valueOf(source.getWeight().getName())); + } + + private static void fillToolInfo(fr.lip6.move.pnml.pnmlcoremodel.ToolInfo source, ToolInfo result) { + result.setTool(source.getTool()); + result.setVersion(source.getVersion()); + result.setFormattedXMLBuffer(source.getFormattedXMLBuffer()); + result.setToolInfoGrammarURI(source.getToolInfoGrammarURI()); + } + + private static void fillPlace(fr.lip6.move.pnml.pnmlcoremodel.Place source, Place result) { + fillPlaceNode(source, result); + } + + private static void fillRefPlace(fr.lip6.move.pnml.pnmlcoremodel.RefPlace source, RefPlace result) { + fillPlaceNode(source, result); + + result.setRef(PlaceNode.createRefDirection(source.getRef().getId())); + } + + private static void fillPlaceNode(fr.lip6.move.pnml.pnmlcoremodel.PlaceNode source, PlaceNode result) { + fillNode(source, result); + + for (fr.lip6.move.pnml.pnmlcoremodel.RefPlace referencingPlace : source.getReferencingPlaces()) { + result.addReferencingPlace(RefPlace.createRefDirection(referencingPlace.getId())); + } + } + + private static void fillRefTransition(fr.lip6.move.pnml.pnmlcoremodel.RefTransition source, RefTransition result) { + fillTransitionNode(source, result); + + result.setRef(TransitionNode.createRefDirection(source.getRef().getId())); + } + + private static void fillTransitionNode(fr.lip6.move.pnml.pnmlcoremodel.TransitionNode source, TransitionNode result) { + fillNode(source, result); + + for (fr.lip6.move.pnml.pnmlcoremodel.RefTransition refTransition : source.getReferencingTransitions()) { + result.addReferencingTransition(RefTransition.createRefDirection(refTransition.getId())); + } + } + + private static void fillTransition(fr.lip6.move.pnml.pnmlcoremodel.Transition source, Transition result) { + fillTransitionNode(source, result); + } + + private static void fillNode(fr.lip6.move.pnml.pnmlcoremodel.Node source, Node result) { + + fillPnObject(source, result); + + if (source.getNodegraphics() != null) { + result.setNodeGraphics(getNodeGraphics(source.getNodegraphics())); + } + + for (fr.lip6.move.pnml.pnmlcoremodel.Arc outArc : source.getOutArcs()) { + result.addOutArc(Arc.createRefDirection(outArc.getId())); + } + for (fr.lip6.move.pnml.pnmlcoremodel.Arc inArc : source.getInArcs()) { + result.addInArc(Arc.createRefDirection(inArc.getId())); + } + } + + private static void fillArc(fr.lip6.move.pnml.pnmlcoremodel.Arc source, Arc result) { + fillPnObject(source, result); + + if (source.getArcgraphics() != null) { + result.setArcGraphics(getArcGraphics(source.getArcgraphics())); + } + + result.setSource(Node.createRefDirection(source.getSource().getId())); + result.setTarget(Node.createRefDirection(source.getTarget().getId())); + } + + private static void fillArcGraphics(fr.lip6.move.pnml.pnmlcoremodel.ArcGraphics source, ArcGraphics result) { + for (fr.lip6.move.pnml.pnmlcoremodel.Position position : source.getPositions()) { + result.addPosition(getPosition(position)); + } + if (source.getLine() != null) { + result.setLine(getLine(source.getLine())); + } + } + + +} + diff --git a/src/main/java/de/tudresden/inf/st/pnml/PTNetParser.java b/src/main/java/de/tudresden/inf/st/pnml/PTNetParser.java new file mode 100644 index 0000000000000000000000000000000000000000..bd9afe8c811d20b61574fdffcc0a74a616a4f4b3 --- /dev/null +++ b/src/main/java/de/tudresden/inf/st/pnml/PTNetParser.java @@ -0,0 +1,418 @@ +package de.tudresden.inf.st.pnml; + +import de.tudresden.inf.st.pnml.jastadd.model.*; + +import java.util.ArrayList; +import java.util.List; + +final class PTNetParser { + + public static List<PetriNet> getPetriNets(fr.lip6.move.pnml.ptnet.hlapi.PetriNetDocHLAPI source) throws PnmlParseException { + List<PetriNet> nets = new ArrayList<>(); + for (fr.lip6.move.pnml.ptnet.PetriNet net : source.getNets()) { + PetriNet petriNet = getPetriNet(net); + petriNet.treeResolveAll(); + nets.add(petriNet); + } + return nets; + } + + // the get methods + + private static PetriNet getPetriNet(fr.lip6.move.pnml.ptnet.PetriNet source) throws PnmlParseException { + PetriNet result = new PetriNet(); + fillPetriNet(source, result); + return result; + } + + private static Page getPage(fr.lip6.move.pnml.ptnet.Page source) throws PnmlParseException { + Page result = new Page(); + fillPage(source, result); + return result; + } + + private static NodeGraphics getNodeGraphics(fr.lip6.move.pnml.ptnet.NodeGraphics source) { + NodeGraphics result = new NodeGraphics(); + fillNodeGraphics(source, result); + return result; + } + + private static Line getLine(fr.lip6.move.pnml.ptnet.Line source) { + Line result = new Line(); + fillLine(source, result); + return result; + } + + private static Fill getFill(fr.lip6.move.pnml.ptnet.Fill source) { + Fill result = new Fill(); + fillFill(source, result); + return result; + } + + private static Dimension getDimension(fr.lip6.move.pnml.ptnet.Dimension source) { + Dimension result = new Dimension(); + fillDimension(source, result); + return result; + } + + private static Offset getOffset(fr.lip6.move.pnml.ptnet.Offset source) { + Offset result = new Offset(); + fillOffset(source, result); + return result; + } + + private static Position getPosition(fr.lip6.move.pnml.ptnet.Position source) { + Position result = new Position(); + fillPosition(source, result); + return result; + } + + private static Name getName(fr.lip6.move.pnml.ptnet.Name source) { + Name result = new Name(); + fillName(source, result); + return result; + } + + private static AnnotationGraphics getAnnotationGraphics(fr.lip6.move.pnml.ptnet.AnnotationGraphics source) { + AnnotationGraphics result = new AnnotationGraphics(); + fillAnnotationGraphics(source, result); + return result; + } + + private static Font getFont(fr.lip6.move.pnml.ptnet.Font source) { + Font result = new Font(); + fillFont(source, result); + return result; + } + + private static ToolInfo getToolInfo(fr.lip6.move.pnml.ptnet.ToolInfo source) { + ToolInfo result = new ToolInfo(); + fillToolInfo(source, result); + return result; + } + + private static Node getNode(fr.lip6.move.pnml.ptnet.Node source) throws PnmlParseException { + if (source instanceof fr.lip6.move.pnml.ptnet.PlaceNode) { + return getPlaceNode((fr.lip6.move.pnml.ptnet.PlaceNode) source); + } else if (source instanceof fr.lip6.move.pnml.ptnet.TransitionNode) { + return getTransitionNode((fr.lip6.move.pnml.ptnet.TransitionNode) source); + } else { + throw new PnmlParseException("Encountered illegal unknown subtype of Node " + source.getClass().getCanonicalName()); + } + } + + private static PlaceNode getPlaceNode(fr.lip6.move.pnml.ptnet.PlaceNode source) throws PnmlParseException { + if (source instanceof fr.lip6.move.pnml.ptnet.Place) { + return getPlace((fr.lip6.move.pnml.ptnet.Place) source); + } else if (source instanceof fr.lip6.move.pnml.ptnet.RefPlace) { + return getRefPlace((fr.lip6.move.pnml.ptnet.RefPlace) source); + } else { + throw new PnmlParseException("Encountered illegal unknown subtype of PlaceNode " + source.getClass().getCanonicalName()); + } + } + + private static Place getPlace(fr.lip6.move.pnml.ptnet.Place source) { + Place result = new Place(); + fillPlace(source, result); + return result; + } + + private static PTMarking getPTMarking(fr.lip6.move.pnml.ptnet.PTMarking source) { + PTMarking result = new PTMarking(); + fillPTMarking(source, result); + return result; + } + + private static RefPlace getRefPlace(fr.lip6.move.pnml.ptnet.RefPlace source) { + RefPlace result = new RefPlace(); + fillRefPlace(source, result); + return result; + } + + private static TransitionNode getTransitionNode(fr.lip6.move.pnml.ptnet.TransitionNode source) throws PnmlParseException { + if (source instanceof fr.lip6.move.pnml.ptnet.Transition) { + return getTransition((fr.lip6.move.pnml.ptnet.Transition) source); + } else if (source instanceof fr.lip6.move.pnml.ptnet.RefTransition) { + return getRefTransition((fr.lip6.move.pnml.ptnet.RefTransition) source); + } else { + throw new PnmlParseException("Encountered illegal unknown subtype of TransitionNode " + source.getClass().getCanonicalName()); + } + } + + private static RefTransition getRefTransition(fr.lip6.move.pnml.ptnet.RefTransition source) { + RefTransition result = new RefTransition(); + fillRefTransition(source, result); + return result; + } + + private static Transition getTransition(fr.lip6.move.pnml.ptnet.Transition source) { + Transition result = new Transition(); + fillTransition(source, result); + return result; + } + + private static Arc getArc(fr.lip6.move.pnml.ptnet.Arc source) { + Arc result = new Arc(); + fillArc(source, result); + return result; + } + + private static PTArcAnnotation getPTArcannotation(fr.lip6.move.pnml.ptnet.PTArcAnnotation source) { + PTArcAnnotation result = new PTArcAnnotation(); + fillPTAnnotation(source, result); + return result; + } + + private static ArcGraphics getArcGraphics(fr.lip6.move.pnml.ptnet.ArcGraphics source) { + ArcGraphics result = new ArcGraphics(); + fillArcGraphics(source, result); + return result; + } + + private static PnObject getPnObject(fr.lip6.move.pnml.ptnet.PnObject source) throws PnmlParseException { + if (source instanceof fr.lip6.move.pnml.ptnet.Page) { + return getPage((fr.lip6.move.pnml.ptnet.Page) source); + } else if (source instanceof Node) { + return getNode((fr.lip6.move.pnml.ptnet.Node) source); + } else if (source instanceof fr.lip6.move.pnml.ptnet.Arc) { + return getArc((fr.lip6.move.pnml.ptnet.Arc) source); + } else if (source instanceof fr.lip6.move.pnml.ptnet.Node) { + return getNode((fr.lip6.move.pnml.ptnet.Node) source); + } else { + throw new PnmlParseException("Encountered illegal unknown subtype of PnObject " + source.getClass().getCanonicalName()); + } + } + + // the fill methods + + private static void fillPetriNet(fr.lip6.move.pnml.ptnet.PetriNet source, PetriNet result) throws PnmlParseException { + for (fr.lip6.move.pnml.ptnet.Page page : source.getPages()) { + result.addPage(getPage(page)); + } + if (source.getName() != null) { + result.setName(getName(source.getName())); + } + for (fr.lip6.move.pnml.ptnet.ToolInfo toolInfo : source.getToolspecifics()) { + result.addToolspecific(getToolInfo(toolInfo)); + } + result.setId(source.getId()); + if (source.getType() == fr.lip6.move.pnml.ptnet.PNType.PTNET) { + result.setType(PNType.PTNET); + } else { + throw new PnmlParseException("Illegal Petri Net type '" + source.getType().getLiteral() + "' encountered."); + } + } + + private static void fillPage(fr.lip6.move.pnml.ptnet.Page source, Page result) throws PnmlParseException { + fillPnObject(source, result); + + for (fr.lip6.move.pnml.ptnet.PnObject object : source.getObjects()) { + result.addObject(getPnObject(object)); + } + if (source.getNodegraphics() != null) { + result.setNodeGraphics(getNodeGraphics(source.getNodegraphics())); + } + } + + private static void fillPnObject(fr.lip6.move.pnml.ptnet.PnObject source, PnObject result) { + if (source.getName() != null) { + result.setName(getName(source.getName())); + } + for (fr.lip6.move.pnml.ptnet.ToolInfo toolInfo : source.getToolspecifics()) { + result.addToolspecific(getToolInfo(toolInfo)); + } + result.setId(source.getId()); + } + + private static void fillNodeGraphics(fr.lip6.move.pnml.ptnet.NodeGraphics source, NodeGraphics result) { + if (source.getPosition() != null) { + result.setPosition(getPosition(source.getPosition())); + } + if (source.getDimension() != null) { + result.setDimension(getDimension(source.getDimension())); + } + if (source.getFill() != null) { + result.setFill(getFill(source.getFill())); + } + if (source.getLine() != null) { + result.setLine(getLine(source.getLine())); + } + } + + private static void fillLine(fr.lip6.move.pnml.ptnet.Line source, Line result) { + result.setColor(CSS2Color.valueOf(source.getColor().getName())); + result.setShape(LineShape.valueOf(source.getShape().getName())); + result.setWidth(source.getWidth()); + result.setStyle(LineStyle.valueOf(source.getStyle().getName())); + } + + private static void fillFill(fr.lip6.move.pnml.ptnet.Fill source, Fill result) { + result.setColor(CSS2Color.valueOf(source.getColor().getName())); + result.setGradientcolor(CSS2Color.valueOf(source.getGradientcolor().getName())); + result.setGradientrotation(Gradient.valueOf(source.getGradientrotation().getName())); + result.setImage(source.getImage()); + } + + private static void fillDimension(fr.lip6.move.pnml.ptnet.Dimension source, Dimension result) { + fillCoordinate(source, result); + } + + private static void fillCoordinate(fr.lip6.move.pnml.ptnet.Coordinate source, Coordinate result) { + result.setX(source.getX()); + result.setY(source.getY()); + } + + private static void fillOffset(fr.lip6.move.pnml.ptnet.Offset source, Offset result) { + fillCoordinate(source, result); + } + + private static void fillPosition(fr.lip6.move.pnml.ptnet.Position source, Position result) { + fillCoordinate(source, result); + } + + private static void fillName(fr.lip6.move.pnml.ptnet.Name source, Name result) { + fillAnnotation(source, result); + + result.setText(source.getText()); + } + + private static void fillAnnotation(fr.lip6.move.pnml.ptnet.Annotation source, Annotation result) { + if (source.getAnnotationgraphics() != null) { + result.setAnnotationGraphics(getAnnotationGraphics(source.getAnnotationgraphics())); + } + fillLabel(source, result); + } + + private static void fillLabel(fr.lip6.move.pnml.ptnet.Annotation source, Annotation result) { + for (fr.lip6.move.pnml.ptnet.ToolInfo info : source.getToolspecifics()) { + result.addToolspecific(getToolInfo(info)); + } + } + + private static void fillAnnotationGraphics(fr.lip6.move.pnml.ptnet.AnnotationGraphics source, AnnotationGraphics result) { + if (source.getOffset() != null) { + result.setOffset(getOffset(source.getOffset())); + } + if (source.getFill() != null) { + result.setFill(getFill(source.getFill())); + } + if (source.getLine() != null) { + result.setLine(getLine(source.getLine())); + } + if (source.getFont() != null) { + result.setFont(getFont(source.getFont())); + } + } + + private static void fillFont(fr.lip6.move.pnml.ptnet.Font source, Font result) { + result.setAlign(FontAlign.valueOf(source.getAlign().getName())); + result.setDecoration(FontDecoration.valueOf(source.getDecoration().getName())); + result.setFamily(CSS2FontFamily.valueOf(source.getFamily().getName())); + result.setRotation(source.getRotation()); + result.setSize(CSS2FontSize.valueOf(source.getSize().getName())); + result.setStyle(CSS2FontStyle.valueOf(source.getStyle().getName())); + result.setWeight(CSS2FontWeight.valueOf(source.getWeight().getName())); + } + + private static void fillToolInfo(fr.lip6.move.pnml.ptnet.ToolInfo source, ToolInfo result) { + result.setTool(source.getTool()); + result.setVersion(source.getVersion()); + result.setFormattedXMLBuffer(source.getFormattedXMLBuffer()); + result.setToolInfoGrammarURI(source.getToolInfoGrammarURI()); + } + + private static void fillPlace(fr.lip6.move.pnml.ptnet.Place source, Place result) { + fillPlaceNode(source, result); + + if (source.getInitialMarking() != null) { + result.setInitialMarking(getPTMarking(source.getInitialMarking())); + } + } + + private static void fillPTMarking(fr.lip6.move.pnml.ptnet.PTMarking source, PTMarking result) { + fillAnnotation(source, result); + + // whatever this is supposed to be. they changed the Integer to Long + result.setText(Math.toIntExact(source.getText())); + } + + private static void fillRefPlace(fr.lip6.move.pnml.ptnet.RefPlace source, RefPlace result) { + fillPlaceNode(source, result); + + result.setRef(PlaceNode.createRefDirection(source.getRef().getId())); + } + + private static void fillPlaceNode(fr.lip6.move.pnml.ptnet.PlaceNode source, PlaceNode result) { + fillNode(source, result); + + for (fr.lip6.move.pnml.ptnet.RefPlace referencingPlace : source.getReferencingPlaces()) { + result.addReferencingPlace(RefPlace.createRefDirection(referencingPlace.getId())); + } + } + + private static void fillRefTransition(fr.lip6.move.pnml.ptnet.RefTransition source, RefTransition result) { + fillTransitionNode(source, result); + + result.setRef(TransitionNode.createRefDirection(source.getRef().getId())); + } + + private static void fillTransitionNode(fr.lip6.move.pnml.ptnet.TransitionNode source, TransitionNode result) { + fillNode(source, result); + + for (fr.lip6.move.pnml.ptnet.RefTransition refTransition : source.getReferencingTransitions()) { + result.addReferencingTransition(RefTransition.createRefDirection(refTransition.getId())); + } + } + + private static void fillTransition(fr.lip6.move.pnml.ptnet.Transition source, Transition result) { + fillTransitionNode(source, result); + } + + private static void fillNode(fr.lip6.move.pnml.ptnet.Node source, Node result) { + + fillPnObject(source, result); + + if (source.getNodegraphics() != null) { + result.setNodeGraphics(getNodeGraphics(source.getNodegraphics())); + } + + for (fr.lip6.move.pnml.ptnet.Arc outArc : source.getOutArcs()) { + result.addOutArc(Arc.createRefDirection(outArc.getId())); + } + for (fr.lip6.move.pnml.ptnet.Arc inArc : source.getInArcs()) { + result.addInArc(Arc.createRefDirection(inArc.getId())); + } + } + + private static void fillArc(fr.lip6.move.pnml.ptnet.Arc source, Arc result) { + fillPnObject(source, result); + + if (source.getArcgraphics() != null) { + result.setArcGraphics(getArcGraphics(source.getArcgraphics())); + } + if (source.getInscription() != null) { + result.setInscription(getPTArcannotation(source.getInscription())); + } + + result.setSource(Node.createRefDirection(source.getSource().getId())); + result.setTarget(Node.createRefDirection(source.getTarget().getId())); + } + + private static void fillPTAnnotation(fr.lip6.move.pnml.ptnet.PTArcAnnotation source, PTArcAnnotation result) { + fillAnnotation(source, result); + + // whatever this is supposed to be. they changed the Integer to Long + result.setText(Math.toIntExact(source.getText())); + } + + private static void fillArcGraphics(fr.lip6.move.pnml.ptnet.ArcGraphics source, ArcGraphics result) { + for (fr.lip6.move.pnml.ptnet.Position position : source.getPositions()) { + result.addPosition(getPosition(position)); + } + if (source.getLine() != null) { + result.setLine(getLine(source.getLine())); + } + } + + +} diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java index 1345498efa6091cbe6f8e065e4c97ab1c227566c..142f7126918a0e93f647ee838659af97f0b9b1a3 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java +++ b/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java @@ -1,34 +1,37 @@ package de.tudresden.inf.st.pnml; -import de.tudresden.inf.st.pnml.jastadd.model.*; +import de.tudresden.inf.st.pnml.jastadd.model.PetriNet; +import de.tudresden.inf.st.pnml.jastadd.model.PnmlParseException; import fr.lip6.move.pnml.framework.hlapi.HLAPIRootClass; import fr.lip6.move.pnml.framework.utils.ModelRepository; import fr.lip6.move.pnml.framework.utils.PNMLUtils; import fr.lip6.move.pnml.framework.utils.exception.ImportException; import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException; -import fr.lip6.move.pnml.ptnet.hlapi.PetriNetDocHLAPI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.ArrayList; import java.util.List; public class PnmlParser { private static final Logger logger = LoggerFactory.getLogger(PnmlParser.class); - private final PetriNet petriNet; - /** - * Constructor building a JastAdd representation of a Petri net from an EMF PNML representation - * - * @param source an EMF PNML Petri net - * @throws PnmlParseException when the EMF deserialization or the transformation fail - */ - public PnmlParser(fr.lip6.move.pnml.ptnet.PetriNet source) throws PnmlParseException { - this.petriNet = getPetriNet(source); - petriNet.treeResolveAll(); + public static List<PetriNet> getPetriNets(HLAPIRootClass source) throws PnmlParseException { + + fr.lip6.move.pnml.framework.general.PNType type = PNMLUtils.determinePNType(source); + switch (type) { + case PTNET: + return PTNetParser.getPetriNets((fr.lip6.move.pnml.ptnet.hlapi.PetriNetDocHLAPI) source); + case COREMODEL: + return CoreModelParser.getPetriNets((fr.lip6.move.pnml.pnmlcoremodel.hlapi.PetriNetDocHLAPI) source); + case SYMNET: + case HLPN: + case PTHLPN: + default: + throw new PnmlParseException("Petri net is of unsupported type " + type.getLiteral() + "."); + } } /** @@ -40,7 +43,7 @@ public class PnmlParser { public static List<PetriNet> parsePnml(String fileName) throws PnmlParseException { Path file = Paths.get(fileName); - HLAPIRootClass document = null; + HLAPIRootClass document; try { document = PNMLUtils.importPnmlDocument(file.toFile(), false); @@ -51,432 +54,7 @@ public class PnmlParser { logger.info("Imported document workspace ID: {}", ModelRepository.getInstance().getCurrentDocWSId()); - List<PetriNet> petriNets = new ArrayList<>(); - - fr.lip6.move.pnml.framework.general.PNType type = PNMLUtils.determinePNType(document); - switch (type) { - case PTNET: - PetriNetDocHLAPI ptDoc = (PetriNetDocHLAPI) document; - - for (fr.lip6.move.pnml.ptnet.PetriNet pmnlNet : ptDoc.getNets()) { - PnmlParser parser; - parser = new PnmlParser(pmnlNet); - petriNets.add(parser.getPetriNet()); - } - - break; - case COREMODEL: - case SYMNET: - case HLPN: - case PTHLPN: - default: - throw new PnmlParseException("Petri net is of unsupported type " + type.getLiteral() + "."); - } - return petriNets; - } - - /** - * @return the most recently parsed JastAdd representation - */ - public PetriNet getPetriNet() { - return petriNet; - } - - // the get methods - - private PetriNet getPetriNet(fr.lip6.move.pnml.ptnet.PetriNet source) throws PnmlParseException { - PetriNet result = new PetriNet(); - fillPetriNet(source, result); - return result; - } - - private Page getPage(fr.lip6.move.pnml.ptnet.Page source) throws PnmlParseException { - Page result = new Page(); - fillPage(source, result); - return result; - } - - private NodeGraphics getNodeGraphics(fr.lip6.move.pnml.ptnet.NodeGraphics source) { - NodeGraphics result = new NodeGraphics(); - fillNodeGraphics(source, result); - return result; - } - - private Line getLine(fr.lip6.move.pnml.ptnet.Line source) { - Line result = new Line(); - fillLine(source, result); - return result; - } - - private Fill getFill(fr.lip6.move.pnml.ptnet.Fill source) { - Fill result = new Fill(); - fillFill(source, result); - return result; - } - - private Dimension getDimension(fr.lip6.move.pnml.ptnet.Dimension source) { - Dimension result = new Dimension(); - fillDimension(source, result); - return result; - } - - private Offset getOffset(fr.lip6.move.pnml.ptnet.Offset source) { - Offset result = new Offset(); - fillOffset(source, result); - return result; - } - - private Position getPosition(fr.lip6.move.pnml.ptnet.Position source) { - Position result = new Position(); - fillPosition(source, result); - return result; - } - - private Name getName(fr.lip6.move.pnml.ptnet.Name source) { - Name result = new Name(); - fillName(source, result); - return result; - } - - private AnnotationGraphics getAnnotationGraphics(fr.lip6.move.pnml.ptnet.AnnotationGraphics source) { - AnnotationGraphics result = new AnnotationGraphics(); - fillAnnotationGraphics(source, result); - return result; - } - - private Font getFont(fr.lip6.move.pnml.ptnet.Font source) { - Font result = new Font(); - fillFont(source, result); - return result; - } - - private ToolInfo getToolInfo(fr.lip6.move.pnml.ptnet.ToolInfo source) { - ToolInfo result = new ToolInfo(); - fillToolInfo(source, result); - return result; - } - - private Node getNode(fr.lip6.move.pnml.ptnet.Node source) throws PnmlParseException { - if (source instanceof fr.lip6.move.pnml.ptnet.PlaceNode) { - return getPlaceNode((fr.lip6.move.pnml.ptnet.PlaceNode) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.TransitionNode) { - return getTransitionNode((fr.lip6.move.pnml.ptnet.TransitionNode) source); - } else { - throw new PnmlParseException("Encountered illegal unknown subtype of Node " + source.getClass().getCanonicalName()); - } - } - - private PlaceNode getPlaceNode(fr.lip6.move.pnml.ptnet.PlaceNode source) throws PnmlParseException { - if (source instanceof fr.lip6.move.pnml.ptnet.Place) { - return getPlace((fr.lip6.move.pnml.ptnet.Place) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.RefPlace) { - return getRefPlace((fr.lip6.move.pnml.ptnet.RefPlace) source); - } else { - throw new PnmlParseException("Encountered illegal unknown subtype of PlaceNode " + source.getClass().getCanonicalName()); - } - } - - private Place getPlace(fr.lip6.move.pnml.ptnet.Place source) { - Place result = new Place(); - fillPlace(source, result); - return result; - } - - private PTMarking getPTMarking(fr.lip6.move.pnml.ptnet.PTMarking source) { - PTMarking result = new PTMarking(); - fillPTMarking(source, result); - return result; - } - - private RefPlace getRefPlace(fr.lip6.move.pnml.ptnet.RefPlace source) { - RefPlace result = new RefPlace(); - fillRefPlace(source, result); - return result; - } - - private TransitionNode getTransitionNode(fr.lip6.move.pnml.ptnet.TransitionNode source) throws PnmlParseException { - if (source instanceof fr.lip6.move.pnml.ptnet.Transition) { - return getTransition((fr.lip6.move.pnml.ptnet.Transition) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.RefTransition) { - return getRefTransition((fr.lip6.move.pnml.ptnet.RefTransition) source); - } else { - throw new PnmlParseException("Encountered illegal unknown subtype of TransitionNode " + source.getClass().getCanonicalName()); - } - } - - private RefTransition getRefTransition(fr.lip6.move.pnml.ptnet.RefTransition source) { - RefTransition result = new RefTransition(); - fillRefTransition(source, result); - return result; - } - - private Transition getTransition(fr.lip6.move.pnml.ptnet.Transition source) { - Transition result = new Transition(); - fillTransition(source, result); - return result; - } - - private Arc getArc(fr.lip6.move.pnml.ptnet.Arc source) { - Arc result = new Arc(); - fillArc(source, result); - return result; - } - - private PTArcAnnotation getPTArcannotation(fr.lip6.move.pnml.ptnet.PTArcAnnotation source) { - PTArcAnnotation result = new PTArcAnnotation(); - fillPTAnnotation(source, result); - return result; - } - - private ArcGraphics getArcGraphics(fr.lip6.move.pnml.ptnet.ArcGraphics source) { - ArcGraphics result = new ArcGraphics(); - fillArcGraphics(source, result); - return result; - } - - private PnObject getPnObject(fr.lip6.move.pnml.ptnet.PnObject source) throws PnmlParseException { - if (source instanceof fr.lip6.move.pnml.ptnet.Page) { - return getPage((fr.lip6.move.pnml.ptnet.Page) source); - } else if (source instanceof Node) { - return getNode((fr.lip6.move.pnml.ptnet.Node) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.Arc) { - return getArc((fr.lip6.move.pnml.ptnet.Arc) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.Node) { - return getNode((fr.lip6.move.pnml.ptnet.Node) source); - } else { - throw new PnmlParseException("Encountered illegal unknown subtype of PnObject " + source.getClass().getCanonicalName()); - } - } - - // the fill methods - - private void fillPetriNet(fr.lip6.move.pnml.ptnet.PetriNet source, PetriNet result) throws PnmlParseException { - for (fr.lip6.move.pnml.ptnet.Page page : source.getPages()) { - result.addPage(getPage(page)); - } - if (source.getName() != null) { - result.setName(getName(source.getName())); - } - for (fr.lip6.move.pnml.ptnet.ToolInfo toolInfo : source.getToolspecifics()) { - result.addToolspecific(getToolInfo(toolInfo)); - } - result.setId(source.getId()); - if (source.getType() == fr.lip6.move.pnml.ptnet.PNType.PTNET) { - result.setType(PNType.PTNET); - } else { - throw new PnmlParseException("Illegal Petri Net type '" + source.getType().getLiteral() + "' encountered."); - } - } - - private void fillPage(fr.lip6.move.pnml.ptnet.Page source, Page result) throws PnmlParseException { - fillPnObject(source, result); - - for (fr.lip6.move.pnml.ptnet.PnObject object : source.getObjects()) { - result.addObject(getPnObject(object)); - } - if (source.getNodegraphics() != null) { - result.setNodeGraphics(getNodeGraphics(source.getNodegraphics())); - } - } - - private void fillPnObject(fr.lip6.move.pnml.ptnet.PnObject source, PnObject result) { - if (source.getName() != null) { - result.setName(getName(source.getName())); - } - for (fr.lip6.move.pnml.ptnet.ToolInfo toolInfo : source.getToolspecifics()) { - result.addToolspecific(getToolInfo(toolInfo)); - } - result.setId(source.getId()); - } - - private void fillNodeGraphics(fr.lip6.move.pnml.ptnet.NodeGraphics source, NodeGraphics result) { - if (source.getPosition() != null) { - result.setPosition(getPosition(source.getPosition())); - } - if (source.getDimension() != null) { - result.setDimension(getDimension(source.getDimension())); - } - if (source.getFill() != null) { - result.setFill(getFill(source.getFill())); - } - if (source.getLine() != null) { - result.setLine(getLine(source.getLine())); - } - } - - private void fillLine(fr.lip6.move.pnml.ptnet.Line source, Line result) { - result.setColor(CSS2Color.valueOf(source.getColor().getName())); - result.setShape(LineShape.valueOf(source.getShape().getName())); - result.setWidth(source.getWidth()); - result.setStyle(LineStyle.valueOf(source.getStyle().getName())); - } - - private void fillFill(fr.lip6.move.pnml.ptnet.Fill source, Fill result) { - result.setColor(CSS2Color.valueOf(source.getColor().getName())); - result.setGradientcolor(CSS2Color.valueOf(source.getGradientcolor().getName())); - result.setGradientrotation(Gradient.valueOf(source.getGradientrotation().getName())); - result.setImage(source.getImage()); - } - - private void fillDimension(fr.lip6.move.pnml.ptnet.Dimension source, Dimension result) { - fillCoordinate(source, result); - } - - private void fillCoordinate(fr.lip6.move.pnml.ptnet.Coordinate source, Coordinate result) { - result.setX(source.getX()); - result.setY(source.getY()); - } - - private void fillOffset(fr.lip6.move.pnml.ptnet.Offset source, Offset result) { - fillCoordinate(source, result); - } - - private void fillPosition(fr.lip6.move.pnml.ptnet.Position source, Position result) { - fillCoordinate(source, result); - } - - private void fillName(fr.lip6.move.pnml.ptnet.Name source, Name result) { - fillAnnotation(source, result); - - result.setText(source.getText()); - } - - private void fillAnnotation(fr.lip6.move.pnml.ptnet.Annotation source, Annotation result) { - if (source.getAnnotationgraphics() != null) { - result.setAnnotationGraphics(getAnnotationGraphics(source.getAnnotationgraphics())); - } - fillLabel(source, result); - } - - private void fillLabel(fr.lip6.move.pnml.ptnet.Annotation source, Annotation result) { - for (fr.lip6.move.pnml.ptnet.ToolInfo info : source.getToolspecifics()) { - result.addToolspecific(getToolInfo(info)); - } - } - - private void fillAnnotationGraphics(fr.lip6.move.pnml.ptnet.AnnotationGraphics source, AnnotationGraphics result) { - if (source.getOffset() != null) { - result.setOffset(getOffset(source.getOffset())); - } - if (source.getFill() != null) { - result.setFill(getFill(source.getFill())); - } - if (source.getLine() != null) { - result.setLine(getLine(source.getLine())); - } - if (source.getFont() != null) { - result.setFont(getFont(source.getFont())); - } - } - - private void fillFont(fr.lip6.move.pnml.ptnet.Font source, Font result) { - result.setAlign(FontAlign.valueOf(source.getAlign().getName())); - result.setDecoration(FontDecoration.valueOf(source.getDecoration().getName())); - result.setFamily(CSS2FontFamily.valueOf(source.getFamily().getName())); - result.setRotation(source.getRotation()); - result.setSize(CSS2FontSize.valueOf(source.getSize().getName())); - result.setStyle(CSS2FontStyle.valueOf(source.getStyle().getName())); - result.setWeight(CSS2FontWeight.valueOf(source.getWeight().getName())); - } - - private void fillToolInfo(fr.lip6.move.pnml.ptnet.ToolInfo source, ToolInfo result) { - result.setTool(source.getTool()); - result.setVersion(source.getVersion()); - result.setFormattedXMLBuffer(source.getFormattedXMLBuffer()); - result.setToolInfoGrammarURI(source.getToolInfoGrammarURI()); - } - - private void fillPlace(fr.lip6.move.pnml.ptnet.Place source, Place result) { - fillPlaceNode(source, result); - - if (source.getInitialMarking() != null) { - result.setInitialMarking(getPTMarking(source.getInitialMarking())); - } - } - - private void fillPTMarking(fr.lip6.move.pnml.ptnet.PTMarking source, PTMarking result) { - fillAnnotation(source, result); - - // whatever this is supposed to be. they changed the Integer to Long - result.setText(Math.toIntExact(source.getText())); - } - - private void fillRefPlace(fr.lip6.move.pnml.ptnet.RefPlace source, RefPlace result) { - fillPlaceNode(source, result); - - result.setRef(PlaceNode.createRefDirection(source.getRef().getId())); - } - - private void fillPlaceNode(fr.lip6.move.pnml.ptnet.PlaceNode source, PlaceNode result) { - fillNode(source, result); - - for (fr.lip6.move.pnml.ptnet.RefPlace referencingPlace : source.getReferencingPlaces()) { - result.addReferencingPlace(RefPlace.createRefDirection(referencingPlace.getId())); - } - } - - private void fillRefTransition(fr.lip6.move.pnml.ptnet.RefTransition source, RefTransition result) { - fillTransitionNode(source, result); - - result.setRef(TransitionNode.createRefDirection(source.getRef().getId())); - } - - private void fillTransitionNode(fr.lip6.move.pnml.ptnet.TransitionNode source, TransitionNode result) { - fillNode(source, result); - - for (fr.lip6.move.pnml.ptnet.RefTransition refTransition : source.getReferencingTransitions()) { - result.addReferencingTransition(RefTransition.createRefDirection(refTransition.getId())); - } - } - - private void fillTransition(fr.lip6.move.pnml.ptnet.Transition source, Transition result) { - fillTransitionNode(source, result); - } - - private void fillNode(fr.lip6.move.pnml.ptnet.Node source, Node result) { - - fillPnObject(source, result); - - if (source.getNodegraphics() != null) { - result.setNodeGraphics(getNodeGraphics(source.getNodegraphics())); - } - - for (fr.lip6.move.pnml.ptnet.Arc outArc : source.getOutArcs()) { - result.addOutArc(Arc.createRefDirection(outArc.getId())); - } - for (fr.lip6.move.pnml.ptnet.Arc inArc : source.getInArcs()) { - result.addInArc(Arc.createRefDirection(inArc.getId())); - } - } - - private void fillArc(fr.lip6.move.pnml.ptnet.Arc source, Arc result) { - fillPnObject(source, result); - - if (source.getArcgraphics() != null) { - result.setArcGraphics(getArcGraphics(source.getArcgraphics())); - } - if (source.getInscription() != null) { - result.setInscription(getPTArcannotation(source.getInscription())); - } - - result.setSource(Node.createRefDirection(source.getSource().getId())); - result.setTarget(Node.createRefDirection(source.getTarget().getId())); - } - - private void fillPTAnnotation(fr.lip6.move.pnml.ptnet.PTArcAnnotation source, PTArcAnnotation result) { - fillAnnotation(source, result); - - // whatever this is supposed to be. they changed the Integer to Long - result.setText(Math.toIntExact(source.getText())); - } - - private void fillArcGraphics(fr.lip6.move.pnml.ptnet.ArcGraphics source, ArcGraphics result) { - for (fr.lip6.move.pnml.ptnet.Position position : source.getPositions()) { - result.addPosition(getPosition(position)); - } - if (source.getLine() != null) { - result.setLine(getLine(source.getLine())); - } + return getPetriNets(document); } } diff --git a/src/main/resources/PnmlRelAstVersion.properties b/src/main/resources/PnmlRelAstVersion.properties index 1daf2cbb1dba68efb1605ce085e4913c6f56ccc5..35efc4a9e275c292302e1f9af45059db44e96ca7 100644 --- a/src/main/resources/PnmlRelAstVersion.properties +++ b/src/main/resources/PnmlRelAstVersion.properties @@ -1,2 +1,2 @@ -#Mon Oct 17 16:25:21 CEST 2022 -version=0.2.0 +#Mon Oct 17 18:45:10 CEST 2022 +version=0.3.0