Skip to content

Commit ffd4903

Browse files
committed
Improved thread safety.
1 parent 24c3b57 commit ffd4903

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

storage/ctab/src/main/java/org/openscience/cdk/io/MDLV3000Writer.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,6 @@
5252
import java.io.OutputStreamWriter;
5353
import java.io.Writer;
5454
import java.nio.charset.StandardCharsets;
55-
import java.text.DecimalFormat;
56-
import java.text.DecimalFormatSymbols;
57-
import java.text.NumberFormat;
5855
import java.text.SimpleDateFormat;
5956
import java.util.ArrayList;
6057
import java.util.Collection;
@@ -89,11 +86,9 @@
8986
*/
9087
public final class MDLV3000Writer extends DefaultChemObjectWriter {
9188

92-
public static final SimpleDateFormat HEADER_DATE_FORMAT = new SimpleDateFormat("MMddyyHHmm");
93-
public static final NumberFormat DECIMAL_FORMAT = new DecimalFormat("#.####", DecimalFormatSymbols.getInstance(Locale.ROOT));
94-
private static final Pattern R_GRP_NUM = Pattern.compile("R(\\d+)");
95-
private V30LineWriter writer;
96-
private StringIOSetting programNameOpt;
89+
private static final Pattern R_GRP_NUM = Pattern.compile("R(\\d+)");
90+
private V30LineWriter writer;
91+
private StringIOSetting programNameOpt;
9792

9893
/**
9994
* Create a new V3000 writer, output to the provided JDK writer.
@@ -182,7 +177,7 @@ private void writeHeader(IAtomContainer mol) throws IOException {
182177
*/
183178
writer.writeDirect(" ");
184179
writer.writeDirect(getProgName());
185-
writer.writeDirect(HEADER_DATE_FORMAT.format(System.currentTimeMillis()));
180+
writer.writeDirect(new SimpleDateFormat("MMddyyHHmm").format(System.currentTimeMillis()));
186181
final int dim = getNumberOfDimensions(mol);
187182
if (dim != 0) {
188183
writer.writeDirect(Integer.toString(dim));
@@ -646,8 +641,8 @@ else if (o2.getParents().contains(o1))
646641
final Point2d p1 = bracket.getFirstPoint();
647642
final Point2d p2 = bracket.getSecondPoint();
648643
writer.write("9");
649-
writer.write(' ').write(DECIMAL_FORMAT.format(p1.x)).write(' ').write(DECIMAL_FORMAT.format(p1.y)).write(" 0");
650-
writer.write(' ').write(DECIMAL_FORMAT.format(p2.x)).write(' ').write(DECIMAL_FORMAT.format(p2.y)).write(" 0");
644+
writer.write(' ').write(p1.x).write(' ').write(p1.y).write(" 0");
645+
writer.write(' ').write(p2.x).write(' ').write(p2.y).write(" 0");
651646
writer.write(" 0 0 0");
652647
writer.write(")");
653648
}
@@ -859,7 +854,7 @@ private void writePrefixIfNeeded() throws IOException {
859854
* @throws IOException low-level IO error
860855
*/
861856
V30LineWriter write(double num) throws IOException {
862-
return write(DECIMAL_FORMAT.format(num));
857+
return write(String.format(Locale.ROOT, "%.5f", num));
863858
}
864859

865860
/**
@@ -958,5 +953,4 @@ public void customizeJob() {
958953
fireIOSettingQuestion(setting);
959954
}
960955
}
961-
962956
}

0 commit comments

Comments
 (0)