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 8831af988b104bd2f4bcaa41833ad5d0e069a63d..7b9127f7268f75b2f12c6c66105e169c31bf5137 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 @@ -64,6 +64,7 @@ import lcsb.mapviewer.model.map.reaction.type.TwoProductReactionInterface; import lcsb.mapviewer.model.map.reaction.type.TwoReactantReactionInterface; import lcsb.mapviewer.model.map.species.Element; import lcsb.mapviewer.model.map.species.Species; +import lcsb.mapviewer.modelutils.map.ElementUtils; /** * This is a part of {@link ReactionXmlParser} class functionality that allows @@ -216,9 +217,9 @@ public class ReactionFromXml extends XmlParser { } } try { - assignStochiometry(result.getReactants(), reactantsNode, elements); - assignStochiometry(result.getProducts(), productsNode, elements); - assignStochiometry(result.getModifiers(), modifiersNode, elements); + assignStochiometry(result.getReactants(), reactantsNode, elements); + assignStochiometry(result.getProducts(), productsNode, elements); + assignStochiometry(result.getModifiers(), modifiersNode, elements); } catch (InvalidStateException e) { throw new ReactionParserException(result, e); } @@ -476,7 +477,7 @@ public class ReactionFromXml extends XmlParser { result.removeModifier(modifier); i--; } else if (modifier.getLine() == null) { - createLineForModifier(result, modifier); + createLineForModifier(modifier); } } @@ -579,26 +580,29 @@ public class ReactionFromXml extends XmlParser { /** * Creates line information for the modifier. * - * @param reaction - * reaction where modifier is placed * @param modifier * modifier to update + * @throws ReactionParserException */ - private void createLineForModifier(Reaction reaction, Modifier modifier) { - Element element = modifier.getElement(); - CellDesignerAliasConverter converter = new CellDesignerAliasConverter(element, sbgn); - Point2D startPoint = converter.getPointCoordinates(element, anchorsByNodes.get(modifier)); - ModifierTypeUtils modifierTypeUtils = new ModifierTypeUtils(); - - Point2D p = modifierTypeUtils.getAnchorPointOnReactionRect(modifier.getReaction(), - lineTypeByModifier.get(modifier)); - PolylineData line = PolylineDataFactory.createPolylineDataFromEditPoints(startPoint, p, - pointsByModifier.get(modifier)); - - startPoint = converter.getAnchorPointCoordinates(element, anchorsByNodes.get(modifier), line); - line.setStartPoint(startPoint); - modifier.setLine(line); - modifierTypeUtils.updateLineEndPoint(modifier); + private void createLineForModifier(Modifier modifier) throws ReactionParserException { + try { + Element element = modifier.getElement(); + CellDesignerAliasConverter converter = new CellDesignerAliasConverter(element, sbgn); + Point2D startPoint = converter.getPointCoordinates(element, anchorsByNodes.get(modifier)); + ModifierTypeUtils modifierTypeUtils = new ModifierTypeUtils(); + + Point2D p = modifierTypeUtils.getAnchorPointOnReactionRect(modifier.getReaction(), + lineTypeByModifier.get(modifier)); + PolylineData line = PolylineDataFactory.createPolylineDataFromEditPoints(startPoint, p, + pointsByModifier.get(modifier)); + + startPoint = converter.getAnchorPointCoordinates(element, anchorsByNodes.get(modifier), line); + line.setStartPoint(startPoint); + modifier.setLine(line); + modifierTypeUtils.updateLineEndPoint(modifier); + } catch (Exception e) { + throw new ReactionParserException("Problem with creating layout for modifier.", modifier.getReaction()); + } } /**