protected File saveAsCDKSourceCode(IChemModel model, File outFile) throws Exception { logger.info("Saving the contents as a CDK source code file..."); String fileName = outFile.toString(); if (!fileName.endsWith(".cdk")) { fileName += ".cdk"; outFile = new File(fileName); } cow = new CDKSourceCodeWriter(new FileWriter(outFile)); if (cow != null && askIOSettings()) { cow.addChemObjectIOListener(new SwingGUIListener(jcpPanel, IOSetting.Importance.HIGH)); } Iterator<IAtomContainer> containers = ChemModelManipulator.getAllAtomContainers(model).iterator(); while (containers.hasNext()) { IAtomContainer ac = (IAtomContainer)containers.next(); if (ac != null) { cow.write(ac); } else { System.err.println("AC == null!"); } } cow.close(); if(jcpPanel instanceof JChemPaintPanel) ((JChemPaintPanel)jcpPanel).setTitle(jcpPanel.getChemModel().getID()); return outFile; }
@BeforeClass public static void setup() { setChemObjectIO(new CDKSourceCodeWriter()); }
@Test public void testOutput() throws Exception { StringWriter writer = new StringWriter(); IAtomContainer molecule = new AtomContainer(); Atom atom = new Atom("C"); atom.setMassNumber(14); molecule.addAtom(atom); CDKSourceCodeWriter sourceWriter = new CDKSourceCodeWriter(writer); sourceWriter.write(molecule); sourceWriter.close(); String output = writer.toString(); String newline = "\n"; assertThat(output, is("{" + newline + " IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();" + newline + " IAtomContainer mol = builder.newInstance(IAtomContainer.class);" + newline + " IAtom a1 = builder.newInstance(IAtom.class,\"C\");" + newline + " a1.setFormalCharge(0);" + newline + " mol.addAtom(a1);" + newline + "}" + newline)); } }