diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java index bea9a303b24cd239b155046d87a999faf86e338e..c144284b07413796ecaf99673c8c3663486f94e1 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java @@ -1,19 +1,19 @@ package lcsb.mapviewer.converter.model.celldesigner.reaction; +import lcsb.mapviewer.commands.layout.ModifierType; +import lcsb.mapviewer.commands.layout.ReactionData; import lcsb.mapviewer.common.XmlParser; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.common.exception.InvalidXmlSchemaException; import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection; import lcsb.mapviewer.converter.model.celldesigner.geometry.CellDesignerAliasConverter; -import lcsb.mapviewer.converter.model.celldesigner.geometry.ReactionCellDesignerConverter; import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerAnchor; import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerPointTransformation; import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.PolylineDataFactory; import lcsb.mapviewer.converter.model.celldesigner.structure.fields.ConnectScheme; import lcsb.mapviewer.converter.model.celldesigner.structure.fields.EditPoints; import lcsb.mapviewer.converter.model.celldesigner.structure.fields.LineProperties; -import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType; import lcsb.mapviewer.converter.model.celldesigner.types.ModifierTypeUtils; import lcsb.mapviewer.converter.model.celldesigner.types.OperatorType; import lcsb.mapviewer.converter.model.celldesigner.types.OperatorTypeUtils; @@ -689,8 +689,8 @@ public class ReactionFromXml { reactant.setLine(reactant.getLine().reverse()); reactant.getLine().addLine(p2, p); - reactant.getLine().trimEnd(ReactionCellDesignerConverter.RECT_SIZE / 2 - 1); - operator.getLine().trimEnd(ReactionCellDesignerConverter.RECT_SIZE / 2 - 1); + reactant.getLine().trimEnd(ReactionData.RECT_SIZE / 2 - 1); + operator.getLine().trimEnd(ReactionData.RECT_SIZE / 2 - 1); result.addNode(operator); @@ -889,7 +889,7 @@ public class ReactionFromXml { andOperator.getLine().addLine(product.getLine().getLines().get(i)); } andOperator.getLine().setEndPoint(p); - andOperator.getLine().trimEnd(ReactionCellDesignerConverter.RECT_SIZE / 2 - 1); + andOperator.getLine().trimEnd(ReactionData.RECT_SIZE / 2 - 1); p = new Point2D.Double((p2.getX() + p1.getX()) / 2, (p2.getY() + p1.getY()) / 2); @@ -897,7 +897,7 @@ public class ReactionFromXml { product.getLine().removeLine(0); } product.getLine().setStartPoint(p); - product.getLine().trimBegin(ReactionCellDesignerConverter.RECT_SIZE / 2 - 1); + product.getLine().trimBegin(ReactionData.RECT_SIZE / 2 - 1); product.getLine().getEndAtd().setArrowType(ArrowType.FULL); @@ -1210,11 +1210,11 @@ public class ReactionFromXml { Point2D p2 = ld.getLines().get(ld.getLines().size() - index - 1).getP2(); Point2D p = new Point2D.Double((p2.getX() + p1.getX()) / 2, (p2.getY() + p1.getY()) / 2); reactantLine.setEndPoint(p); - reactantLine.trimEnd(ReactionCellDesignerConverter.RECT_SIZE / 2 - 1); + reactantLine.trimEnd(ReactionData.RECT_SIZE / 2 - 1); p = new Point2D.Double((p2.getX() + p1.getX()) / 2, (p2.getY() + p1.getY()) / 2); productLine.setStartPoint(p); - productLine.trimBegin(ReactionCellDesignerConverter.RECT_SIZE / 2 - 1); + productLine.trimBegin(ReactionData.RECT_SIZE / 2 - 1); productLine.getEndAtd().setArrowType(ArrowType.FULL); diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java index 953b8ff4fb08368257e4b22d10ad59c4b3e29ccb..f51028bd81c02857009bc0302226e719ac5d9208 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java @@ -1,5 +1,6 @@ package lcsb.mapviewer.converter.model.celldesigner.reaction; +import lcsb.mapviewer.commands.layout.ModifierType; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.XmlParser; import lcsb.mapviewer.common.exception.InvalidArgumentException; @@ -10,7 +11,6 @@ import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerL import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerPointTransformation; import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.PolylineDataFactory; import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerElement; -import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType; import lcsb.mapviewer.converter.model.celldesigner.types.ModifierTypeUtils; import lcsb.mapviewer.converter.model.celldesigner.types.OperatorType; import lcsb.mapviewer.converter.model.celldesigner.types.OperatorTypeUtils; diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java index d6a906b736987999c73cb3c42e66422c4de62422..21059567562f7f82932a4031607d576e1220d8b2 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java @@ -1,15 +1,10 @@ package lcsb.mapviewer.converter.model.celldesigner.types; -import java.awt.geom.Line2D; -import java.awt.geom.Point2D; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - +import lcsb.mapviewer.commands.layout.ModifierType; +import lcsb.mapviewer.commands.layout.ReactionData; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.common.geometry.PointTransformation; -import lcsb.mapviewer.converter.model.celldesigner.geometry.ReactionCellDesignerConverter; import lcsb.mapviewer.model.LogMarker; import lcsb.mapviewer.model.ProjectLogEntryType; import lcsb.mapviewer.model.graphics.PolylineData; @@ -19,26 +14,29 @@ import lcsb.mapviewer.model.map.reaction.NodeOperator; import lcsb.mapviewer.model.map.reaction.Reaction; import lcsb.mapviewer.model.map.species.Element; import lcsb.mapviewer.model.map.species.Species; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.awt.geom.Line2D; +import java.awt.geom.Point2D; /** * Util class that helps in transformation of CellDesigner modifiers into * {@link Modifier} object in our model. - * + * * @author Piotr Gawron - * */ public class ModifierTypeUtils { /** * Default class logger. */ - private static Logger logger = LogManager.getLogger(); + private static final Logger logger = LogManager.getLogger(); /** * Returns {@link ModifierType} that reference to the clazz. - * - * @param clazz - * class type for which result is returned + * + * @param clazz class type for which result is returned * @return {@link ModifierType} that reference to the clazz */ public ModifierType getModifierTypeForClazz(final Class<? extends Modifier> clazz) { @@ -53,9 +51,8 @@ public class ModifierTypeUtils { /** * Returns {@link ModifierType} that reference to the CellDesigner string * 'type'. - * - * @param type - * CellDesigner string defining modifier type + * + * @param type CellDesigner string defining modifier type * @return {@link ModifierType} that reference to the CellDesigner 'type' */ public ModifierType getModifierTypeForStringType(final String type) { @@ -69,11 +66,9 @@ public class ModifierTypeUtils { /** * Creates {@link Modifier} for the CellDesigner type. - * - * @param type - * CellDesigner type of the modifier - * @param alias - * alias to which modifier point to + * + * @param type CellDesigner type of the modifier + * @param alias alias to which modifier point to * @return {@link Modifier} for the CellDesigner type */ public Modifier createModifierForStringType(final String type, final Species alias) { @@ -91,9 +86,8 @@ public class ModifierTypeUtils { /** * Returns CellDesigner string used for modifier creation. - * - * @param modifier - * modifier for which CellDesigner string is looked for + * + * @param modifier modifier for which CellDesigner string is looked for * @return CellDesigner string used for modifier creation */ public String getStringTypeByModifier(final Modifier modifier) { @@ -108,9 +102,8 @@ public class ModifierTypeUtils { * Returns string that identfies TargetLine index for the modifier. TargetLine * index is a CellDesigner String that identifies to which point on the * rectangle in the center line modifier line is connected. - * - * @param modifier - * modifier for target line + * + * @param modifier modifier for target line * @return string that identfies TargetLine index for the modifier */ public String getTargetLineIndexByModifier(final Modifier modifier) { @@ -130,9 +123,8 @@ public class ModifierTypeUtils { * Returns string that identfies TargetLine index for the modifier operator. * TargetLine index is a CellDesigner String that identifies to which point on * the rectangle in the center line modifier line is connected. - * - * @param modifier - * modifier operator for target line + * + * @param modifier modifier operator for target line * @return string that identfies TargetLine index for the modifier */ public String getTargetLineIndexByModifier(final NodeOperator modifier) { @@ -157,21 +149,17 @@ public class ModifierTypeUtils { * Returns string that identfies TargetLine index for the modifier line * connected to reaction (target line index is explained here: * {@link #getTargetLineIndexByModifier(Modifier)}). - * - * - * @param modType - * type of modifier for the line - * @param reaction - * reaction on which target line index is looked for - * @param originalLine - * line that connects modifier to the reaction + * + * @param modType type of modifier for the line + * @param reaction reaction on which target line index is looked for + * @param originalLine line that connects modifier to the reaction * @return string that identifies TargetLine index for modifier line */ private String getTragteLineIndex(final ModifierType modType, final Reaction reaction, final PolylineData originalLine) { PolylineData line = new PolylineData(originalLine); line.trimEnd(-modType.getTrimLength()); - String[] possibleValues = new String[] { "0,2", "0,3", "0,4", "0,5", "0,6", "0,7" }; + String[] possibleValues = new String[]{"0,2", "0,3", "0,4", "0,5", "0,6", "0,7"}; Point2D closestPoint = new Point2D.Double(Double.MAX_VALUE, Double.MAX_VALUE); Point2D checkedPoint = line.getEndPoint(); String result = "0,0"; @@ -189,11 +177,9 @@ public class ModifierTypeUtils { * This method get anchor point on the reaction line (the center point of this * line is given as a parameter). The anchor point depends on the line and * lineConnectionType associated with the modification. - * - * @param reaction - * reaction on which we are looking for a point - * @param lineConnectionType - * point of connection to the reaction center rectangle + * + * @param reaction reaction on which we are looking for a point + * @param lineConnectionType point of connection to the reaction center rectangle * @return coordinates of point on the center rectangle */ public Point2D getAnchorPointOnReactionRect(final Reaction reaction, final String lineConnectionType) { @@ -212,34 +198,34 @@ public class ModifierTypeUtils { if (spr.length > 1) { id = spr[1]; if (id.equals("2")) { - y -= ReactionCellDesignerConverter.RECT_SIZE / 2; + y -= ReactionData.RECT_SIZE / 2; } else if (id.equals("3")) { - y += ReactionCellDesignerConverter.RECT_SIZE / 2; + y += ReactionData.RECT_SIZE / 2; } else if (id.equals("4")) { - y -= ReactionCellDesignerConverter.RECT_SIZE / 2; - x -= ReactionCellDesignerConverter.RECT_SIZE / 2; + y -= ReactionData.RECT_SIZE / 2; + x -= ReactionData.RECT_SIZE / 2; } else if (id.equals("5")) { - y -= ReactionCellDesignerConverter.RECT_SIZE / 2; - x += ReactionCellDesignerConverter.RECT_SIZE / 2; + y -= ReactionData.RECT_SIZE / 2; + x += ReactionData.RECT_SIZE / 2; } else if (id.equals("6")) { - y += ReactionCellDesignerConverter.RECT_SIZE / 2; - x -= ReactionCellDesignerConverter.RECT_SIZE / 2; + y += ReactionData.RECT_SIZE / 2; + x -= ReactionData.RECT_SIZE / 2; } else if (id.equals("7")) { - y += ReactionCellDesignerConverter.RECT_SIZE / 2; - x += ReactionCellDesignerConverter.RECT_SIZE / 2; + y += ReactionData.RECT_SIZE / 2; + x += ReactionData.RECT_SIZE / 2; } else if (id.equals("0")) { // this is only workaround... - y += ReactionCellDesignerConverter.RECT_SIZE / 2; + y += ReactionData.RECT_SIZE / 2; } else if (id.equals("1")) { // this is only workaround... - y += ReactionCellDesignerConverter.RECT_SIZE / 2; + y += ReactionData.RECT_SIZE / 2; } else { throw new InvalidArgumentException("Unknown targetLineIndex: " + id); } } else { logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, reaction), "Invalid targetLineIndex: " + id); - y += ReactionCellDesignerConverter.RECT_SIZE / 2; + y += ReactionData.RECT_SIZE / 2; } Point2D p = new Point2D.Double(x, y); PointTransformation pointTransformation = new PointTransformation(); @@ -249,9 +235,8 @@ public class ModifierTypeUtils { /** * Update line parameters to make it look like a proper modifier. - * - * @param modifier - * modifier for which line will be modified + * + * @param modifier modifier for which line will be modified */ public void updateLineEndPoint(final Modifier modifier) { ModifierType modType = getModifierTypeForClazz(modifier.getClass()); @@ -265,9 +250,8 @@ public class ModifierTypeUtils { /** * Updates line parameters of modifier operator to make it look like a proper * modifier. - * - * @param operator - * modifier operator for which line will be modified + * + * @param operator modifier operator for which line will be modified */ @SuppressWarnings("unchecked") public void updateLineEndPoint(final NodeOperator operator) { @@ -286,11 +270,9 @@ public class ModifierTypeUtils { /** * Updates line parameters to make it look like a proper modifier. - * - * @param modType - * type of modifier - * @param line - * line to update + * + * @param modType type of modifier + * @param line line to update */ private void updateLineByType(final ModifierType modType, final PolylineData line) { line.setEndAtd(modType.getAtd().copy()); @@ -300,9 +282,8 @@ public class ModifierTypeUtils { /** * Returns type of the modifier in modifier operator. - * - * @param modifierOperator - * opertor for which type will be returned + * + * @param modifierOperator opertor for which type will be returned * @return type of the modifier in modifier operator */ public ModifierType getModifierTypeForOperator(final NodeOperator modifierOperator) { diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ReactionCellDesignerConverterTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ReactionCellDesignerConverterTest.java deleted file mode 100644 index 11cae750b81fcdec6a41d8ed846df7a0a284b9ef..0000000000000000000000000000000000000000 --- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ReactionCellDesignerConverterTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package lcsb.mapviewer.converter.model.celldesigner.geometry; - -import static org.junit.Assert.assertNotNull; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.Test; - -public class ReactionCellDesignerConverterTest { - - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testConstructor() { - ReactionCellDesignerConverter onverter = new ReactionCellDesignerConverter(); - assertNotNull(onverter); - } - -} diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeTest.java index 2ba3323171ff82597c0bc5846d1babc63dbf264a..b4fae845cb49872b844fc677325bb95ad64fdbc5 100644 --- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeTest.java +++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeTest.java @@ -1,12 +1,13 @@ package lcsb.mapviewer.converter.model.celldesigner.types; -import static org.junit.Assert.assertNotNull; - +import lcsb.mapviewer.commands.layout.ModifierType; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertNotNull; + public class ModifierTypeTest { @AfterClass diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java index 618b51764663b91eade984b99c88bd1ffc63e916..5c3d102141a44a0ba848a101f22e7765bf88ae1c 100644 --- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java +++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java @@ -1,17 +1,6 @@ package lcsb.mapviewer.converter.model.celldesigner.types; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -import java.awt.geom.Point2D; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; - +import lcsb.mapviewer.commands.layout.ModifierType; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions; import lcsb.mapviewer.model.graphics.PolylineData; @@ -21,12 +10,23 @@ import lcsb.mapviewer.model.map.reaction.NodeOperator; import lcsb.mapviewer.model.map.reaction.Product; import lcsb.mapviewer.model.map.reaction.Reactant; import lcsb.mapviewer.model.map.reaction.Reaction; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; + +import java.awt.geom.Point2D; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; public class ModifierTypeUtilsTest extends CellDesignerTestFunctions { - private ModifierTypeUtils utils = new ModifierTypeUtils(); + private final ModifierTypeUtils utils = new ModifierTypeUtils(); - private Modifier invalidModifier = Mockito.mock(Modifier.class, Mockito.CALLS_REAL_METHODS); + private final Modifier invalidModifier = Mockito.mock(Modifier.class, Mockito.CALLS_REAL_METHODS); @AfterClass public static void tearDownAfterClass() throws Exception { diff --git a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/parser/ReactionParser.java b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/parser/ReactionParser.java index b5a6aa6121488755acb1ba45a78ea44bd4480ae2..03337681a024fddf737c4fea9ed9a6f686625e0b 100644 --- a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/parser/ReactionParser.java +++ b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/parser/ReactionParser.java @@ -1,12 +1,12 @@ package lcsb.mapviewer.converter.model.sbgnml.parser; +import lcsb.mapviewer.commands.layout.ModifierType; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.comparator.DoubleComparator; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.common.geometry.PointTransformation; import lcsb.mapviewer.converter.InvalidInputDataExecption; import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.PolylineDataFactory; -import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType; import lcsb.mapviewer.converter.model.sbgnml.SbgnLogMarker; import lcsb.mapviewer.converter.model.sbgnml.structures.Process; import lcsb.mapviewer.model.LogMarker; @@ -61,23 +61,23 @@ public class ReactionParser extends GlyphParser { /** * List of all logic operator glyphs parsed so far. */ - private List<Glyph> logicOperators = new ArrayList<>(); + private final List<Glyph> logicOperators = new ArrayList<>(); /** * List of all processes to be parsed. */ - private List<Process> processes = new ArrayList<>(); + private final List<Process> processes = new ArrayList<>(); /** * List of all logic arcs parsed so far. */ - private List<Arc> logicArcs = new ArrayList<>(); + private final List<Arc> logicArcs = new ArrayList<>(); private final PointTransformation pt = new PointTransformation(); - private RenderParser renderParser; + private final RenderParser renderParser; - private Model model; + private final Model model; public ReactionParser(final RenderParser renderParser, final Model model) { this.renderParser = renderParser; @@ -160,7 +160,7 @@ public class ReactionParser extends GlyphParser { public Reaction parseProcess(final Process p) throws Exception { if (p.getProductArcs().isEmpty()) { logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, p, model), - "The process must have at least one outgoing arc."); + "The process must have at least one outgoing arc."); return null; } @@ -223,7 +223,7 @@ public class ReactionParser extends GlyphParser { for (final Arc a : p.getProductArcs()) { if (Objects.equals(getSourcePort(a), p.getProductsPort()) && ports.size() == 2 - || reaction.getProducts().size() == 0) { + || reaction.getProducts().size() == 0) { Glyph target = getTargetGlyph(a); Product product = new Product(model.getElementByElementId(target.getId())); List<Point2D> pointList = getLinePoints(a); @@ -255,13 +255,13 @@ public class ReactionParser extends GlyphParser { boolean shouldReverse = reaction.getProducts().size() > 1; for (final Product product : reaction.getProducts()) { if (product.getLine().getStartPoint().distance(firstProduct.getLine().getStartPoint()) < Configuration.EPSILON - && product.getLine().getEndPoint().distance(firstProduct.getLine().getEndPoint()) > Configuration.EPSILON) { + && product.getLine().getEndPoint().distance(firstProduct.getLine().getEndPoint()) > Configuration.EPSILON) { shouldReverse = false; } } if (shouldReverse) { logger.warn(new LogMarker(ProjectLogEntryType.PARSING_ISSUE, "process-arcs", p.getCentralPoint().getId(), - model.getIdModel()), "Product lines should be reversed"); + model.getIdModel()), "Product lines should be reversed"); for (final Product product : reaction.getProducts()) { List<Line2D> lines = new ArrayList<>(product.getLine().getLines()); product.getLine().removeLines(); @@ -371,10 +371,10 @@ public class ReactionParser extends GlyphParser { Point2D portPoint; if (p.getReagentArcs().size() > 1) { portPoint = new Point2D.Double(p.getReagentArcs().get(0).getEnd().getX(), - p.getReagentArcs().get(0).getEnd().getY()); + p.getReagentArcs().get(0).getEnd().getY()); } else { portPoint = new Point2D.Double(p.getRevReagentArcs().get(0).getStart().getX(), - p.getRevReagentArcs().get(0).getStart().getY()); + p.getRevReagentArcs().get(0).getStart().getY()); } PolylineData line = new PolylineData(portPoint, centerOfReactionPoint); ArrowTypeData atd = new ArrowTypeData(); @@ -400,10 +400,10 @@ public class ReactionParser extends GlyphParser { Point2D portPoint; if (!p.isReversible()) { portPoint = new Point2D.Double(p.getProductArcs().get(0).getStart().getX(), - p.getProductArcs().get(0).getStart().getY()); + p.getProductArcs().get(0).getStart().getY()); } else { portPoint = new Point2D.Double(p.getRevProductArcs().get(0).getStart().getX(), - p.getRevProductArcs().get(0).getStart().getY()); + p.getRevProductArcs().get(0).getStart().getY()); } PolylineData line = new PolylineData(portPoint, centerOfReactionPoint); ArrowTypeData atd = new ArrowTypeData(); @@ -423,7 +423,7 @@ public class ReactionParser extends GlyphParser { * @throws Exception thrown when parsed logic operator is invalid */ private void parseLogicOperator(final Arc arc, final Reaction reaction, final NodeOperator targetOperator) - throws Exception { + throws Exception { Port operatorPort = (Port) arc.getSource(); Glyph logicOperator = null; for (final Glyph lo : getLogicOperators()) { @@ -439,8 +439,8 @@ public class ReactionParser extends GlyphParser { // inputs of Species final Glyph tempLogicOperator = logicOperator; boolean isCellDesignerValidLogicOperator = logicArcs.stream() - .filter(a -> tempLogicOperator.getPort().contains(a.getTarget()) && !(a.getSource() instanceof Port)) - .count() == 2; + .filter(a -> tempLogicOperator.getPort().contains(a.getTarget()) && !(a.getSource() instanceof Port)) + .count() == 2; if (!isCellDesignerValidLogicOperator) { throw new InvalidArgumentException("Parsed operator is not valid for CellDesigner: " + logicOperator.getId()); } @@ -455,7 +455,7 @@ public class ReactionParser extends GlyphParser { break; case NOT: logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, logicOperator, model), - "NOT gates are not implemented in the platform."); + "NOT gates are not implemented in the platform."); return; default: throw new InvalidArgumentException("Wrong logic operator class."); @@ -463,8 +463,8 @@ public class ReactionParser extends GlyphParser { // Parse line from arc and operator glyph Point2D operatorCenterPoint = new Point2D.Double( - logicOperator.getBbox().getX() + logicOperator.getBbox().getW() / 2, - logicOperator.getBbox().getY() + logicOperator.getBbox().getH() / 2); + logicOperator.getBbox().getX() + logicOperator.getBbox().getW() / 2, + logicOperator.getBbox().getY() + logicOperator.getBbox().getH() / 2); List<Point2D> linePoints = getLinePoints(arc); new ArrayList<Point2D>(); @@ -507,7 +507,7 @@ public class ReactionParser extends GlyphParser { if (logicArc.getSource() instanceof Port) { // The arc has source in logic operator logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, logicArc, model), - "Logic operators trees are not compatible with CellDesigner. Therefore they are not supported."); + "Logic operators trees are not compatible with CellDesigner. Therefore they are not supported."); continue; // parseLogicOperator(logicArc, reaction, modifierClass, // operator, model); @@ -541,11 +541,11 @@ public class ReactionParser extends GlyphParser { switch (ac) { case ABSOLUTE_INHIBITION: logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, arc, model), - ac + " modifier is not supported. Changing to " + Inhibition.class.getSimpleName()); + ac + " modifier is not supported. Changing to " + Inhibition.class.getSimpleName()); return new Inhibition(element); case ABSOLUTE_STIMULATION: logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, arc, model), - ac + " modifier is not supported. Changing to " + PhysicalStimulation.class.getSimpleName()); + ac + " modifier is not supported. Changing to " + PhysicalStimulation.class.getSimpleName()); return new PhysicalStimulation(element); case CATALYSIS: return new Catalysis(element); @@ -628,7 +628,7 @@ public class ReactionParser extends GlyphParser { switch (ArcClazz.fromClazz(arc.getClazz())) { case PRODUCTION: logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, arc, model), - "Activity flow arc type is invalid. Changing to " + StateTransitionReaction.class.getSimpleName()); + "Activity flow arc type is invalid. Changing to " + StateTransitionReaction.class.getSimpleName()); result = new StateTransitionReaction(arc.getId()); break; default: @@ -797,7 +797,7 @@ public class ReactionParser extends GlyphParser { if (productPointList.size() == 3) { if (productPointList.get(0).distance(productPointList.get(1)) > productPointList.get(1) - .distance(productPointList.get(2))) { + .distance(productPointList.get(2))) { Point2D newPoint = pt.getPointOnLine(productPointList.get(0), productPointList.get(1), 0.5); productPointList.add(1, newPoint); } else { @@ -816,12 +816,12 @@ public class ReactionParser extends GlyphParser { reactant.setLine(reactantLine); PolylineData centerLine = new PolylineData(productPointList.subList(reactantPointEnds, productPointStarts + 1)) - .copy(); + .copy(); reaction.setLine(centerLine); ArrowTypeData productAtd = extractArrowTypeDataFromArc(arc); PolylineData productLine = new PolylineData( - productPointList.subList(productPointStarts, productPointList.size())).copy(); + productPointList.subList(productPointStarts, productPointList.size())).copy(); productLine.setEndAtd(productAtd); product.setLine(productLine); @@ -935,19 +935,19 @@ public class ReactionParser extends GlyphParser { return parsePhenotypeArc(a); } catch (Exception e) { logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, a, model), "Probelm with importing arc", - e); + e); } break; } if (a.getSource() instanceof Glyph) { Glyph sourceGlyph = (Glyph) a.getSource(); if (GlyphClazz.fromClazz(sourceGlyph.getClazz()).equals(GlyphClazz.PHENOTYPE) - && (model.getElementByElementId(targetGlyph.getId()) instanceof Species)) { + && (model.getElementByElementId(targetGlyph.getId()) instanceof Species)) { try { return parsePhenotypeArc(a); } catch (InvalidArgumentException ex) { logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, a, model), - "The arc is not a valid reduced notation arc.", ex); + "The arc is not a valid reduced notation arc.", ex); } break; } @@ -962,7 +962,7 @@ public class ReactionParser extends GlyphParser { } if (!found) { logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, a, model), - "Expected PHENOTYPE in reduced notation arc. Arc skipped."); + "Expected PHENOTYPE in reduced notation arc. Arc skipped."); } break; } else { @@ -984,13 +984,13 @@ public class ReactionParser extends GlyphParser { } if (!found) { logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, a, model), - "Cannot find a target for arc: " + a.getId() + ". Skipping"); + "Cannot find a target for arc: " + a.getId() + ". Skipping"); } } break; default: logger.warn(new SbgnLogMarker(ProjectLogEntryType.PARSING_ISSUE, a, model), - "The arc has not been parsed, since it is invalid for SBGN PD map."); + "The arc has not been parsed, since it is invalid for SBGN PD map."); } return null; } diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java index cf6e21fcd562237486f7c03f1f3fb93d82d8efac..5f28eaeace3356ed1a6bca4fd3a575c942db5ad8 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java @@ -1,5 +1,7 @@ package lcsb.mapviewer.converter.model.sbml.reaction; +import lcsb.mapviewer.commands.layout.ModifierType; +import lcsb.mapviewer.commands.layout.ReactionData; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.Pair; import lcsb.mapviewer.common.XmlParser; @@ -9,8 +11,6 @@ import lcsb.mapviewer.common.exception.InvalidXmlSchemaException; import lcsb.mapviewer.common.exception.NotImplementedException; import lcsb.mapviewer.common.geometry.PointTransformation; import lcsb.mapviewer.converter.InvalidInputDataExecption; -import lcsb.mapviewer.converter.model.celldesigner.geometry.ReactionCellDesignerConverter; -import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType; import lcsb.mapviewer.converter.model.sbml.SbmlBioEntityParser; import lcsb.mapviewer.converter.model.sbml.SbmlModelUtils; import lcsb.mapviewer.converter.model.sbml.SbmlParameterParser; @@ -72,14 +72,14 @@ import java.util.Map; import java.util.Set; public class SbmlReactionParser extends SbmlBioEntityParser { - private static Logger logger = LogManager.getLogger(); + private static final Logger logger = LogManager.getLogger(); - private ElementUtils eu = new ElementUtils(); + private final ElementUtils eu = new ElementUtils(); - private SbmlSpeciesParser speciesParser; - private SbmlCompartmentParser compartmentParser; + private final SbmlSpeciesParser speciesParser; + private final SbmlCompartmentParser compartmentParser; - private PointTransformation pt = new PointTransformation(); + private final PointTransformation pt = new PointTransformation(); public SbmlReactionParser(final Model sbmlModel, final lcsb.mapviewer.model.map.model.Model minervaModel, final SbmlSpeciesParser speciesParser, final SbmlCompartmentParser compartmentParser) { @@ -325,8 +325,8 @@ public class SbmlReactionParser extends SbmlBioEntityParser { // if there is no layout don't create center line if (startNode.getLine() != null && startNode.getLine().length() > Configuration.EPSILON && endNode.getLine() != null && endNode.getLine().length() > Configuration.EPSILON) { - startNode.getLine().trimEnd(ReactionCellDesignerConverter.RECT_SIZE); - endNode.getLine().trimBegin(ReactionCellDesignerConverter.RECT_SIZE); + startNode.getLine().trimEnd(ReactionData.RECT_SIZE); + endNode.getLine().trimBegin(ReactionData.RECT_SIZE); line.addLine(pt.copyPoint(startNode.getLine().getEndPoint()), pt.copyPoint(endNode.getLine().getStartPoint())); line.setType(startNode.getLine().getType()); diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlToXmlParserTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlToXmlParserTest.java index bb2acde6f338b0ac3b09436348e999fd8f803ebe..b43073d0c40be477b8b65fac284631dcdc588a80 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlToXmlParserTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlToXmlParserTest.java @@ -3,7 +3,6 @@ package lcsb.mapviewer.converter.model.sbml; import lcsb.mapviewer.converter.ConverterException; import lcsb.mapviewer.converter.ConverterParams; import lcsb.mapviewer.converter.InvalidInputDataExecption; -import lcsb.mapviewer.model.map.InconsistentModelException; import lcsb.mapviewer.model.map.model.Model; import lcsb.mapviewer.model.map.model.ModelComparator; import org.junit.Test; @@ -58,8 +57,7 @@ public class GenericSbmlToXmlParserTest extends SbmlTestFunctions { testSbmlSerialization(model); } - private void testSbmlSerialization(final Model model) throws InconsistentModelException, - IOException, ConverterException, InvalidInputDataExecption { + private void testSbmlSerialization(final Model model) throws ConverterException, InvalidInputDataExecption { final SbmlParser converter = new SbmlParser(); converter.setProvideDefaults(false); diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/layout/ApplySimpleLayoutModelCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/layout/ApplySimpleLayoutModelCommand.java index 9afa407aebda37e577d7fffe91b6042966dc3b99..dc27092f8fb434681a7d9f91a68209899576a035 100644 --- a/model-command/src/main/java/lcsb/mapviewer/commands/layout/ApplySimpleLayoutModelCommand.java +++ b/model-command/src/main/java/lcsb/mapviewer/commands/layout/ApplySimpleLayoutModelCommand.java @@ -346,6 +346,13 @@ public class ApplySimpleLayoutModelCommand extends ApplyLayoutModelCommand { if (startPoint != null) { line.setStartPoint(startPoint); } + for (final ModifierType mt : ModifierType.values()) { + if (mt.getClazz().equals(modifier.getClass())) { + line.setEndAtd(mt.getAtd()); + line.setType(mt.getLineType()); + } + } + modifier.setLine(line); } } diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierType.java b/model-command/src/main/java/lcsb/mapviewer/commands/layout/ModifierType.java similarity index 72% rename from converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierType.java rename to model-command/src/main/java/lcsb/mapviewer/commands/layout/ModifierType.java index 24696c519e645025d4519d25c1a2f5f07573e0bc..49e8cf069db513c92b218abc7cc776244d1c260f 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierType.java +++ b/model-command/src/main/java/lcsb/mapviewer/commands/layout/ModifierType.java @@ -1,6 +1,5 @@ -package lcsb.mapviewer.converter.model.celldesigner.types; +package lcsb.mapviewer.commands.layout; -import lcsb.mapviewer.converter.model.celldesigner.geometry.ReactionCellDesignerConverter; import lcsb.mapviewer.model.graphics.ArrowType; import lcsb.mapviewer.model.graphics.ArrowTypeData; import lcsb.mapviewer.model.graphics.LineType; @@ -16,9 +15,8 @@ import lcsb.mapviewer.model.map.reaction.Modifier; /** * This enum defines how different types of CellDesigner modifiers should be * translated into the reaction {@link Modifier} class. - * + * * @author Piotr Gawron - * */ public enum ModifierType { @@ -30,7 +28,7 @@ public enum ModifierType { /** * Inhibition. */ - INHIBITION("INHIBITION", Inhibition.class, ArrowType.CROSSBAR, 8.0, ReactionCellDesignerConverter.RECT_SIZE / 2 - 1), + INHIBITION("INHIBITION", Inhibition.class, ArrowType.CROSSBAR, 8.0, ReactionData.RECT_SIZE / 2 - 1), /** * Unknown catalysis. @@ -41,7 +39,7 @@ public enum ModifierType { * Unknown inhibition. */ UNKNOWN_INHIBITION("UNKNOWN_INHIBITION", UnknownInhibition.class, ArrowType.CROSSBAR, 8.0, - ReactionCellDesignerConverter.RECT_SIZE / 2 - 1, LineType.DASHED), + ReactionData.RECT_SIZE / 2 - 1, LineType.DASHED), /** * Physical stimulation. @@ -57,32 +55,32 @@ public enum ModifierType { * Trigger. */ TRIGGER_STRING("TRIGGER", Trigger.class, ArrowType.BLANK_CROSSBAR), - + /** * CellDesigner 2.5 modification type. */ TRANSCRIPTIONAL_ACTIVATION("TRANSCRIPTIONAL_ACTIVATION", Trigger.class, ArrowType.BLANK_CROSSBAR), - + /** * CellDesigner 2.5 modification type. */ - TRANSCRIPTIONAL_INHIBITION("TRANSCRIPTIONAL_INHIBITION", Inhibition.class, ArrowType.CROSSBAR, 8.0, - ReactionCellDesignerConverter.RECT_SIZE / 2 - 1), - + TRANSCRIPTIONAL_INHIBITION("TRANSCRIPTIONAL_INHIBITION", Inhibition.class, ArrowType.CROSSBAR, 8.0, + ReactionData.RECT_SIZE / 2 - 1), + ; /** * CellDesigner string describing this type. */ - private String stringName; + private final String stringName; /** * Which class should be used for this type. */ - private Class<? extends Modifier> clazz; + private final Class<? extends Modifier> clazz; /** * How the arrow head of the line should look like. */ - private ArrowTypeData atd = new ArrowTypeData(); + private final ArrowTypeData atd = new ArrowTypeData(); /** * How much should be the arrow line trimmed. */ @@ -94,13 +92,10 @@ public enum ModifierType { /** * Constructor used to create and initialize this enum. - * - * @param string - * {@link #stringName} - * @param clazz - * {@link #clazz} - * @param at - * type of the arrow + * + * @param string {@link #stringName} + * @param clazz {@link #clazz} + * @param at type of the arrow */ ModifierType(final String string, final Class<? extends Modifier> clazz, final ArrowType at) { this(string, clazz, at, null, null, null); @@ -108,15 +103,11 @@ public enum ModifierType { /** * Constructor used to create and initialize this enum. - * - * @param string - * {@link #stringName} - * @param clazz - * {@link #clazz} - * @param at - * type of the arrow - * @param arrowLength - * length of the arrow + * + * @param string {@link #stringName} + * @param clazz {@link #clazz} + * @param at type of the arrow + * @param arrowLength length of the arrow */ ModifierType(final String string, final Class<? extends Modifier> clazz, final ArrowType at, final Double arrowLength) { this(string, clazz, at, arrowLength, null, null); @@ -124,17 +115,12 @@ public enum ModifierType { /** * Constructor used to create and initialize this enum. - * - * @param string - * {@link #stringName} - * @param clazz - * {@link #clazz} - * @param at - * type of the arrow - * @param arrowLength - * length of the arrow - * @param trimLength - * {@link #trimLength} + * + * @param string {@link #stringName} + * @param clazz {@link #clazz} + * @param at type of the arrow + * @param arrowLength length of the arrow + * @param trimLength {@link #trimLength} */ ModifierType(final String string, final Class<? extends Modifier> clazz, final ArrowType at, final Double arrowLength, final Double trimLength) { this(string, clazz, at, arrowLength, trimLength, null); @@ -142,22 +128,16 @@ public enum ModifierType { /** * Constructor used to create and initialize this enum. - * - * @param string - * {@link #stringName} - * @param clazz - * {@link #clazz} - * @param at - * type of the arrow - * @param arrowLength - * length of the arrow - * @param trimLength - * {@link #trimLength} - * @param lt - * {@link #lineType} + * + * @param string {@link #stringName} + * @param clazz {@link #clazz} + * @param at type of the arrow + * @param arrowLength length of the arrow + * @param trimLength {@link #trimLength} + * @param lt {@link #lineType} */ ModifierType(final String string, final Class<? extends Modifier> clazz, final ArrowType at, final Double arrowLength, final Double trimLength, - final LineType lt) { + final LineType lt) { stringName = string; this.clazz = clazz; if (at != null) { @@ -176,7 +156,6 @@ public enum ModifierType { } /** - * * @return {@link #stringName} */ public String getStringName() { @@ -184,7 +163,6 @@ public enum ModifierType { } /** - * * @return {@link #clazz} */ public Class<? extends Modifier> getClazz() { @@ -192,7 +170,6 @@ public enum ModifierType { } /** - * * @return {@link #atd} */ public ArrowTypeData getAtd() { @@ -200,7 +177,6 @@ public enum ModifierType { } /** - * * @return {@link #trimLength} */ public double getTrimLength() { @@ -208,7 +184,6 @@ public enum ModifierType { } /** - * * @return {@link #lineType} */ public LineType getLineType() { diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ReactionCellDesignerConverter.java b/model-command/src/main/java/lcsb/mapviewer/commands/layout/ReactionData.java similarity index 70% rename from converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ReactionCellDesignerConverter.java rename to model-command/src/main/java/lcsb/mapviewer/commands/layout/ReactionData.java index 3c412c80daf0d34ea354342ad66954ac8f0a014b..4b4781f5404160dcef8687fd47ddc2eb418e1586 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ReactionCellDesignerConverter.java +++ b/model-command/src/main/java/lcsb/mapviewer/commands/layout/ReactionData.java @@ -1,13 +1,12 @@ -package lcsb.mapviewer.converter.model.celldesigner.geometry; +package lcsb.mapviewer.commands.layout; /** * Class that provides CellDesigner specific graphical information for Reaction. * It's used for conversion from xml to normal x,y coordinates. - * + * * @author Piotr Gawron - * */ -public final class ReactionCellDesignerConverter { +public final class ReactionData { /** * What is the size of rectangle that is drawn in center point of the reaction. */ @@ -16,7 +15,7 @@ public final class ReactionCellDesignerConverter { /** * Default constructor that prevents instantiation. */ - protected ReactionCellDesignerConverter() { + ReactionData() { } } diff --git a/model/src/main/java/lcsb/mapviewer/model/graphics/ArrowTypeDataComparator.java b/model/src/main/java/lcsb/mapviewer/model/graphics/ArrowTypeDataComparator.java index 5c1dbdd87533991c929af53a79e00d5a13f3ff73..be9eb77da23132592b61099c3efd8ff11cdce9c0 100644 --- a/model/src/main/java/lcsb/mapviewer/model/graphics/ArrowTypeDataComparator.java +++ b/model/src/main/java/lcsb/mapviewer/model/graphics/ArrowTypeDataComparator.java @@ -1,35 +1,32 @@ package lcsb.mapviewer.model.graphics; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import lcsb.mapviewer.common.Comparator; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.comparator.DoubleComparator; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * This class implements comparator interface for ArrowTypeData. It compares the * content, but skip database identifier. - * + * * @author Piotr Gawron - * */ public class ArrowTypeDataComparator extends Comparator<ArrowTypeData> { /** * Default class logger. */ - private static Logger logger = LogManager.getLogger(); + private static final Logger logger = LogManager.getLogger(); /** * Epsilon value used for comparison of doubles. */ - private double epsilon; + private final double epsilon; /** * Constructor that requires {@link #epsilon} parameter. - * - * @param epsilon - * {@link #epsilon} + * + * @param epsilon {@link #epsilon} */ public ArrowTypeDataComparator(final double epsilon) { super(ArrowTypeData.class); @@ -48,22 +45,22 @@ public class ArrowTypeDataComparator extends Comparator<ArrowTypeData> { DoubleComparator doubleComparator = new DoubleComparator(epsilon); if (arg0.getArrowType().compareTo(arg1.getArrowType()) != 0) { - logger.debug("Different arrow type: " + arg0.getArrowType() + ", " + arg1.getArrowType()); + logger.debug("Different arrow type: {}, {}", arg0.getArrowType(), arg1.getArrowType()); return arg0.getArrowType().compareTo(arg1.getArrowType()); } if (arg0.getArrowLineType().compareTo(arg1.getArrowLineType()) != 0) { - logger.debug("Different arrow line type: " + arg0.getArrowLineType() + ", " + arg1.getArrowLineType()); + logger.debug("Different arrow line type: {}, {}", arg0.getArrowLineType(), arg1.getArrowLineType()); return arg0.getArrowLineType().compareTo(arg1.getArrowLineType()); } if (doubleComparator.compare(arg0.getLen(), arg1.getLen()) != 0) { - logger.debug("Different length: " + arg0.getLen() + ", " + arg1.getLen()); + logger.debug("Different length: {}, {}", arg0.getLen(), arg1.getLen()); return doubleComparator.compare(arg0.getLen(), arg1.getLen()); } if (doubleComparator.compare(arg0.getAngle(), arg1.getAngle()) != 0) { - logger.debug("Different angle: " + arg0.getAngle() + ", " + arg1.getAngle()); + logger.debug("Different angle: {}, {}", arg0.getAngle(), arg1.getAngle()); return doubleComparator.compare(arg0.getAngle(), arg1.getAngle()); } return 0; diff --git a/model/src/main/java/lcsb/mapviewer/model/graphics/PolylineDataComparator.java b/model/src/main/java/lcsb/mapviewer/model/graphics/PolylineDataComparator.java index f74203ca56a54aabb4d82a22266c0e16e44bc03f..63e6fc9f589354a7b4e709000ed78ffbed991639 100644 --- a/model/src/main/java/lcsb/mapviewer/model/graphics/PolylineDataComparator.java +++ b/model/src/main/java/lcsb/mapviewer/model/graphics/PolylineDataComparator.java @@ -1,36 +1,33 @@ package lcsb.mapviewer.model.graphics; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import lcsb.mapviewer.common.Comparator; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.comparator.DoubleComparator; import lcsb.mapviewer.common.comparator.IntegerComparator; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * This class implements comparator interface for {@link PolylineData}. It * compares the content, but skip database identifier. - * + * * @author Piotr Gawron - * */ public class PolylineDataComparator extends Comparator<PolylineData> { /** * Default class logger. */ - private static Logger logger = LogManager.getLogger(); + private static final Logger logger = LogManager.getLogger(); /** * Epsilon value used for comparison of doubles. */ - private double epsilon; + private final double epsilon; /** * Constructor that requires {@link #epsilon} parameter. - * - * @param epsilon - * {@link #epsilon} + * + * @param epsilon {@link #epsilon} */ public PolylineDataComparator(final double epsilon) { super(PolylineData.class, true); @@ -51,7 +48,7 @@ public class PolylineDataComparator extends Comparator<PolylineData> { ArrowTypeDataComparator atdComparator = new ArrowTypeDataComparator(epsilon); if (integerComparator.compare(arg0.getLines().size(), arg1.getLines().size()) != 0) { - logger.debug("Lines have different segments number: " + arg0.getLines().size() + ", " + arg1.getLines().size()); + logger.debug("Lines have different segments number: {}, {}", arg0.getLines().size(), arg1.getLines().size()); return integerComparator.compare(arg0.getLines().size(), arg1.getLines().size()); } // TODO this should be fixed @@ -68,27 +65,27 @@ public class PolylineDataComparator extends Comparator<PolylineData> { // } if (atdComparator.compare(arg0.getBeginAtd(), arg1.getBeginAtd()) != 0) { - logger.debug("Lines have different begin adt: " + arg0.getBeginAtd() + ", " + arg1.getBeginAtd()); + logger.debug("Lines have different begin atd: {}, {}", arg0.getBeginAtd(), arg1.getBeginAtd()); return atdComparator.compare(arg0.getBeginAtd(), arg1.getBeginAtd()); } if (atdComparator.compare(arg0.getEndAtd(), arg1.getEndAtd()) != 0) { - logger.debug("Lines have different end adt: " + arg0.getEndAtd() + ", " + arg1.getEndAtd()); + logger.debug("Lines have different end atd: {}, {}", arg0.getEndAtd(), arg1.getEndAtd()); return atdComparator.compare(arg0.getEndAtd(), arg1.getEndAtd()); } if (doubleComparator.compare(arg0.getWidth(), arg1.getWidth()) != 0) { - logger.debug("Lines have different width: " + arg0.getWidth() + ", " + arg1.getWidth()); + logger.debug("Lines have different width: {}, {}", arg0.getWidth(), arg1.getWidth()); return doubleComparator.compare(arg0.getWidth(), arg1.getWidth()); } if (integerComparator.compare(arg0.getColor().getRGB(), arg1.getColor().getRGB()) != 0) { - logger.debug("Lines have different color: " + arg0.getColor() + ", " + arg1.getColor()); + logger.debug("Lines have different color: {}, {}", arg0.getColor(), arg1.getColor()); return integerComparator.compare(arg0.getColor().getRGB(), arg1.getColor().getRGB()); } if (arg0.getType().compareTo(arg1.getType()) != 0) { - logger.debug("Lines have different type: " + arg0.getType() + ", " + arg1.getType()); + logger.debug("Lines have different type: {}, {}", arg0.getType(), arg1.getType()); return arg0.getType().compareTo(arg1.getType()); } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionComparator.java index e29bd2f9ac45a4dfd52316bfc08a1282ab85c373..518e95b87768d8c02c742036f81012d576c9dfb0 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionComparator.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionComparator.java @@ -1,8 +1,5 @@ package lcsb.mapviewer.model.map.reaction; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import lcsb.mapviewer.common.Comparator; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.comparator.BooleanComparator; @@ -16,31 +13,31 @@ import lcsb.mapviewer.model.graphics.PolylineDataComparator; import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.MiriamDataComparator; import lcsb.mapviewer.model.map.kinetics.SbmlKineticsComparator; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * This class implements comparator interface for {@link Reaction}. - * + * * @author Piotr Gawron - * */ public class ReactionComparator extends Comparator<Reaction> { /** * Default class logger. */ - private static Logger logger = LogManager.getLogger(); + private static final Logger logger = LogManager.getLogger(); /** * Epsilon value used for comparison of doubles. */ - private double epsilon; + private final double epsilon; - private boolean ignoreLayout; + private final boolean ignoreLayout; /** * Constructor that requires {@link #epsilon} parameter. - * - * @param epsilon - * {@link #epsilon} + * + * @param epsilon {@link #epsilon} */ public ReactionComparator(final double epsilon, final boolean ignoreLayout) { super(Reaction.class); @@ -66,12 +63,12 @@ public class ReactionComparator extends Comparator<Reaction> { AbstractNodeComparator nodeComparator = new AbstractNodeComparator(epsilon, ignoreLayout); if (stringComparator.compare(arg0.getName(), arg1.getName()) != 0) { - logger.debug("Name different: " + arg0.getName() + ", " + arg1.getName()); + logger.debug("Name different: {}, {}", arg0.getName(), arg1.getName()); return stringComparator.compare(arg0.getName(), arg1.getName()); } if (stringComparator.compare(arg0.getNotes().trim(), arg1.getNotes().trim()) != 0) { - logger.debug("Notes different: " + arg0.getNotes() + ", " + arg1.getNotes()); + logger.debug("Notes different: {}, {}", arg0.getNotes(), arg1.getNotes()); return stringComparator.compare(arg0.getNotes(), arg1.getNotes()); } 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 f6bf6a4c3dd5836c8bd97867a5206e8e53edd928..ea330674da7974d55e721bb4d7e90e610d586746 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/xml/ModelContructor.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/xml/ModelContructor.java @@ -1,13 +1,13 @@ package lcsb.mapviewer.wikipathway.xml; import lcsb.mapviewer.commands.CreateHierarchyCommand; +import lcsb.mapviewer.commands.layout.ModifierType; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.converter.ConverterException; 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; diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/xml/ReactionLayoutFinder.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/xml/ReactionLayoutFinder.java index 6a8a3ba912f8edbcb12dd4f6cc44605a34a8ed20..fea5c243fbf1392960aa049457866ea4b4282088 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/xml/ReactionLayoutFinder.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/xml/ReactionLayoutFinder.java @@ -1,24 +1,12 @@ package lcsb.mapviewer.wikipathway.xml; -import java.awt.geom.Line2D; -import java.awt.geom.Point2D; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - +import lcsb.mapviewer.commands.layout.ReactionData; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.Pair; import lcsb.mapviewer.common.comparator.DoubleComparator; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.common.geometry.LineTransformation; import lcsb.mapviewer.common.geometry.PointTransformation; -import lcsb.mapviewer.converter.model.celldesigner.geometry.ReactionCellDesignerConverter; import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.PolylineDataFactory; import lcsb.mapviewer.model.graphics.PolylineData; import lcsb.mapviewer.model.map.reaction.Modifier; @@ -27,17 +15,28 @@ import lcsb.mapviewer.model.map.reaction.Reactant; import lcsb.mapviewer.wikipathway.model.Edge; import lcsb.mapviewer.wikipathway.model.Interaction; import lcsb.mapviewer.wikipathway.utils.Geo; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.awt.geom.Line2D; +import java.awt.geom.Point2D; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; class ReactionLayoutFinder { - private Logger logger = LogManager.getLogger(); + private final Logger logger = LogManager.getLogger(); - private LineTransformation lt = new LineTransformation(); - private PointTransformation pt = new PointTransformation(); + private final LineTransformation lt = new LineTransformation(); + private final PointTransformation pt = new PointTransformation(); private Interaction interaction; - public static enum LineLocation { + public enum LineLocation { PRODUCT, MODIFIER, REACTANT, @@ -48,11 +47,10 @@ class ReactionLayoutFinder { /** * Return coordinates where all {@link Reactant} should end, all * {@link Modifier} should end, and all {@link Product} should start. - * - * @param interaction - * GPML {@link Interaction} + * + * @param interaction GPML {@link Interaction} * @return map consisted of three entries for classes: {@link Product}, - * {@link Reactant}, {@link Modifier} + * {@link Reactant}, {@link Modifier} */ public Map<Class<?>, Point2D> getNodeStartPoints(final Interaction interaction) { this.interaction = interaction; @@ -78,12 +76,12 @@ class ReactionLayoutFinder { points.get(Reactant.class)); PolylineData inputReactionLine = getSubline(interaction.getLine(), points.get(Reactant.class), points.get(Modifier.class)); - inputReactionLine.trimEnd(ReactionCellDesignerConverter.RECT_SIZE / 2); + inputReactionLine.trimEnd(ReactionData.RECT_SIZE / 2); PolylineData outputReactionLine = getSubline(interaction.getLine(), points.get(Modifier.class), points.get(Product.class)); - outputReactionLine.trimBegin(ReactionCellDesignerConverter.RECT_SIZE / 2); + outputReactionLine.trimBegin(ReactionData.RECT_SIZE / 2); PolylineData productLine = getSubline(interaction.getLine(), points.get(Product.class), interaction.getLine().getEndPoint()); PolylineData modifierLine = new PolylineData(pt.copyPoint(inputReactionLine.getEndPoint()), @@ -320,7 +318,6 @@ class ReactionLayoutFinder { PolylineData result = new PolylineData(originalPolylineData); List<Line2D> lines = new ArrayList<>(result.getLines().subList(start, end + 1)); result.removeLines(); - ; result.addLines(lines); result.setStartPoint(pt.copyPoint(startPoint)); diff --git a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/GPMLToModelTest.java b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/GPMLToModelTest.java index 908bc74ddbe876471a2dc6f16ec71a36c94f9a76..c591c36b99ab27b490305f2a9d18eb57ac897315 100644 --- a/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/GPMLToModelTest.java +++ b/pathvisio/src/test/java/lcsb/mapviewer/wikipathway/GPMLToModelTest.java @@ -1,7 +1,7 @@ package lcsb.mapviewer.wikipathway; +import lcsb.mapviewer.commands.layout.ReactionData; import lcsb.mapviewer.common.geometry.PointTransformation; -import lcsb.mapviewer.converter.model.celldesigner.geometry.ReactionCellDesignerConverter; import lcsb.mapviewer.model.graphics.HorizontalAlign; import lcsb.mapviewer.model.graphics.VerticalAlign; import lcsb.mapviewer.model.map.Drawable; @@ -37,7 +37,7 @@ public class GPMLToModelTest extends WikipathwaysTestFunctions { private ModelComparator mc; - private PointTransformation pt = new PointTransformation(); + private final PointTransformation pt = new PointTransformation(); @Before public void setUp() { @@ -278,6 +278,7 @@ public class GPMLToModelTest extends WikipathwaysTestFunctions { for (final Complex species : model.getComplexList()) { if ("p70 S6 Kinases".equals(species.getName())) { nameFound = true; + break; } } assertTrue("Complex parsed from gpml should have a valid name", nameFound); @@ -381,7 +382,7 @@ public class GPMLToModelTest extends WikipathwaysTestFunctions { String fileName = "testFiles/small/protein_with_modification.gpml"; Model model1 = new GPMLToModel().getModel(fileName); - Gene gene = (Gene) model1.getElementByElementId("be3de"); + Gene gene = model1.getElementByElementId("be3de"); assertNotNull(gene); assertEquals(2, gene.getModificationResidues().size()); for (ModificationResidue mr : gene.getModificationResidues()) { @@ -398,7 +399,7 @@ public class GPMLToModelTest extends WikipathwaysTestFunctions { String fileName = "testFiles/small/protein_with_modification_2.gpml"; Model model1 = new GPMLToModel().getModel(fileName); - Gene protein = (Gene) model1.getElementByElementId("be3de"); + Gene protein = model1.getElementByElementId("be3de"); assertNotNull(protein); assertEquals(2, protein.getModificationResidues().size()); @@ -418,7 +419,7 @@ public class GPMLToModelTest extends WikipathwaysTestFunctions { double distance = pt.getPointOnLine(centerLine.getP1(), centerLine.getP2(), 0.5) .distance(reaction.getModifiers().get(0).getLine().getEndPoint()); assertTrue("Modifier is too far from center point: " + distance, - distance < ReactionCellDesignerConverter.RECT_SIZE); + distance < ReactionData.RECT_SIZE); assertEquals(0, getWarnings().size()); }