Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
The SDFWriter now accepts all MDLV2000Writer's IOSettings too (fixes …
…#3392485)

Signed-off-by: Rajarshi  Guha <rajarshi.guha@gmail.com>
  • Loading branch information
egonw authored and rajarshi committed Oct 2, 2011
1 parent ab54ed5 commit aa6ca5f
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/main/org/openscience/cdk/io/SDFWriter.java
Expand Up @@ -31,8 +31,10 @@
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.openscience.cdk.annotations.TestClass;
import org.openscience.cdk.annotations.TestMethod;
Expand All @@ -46,6 +48,7 @@
import org.openscience.cdk.interfaces.IMoleculeSet;
import org.openscience.cdk.io.formats.IResourceFormat;
import org.openscience.cdk.io.formats.SDFFormat;
import org.openscience.cdk.io.listener.PropertiesListener;
import org.openscience.cdk.io.setting.BooleanIOSetting;
import org.openscience.cdk.io.setting.IOSetting;
import org.openscience.cdk.smiles.InvPair;
Expand All @@ -69,6 +72,7 @@ public class SDFWriter extends DefaultChemObjectWriter {

private BufferedWriter writer;
private BooleanIOSetting writerProperties;
private Map<String,IOSetting> mdlWriterSettings;

/**
* Constructs a new SDFWriter that writes to the given {@link Writer}.
Expand Down Expand Up @@ -198,6 +202,14 @@ private void writeMolecule(IAtomContainer container) throws CDKException {
// write the MDL molfile bits
StringWriter stringWriter = new StringWriter();
MDLV2000Writer mdlWriter = new MDLV2000Writer(stringWriter);
Properties ioSettings = new Properties();
for (String settingName : mdlWriterSettings.keySet()) {
ioSettings.put(settingName, mdlWriterSettings.get(settingName).getSetting());
}
mdlWriter.addChemObjectIOListener(
new PropertiesListener(ioSettings)
);
mdlWriter.customizeJob();
mdlWriter.write(container);
mdlWriter.close();
writer.write(stringWriter.toString());
Expand Down Expand Up @@ -246,10 +258,19 @@ private void initIOSettings() {
"Should molecular properties be written?",
"true"
);
// cache the MDLV2000Writer settings
IOSetting[] settings = new MDLV2000Writer().getIOSettings();
mdlWriterSettings = new HashMap<String,IOSetting>();
for (int i=0; i<settings.length; i++) {
mdlWriterSettings.put(settings[i].getName(), settings[i]);
}
}

public void customizeJob() {
fireIOSettingQuestion(writerProperties);
for (IOSetting setting : mdlWriterSettings.values()) {
fireIOSettingQuestion(setting);
}
}

public IOSetting[] getIOSettings() {
Expand Down

0 comments on commit aa6ca5f

Please sign in to comment.