|
52 | 52 | import java.io.OutputStreamWriter; |
53 | 53 | import java.io.Writer; |
54 | 54 | import java.nio.charset.StandardCharsets; |
55 | | -import java.text.DecimalFormat; |
56 | | -import java.text.DecimalFormatSymbols; |
57 | | -import java.text.NumberFormat; |
58 | 55 | import java.text.SimpleDateFormat; |
59 | 56 | import java.util.ArrayList; |
60 | 57 | import java.util.Collection; |
|
89 | 86 | */ |
90 | 87 | public final class MDLV3000Writer extends DefaultChemObjectWriter { |
91 | 88 |
|
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; |
97 | 92 |
|
98 | 93 | /** |
99 | 94 | * Create a new V3000 writer, output to the provided JDK writer. |
@@ -182,7 +177,7 @@ private void writeHeader(IAtomContainer mol) throws IOException { |
182 | 177 | */ |
183 | 178 | writer.writeDirect(" "); |
184 | 179 | writer.writeDirect(getProgName()); |
185 | | - writer.writeDirect(HEADER_DATE_FORMAT.format(System.currentTimeMillis())); |
| 180 | + writer.writeDirect(new SimpleDateFormat("MMddyyHHmm").format(System.currentTimeMillis())); |
186 | 181 | final int dim = getNumberOfDimensions(mol); |
187 | 182 | if (dim != 0) { |
188 | 183 | writer.writeDirect(Integer.toString(dim)); |
@@ -646,8 +641,8 @@ else if (o2.getParents().contains(o1)) |
646 | 641 | final Point2d p1 = bracket.getFirstPoint(); |
647 | 642 | final Point2d p2 = bracket.getSecondPoint(); |
648 | 643 | 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"); |
651 | 646 | writer.write(" 0 0 0"); |
652 | 647 | writer.write(")"); |
653 | 648 | } |
@@ -859,7 +854,7 @@ private void writePrefixIfNeeded() throws IOException { |
859 | 854 | * @throws IOException low-level IO error |
860 | 855 | */ |
861 | 856 | V30LineWriter write(double num) throws IOException { |
862 | | - return write(DECIMAL_FORMAT.format(num)); |
| 857 | + return write(String.format(Locale.ROOT, "%.5f", num)); |
863 | 858 | } |
864 | 859 |
|
865 | 860 | /** |
@@ -958,5 +953,4 @@ public void customizeJob() { |
958 | 953 | fireIOSettingQuestion(setting); |
959 | 954 | } |
960 | 955 | } |
961 | | - |
962 | 956 | } |
0 commit comments