diff --git a/model/src/main/java/lcsb/mapviewer/model/LogMarker.java b/model/src/main/java/lcsb/mapviewer/model/LogMarker.java index af9310d7d93f4851b220e2b7b07b2bdcd9f7f3d5..23ae2a0d457869bb2b59a287b09455e85aeaa2c8 100644 --- a/model/src/main/java/lcsb/mapviewer/model/LogMarker.java +++ b/model/src/main/java/lcsb/mapviewer/model/LogMarker.java @@ -32,6 +32,14 @@ public class LogMarker implements Marker { entry = new ProjectLogEntry(marker.getEntry()); } + public LogMarker(ProjectLogEntryType type, String objectClass, String objectIdentifier, String mapName) { + entry = new ProjectLogEntry(); + entry.setType(type); + entry.setObjectIdentifier(objectIdentifier); + entry.setObjectClass(objectClass); + entry.setMapName(mapName); + } + @Override public Marker addParents(Marker... markers) { throw new NotImplementedException(); diff --git a/model/src/main/java/lcsb/mapviewer/model/ProjectLogEntryType.java b/model/src/main/java/lcsb/mapviewer/model/ProjectLogEntryType.java index 42d1186ca6c3e6b5d50d9c543797e5c11bfba02a..a04c2a007b8d6fe16d2fbf550bf3a39b0af1318e 100644 --- a/model/src/main/java/lcsb/mapviewer/model/ProjectLogEntryType.java +++ b/model/src/main/java/lcsb/mapviewer/model/ProjectLogEntryType.java @@ -9,5 +9,6 @@ public enum ProjectLogEntryType { MISSING_ANNOTATION, MISSING_REQUIRED_ANNOTATION, OUT_OF_MEMORY, - OTHER, + OTHER, + PARSING_ISSUE, } diff --git a/pathvisio/pom.xml b/pathvisio/pom.xml index 30ee0f01455a80296445bc7ed63ace99ae147b74..cb567c594c82f5e67351f3f03b0a6cf8a93a6612 100644 --- a/pathvisio/pom.xml +++ b/pathvisio/pom.xml @@ -1,145 +1,57 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>lcsb.mapviewer</groupId> - <artifactId>parent</artifactId> - <version>1.0</version> - </parent> - <artifactId>pathvisio</artifactId> - <name>Pathvisio plugin</name> - -<!-- <packaging>bundle</packaging> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <version>4.0.0</version> - <extensions>true</extensions> - - <configuration> - <instructions> - <Bundle-Activator>lcsb.mapviewer.wikipathway.Activator</Bundle-Activator> - <Bundle-Name>CellDesigner plugin v.${svnversion}</Bundle-Name> - - <Embed-Transitive>true</Embed-Transitive> - <Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency> - <Import-Package>!org.relaxng.datatype, - !org.slf4j, - !org.slf4j.spi, - !com.fasterxml.classmate, - !com.fasterxml.classmate.members, - !com.ibm.uvm.tools, - !com.sun.jdi, - !com.sun.jdi.connect, - !com.sun.jdi.event, - !com.sun.jdi.request, - !com.sun.jdmk.comm, - !com.sun.msv.datatype, - !com.sun.msv.datatype.xsd, - !com.google.gson, - !javax.imageio, - !javax.jmdns, - !javax.jms, - !javax.mail, - !javax.mail.internet, - !javax.management, - !javax.naming, - !javax.naming.event, - !javax.naming.spi, - !javax.security.auth, - !javax.security.jacc, - !javax.sql, - !javax.swing, - !javax.swing.border, - !javax.swing.event, - !javax.swing.filechooser, - !javax.swing.plaf, - !javax.swing.table, - !javax.swing.text, - !javax.swing.text.html, - !javax.swing.tree, - !javax.validation, - !javax.validation.constraints, - !javax.validation.groups, - !javax.validation.metadata, - !javax.xml, - !javax.xml.bind, - !javax.xml.bind.annotation, - !javax.xml.bind.annotation.adapters, - !javax.xml.namespace, - !javax.xml.parsers, - !javax.xml.stream, - !javax.xml.stream.events, - !javax.xml.stream.util, - !javax.xml.transform, - !javax.xml.transform.dom, - !javax.xml.transform.sax, - !javax.xml.transform.stream, - !javax.xml.validation, - !oracle.xml.parser, - !oracle.xml.parser.v2, - !org.apache.batik.dom, - !org.apache.batik.svggen, - !org.apache.batik.transcoder, - !org.apache.batik.transcoder.image, - !org.apache.commons.math, - !org.apache.commons.math.stat, - !org.apache.commons.math.stat.inference, - !org.apache.commons.vfs2, - !org.apache.fop.svg, - !org.apache.tools.ant, - !org.apache.tools.ant.taskdefs, - !org.apache.tools.ant.types, - !org.bridgedb, - !org.bridgedb.bio, - !org.bridgedb.gui, - !org.bridgedb.rdb.construct, - !org.gjt.xpp, - !org.jaxen, - !org.jaxen.jdom, - !org.jaxen.dom4j, - !org.jaxen.pattern, - !org.jaxen.saxpath, - !org.jboss.jandex, - !org.jboss.logmanager, - !org.jdom, - !org.jdom.input, - !org.jdom.output, - !org.pathvisio.data, - !org.w3c.dom, - !org.w3c.dom.events, - !org.w3c.dom.ranges, - !org.w3c.dom.traversal, - !org.xml.sax, - !org.xml.sax.ext, - !org.xml.sax.helpers, - !org.xmlpull.v1, - !sun.io, - !sun.misc, - org.osgi.framework;version=1.3.0,*</Import-Package> - <Require-Bundle>org.pathvisio.core;bundle-version=3.0.0, - org.pathvisio.desktop;bundle-version=3.0.0, - org.pathvisio.gui;bundle-version=3.0.0 - </Require-Bundle> - </instructions> - </configuration> - </plugin> - </plugins> - </build> ---> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>lcsb.mapviewer</groupId> + <artifactId>parent</artifactId> + <version>1.0</version> + </parent> + <artifactId>pathvisio</artifactId> + <name>Pathvisio plugin</name> + + <!-- <packaging>bundle</packaging> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> <version>4.0.0</version> <extensions>true</extensions> + <configuration> <instructions> <Bundle-Activator>lcsb.mapviewer.wikipathway.Activator</Bundle-Activator> + <Bundle-Name>CellDesigner plugin v.${svnversion}</Bundle-Name> <Embed-Transitive>true</Embed-Transitive> + <Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency> + <Import-Package>!org.relaxng.datatype, !org.slf4j, !org.slf4j.spi, !com.fasterxml.classmate, + !com.fasterxml.classmate.members, !com.ibm.uvm.tools, !com.sun.jdi, !com.sun.jdi.connect, + !com.sun.jdi.event, !com.sun.jdi.request, !com.sun.jdmk.comm, !com.sun.msv.datatype, + !com.sun.msv.datatype.xsd, !com.google.gson, !javax.imageio, !javax.jmdns, + !javax.jms, !javax.mail, !javax.mail.internet, !javax.management, !javax.naming, + !javax.naming.event, !javax.naming.spi, !javax.security.auth, !javax.security.jacc, + !javax.sql, !javax.swing, !javax.swing.border, !javax.swing.event, !javax.swing.filechooser, + !javax.swing.plaf, !javax.swing.table, !javax.swing.text, !javax.swing.text.html, + !javax.swing.tree, !javax.validation, !javax.validation.constraints, !javax.validation.groups, + !javax.validation.metadata, !javax.xml, !javax.xml.bind, !javax.xml.bind.annotation, + !javax.xml.bind.annotation.adapters, !javax.xml.namespace, !javax.xml.parsers, + !javax.xml.stream, !javax.xml.stream.events, !javax.xml.stream.util, !javax.xml.transform, + !javax.xml.transform.dom, !javax.xml.transform.sax, !javax.xml.transform.stream, + !javax.xml.validation, !oracle.xml.parser, !oracle.xml.parser.v2, !org.apache.batik.dom, + !org.apache.batik.svggen, !org.apache.batik.transcoder, !org.apache.batik.transcoder.image, + !org.apache.commons.math, !org.apache.commons.math.stat, !org.apache.commons.math.stat.inference, + !org.apache.commons.vfs2, !org.apache.fop.svg, !org.apache.tools.ant, !org.apache.tools.ant.taskdefs, + !org.apache.tools.ant.types, !org.bridgedb, !org.bridgedb.bio, !org.bridgedb.gui, + !org.bridgedb.rdb.construct, !org.gjt.xpp, !org.jaxen, !org.jaxen.jdom, !org.jaxen.dom4j, + !org.jaxen.pattern, !org.jaxen.saxpath, !org.jboss.jandex, !org.jboss.logmanager, + !org.jdom, !org.jdom.input, !org.jdom.output, !org.pathvisio.data, !org.w3c.dom, + !org.w3c.dom.events, !org.w3c.dom.ranges, !org.w3c.dom.traversal, !org.xml.sax, + !org.xml.sax.ext, !org.xml.sax.helpers, !org.xmlpull.v1, !sun.io, !sun.misc, + org.osgi.framework;version=1.3.0,*</Import-Package> <Require-Bundle>org.pathvisio.core;bundle-version=3.0.0, + org.pathvisio.desktop;bundle-version=3.0.0, org.pathvisio.gui;bundle-version=3.0.0 + </Require-Bundle> </instructions> </configuration> </plugin> </plugins> </build> --> <repositories> <repository> - <id>repo</id> - <releases> - <enabled>true</enabled> - <checksumPolicy>ignore</checksumPolicy> - </releases> - <snapshots> - <enabled>false</enabled> - </snapshots> - <url>file://${project.basedir}/repo</url> + <id>repo</id> + <releases> + <enabled>true</enabled> + <checksumPolicy>ignore</checksumPolicy> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + <url>file://${project.basedir}/repo</url> </repository> </repositories> @@ -149,39 +61,39 @@ <artifactId>core</artifactId> <version>${pathvisio.version}</version> </dependency> - + <dependency> <groupId>org.pathvisio</groupId> <artifactId>desktop</artifactId> <version>${pathvisio.version}</version> </dependency> - + <dependency> <groupId>org.pathvisio</groupId> <artifactId>gui</artifactId> <version>${pathvisio.version}</version> </dependency> - + <dependency> - <groupId>lcsb.mapviewer</groupId> - <artifactId>model</artifactId> - <version>1.0</version> - </dependency> + <groupId>lcsb.mapviewer</groupId> + <artifactId>model</artifactId> + <version>1.0</version> + </dependency> <dependency> - <groupId>lcsb.mapviewer</groupId> - <artifactId>converter-CellDesigner</artifactId> - <version>1.0</version> - </dependency> + <groupId>lcsb.mapviewer</groupId> + <artifactId>converter-CellDesigner</artifactId> + <version>1.0</version> + </dependency> <dependency> - <groupId>lcsb.mapviewer</groupId> - <artifactId>converter-graphics</artifactId> - <scope>test</scope> - <version>1.0</version> - </dependency> + <groupId>lcsb.mapviewer</groupId> + <artifactId>converter-graphics</artifactId> + <scope>test</scope> + <version>1.0</version> + </dependency> - <!-- Log4J2--> + <!-- Log4J2 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> @@ -193,11 +105,11 @@ <version>${log4j2.version}</version> </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.osgi.core</artifactId> - <version>${osgi.version}</version> - </dependency> + <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.osgi.core</artifactId> + <version>${osgi.version}</version> + </dependency> <dependency> <groupId>junit</groupId> @@ -206,5 +118,14 @@ <scope>test</scope> </dependency> + <!-- mockito used for testing --> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>${mockito.version}</version> + <scope>test</scope> + </dependency> + + </dependencies> </project> \ No newline at end of file diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/GpmlParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/GpmlParser.java index 796d4a006eb3dff90a82508037b8d1b981ca0143..4b0bc2275fbd7273faa2e80deeab52b8e6e650c1 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/GpmlParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/GpmlParser.java @@ -35,7 +35,7 @@ public class GpmlParser extends Converter { @Override public String model2String(Model model) throws InconsistentModelException, ConverterException { - ModelToGPML modelToGPML = new ModelToGPML(); + ModelToGPML modelToGPML = new ModelToGPML(model.getName()); return modelToGPML.getGPML(model); } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/ImportExport.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/ImportExport.java index f9279eb532056c40d9add52ae74902249666b800..4e7649b14147168487f18e87c88709f408f6242c 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/ImportExport.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/ImportExport.java @@ -112,7 +112,7 @@ public class ImportExport implements Plugin { CellDesignerXmlParser parser = new CellDesignerXmlParser(); Model model = (Model) parser.createModel(new ConverterParams().filename(fileName).sizeAutoAdjust(false)); - String tmp = new ModelToGPML().getGPML(model); + String tmp = new ModelToGPML(model.getName()).getGPML(model); InputStream stream = new ByteArrayInputStream(tmp.getBytes(StandardCharsets.UTF_8)); Boolean validate = false; pathway.readFromXml(stream, validate); diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/BiopaxParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/BiopaxParser.java index e1a3725b8d2e926e4da1ccfb2d798f3dbfcaa704..7479f5ad1b82b6df6b6e19e946b6f4d860e9cbcd 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/BiopaxParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/BiopaxParser.java @@ -8,12 +8,14 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import lcsb.mapviewer.common.XmlParser; +import lcsb.mapviewer.model.LogMarker; +import lcsb.mapviewer.model.ProjectLogEntryType; import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.MiriamType; import lcsb.mapviewer.wikipathway.model.biopax.*; /** - * Parser of Biopax data from the gpml file. + * Parser of Biopax data from the GPML file. * * @author Piotr Gawron * @@ -34,7 +36,13 @@ public class BiopaxParser { * Mapping between {@link MiriamData} and hash value. */ private Map<MiriamData, String> miriamHash = new HashMap<>(); + + private String mapName; + public BiopaxParser(String mapName) { + this.mapName = mapName; + } + /** * Creates data structure from BioPax xml node. * @@ -51,7 +59,7 @@ public class BiopaxParser { if ("bp:PublicationXref".equalsIgnoreCase(node.getNodeName())) { BiopaxPublication publication = parsePublication(node); if (publication.getId() == null || publication.getId().isEmpty()) { - logger.warn("No pubmed identifier defined for publication: title: " + publication.getTitle()); + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, publication.getId(), "BioPax", mapName), "No pubmed identifier defined for publication: title: " + publication.getTitle()); } result.addPublication(publication); } else if ("bp:openControlledVocabulary".equalsIgnoreCase(node.getNodeName())) { diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/CyclicEdgeException.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/CyclicEdgeException.java index 1d2a3e863e19170b2b0146d0948d721012b21cdd..dd3c892074010c8bfba9a58ea35e166f571a4019 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/CyclicEdgeException.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/CyclicEdgeException.java @@ -1,6 +1,8 @@ package lcsb.mapviewer.wikipathway.XML; import lcsb.mapviewer.converter.ConverterException; +import lcsb.mapviewer.model.LogMarker; +import lcsb.mapviewer.wikipathway.model.Edge; /** * Exception that shold be thrown when edges create a cycle. Consider an example @@ -25,14 +27,24 @@ public class CyclicEdgeException extends ConverterException { */ private static final long serialVersionUID = 1L; + private Edge edge; + /** * Default constructor with message passed in the argument. * * @param string * message of this exception */ - public CyclicEdgeException(String string) { + public CyclicEdgeException(String string, Edge edge) { super(string); + this.edge = edge; + } + + public LogMarker getLogMarker() { + if (edge != null) { + return edge.getLogMarker(); + } + return null; } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/DataNodeParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/DataNodeParser.java index 445bf4de09cc6690e7d0baff393d86ae49c8c56b..83c86d3a206194ee4c094f044bca365b6c90ed1c 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/DataNodeParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/DataNodeParser.java @@ -24,21 +24,26 @@ import lcsb.mapviewer.wikipathway.model.*; public class DataNodeParser extends GraphicalPathwayElementParser<DataNode> { /** - * Default claass logger. + * Default class logger. */ private final Logger logger = LogManager.getLogger(DataNodeParser.class); /** * PArser used to process references. */ - private final ReferenceParser referenceParser = new ReferenceParser(); + private final ReferenceParser referenceParser; + + public DataNodeParser(String mapName) { + super(mapName); + referenceParser = new ReferenceParser(mapName); + } @Override public DataNode parse(Element eElement) throws UnknownTypeException { if (!eElement.getNodeName().equals("DataNode")) { throw new InvalidArgumentException(ShapeParser.class.getSimpleName() + " can parse only DataNode xml nodes"); } - DataNode node = new DataNode(eElement.getAttribute("GraphId")); + DataNode node = new DataNode(eElement.getAttribute("GraphId"), getMapName()); for (Pair<String, String> entry : getAttributes(eElement)) { switch (entry.getLeft()) { @@ -184,12 +189,12 @@ public class DataNodeParser extends GraphicalPathwayElementParser<DataNode> { case ("org.pathvisio.model.GenMAPP-Xref"): // skip it when it's empty if (!value.isEmpty()) { - logger.warn(shape.getWarningPrefix() + "Unknown attribute of node. Key: " + key + "; value: " + value); + logger.warn(shape.getLogMarker() + "Unknown attribute of node. Key: " + key + "; value: " + value); break; } break; default: - logger.warn(shape.getWarningPrefix() + "Unknown attribute of node. Key: " + key + "; value: " + value); + logger.warn(shape.getLogMarker() + "Unknown attribute of node. Key: " + key + "; value: " + value); break; } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/EdgeLineParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/EdgeLineParser.java index 7a534a22728935567f347401b3096394d0dc2c6c..a3553184d0fcb1998a8585156578a2aab225755e 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/EdgeLineParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/EdgeLineParser.java @@ -14,7 +14,7 @@ import lcsb.mapviewer.wikipathway.model.Edge; /** * Parser class that creates {@link Edge} objects from Xml {@link Element node}. - * However the xml node is not typica edge node , but line node. + * However the xml node is not typical edge node , but line node. * * @author Piotr Gawron * @@ -24,12 +24,17 @@ public class EdgeLineParser extends ElementGpmlParser<Edge> { /** * Default class logger. */ - private final Logger logger = LogManager.getLogger(EdgeLineParser.class); + private final Logger logger = LogManager.getLogger(); /** * Parser used to parse typical {@link Edge} xml nodes. */ - private final EdgeParser edgeParser = new EdgeParser(); + private final EdgeParser edgeParser; + + public EdgeLineParser(String mapName) { + super(mapName); + this.edgeParser = new EdgeParser(mapName); + } /** * Creates {@link Edge} from xml line node. diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/EdgeParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/EdgeParser.java index fe9739662e138fa4532dba0e273eff324e196ca1..eec580d9c26ce5bf339d9b8be006200a9536259c 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/EdgeParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/EdgeParser.java @@ -13,6 +13,7 @@ import lcsb.mapviewer.common.Pair; import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.common.exception.NotImplementedException; import lcsb.mapviewer.converter.ConverterException; +import lcsb.mapviewer.model.LogMarker; import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.wikipathway.model.*; @@ -29,13 +30,13 @@ public class EdgeParser extends ElementGpmlParser<Edge> { */ private static final int INITIAL_ID_VALUE = 10000; /** - * This is default lenght of lines when lines are drawn in - * {@link GpmlLineConnectorType#ELBOW} mode, but without specifing coordinates. + * This is default length of lines when lines are drawn in + * {@link GpmlLineConnectorType#ELBOW} mode, but without specifying coordinates. */ private static final double DEFAULT_DISTNACE = 20; /** * Counter used for generating identifiers if identifiers aren't provided by the - * gpml model. + * GPML model. */ private static int idCounter = INITIAL_ID_VALUE; /** @@ -46,11 +47,11 @@ public class EdgeParser extends ElementGpmlParser<Edge> { * Parser used for extracting {@link lcsb.mapviewer.model.map.MiriamData * references} from GPML model. */ - private ReferenceParser referenceParser = new ReferenceParser(); + private ReferenceParser referenceParser; /** * Parser used for extracting {@link PointData points} from GPML xml nodes. */ - private PointDataParser pointParser = new PointDataParser(); + private PointDataParser pointParser; /** * This function get new id for interactions that don't have id. @@ -62,6 +63,12 @@ public class EdgeParser extends ElementGpmlParser<Edge> { return "id" + idCounter; } + public EdgeParser(String mapName) { + super(mapName); + pointParser = new PointDataParser(mapName); + referenceParser = new ReferenceParser(mapName); + } + /** * Creates {@link Edge} from xml node. * @@ -76,7 +83,7 @@ public class EdgeParser extends ElementGpmlParser<Edge> { if (graphId == null || graphId.equals("")) { graphId = getNewId(); } - Edge edge = new Edge(graphId); + Edge edge = new Edge(graphId, getMapName()); for (Pair<String, String> entry : getAttributes(eElement)) { switch (entry.getLeft()) { @@ -120,13 +127,13 @@ public class EdgeParser extends ElementGpmlParser<Edge> { parseAttribute(element, edge); break; default: - logger.warn(edge.getWarningPrefix() + "Unknown edge node: " + node.getNodeName() + "."); + logger.warn(edge.getLogMarker(), "Unknown edge node: " + node.getNodeName() + "."); break; } } } if (!graphicsParsed) { - throw new ConverterException(edge.getWarningPrefix() + "No Graphics information found for edge."); + throw new ConverterException(edge.getLogMarker() + "No Graphics information found for edge."); } return edge; } @@ -191,7 +198,7 @@ public class EdgeParser extends ElementGpmlParser<Edge> { } else if ("Anchor".equalsIgnoreCase(node.getNodeName())) { anchors.add((Element) node); } else { - logger.warn(edge.getWarningPrefix() + "Unknown graphics edge node: " + node.getNodeName() + "."); + logger.warn(edge.getLogMarker(), "Unknown graphics edge node: " + node.getNodeName() + "."); } } } @@ -216,17 +223,17 @@ public class EdgeParser extends ElementGpmlParser<Edge> { } edge.setReversibleReaction(pointDataList.get(0).getType() == GpmlInteractionType.ARROW); - edge.getLine().setPoints(getPoints(edge.getWarningPrefix(), pointDataList, connectorType)); + edge.getLine().setPoints(getPoints(edge.getLogMarker(), pointDataList, connectorType)); if (edge.getLine().getPoints().size() < 2) { throw new ConverterException( - edge.getWarningPrefix() + "Contains too less points. At least two points are required in a line."); + edge.getLogMarker() + "Contains too less points. At least two points are required in a line."); } double lineLength = 0; for (Line2D line : edge.getLine().getLines()) { lineLength += line.getP1().distance(line.getP2()); } if (lineLength <= Configuration.EPSILON) { - throw new ConverterException(edge.getWarningPrefix() + "Line cannot have 0 length."); + throw new ConverterException(edge.getLogMarker() + "Line cannot have 0 length."); } // anchors @@ -268,7 +275,7 @@ public class EdgeParser extends ElementGpmlParser<Edge> { * @throws UnknownTypeException * throw when connector type is invalid */ - List<Point2D> getPoints(String warningPrefix, List<PointData> pointDataList, + List<Point2D> getPoints(LogMarker warningPrefix, List<PointData> pointDataList, GpmlLineConnectorType connectorType) throws InvalidElbowConnectorException, UnknownTypeException { List<Point2D> result = new ArrayList<>(); @@ -371,7 +378,7 @@ public class EdgeParser extends ElementGpmlParser<Edge> { // if line is curved then inform user that we don't support it and create // a default one case CURVED: - logger.warn(warningPrefix + "Curved connections are not supported."); + logger.warn(warningPrefix, "Curved connections are not supported."); for (PointData pointData : pointDataList) { result.add(pointData.toPoint()); } @@ -397,7 +404,7 @@ public class EdgeParser extends ElementGpmlParser<Edge> { * @throws InvalidElbowConnectorException * thrown when output cannot be computed because input data is invalid */ - private int computeNumberOfPerpendicularSegments(String warningPrefix, PointData start, PointData end) + private int computeNumberOfPerpendicularSegments(LogMarker warningPrefix, PointData start, PointData end) throws InvalidElbowConnectorException { Point2D fromPoint = start.toPoint(); Point2D toPoint = end.toPoint(); @@ -548,7 +555,7 @@ public class EdgeParser extends ElementGpmlParser<Edge> { * @return new {@link Edge} object with unique identifier */ public Edge createEmpty() { - return new Edge(getNewId()); + return new Edge(getNewId(), getMapName()); } /** @@ -564,13 +571,13 @@ public class EdgeParser extends ElementGpmlParser<Edge> { String value = eTmp.getAttribute("Value"); switch (key) { case ("org.pathvisio.core.ds"): - // skip for now (no idea what des it mean) + // skip for now (no idea what does it mean) break; case ("org.pathvisio.core.id"): - // skip for now (no idea what des it mean) + // skip for now (no idea what does it mean) break; default: - logger.warn(edge.getWarningPrefix() + "Unknown attribute of node. Key: " + key + "; value: " + value); + logger.warn(edge.getLogMarker(), "Unknown attribute of node. Key: " + key + "; value: " + value); break; } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ElementGpmlParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ElementGpmlParser.java index d1e6398aaa09d738eebf0b4742a124551c424073..5f98517be9979f31628a3861bc93e579a87afa2b 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ElementGpmlParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ElementGpmlParser.java @@ -1,8 +1,7 @@ package lcsb.mapviewer.wikipathway.XML; -import java.awt.*; +import java.awt.Color; import java.util.*; -import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -18,7 +17,7 @@ import lcsb.mapviewer.converter.ConverterException; * @author Piotr Gawron * * @param <T> - * class for which this parser aplies + * class for which this parser applies */ public abstract class ElementGpmlParser<T> { @@ -32,6 +31,12 @@ public abstract class ElementGpmlParser<T> { @SuppressWarnings("unused") private final Logger logger = LogManager.getLogger(ElementGpmlParser.class); + private String mapName; + + public ElementGpmlParser(String mapName) { + this.mapName = mapName; + } + /** * Creates object from xml node given in parameter. * @@ -44,7 +49,7 @@ public abstract class ElementGpmlParser<T> { public abstract T parse(Element node) throws ConverterException; /** - * Converts object into xml string (in gpml format). + * Converts object into xml string (in GPML format). * * @param object * object to transform @@ -55,7 +60,7 @@ public abstract class ElementGpmlParser<T> { public abstract String toXml(T object) throws ConverterException; /** - * Converts list of objects into xml string (in gpml format) representing this + * Converts list of objects into xml string (in GPML format) representing this * list. * * @param list @@ -131,4 +136,7 @@ public abstract class ElementGpmlParser<T> { return result; } + public String getMapName() { + return mapName; + } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GPMLToModel.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GPMLToModel.java index 8b14d6f2a5bc6c30c5819c56936cb7d9b795a7cb..917c4bb9252a7ab5244686e02cce00da12d0e6c9 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GPMLToModel.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GPMLToModel.java @@ -15,11 +15,11 @@ import lcsb.mapviewer.wikipathway.model.Graph; public class GPMLToModel { /** - * This function creates model from gpml input stream. + * This function creates model from GPML input stream. * * @param stream - * input stream that contains gpml data - * @return {@link Model} created from gpml file + * input stream that contains GPML data + * @return {@link Model} created from GPML file * @throws IOException * thrown when there is a problem with input file * @throws ConverterException @@ -27,7 +27,7 @@ public class GPMLToModel { */ public Model getModel(InputStream stream) throws IOException, ConverterException { Graph graph = new GpmlParser().createGraph(stream); - Model model = new ModelContructor().getModel(graph); + Model model = new ModelContructor(graph.getMapName()).getModel(graph); return model; } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GpmlParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GpmlParser.java index 43be3375771c9693b150f15205de2b7df1f839ed..a089df90776080c771fe617d3d12e215a8a848d2 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GpmlParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GpmlParser.java @@ -11,6 +11,7 @@ import org.apache.logging.log4j.Logger; import org.w3c.dom.*; import org.xml.sax.SAXException; +import lcsb.mapviewer.common.XmlParser; import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.common.exception.InvalidXmlSchemaException; import lcsb.mapviewer.converter.ConverterException; @@ -30,44 +31,44 @@ public class GpmlParser { /** * Default class logger. */ - private Logger logger = LogManager.getLogger(GpmlParser.class); + private Logger logger = LogManager.getLogger(); /** * Parser used for creating {@link Shape shapes}. */ - private ShapeParser shapeParser = new ShapeParser(); + private ShapeParser shapeParser; /** * Parser used for creating {@link lcsb.mapviewer.wikipathway.model.DataNode * data nodes}. */ - private DataNodeParser dataNodeParser = new DataNodeParser(); + private DataNodeParser dataNodeParser; /** * Parser used for creating {@link Label labels}. */ - private LabelParser labelParser = new LabelParser(); + private LabelParser labelParser; /** * Parser used for creating {@link Edge edges}. */ - private EdgeParser edgeParser = new EdgeParser(); + private EdgeParser edgeParser; /** * Parser used for creating {@link lcsb.mapviewer.wikipathway.model.State * states}. */ - private StateParser stateParser = new StateParser(); + private StateParser stateParser; /** * Parser used for creating {@link Edge edges} from line xml nodes. */ - private EdgeLineParser edgeLineParser = new EdgeLineParser(); + private EdgeLineParser edgeLineParser; /** * Parser used for creating {@link PointData points} from line xml nodes. */ - private PointDataParser pointParser = new PointDataParser(); + private PointDataParser pointParser; /** * This function returns parent interaction for edge that has anchor at one end. @@ -98,7 +99,7 @@ public class GpmlParser { edge = graph.getEdgeByAnchor(anchor); // when we have cycle then return null if (processedEdges.contains(edge)) { - throw new CyclicEdgeException(edge.getWarningPrefix() + " edge is a part of invalid, cyclic edge"); + throw new CyclicEdgeException("Edge is a part of invalid, cyclic edge", edge); } processedEdges.add(edge); } @@ -121,61 +122,62 @@ public class GpmlParser { graph.setBoardHeight(Math.ceil(Double.parseDouble(boardHeight))); } - /** - * This function adds groups to graph and nest them. - * - * @param groups - * xml nodes - * @param graph - * object where data is stored - * @throws UnknownAttributeValueException - * thrown when there is a problem with xml attributes - */ - protected void addGroups(List<Node> groups, Graph graph) throws UnknownAttributeValueException { - // Adding Groups to graph - for (Node nNode : groups) { - if (nNode.getNodeType() == Node.ELEMENT_NODE) { - Element eElement = (Element) nNode; - String graphId = eElement.getAttribute("GraphId"); - String groupId = eElement.getAttribute("GroupId"); - if (graphId.equals("") || graphId == null) { - graphId = groupId; - } - String style = eElement.getAttribute("Style"); - if ("".equals(style)) { - style = null; - } - if (style != null && - !"Complex".equalsIgnoreCase(style) && - !"Group".equalsIgnoreCase(style)) { - throw new UnknownAttributeValueException( - "Unknown value of \"style\" attribute for group node: " + style + ". Only null, Complex, Group are supported."); - } - Group group = new Group(graphId, groupId); - group.setStyle(style); - - String zIndex = eElement.getAttribute("ZOrder"); - if (zIndex!=null && !zIndex.isEmpty()) { - group.setzOrder(Integer.valueOf(zIndex)); - } - graph.addGroup(group); - } - } - // Handling nested groups - Group gr1, gr2; - for (Node nNode : groups) { - if (nNode.getNodeType() == Node.ELEMENT_NODE) { - Element eElement = (Element) nNode; - String groupRef = eElement.getAttribute("GroupRef"); - String groupId = eElement.getAttribute("GroupId"); - if (groupRef != null && !groupRef.equals("")) { - gr1 = graph.getGroupByGroupId(groupRef); - gr2 = graph.getGroupByGroupId(groupId); - gr1.addNode(gr2); - } - } - } - } + /** + * This function adds groups to graph and nest them. + * + * @param groups + * xml nodes + * @param graph + * object where data is stored + * @throws UnknownAttributeValueException + * thrown when there is a problem with xml attributes + */ + protected void addGroups(List<Node> groups, Graph graph) throws UnknownAttributeValueException { + // Adding Groups to graph + for (Node nNode : groups) { + if (nNode.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) nNode; + String graphId = eElement.getAttribute("GraphId"); + String groupId = eElement.getAttribute("GroupId"); + if (graphId.equals("") || graphId == null) { + graphId = groupId; + } + String style = eElement.getAttribute("Style"); + if ("".equals(style)) { + style = null; + } + if (style != null && + !"Complex".equalsIgnoreCase(style) && + !"Group".equalsIgnoreCase(style)) { + throw new UnknownAttributeValueException( + "Unknown value of \"style\" attribute for group node: " + style + + ". Only null, Complex, Group are supported."); + } + Group group = new Group(graphId, groupId, graph.getMapName()); + group.setStyle(style); + + String zIndex = eElement.getAttribute("ZOrder"); + if (zIndex != null && !zIndex.isEmpty()) { + group.setzOrder(Integer.valueOf(zIndex)); + } + graph.addGroup(group); + } + } + // Handling nested groups + Group gr1, gr2; + for (Node nNode : groups) { + if (nNode.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) nNode; + String groupRef = eElement.getAttribute("GroupRef"); + String groupId = eElement.getAttribute("GroupId"); + if (groupRef != null && !groupRef.equals("")) { + gr1 = graph.getGroupByGroupId(groupRef); + gr2 = graph.getGroupByGroupId(groupId); + gr1.addNode(gr2); + } + } + } + } /** * This function adds edges to graph. It ignores edges that have no connection @@ -184,7 +186,7 @@ public class GpmlParser { * @param nodes * xml nodes * @param graph - * object where data is sotred + * object where data is sorted */ private void prepareEdges(List<Node> nodes, Graph graph) { for (Node nNode : nodes) { @@ -211,7 +213,7 @@ public class GpmlParser { shape.setTreatAsNode(true); } if (edge.getStart() == null || edge.getEnd() == null) { - logger.warn(edge.getWarningPrefix() + "Interaction is not connected"); + logger.warn(edge.getLogMarker(), "Interaction is not connected"); } else { graph.addEdge(edge); @@ -244,11 +246,11 @@ public class GpmlParser { InteractionMapping mapping = InteractionMapping.getInteractionMapping(edge.getType(), edge.getLine().getType()); if (mapping != null) { if (mapping.isInteractionWarning()) { - logger.warn(edge.getWarningPrefix() + "Invalid interaction type."); + logger.warn(edge.getLogMarker(), "Invalid interaction type."); } } else { throw new InvalidXmlSchemaException( - edge.getWarningPrefix() + "Unknown interaction type: " + edge.getType() + " and line type: " + edge.getLogMarker() + "Unknown interaction type: " + edge.getType() + " and line type: " + edge.getLine().getType()); } } @@ -256,7 +258,7 @@ public class GpmlParser { for (Edge edge : graph.getEdges()) { try { if (graph.getEdgeByAnchor(edge.getEnd()) != null && graph.getEdgeByAnchor(edge.getStart()) != null) { - logger.warn(edge.getWarningPrefix() + "Interaction can not connect two anchors."); + logger.warn(edge.getLogMarker(), "Interaction can not connect two anchors."); } else if (graph.getEdgeByAnchor(edge.getEnd()) != null && graph.getNodeByGraphId(edge.getStart()) != null) { Interaction tmp = getParentInteraction(graph, edge); if (tmp != null) { @@ -264,7 +266,7 @@ public class GpmlParser { edge.getLine().getType()); if (mapping != null) { if (mapping.isInputWarning()) { - logger.warn(edge.getWarningPrefix() + "Invalid interaction type as an input to reaction."); + logger.warn(edge.getLogMarker(), "Invalid interaction type as an input to reaction."); } if (Modifier.class.isAssignableFrom(mapping.getModelInputReactionNodeType())) { tmp.addModifier(edge); @@ -281,7 +283,7 @@ public class GpmlParser { throw new InvalidXmlSchemaException("Unknown interaction type: " + edge.getType()); } } else { - logger.warn(edge.getWarningPrefix() + "Interaction is disconnected."); + logger.warn(edge.getLogMarker(), "Interaction is disconnected."); } } else if (graph.getEdgeByAnchor(edge.getStart()) != null && graph.getNodeByGraphId(edge.getEnd()) != null) { Interaction tmp = getParentInteraction(graph, edge); @@ -290,7 +292,7 @@ public class GpmlParser { edge.getLine().getType()); if (mapping != null) { if (mapping.isOutputWarning()) { - logger.warn(edge.getWarningPrefix() + "Invalid interaction type \"" + edge.getType() + logger.warn(edge.getLogMarker(), "Invalid interaction type \"" + edge.getType() + "\" as an output from reaction."); } if (Modifier.class.isAssignableFrom(mapping.getModelOutputReactionNodeType())) { @@ -308,13 +310,13 @@ public class GpmlParser { throw new InvalidXmlSchemaException("Unknown interaction type: " + edge.getType()); } } else { - logger.warn(edge.getWarningPrefix() + "Interaction is disconnected."); + logger.warn(edge.getLogMarker(), "Interaction is disconnected."); } } else if (graph.getNodeByGraphId(edge.getEnd()) == null || graph.getNodeByGraphId(edge.getStart()) == null) { - logger.warn(edge.getWarningPrefix() + "Interaction edge is invalid (one end is not connected)."); + logger.warn(edge.getLogMarker(), "Interaction edge is invalid (one end is not connected)."); } } catch (CyclicEdgeException e) { - logger.warn(e, e); + logger.warn(e.getLogMarker(), e.getMessage(), e); } } } @@ -372,6 +374,15 @@ public class GpmlParser { Node biopax = null; Graph graph = new Graph(); + graph.setMapName(XmlParser.getNodeAttr("Name", root.item(0))); + edgeLineParser = new EdgeLineParser(graph.getMapName()); + edgeParser = new EdgeParser(graph.getMapName()); + dataNodeParser = new DataNodeParser(graph.getMapName()); + labelParser = new LabelParser(graph.getMapName()); + shapeParser = new ShapeParser(graph.getMapName()); + stateParser = new StateParser(graph.getMapName()); + pointParser = new PointDataParser(graph.getMapName()); + for (int x = 0; x < nodes.getLength(); x++) { Node node = nodes.item(x); if (node.getNodeType() == Node.ELEMENT_NODE) { @@ -432,7 +443,7 @@ public class GpmlParser { addInteractions(graph); if (biopax != null) { - graph.setBiopaxData(new BiopaxParser().parse(biopax)); + graph.setBiopaxData(new BiopaxParser(graph.getMapName()).parse(biopax)); } Map<String, String> attributesMap = new HashMap<String, String>(); for (Element attribute : attributes) { @@ -498,7 +509,7 @@ public class GpmlParser { } List<Edge> howExtend = extendable.get(anchor); if (howExtend == null) { - logger.warn(edge.getWarningPrefix() + " Should be connected with another element, but nothing found."); + logger.warn(edge.getLogMarker(), " Should be connected with another element, but nothing found."); if (edge.getStart().equals(anchor)) { edge.setStart(null); } else if (edge.getEnd().equals(anchor)) { @@ -514,7 +525,7 @@ public class GpmlParser { toRemove.add(edge); toRemove.add(howExtend.get(0)); - logger.warn(exception, exception); + logger.warn(edge.getLogMarker(), exception.getMessage(), exception); } } } @@ -549,8 +560,7 @@ public class GpmlParser { mapping = MergeMapping.getMergeMappingByInteractions(edge1.getType(), false, edge2.getType(), true); } if (mapping == null) { - String message = edge1.getWarningPrefix() + edge2.getWarningPrefix() + "Don't know how to merge interactions"; - throw new UnknownMergingMethodException(message); + throw new UnknownMergingMethodException("Don't know how to merge interactions"); } Edge first; if (mapping.isReversed1()) { @@ -567,10 +577,9 @@ public class GpmlParser { first.extend(second); if (!first.getLine().getType().equals(second.getLine().getType())) { - logger.warn( - first.getWarningPrefix() + second.getWarningPrefix() + " merging edges with different line types: " - + first.getLine().getType() + ", " - + second.getLine().getType()); + logger.warn(first.getLogMarker(), "Merging edges with different line types: " + + first.getLine().getType() + ", " + + second.getLine().getType()); } first.setType(mapping.getResultType()); if (mapping.isResultReversed()) { diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GraphicalPathwayElementParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GraphicalPathwayElementParser.java index bfb0819c05ac56df547e47e9bbacfec43d82eb91..3d623ba886a4138888e42ae0a18af4b004331e90 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GraphicalPathwayElementParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/GraphicalPathwayElementParser.java @@ -22,7 +22,11 @@ public abstract class GraphicalPathwayElementParser<T extends GraphicalPathwayEl /** * Default class logger. */ - private final Logger logger = LogManager.getLogger(GraphicalPathwayElementParser.class); + private final Logger logger = LogManager.getLogger(); + + public GraphicalPathwayElementParser(String mapName) { + super(mapName); + } /** * Parse font attributes that might appear. diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/LabelParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/LabelParser.java index 383d5a3718c70f9cc009c5b7fbcc0b8425d37940..cf8be530028c2909f6472118f453b50a843062be 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/LabelParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/LabelParser.java @@ -29,14 +29,19 @@ public class LabelParser extends GraphicalPathwayElementParser<Label> { */ private final Logger logger = LogManager.getLogger(); - private ReferenceParser referenceParser = new ReferenceParser(); + private ReferenceParser referenceParser; + + public LabelParser(String mapName) { + super(mapName); + referenceParser = new ReferenceParser(mapName); + } @Override public Label parse(Element eElement) throws UnknownTypeException { if (!eElement.getNodeName().equals("Label")) { throw new InvalidArgumentException(ShapeParser.class.getSimpleName() + " can parse only Label xml nodes"); } - Label label = new Label(eElement.getAttribute("GraphId")); + Label label = new Label(eElement.getAttribute("GraphId"), getMapName()); for (Pair<String, String> entry : getAttributes(eElement)) { switch (entry.getLeft()) { @@ -176,12 +181,12 @@ public class LabelParser extends GraphicalPathwayElementParser<Label> { case ("org.pathvisio.model.GenMAPP-Xref"): // skip it when it's empty if (!value.isEmpty()) { - logger.warn(shape.getWarningPrefix() + "Unknown attribute of node. Key: " + key + "; value: " + value); + logger.warn(shape.getLogMarker() + "Unknown attribute of node. Key: " + key + "; value: " + value); break; } break; default: - logger.warn(shape.getWarningPrefix() + "Unknown attribute of node. Key:" + key + "; value: " + value); + logger.warn(shape.getLogMarker() + "Unknown attribute of node. Key:" + key + "; value: " + value); break; } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java index b464424687cb37690b025e0cce8339ff67ee7836..2e05f6fa89e7a4fec44b43e00f4f293aea0c83ea 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java @@ -10,13 +10,16 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import lcsb.mapviewer.common.Configuration; -import lcsb.mapviewer.common.exception.*; +import lcsb.mapviewer.common.exception.InvalidArgumentException; +import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.converter.ConverterException; import lcsb.mapviewer.converter.model.celldesigner.geometry.CellDesignerAliasConverter; import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.PolylineDataFactory; import lcsb.mapviewer.converter.model.celldesigner.reaction.ReactionLineData; import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType; import lcsb.mapviewer.converter.model.celldesigner.types.ModifierTypeUtils; +import lcsb.mapviewer.model.LogMarker; +import lcsb.mapviewer.model.ProjectLogEntryType; import lcsb.mapviewer.model.graphics.PolylineData; import lcsb.mapviewer.model.map.Drawable; import lcsb.mapviewer.model.map.MiriamData; @@ -77,11 +80,16 @@ public class ModelContructor { /** * Default class logger. */ - private Logger logger = LogManager.getLogger(ModelContructor.class); + private Logger logger = LogManager.getLogger(); + /** * Parser used for extracting {@link MiriamData references} from GPML model. */ - private BiopaxFactory biopaxFactory = new BiopaxFactory(); + private BiopaxFactory biopaxFactory; + + public ModelContructor(String mapName) { + biopaxFactory = new BiopaxFactory(mapName); + } /** * This function creates Species from DataNode. @@ -242,7 +250,7 @@ public class ModelContructor { ((Gene) species).addModificationSite((ModificationSite) mr); } else { logger.warn( - state.getWarningPrefix() + "state for " + species.getClass().getSimpleName() + " is not supported."); + state.getLogMarker(), "state for " + species.getClass().getSimpleName() + " is not supported."); } if (mr != null) { mr.setIdModificationResidue(state.getGraphId()); @@ -259,10 +267,10 @@ public class ModelContructor { if (protein.getStructuralState() == null) { protein.setStructuralState(createStructuralState(state, protein)); } else { - logger.warn(state.getWarningPrefix() + " tries to override another state: " + protein.getStructuralState()); + logger.warn(state.getLogMarker(), " tries to override another state: " + protein.getStructuralState()); } } else { - logger.warn(state.getWarningPrefix() + "structural state for " + species.getClass().getSimpleName() + logger.warn(state.getLogMarker(), "structural state for " + species.getClass().getSimpleName() + " is not supported."); } } @@ -321,7 +329,7 @@ public class ModelContructor { public LayerRect createRectangle(Shape shape) { LayerRect rect = new LayerRect(); Rectangle2D rec; - if (shouldRotate90degrees(shape.getRotation())) { + if (shouldRotate90degrees(shape)) { rec = rotate90degrees(shape.getRectangle()); } else { rec = shape.getRectangle(); @@ -339,7 +347,15 @@ public class ModelContructor { rectangle.getCenterY() - rectangle.getWidth() / 2, rectangle.getHeight(), rectangle.getWidth()); } + boolean shouldRotate90degrees(Shape shape) { + return shouldRotate90degrees(shape.getRotation(), shape); + } + boolean shouldRotate90degrees(Double rot) { + return shouldRotate90degrees(rot, null); + } + + boolean shouldRotate90degrees(Double rot, Shape shape) { if (rot == null) { return false; } @@ -352,12 +368,20 @@ public class ModelContructor { } if (Math.abs(rotation) < Math.PI / 4) { if (Math.abs(rotation) > Configuration.EPSILON) { - logger.warn("Rotation of objects is not supported. Rotation=" + rot); + LogMarker marker = null; + if (shape != null) { + marker = shape.getLogMarker(); + } + logger.warn(marker, "Rotation of objects is not supported. Rotation=" + rot); } return false; } if ((Math.PI / 2 - Math.abs(rotation)) > Configuration.EPSILON) { - logger.warn("Rotation of objects is not supported. Rotation=" + rot); + LogMarker marker = null; + if (shape != null) { + marker = shape.getLogMarker(); + } + logger.warn(marker, "Rotation of objects is not supported. Rotation=" + rot); } return true; } @@ -483,7 +507,7 @@ public class ModelContructor { * @return {@link Unknown} object created from input {@link Label} */ private Species createSpecies(Label label) { - logger.warn(label.getWarningPrefix() + " Label cannot be part of reaction. Tranforming to Unknown"); + logger.warn(label.getLogMarker(), " Label cannot be part of reaction. Tranforming to Unknown"); Species res = new Unknown(label.getGraphId()); res.addMiriamData(label.getReferences()); @@ -504,7 +528,7 @@ public class ModelContructor { * @return {@link Unknown} object created from input {@link Label} */ private Species createSpecies(Shape shape) { - logger.warn(shape.getWarningPrefix() + " Shape can not be part of reaction. Tranforming to Unknown"); + logger.warn(shape.getLogMarker(), " Shape can not be part of reaction. Tranforming to Unknown"); Species res = new Unknown(shape.getGraphId()); StringBuilder notes = new StringBuilder(); @@ -550,7 +574,7 @@ public class ModelContructor { } else if (graph.getShapeByGraphId(pe.getGraphId()) != null) { Shape shape = graph.getShapeByGraphId(pe.getGraphId()); if (INALID_COMPLEX_SHAPE_CHILDREN.contains(shape.getShape())) { - logger.warn(shape.getWarningPrefix() + shape.getShape() + " cannot be part of a complex. Skipping."); + logger.warn(shape.getLogMarker(), shape.getShape() + " cannot be part of a complex. Skipping."); } else { throw new UnknownChildClassException("Unknown class type with id \"" + pe.getGraphId() + "\": " + shape.getShape() + ". Group id: " + group.getGraphId()); @@ -653,7 +677,7 @@ public class ModelContructor { reaction.addNode(splitOperator); } else { PolylineData operatorLine = lines.get(SplitOperator.class); - for (int i = 0; i < operatorLine.getPoints().size()-1; i++) { + for (int i = 0; i < operatorLine.getPoints().size() - 1; i++) { productLine.addPoint(i, operatorLine.getPoints().get(i)); } product.setLine(PolylineDataFactory.removeCollinearPoints(productLine)); @@ -664,12 +688,14 @@ public class ModelContructor { reaction.addModifier(mod); } if (reaction instanceof TwoReactantReactionInterface && reaction.getReactants().size() < 2) { - logger.warn("Reaction should contain at least 2 reactants. GraphId: " + interaction.getGraphId()); + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, reaction), + "Reaction should contain at least 2 reactants. GraphId: " + interaction.getGraphId()); reaction = new UnknownTransitionReaction(reaction); } if (reaction instanceof ReducedNotation && ((reaction.getReactants().size() > 1) || reaction.getProducts().size() > 1 || reaction.getModifiers().size() > 0)) { - logger.warn("Reaction should contain only one reactant and one product. GraphId: " + interaction.getGraphId()); + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, reaction), + "Reaction should contain only one reactant and one product. GraphId: " + interaction.getGraphId()); reaction = new UnknownTransitionReaction(reaction); } ReactionLineData rld = ReactionLineData.getByReactionType(reaction.getClass()); @@ -891,7 +917,7 @@ public class ModelContructor { notes = StringEscapeUtils.unescapeHtml4(notes); } model.setNotes(notes); - model.addMiriamData(new BiopaxFactory().getMiriamData(graph.getBiopaxData(), graph.getBiopaxReferences())); + model.addMiriamData(biopaxFactory.getMiriamData(graph.getBiopaxData(), graph.getBiopaxReferences())); data.layer.addLayerLines(createLines(graph)); @@ -999,15 +1025,16 @@ public class ModelContructor { } List<Element> toRemove = new ArrayList<>(); ElementUtils eu = new ElementUtils(); - for (Element alias : model.getElements()) { - if (alias instanceof Complex) { - Complex cAlias = (Complex) alias; - if (cAlias.getSize() <= EPSILON && cAlias.getAllChildren().size() == 0) { - if (aliasesInReaction.contains(alias)) { - logger.warn(eu.getElementTag(alias) + "Empty element is invalid, but it's a part of reaction."); + for (Element element : model.getElements()) { + if (element instanceof Complex) { + Complex complex = (Complex) element; + if (complex.getSize() <= EPSILON && complex.getAllChildren().size() == 0) { + if (aliasesInReaction.contains(element)) { + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, element), + "Empty element is invalid, but it's a part of reaction."); } else { - toRemove.add(alias); - logger.warn(eu.getElementTag(alias) + "Empty element is invalid"); + toRemove.add(element); + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, element), "Empty element is invalid"); } } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelToGPML.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelToGPML.java index ffc86624258d3625c019e9c343faf3f08215cce0..859d56b2ec650a2c42ff26508bd8309f39fef8ef 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelToGPML.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelToGPML.java @@ -54,22 +54,26 @@ public class ModelToGPML { private final Logger logger = LogManager.getLogger(ModelToGPML.class); /** * Counter used for generating identifiers if identifiers aren't provided by the - * gpml model. + * GPML model. */ private int idCounter = INITIAL_ID_VALUE; /** * Parser used to convert from/to xml {@link MiriamData} annotations. */ - private ReferenceParser referenceParser = new ReferenceParser(); + private ReferenceParser referenceParser; /** - * Parser used to convert from/to xml (in biopax format) {@link MiriamData} + * Parser used to convert from/to xml (in BioPAX format) {@link MiriamData} * annotations. */ - private BiopaxParser biopaxParser = new BiopaxParser(); + private BiopaxParser biopaxParser; private ColorParser colorParser = new ColorParser(); + public ModelToGPML(String mapName) { + referenceParser = new ReferenceParser(mapName); + } + /** * Returns new unique identifier for the model. * @@ -587,6 +591,8 @@ public class ModelToGPML { */ public String getGPML(Model model) throws ConverterException { + biopaxParser = new BiopaxParser(model.getName()); + StringBuilder gpml = new StringBuilder(""); gpml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); gpml.append("<Pathway xmlns=\"http://pathvisio.org/GPML/2013a\" Name=\"Generated\">\n"); diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/PointDataParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/PointDataParser.java index 614829c67033e05d2441c2da4b1ef2ff402baf12..784c707898a596636f9cff136c3b612326879eca 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/PointDataParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/PointDataParser.java @@ -23,11 +23,15 @@ public class PointDataParser extends ElementGpmlParser<PointData> { /** * Default class logger. */ - private final Logger logger = LogManager.getLogger(PointDataParser.class); + private final Logger logger = LogManager.getLogger(); + + public PointDataParser(String mapName) { + super(mapName); + } @Override public PointData parse(Element element) throws UnknownTypeException { - PointData result = new PointData(); + PointData result = new PointData(getMapName()); for (Pair<String, String> entry : getAttributes(element)) { switch (entry.getLeft()) { case ("X"): diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ReferenceParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ReferenceParser.java index 3439c7fd94af2f96f509d2be4fb996f1ecac68de..4615a3980ff914f4cf2ee6917877b22c870406fc 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ReferenceParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ReferenceParser.java @@ -28,6 +28,10 @@ public class ReferenceParser extends ElementGpmlParser<MiriamData> { */ private final Logger logger = LogManager.getLogger(ReferenceParser.class); + public ReferenceParser(String mapName) { + super(mapName); + } + /** * This function creates MiriamData from database name and id. * diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ShapeParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ShapeParser.java index cd1834340f271c4eb07094a2c2b4de658193e6fe..6bade4543815e4943f1ae431d5a73a56623bd95d 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ShapeParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ShapeParser.java @@ -28,14 +28,18 @@ public class ShapeParser extends GraphicalPathwayElementParser<Shape> { /** * Default class logger. */ - private final Logger logger = LogManager.getLogger(ShapeParser.class); + private final Logger logger = LogManager.getLogger(); + + public ShapeParser(String mapName) { + super(mapName); + } @Override public Shape parse(Element eElement) throws ConverterException { if (!eElement.getNodeName().equals("Shape")) { throw new InvalidArgumentException(ShapeParser.class.getSimpleName() + " can parse only Shape xml nodes"); } - Shape shape = new Shape(eElement.getAttribute("GraphId")); + Shape shape = new Shape(eElement.getAttribute("GraphId"), getMapName()); for (Pair<String, String> entry : getAttributes(eElement)) { switch (entry.getLeft()) { case ("GraphId"): @@ -111,12 +115,12 @@ public class ShapeParser extends GraphicalPathwayElementParser<Shape> { shape.setCompartment(true); break; default: - logger.warn(shape.getWarningPrefix() + "Unknown line type: " + value); + logger.warn(shape.getLogMarker() + "Unknown line type: " + value); break; } break; default: - logger.warn(shape.getWarningPrefix() + "Unknown attribute of node. Key:" + key + "; value: " + value); + logger.warn(shape.getLogMarker() + "Unknown attribute of node. Key:" + key + "; value: " + value); break; } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/StateParser.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/StateParser.java index 99deb50bad55b8e2962de3db7e9559d3fbe0614f..7c9d7d7f7addcf77e8177205bc5d37e229097951 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/StateParser.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/StateParser.java @@ -31,14 +31,19 @@ public class StateParser extends ElementGpmlParser<State> { * Parser used for extracting {@link lcsb.mapviewer.model.map.MiriamData * references} from GPML model. */ - private ReferenceParser referenceParser = new ReferenceParser(); + private ReferenceParser referenceParser; + + public StateParser(String mapName) { + super(mapName); + referenceParser = new ReferenceParser(mapName); + } @Override public State parse(Element eElement) throws ConverterException { if (!eElement.getNodeName().equals("State")) { throw new InvalidArgumentException(StateParser.class.getSimpleName() + " can parse only State xml nodes"); } - State state = new State(eElement.getAttribute("GraphId")); + State state = new State(eElement.getAttribute("GraphId"), getMapName()); for (Pair<String, String> entry : getAttributes(eElement)) { switch (entry.getLeft()) { case ("GraphId"): @@ -159,7 +164,7 @@ public class StateParser extends ElementGpmlParser<State> { String value = eTmp.getAttribute("Value"); switch (key) { default: - logger.warn(state.getWarningPrefix() + "Unknown attribute of node. Key:" + key + "; value: " + value); + logger.warn(state.getLogMarker() + "Unknown attribute of node. Key:" + key + "; value: " + value); break; } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/DataNode.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/DataNode.java index e3262048f1d0cc409965b29382c4f296152de8ff..b0443a560c5b329b48ea777d1eeca9d50b37a998 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/DataNode.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/DataNode.java @@ -60,8 +60,8 @@ public class DataNode extends GraphicalPathwayElement { * @param graphId * {@link PathwayElement#graphId} */ - public DataNode(String graphId) { - super(graphId); + public DataNode(String graphId, String mapName) { + super(graphId, mapName); } /** diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Edge.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Edge.java index 7b9d4d2f11d897d61265afce38ae96254c1bf4f0..73f05db593ef63245e3b42ea54db1c0e46f9d4a6 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Edge.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Edge.java @@ -10,6 +10,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import lcsb.mapviewer.common.exception.InvalidArgumentException; +import lcsb.mapviewer.model.LogMarker; +import lcsb.mapviewer.model.ProjectLogEntryType; import lcsb.mapviewer.model.graphics.PolylineData; import lcsb.mapviewer.model.map.MiriamData; @@ -36,7 +38,7 @@ public class Edge implements Serializable { /** * Default class logger. */ - private final transient Logger logger = LogManager.getLogger(Edge.class); + private final transient Logger logger = LogManager.getLogger(); /** * Identifier in GPML model. @@ -72,7 +74,7 @@ public class Edge implements Serializable { * GPML interaction type (arrow). */ private GpmlInteractionType type = GpmlInteractionType.LINE; - + private boolean reversibleReaction = false; /** @@ -94,7 +96,9 @@ public class Edge implements Serializable { * List of identifiers used by BioPax nodes that are inside GPML. These BioPax * nodes contain annotations. */ - private List<String> biopaxReferences = new ArrayList<String>(); + private List<String> biopaxReferences = new ArrayList<>(); + + private String mapName; /** * Default constructor. @@ -102,8 +106,9 @@ public class Edge implements Serializable { * @param graphId * {@link #graphId} */ - public Edge(String graphId) { + public Edge(String graphId, String mapName) { this.graphId = graphId; + this.mapName = mapName; } /** @@ -127,6 +132,7 @@ public class Edge implements Serializable { this.biopaxReferences.addAll(original.getBiopaxReferences()); this.zOrder = original.getzOrder(); this.reversibleReaction = original.isReversibleReaction(); + this.mapName = original.getMapName(); } /** @@ -280,8 +286,12 @@ public class Edge implements Serializable { * * @return string that identifies element in logs */ - public String getWarningPrefix() { - return "[" + getType() + ", id: " + getGraphId() + "]\t"; + public LogMarker getLogMarker() { + return new LogMarker(ProjectLogEntryType.PARSING_ISSUE, getType().toString(), getGraphId(), getMapName()); + } + + private String getMapName() { + return mapName; } /** @@ -356,16 +366,14 @@ public class Edge implements Serializable { public void extend(Edge edge2) { // check if extension make sense (they should point to the same identifier) if (!getEnd().equals(edge2.getStart())) { - throw new InvalidArgumentException( - getWarningPrefix() + edge2.getWarningPrefix() + " Cannot merge - anchor points doesn't match: " + getEnd() - + "," + edge2.getStart()); + throw new InvalidArgumentException(" Cannot merge - anchor points doesn't match: " + getEnd() + + "," + edge2.getStart()); } if (line.getEndPoint().distance(edge2.getLine().getBeginPoint()) > EPSILON) { - throw new InvalidArgumentException( - getWarningPrefix() + edge2.getWarningPrefix() + " Cannot merge - edges are far from each other: " - + line.getEndPoint() + "," - + edge2.getLine().getBeginPoint()); + throw new InvalidArgumentException(" Cannot merge - edges are far from each other: " + + line.getEndPoint() + "," + + edge2.getLine().getBeginPoint()); } // graphId should be the same @@ -397,8 +405,7 @@ public class Edge implements Serializable { // color should be skipped if (!getColor().equals(edge2.getColor())) { - logger - .warn(getWarningPrefix() + edge2.getWarningPrefix() + " Problem with merging. Edges have different colors."); + logger.warn(getLogMarker(), "Problem with merging. Edges have different colors."); } // add biopax references diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GpmlInteractionType.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GpmlInteractionType.java index 3775bf5f8ebe4af95f395b592b13d23fd7850aa7..959c12f16fae848de625e27bf38840851877d27f 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GpmlInteractionType.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GpmlInteractionType.java @@ -104,11 +104,11 @@ public enum GpmlInteractionType { } /** - * Returns a type identified by the gpml string. + * Returns a type identified by the GPML string. * * @param gpmlString - * string in GPML represetning type - * @return type identified by the gpml string + * string in GPML representing type + * @return type identified by the GPML string * @throws UnknownTypeException * thrown when type cannot be resolved */ diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Graph.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Graph.java index 69efb26c026e0bc9b0e100bb524689d2db250303..2bb964bff65b2cb52cef44ca50b83f98482998d9 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Graph.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Graph.java @@ -132,6 +132,8 @@ public class Graph implements Serializable { */ private List<State> states = new ArrayList<State>(); + private String mapName;; + /** * Default constructor. */ @@ -172,7 +174,7 @@ public class Graph implements Serializable { nodes.put(node.getGraphId(), node); if (node.getGroupRef() != null && !node.getGroupRef().equals("")) { if (groupsByGroupId.get(node.getGroupRef()) == null) { - logger.warn(node.getWarningPrefix() + "Missing group: " + node.getGroupRef()); + logger.warn(node.getLogMarker(), "Missing group: " + node.getGroupRef()); } else { groupsByGroupId.get(node.getGroupRef()).addNode(node); } @@ -580,4 +582,12 @@ public class Graph implements Serializable { this.states = states; } + public String getMapName() { + return mapName; + } + + public void setMapName(String mapName) { + this.mapName = mapName; + } + } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GraphicalPathwayElement.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GraphicalPathwayElement.java index 76174f80a8b0b4023b599d6b07d7b149671e4ee0..4092a9d744aff442d6a386c1eac76521188c7a15 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GraphicalPathwayElement.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/GraphicalPathwayElement.java @@ -81,8 +81,8 @@ public abstract class GraphicalPathwayElement extends PathwayElement { * @param graphId * {@link PathwayElement#graphId} */ - public GraphicalPathwayElement(String graphId) { - super(graphId); + public GraphicalPathwayElement(String graphId, String mapName) { + super(graphId, mapName); } /** diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Group.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Group.java index 16160000c56f46d53e5d2db443bf0d3c01585c68..98050cb259c6957c510c5af8ad755e3e78b5e85a 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Group.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Group.java @@ -46,8 +46,8 @@ public class Group extends PathwayElement { * @param groupId * {@link #groupId} */ - public Group(String graphId, String groupId) { - super(graphId); + public Group(String graphId, String groupId, String mapName) { + super(graphId, mapName); this.groupId = groupId; nodes = new HashSet<PathwayElement>(); } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Label.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Label.java index 9a59e192093576db4004662ebea56770d1d1d840..ecd0c164a3304b1836255a59b344b3b7e3a0cc1f 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Label.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Label.java @@ -61,8 +61,8 @@ public class Label extends GraphicalPathwayElement { * @param graphId * {@link PathwayElement#graphId} */ - public Label(String graphId) { - super(graphId); + public Label(String graphId, String mapName) { + super(graphId, mapName); setTextLabel(null); setGroupRef(null); } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/PathwayElement.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/PathwayElement.java index ad817852bfa0ba1bc8a4a68043ca8105376c6715..ffd1988a00b5b17ccc206d9dce89cdf8b49b99e8 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/PathwayElement.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/PathwayElement.java @@ -5,6 +5,9 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import lcsb.mapviewer.model.LogMarker; +import lcsb.mapviewer.model.ProjectLogEntryType; + /** * Abstract class for pathway elements. It defines common functionalities for * all elements in the model. There are two known subclasses: @@ -45,14 +48,17 @@ public abstract class PathwayElement implements Serializable { */ private List<String> biopaxReferences = new ArrayList<>(); + private String mapName; + /** * Default constructor. * * @param graphId * {@link #graphId} value */ - public PathwayElement(String graphId) { + public PathwayElement(String graphId, String mapName) { this.graphId = graphId; + this.mapName = mapName; } /** @@ -93,13 +99,8 @@ public abstract class PathwayElement implements Serializable { */ abstract Rectangle2D getRectangle(); - /** - * Returns prefix that should be used in logger for warnings about this element. - * - * @return prefix that should be used in logger for warnings about this element - */ - public String getWarningPrefix() { - return "[" + this.getClass().getSimpleName() + ", " + getGraphId() + "]\t"; + public LogMarker getLogMarker() { + return new LogMarker(ProjectLogEntryType.PARSING_ISSUE, this.getClass().getSimpleName(), getGraphId(), getMapName()); } /** @@ -162,4 +163,12 @@ public abstract class PathwayElement implements Serializable { public void addComment(String comment) { this.comments.add(comment); } + + public String getMapName() { + return mapName; + } + + public void setMapName(String mapName) { + this.mapName = mapName; + } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/PointData.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/PointData.java index bff65363b8b948998d165a48faf8826744b669a4..aba876c1253aa9f757628af95bfdf29d5e9af001 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/PointData.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/PointData.java @@ -6,6 +6,9 @@ import java.io.Serializable; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import lcsb.mapviewer.model.LogMarker; +import lcsb.mapviewer.model.ProjectLogEntryType; + /** * Class that defines information about point stored in GPML structures. * @@ -56,6 +59,12 @@ public class PointData implements Serializable { */ private GpmlInteractionType type; + private String mapName; + + public PointData(String mapName) { + this.mapName = mapName; + } + /** * @return the x * @see #x @@ -183,7 +192,7 @@ public class PointData implements Serializable { } else if (relX.equals("0.0") && relY.equals("0.0")) { return Direction.NONE; } else { - logger.warn("[" + graphRef + "]\t" + + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, null, null, getMapName()), "Cannot determine connection direction from values: relX=" + relX + "; relY=" + relY + ". Estimating..."); double xVal = Double.valueOf(relX); double yVal = Double.valueOf(relY); @@ -208,4 +217,12 @@ public class PointData implements Serializable { return "[" + this.getClass().getSimpleName() + " x=" + x + "; y=" + y + "; graphRef=" + graphRef + "; relX=" + relX + "; relY=" + relY + "; type=" + type + "]"; } + + public String getMapName() { + return mapName; + } + + public void setMapName(String mapName) { + this.mapName = mapName; + } } diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Shape.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Shape.java index 4f5c2a2e490482e2b0ce2017efd8ca1e2abced72..d54bf0f4eeb06a981c7453a0752078c78ea4bc37 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Shape.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/Shape.java @@ -2,6 +2,9 @@ package lcsb.mapviewer.wikipathway.model; import java.awt.Color; +import lcsb.mapviewer.model.LogMarker; +import lcsb.mapviewer.model.ProjectLogEntryType; + /** * Class used to store data from Shape from GPML. * @@ -61,8 +64,8 @@ public class Shape extends GraphicalPathwayElement { * @param graphId * {@link PathwayElement#graphId} */ - public Shape(String graphId) { - super(graphId); + public Shape(String graphId, String mapName) { + super(graphId, mapName); setRectangle(null); setShape(null); setTextLabel(null); @@ -84,8 +87,8 @@ public class Shape extends GraphicalPathwayElement { } @Override - public String getWarningPrefix() { - return "[" + getShape() + " " + getGraphId() + "]\t"; + public LogMarker getLogMarker() { + return new LogMarker(ProjectLogEntryType.PARSING_ISSUE, getShape(), getGraphId(), getMapName()); } /** diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/State.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/State.java index 23bdb2e65336694ddc0e3082220901b7cd4df546..610dd36a5e8961ef92d2b04ba7fdd562b421ec79 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/State.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/State.java @@ -64,7 +64,7 @@ public class State extends GraphicalPathwayElement { private Double width; /** - * Heightof the element. + * Height of the element. */ private Double height; @@ -74,8 +74,8 @@ public class State extends GraphicalPathwayElement { * @param graphId * {@link PathwayElement#graphId} */ - public State(String graphId) { - super(graphId); + public State(String graphId, String mapName) { + super(graphId, mapName); } /** diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/biopax/BiopaxFactory.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/biopax/BiopaxFactory.java index ac63f06475c24a885664eb3b058fd75b6dd80655..50e450d8c5ae6690db5d0760ea314b0929f22075 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/biopax/BiopaxFactory.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/model/biopax/BiopaxFactory.java @@ -6,10 +6,17 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import lcsb.mapviewer.common.exception.InvalidArgumentException; +import lcsb.mapviewer.model.LogMarker; +import lcsb.mapviewer.model.ProjectLogEntryType; import lcsb.mapviewer.model.map.*; public class BiopaxFactory { private Logger logger = LogManager.getLogger(); + private String mapName; + + public BiopaxFactory(String mapName) { + this.mapName = mapName; + } /** * Creates {@link MiriamData annotation} from {@link BiopaxPublication}. @@ -52,15 +59,26 @@ public class BiopaxFactory { if (md != null) { result.add(md); } else { - logger.warn("[" + string + "]\tBiopax publication is invalid."); + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, "BiopaxReference", string, getMapName()), + "Publication is invalid."); } } else { - logger.warn("[" + string + "]\tBiopax publication doesn't exist."); + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, "BiopaxReference", string, getMapName()), + "Biopax publication doesn't exist."); } } else { - logger.warn("[Biopax, " + string + "]\tInvalid BioPax reference."); + logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, "BiopaxReference", string, getMapName()), + "Invalid BioPax reference."); } } return result; } + + public String getMapName() { + return mapName; + } + + public void setMapName(String mapName) { + this.mapName = mapName; + } } diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/WikipathwaysTestFunctions.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/WikipathwaysTestFunctions.java index c263cc8a5dabcf43a1a001e125cf02256a4007f6..0d6b120a1e87318d319428bba9c3ef9cbe62e31c 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/WikipathwaysTestFunctions.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/WikipathwaysTestFunctions.java @@ -1,5 +1,7 @@ package lcsb.mapviewer.wikipathway; +import static org.junit.Assert.assertTrue; + import java.awt.Color; import java.io.*; import java.net.URL; diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/BiopaxParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/BiopaxParserTest.java index 2b25b91443bca4bea099d22cffea6bcf7e81c6c5..91306b3dbf8e0d50284e0a7de12f865e4373e10e 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/BiopaxParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/BiopaxParserTest.java @@ -11,8 +11,11 @@ import lcsb.mapviewer.wikipathway.model.biopax.BiopaxPublication; public class BiopaxParserTest extends WikipathwaysTestFunctions { + BiopaxParser parser ; + @Before public void setUp() throws Exception { + parser = new BiopaxParser("mapName"); } @After @@ -21,7 +24,6 @@ public class BiopaxParserTest extends WikipathwaysTestFunctions { @Test public void testParse() throws Exception { - BiopaxParser parser = new BiopaxParser(); Document document = getXmlDocumentFromFile("testFiles/biopax/small.xml"); BiopaxData data = parser.parse(document.getFirstChild()); assertNotNull(data); @@ -38,7 +40,6 @@ public class BiopaxParserTest extends WikipathwaysTestFunctions { @Test public void testIncorrectPumeds() throws Exception { - BiopaxParser parser = new BiopaxParser(); Document document = getXmlDocumentFromFile("testFiles/biopax/invalid_pubmed_reference.xml"); BiopaxData data = parser.parse(document.getFirstChild()); assertNotNull(data); diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/DataNodeParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/DataNodeParserTest.java index 12e619ba5db29888c4e12671be3152c520e7d1e6..98a4ba41923a0d5f0cb7dfbebc667628d60cdda1 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/DataNodeParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/DataNodeParserTest.java @@ -14,10 +14,11 @@ import lcsb.mapviewer.wikipathway.model.DataNode; public class DataNodeParserTest extends WikipathwaysTestFunctions { Logger logger = LogManager.getLogger(DataNodeParserTest.class); - DataNodeParser parser = new DataNodeParser(); + DataNodeParser parser ; @Before public void setUp() throws Exception { + parser = new DataNodeParser("mapName"); } @After diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/EdgeLineParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/EdgeLineParserTest.java index 3b51b1f8d9f875a581cbd9c5ede41c6708f7ddc7..3ebefd525ba7f663a90b7b8ded442f0cf2e50b78 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/EdgeLineParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/EdgeLineParserTest.java @@ -12,10 +12,11 @@ import lcsb.mapviewer.wikipathway.model.Edge; public class EdgeLineParserTest extends WikipathwaysTestFunctions { - EdgeLineParser parser = new EdgeLineParser(); + private EdgeLineParser parser; @Before public void setUp() throws Exception { + parser = new EdgeLineParser("mapName"); } @After diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/EdgeParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/EdgeParserTest.java index e59195edd55a88e15401db9d874ad768d3256a44..ef6088f6200f60fa4d378fec062597428567b88d 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/EdgeParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/EdgeParserTest.java @@ -8,6 +8,7 @@ import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.junit.Before; import org.junit.Test; import lcsb.mapviewer.common.Configuration; @@ -17,12 +18,17 @@ public class EdgeParserTest { Logger logger = LogManager.getLogger(); - EdgeParser parser = new EdgeParser(); + EdgeParser parser ; + @Before + public void setUp() { + parser = new EdgeParser("mapName"); + } + @Test public void testGetPointsWithoutTargetDirection() throws Exception { List<PointData> gpmlPoints = new ArrayList<>(); - PointData pointData = new PointData(); + PointData pointData = new PointData("mapName"); pointData.setX(370.0); pointData.setY(506.9845153753351); pointData.setRelX("0.0"); @@ -30,12 +36,12 @@ public class EdgeParserTest { pointData.setGraphRef("db29a"); gpmlPoints.add(pointData); - pointData = new PointData(); + pointData = new PointData("mapName"); pointData.setX(337.9360555506242); pointData.setY(558.2089552238806); gpmlPoints.add(pointData); - pointData = new PointData(); + pointData = new PointData("mapName"); pointData.setX(305.8721111012484); pointData.setY(587.6687409348253); pointData.setRelX("0.0"); @@ -59,7 +65,7 @@ public class EdgeParserTest { @Test public void testGetPointsWithoutSourceDirection() throws Exception { List<PointData> gpmlPoints = new ArrayList<>(); - PointData pointData = new PointData(); + PointData pointData = new PointData("mapName"); pointData.setX(418.1490729057133); pointData.setY(421.3813636363637); pointData.setRelX("0.0"); @@ -67,17 +73,17 @@ public class EdgeParserTest { pointData.setGraphRef("f78da"); gpmlPoints.add(pointData); - pointData = new PointData(); + pointData = new PointData("mapName"); pointData.setX(506.83491062039946); pointData.setY(396.35686597839583); gpmlPoints.add(pointData); - pointData = new PointData(); + pointData = new PointData("mapName"); pointData.setX(506.83491062039946); pointData.setY(369.3819137749735); gpmlPoints.add(pointData); - pointData = new PointData(); + pointData = new PointData("mapName"); pointData.setX(718.8015247108307); pointData.setY(343.0727655099894); pointData.setRelX("0.0"); diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ElementGpmlParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ElementGpmlParserTest.java index 2f44e6873d579629891d37edbd8dac912f154412..fb2f8d0e2ba4e518c1935c363c004fe45d7f0690 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ElementGpmlParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ElementGpmlParserTest.java @@ -1,35 +1,18 @@ package lcsb.mapviewer.wikipathway.XML; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.CALLS_REAL_METHODS; -import java.awt.*; -import java.util.Collection; +import java.awt.Color; import org.junit.*; -import org.w3c.dom.Element; +import org.mockito.Mockito; -import lcsb.mapviewer.common.exception.NotImplementedException; -import lcsb.mapviewer.converter.ConverterException; import lcsb.mapviewer.wikipathway.WikipathwaysTestFunctions; public class ElementGpmlParserTest extends WikipathwaysTestFunctions { - ElementGpmlParser<Object> parser = new ElementGpmlParser<Object>() { - @Override - public Object parse(Element node) throws ConverterException { - throw new NotImplementedException(); - } - - @Override - public String toXml(Object object) throws ConverterException { - throw new NotImplementedException(); - } - - @Override - public String toXml(Collection<Object> list) throws ConverterException { - throw new NotImplementedException(); - } - }; + ElementGpmlParser<?> parser = Mockito.mock(ElementGpmlParser.class, CALLS_REAL_METHODS); @Before public void setUp() throws Exception { diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/LabelParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/LabelParserTest.java index aa346f17ef07767653f3a8f4312c37269aea867e..eb9e33368f1fe43b30b89759b9d482e38596f2fa 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/LabelParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/LabelParserTest.java @@ -11,7 +11,7 @@ import lcsb.mapviewer.wikipathway.WikipathwaysTestFunctions; import lcsb.mapviewer.wikipathway.model.Label; public class LabelParserTest extends WikipathwaysTestFunctions { - LabelParser parser = new LabelParser(); + LabelParser parser = new LabelParser("mapName"); @Before public void setUp() throws Exception { @@ -57,7 +57,7 @@ public class LabelParserTest extends WikipathwaysTestFunctions { public void testParseGraphics() throws Exception { Element node = fileToNode("testFiles/elements/label_graphics.xml"); - Label label = new Label("test"); + Label label = new Label("test", "mapName"); parser.parseGraphics(node, label); assertNotNull(label); diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ModelContructorTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ModelContructorTest.java index acb69da6375af10472e03df7a029ac0652ed50ec..a9b43c1bb71d2ba9e0c343b68fb57f8c8ea8cc73 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ModelContructorTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ModelContructorTest.java @@ -19,11 +19,13 @@ public class ModelContructorTest extends WikipathwaysTestFunctions { Logger logger = LogManager.getLogger(ModelContructorTest.class); ModelComparator comparator = new ModelComparator(); + ModelContructor mc ; private int elementCounter = 0; @Before public void setUp() throws Exception { + mc = new ModelContructor("mapName"); } @After @@ -32,9 +34,9 @@ public class ModelContructorTest extends WikipathwaysTestFunctions { @Test public void testZIndexForElement() throws Exception { - ModelToGPML parser = new ModelToGPML(); Model model = createEmptyModel(); model.addElement(createProtein()); + ModelToGPML parser = new ModelToGPML(model.getName()); String xml = parser.getGPML(model); assertNotNull(xml); @@ -61,17 +63,15 @@ public class ModelContructorTest extends WikipathwaysTestFunctions { @Test public void testShouldRotate90degreesWithNoAsAnswer() { - ModelContructor mc = new ModelContructor(); assertFalse(mc.shouldRotate90degrees(0.0)); assertFalse(mc.shouldRotate90degrees(Math.PI)); assertFalse(mc.shouldRotate90degrees(15 * Math.PI)); assertFalse(mc.shouldRotate90degrees(-Math.PI)); - assertFalse(mc.shouldRotate90degrees(null)); + assertFalse(mc.shouldRotate90degrees((Double)null)); } @Test public void testShouldRotate90degrees() { - ModelContructor mc = new ModelContructor(); assertTrue(mc.shouldRotate90degrees(Math.PI / 2)); assertTrue(mc.shouldRotate90degrees(15 * Math.PI / 2)); assertTrue(mc.shouldRotate90degrees(-Math.PI / 2)); @@ -79,7 +79,6 @@ public class ModelContructorTest extends WikipathwaysTestFunctions { @Test public void testShouldRotate90degreesWithWarnings() { - ModelContructor mc = new ModelContructor(); assertFalse(mc.shouldRotate90degrees(0.0 + 0.5)); assertEquals(1, super.getWarnings().size()); assertFalse(mc.shouldRotate90degrees(Math.PI + 0.5)); @@ -98,7 +97,6 @@ public class ModelContructorTest extends WikipathwaysTestFunctions { @Test public void testRotate90degrees() { - ModelContructor mc = new ModelContructor(); Rectangle2D result = mc.rotate90degrees(new Rectangle2D.Double(10, 20, 30, 40)); assertEquals(5, result.getX(), Configuration.EPSILON); assertEquals(25, result.getY(), Configuration.EPSILON); diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ModelToGPMLTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ModelToGPMLTest.java index be945f0b5b4667a1cae0de5d5bbb3a79f213df03..a0e8cb5ed09a7e32f2b494baa9b0571fe18c2539 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ModelToGPMLTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ModelToGPMLTest.java @@ -32,10 +32,10 @@ public class ModelToGPMLTest extends WikipathwaysTestFunctions { @Test public void test() throws Exception { - ModelToGPML parser = new ModelToGPML(); CellDesignerXmlParser cellDesignerXmlParser = new CellDesignerXmlParser(); Model model = cellDesignerXmlParser .createModel(new ConverterParams().filename("testFiles/other_full/GSTP1 subnetwork_220214.xml")); + ModelToGPML parser = new ModelToGPML(model.getName()); String xml = parser.getGPML(model); assertNotNull(xml); assertEquals(10, getWarnings().size()); @@ -46,7 +46,6 @@ public class ModelToGPMLTest extends WikipathwaysTestFunctions { @Test public void testAnnotations() throws Exception { - ModelToGPML parser = new ModelToGPML(); Model model = new ModelFullIndexed(null); model.setWidth(1000); @@ -59,6 +58,7 @@ public class ModelToGPMLTest extends WikipathwaysTestFunctions { model.addElement(alias); + ModelToGPML parser = new ModelToGPML(model.getName()); String xml = parser.getGPML(model); assertNotNull(xml); assertEquals(0, getWarnings().size()); diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ReactionLayoutFinderTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ReactionLayoutFinderTest.java index 0dc4747db50c4a46497978b09be33d9c4053c452..4f4e364a54c9840a2dee65f5aaad6ab2bf6f0309 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ReactionLayoutFinderTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ReactionLayoutFinderTest.java @@ -136,7 +136,7 @@ public class ReactionLayoutFinderTest extends WikipathwaysTestFunctions { } private Edge createEdge(String id, Point2D p1, Point2D p2) { - Edge modifierEdge = new Edge(id); + Edge modifierEdge = new Edge(id, null); modifierEdge.setLine(new PolylineData(p1, p2)); return modifierEdge; } @@ -204,7 +204,7 @@ public class ReactionLayoutFinderTest extends WikipathwaysTestFunctions { @Test public void testNodeLinesInteractionWithTwoReactants() { - Edge edge = new Edge("id"); + Edge edge = new Edge("id", null); PolylineData line = new PolylineData(Arrays.asList( new Point2D.Double(0, 0), new Point2D.Double(100, 0), @@ -220,7 +220,7 @@ public class ReactionLayoutFinderTest extends WikipathwaysTestFunctions { @Test public void testNodeLinesInteractionWithTwoProducts() { - Edge edge = new Edge("id"); + Edge edge = new Edge("id", null); PolylineData line = new PolylineData(Arrays.asList( new Point2D.Double(0, 0), new Point2D.Double(100, 0), diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ReferenceParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ReferenceParserTest.java index 385d524ffe417d5fbdd12f5d3a92b8b740e05c08..2a3d7dfb7aecb2e1fb57151a7f4b1a5a87396750 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ReferenceParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ReferenceParserTest.java @@ -16,7 +16,7 @@ import lcsb.mapviewer.wikipathway.WikipathwaysTestFunctions; public class ReferenceParserTest extends WikipathwaysTestFunctions { Logger logger = LogManager.getLogger(ReferenceParserTest.class); - ReferenceParser mc = new ReferenceParser(); + ReferenceParser mc = new ReferenceParser("mapName"); @Before public void setUp() throws Exception { diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ShapeParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ShapeParserTest.java index 11c6fb1cf41b174451bca55504b6f1a6c3acf336..5cc4e8f274423756f40502f91ca5ada44e377d0a 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ShapeParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/ShapeParserTest.java @@ -14,7 +14,7 @@ import lcsb.mapviewer.wikipathway.WikipathwaysTestFunctions; import lcsb.mapviewer.wikipathway.model.Shape; public class ShapeParserTest extends WikipathwaysTestFunctions { - ShapeParser parser = new ShapeParser(); + ShapeParser parser = new ShapeParser("mapName"); @After public void tearDown() throws Exception { diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/StateParserTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/StateParserTest.java index 4f8a696a79a1d4ead521e7c4dee63f7fff007a26..cfb051908b9ff7e90cdd33808b526deed90ad6c8 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/StateParserTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/XML/StateParserTest.java @@ -13,7 +13,7 @@ import lcsb.mapviewer.wikipathway.WikipathwaysTestFunctions; import lcsb.mapviewer.wikipathway.model.State; public class StateParserTest extends WikipathwaysTestFunctions { - StateParser parser = new StateParser(); + StateParser parser = new StateParser("mapName"); @After public void tearDown() throws Exception { diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/model/PointDataTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/model/PointDataTest.java index b42102350fcda3b28e7684d87e4977a5c71470b3..9612a7125808af9984f5f060fe449f93090186ee 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/model/PointDataTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/model/PointDataTest.java @@ -17,7 +17,7 @@ public class PointDataTest extends WikipathwaysTestFunctions { @Test public void testSeialization() { - SerializationUtils.serialize(new PointData()); + SerializationUtils.serialize(new PointData("mapName")); } }