/** {@inheritDoc} */ @Override public void addChemModel(IChemModel chemModel) { logger.debug("Adding chemModel: ", chemModel); super.addChemModel(chemModel); }
@Override public void endElement(String uri, String local, String raw) { logger.debug("end element: ", raw); if ("identifier".equals(local)) { if (tautomer != null) { // ok, add tautomer setOfMolecules.addAtomContainer(tautomer); chemModel.setMoleculeSet(setOfMolecules); chemSequence.addChemModel(chemModel); } } else if ("formula".equals(local)) { if (tautomer != null) { logger.info("Parsing <formula> chars: ", currentChars); tautomer = new AtomContainer(inchiTool.processFormula( setOfMolecules.getBuilder().newInstance(IAtomContainer.class), currentChars)); } else { logger.warn("Cannot set atom info for empty tautomer"); } } else if ("connections".equals(local)) { if (tautomer != null) { logger.info("Parsing <connections> chars: ", currentChars); inchiTool.processConnections(currentChars, tautomer, -1); } else { logger.warn("Cannot set dbond info for empty tautomer"); } } else { // skip all other elements } }
@Test public void testPropagation() { ChemFile cf = new ChemFile(); ChemSequence cs = new ChemSequence(); ChemModel cm = new ChemModel(); IAtomContainerSet som = new AtomContainerSet(); IAtomContainer mol = new AtomContainer(); Atom a1 = new Atom("C"); Atom a2 = new Atom("C"); Bond b1 = new Bond(a1, a2); mol.addAtom(a1); mol.addAtom(a2); mol.addBond(b1); som.addAtomContainer(mol); cm.setMoleculeSet(som); cs.addChemModel(cm); cf.addChemSequence(cs); TestListener ts = new TestListener(); cf.addListener(ts); a2.setSymbol("N"); Assert.assertTrue(ts.changedObject instanceof Atom); Assert.assertEquals("N", ((Atom) ts.changedObject).getSymbol()); }