From 986e02fba0eda725092ce28793c9492d13d32457 Mon Sep 17 00:00:00 2001 From: Egon Willighagen Date: Sat, 31 Jul 2010 10:04:57 +0200 Subject: [PATCH] Do no pass stereo information when none (null) was read Signed-off-by: Rajarshi Guha --- .../org/openscience/cdk/io/MDLReader.java | 21 ++++++++++++------- .../openscience/cdk/io/MDLV2000Reader.java | 21 ++++++++++++------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/main/org/openscience/cdk/io/MDLReader.java b/src/main/org/openscience/cdk/io/MDLReader.java index 1d8960ad2d3..e0534f9e7a1 100644 --- a/src/main/org/openscience/cdk/io/MDLReader.java +++ b/src/main/org/openscience/cdk/io/MDLReader.java @@ -541,15 +541,22 @@ private IMolecule readMolecule(IMolecule molecule) throws CDKException { IAtom a1 = molecule.getAtom(atom1 - 1); IAtom a2 = molecule.getAtom(atom2 - 1); IBond newBond = null; - if (order == 1) { - newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.SINGLE, stereo); - } else if (order == 2) { - newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.DOUBLE, stereo); - } else if (order == 3) { - newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.TRIPLE, stereo); + if (order >= 1 && order <= 3) { + IBond.Order cdkOrder = IBond.Order.SINGLE; + if (order == 2) cdkOrder = IBond.Order.DOUBLE; + if (order == 3) cdkOrder = IBond.Order.TRIPLE; + if (stereo != null) { + newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, cdkOrder, stereo); + } else { + newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, cdkOrder); + } } else if (order == 4) { // aromatic bond - newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.SINGLE, stereo); + if (stereo != null) { + newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.SINGLE, stereo); + } else { + newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.SINGLE); + } // mark both atoms and the bond as aromatic newBond.setFlag(CDKConstants.ISAROMATIC, true); a1.setFlag(CDKConstants.ISAROMATIC, true); diff --git a/src/main/org/openscience/cdk/io/MDLV2000Reader.java b/src/main/org/openscience/cdk/io/MDLV2000Reader.java index ceb558b9e26..eaa510ec5ea 100644 --- a/src/main/org/openscience/cdk/io/MDLV2000Reader.java +++ b/src/main/org/openscience/cdk/io/MDLV2000Reader.java @@ -657,15 +657,22 @@ private IMolecule readMolecule(IMolecule molecule) throws CDKException { IAtom a1 = molecule.getAtom(atom1 - 1); IAtom a2 = molecule.getAtom(atom2 - 1); IBond newBond = null; - if (order == 1) { - newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.SINGLE, stereo); - } else if (order == 2) { - newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.DOUBLE, stereo); - } else if (order == 3) { - newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.TRIPLE, stereo); + if (order >= 1 && order <= 3) { + IBond.Order cdkOrder = IBond.Order.SINGLE; + if (order == 2) cdkOrder = IBond.Order.DOUBLE; + if (order == 3) cdkOrder = IBond.Order.TRIPLE; + if (stereo != null) { + newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, cdkOrder, stereo); + } else { + newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, cdkOrder); + } } else if (order == 4) { // aromatic bond - newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.SINGLE, stereo); + if (stereo != null) { + newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.SINGLE, stereo); + } else { + newBond = molecule.getBuilder().newInstance(IBond.class,a1, a2, IBond.Order.SINGLE); + } // mark both atoms and the bond as aromatic newBond.setFlag(CDKConstants.ISAROMATIC, true); a1.setFlag(CDKConstants.ISAROMATIC, true);