|
20 | 20 | ******************************************************************************/
|
21 | 21 | package massbank;
|
22 | 22 |
|
23 |
| -import java.math.BigDecimal; |
24 |
| -import java.time.Instant; |
25 |
| -import java.util.ArrayList; |
26 |
| -import java.util.Arrays; |
27 |
| -import java.util.HashMap; |
28 |
| -import java.util.LinkedHashMap; |
29 |
| -import java.util.List; |
30 |
| -import java.util.Map; |
31 |
| -import java.util.regex.Matcher; |
32 |
| -import java.util.regex.Pattern; |
| 23 | +import com.google.gson.Gson; |
| 24 | +import com.google.gson.GsonBuilder; |
| 25 | +import com.google.gson.JsonArray; |
| 26 | +import com.google.gson.JsonObject; |
| 27 | +import io.github.dan2097.jnainchi.InchiStatus; |
33 | 28 | import org.apache.commons.lang3.tuple.Pair;
|
34 | 29 | import org.apache.commons.lang3.tuple.Triple;
|
35 | 30 | import org.apache.logging.log4j.LogManager;
|
|
44 | 39 | import org.openscience.cdk.smiles.SmilesParser;
|
45 | 40 | import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
|
46 | 41 |
|
47 |
| -import com.google.gson.Gson; |
48 |
| -import com.google.gson.GsonBuilder; |
49 |
| -import com.google.gson.JsonArray; |
50 |
| -import com.google.gson.JsonObject; |
51 |
| - |
52 |
| -import io.github.dan2097.jnainchi.InchiStatus; |
| 42 | +import java.math.BigDecimal; |
| 43 | +import java.time.Instant; |
| 44 | +import java.util.*; |
| 45 | +import java.util.regex.Matcher; |
| 46 | +import java.util.regex.Pattern; |
53 | 47 |
|
54 | 48 | /**
|
55 | 49 | * This class keeps all data of a record.
|
@@ -93,42 +87,42 @@ public class Record {
|
93 | 87 | private List<Pair<String, String>> MS$DATA_PROCESSING; // optional
|
94 | 88 | private String PK$SPLASH;
|
95 | 89 | private List<String> PK$ANNOTATION_HEADER; // optional
|
96 |
| - private List<Pair<BigDecimal, List<String>>> PK$ANNOTATION; // optional |
97 |
| - private List<Triple<BigDecimal,BigDecimal,Integer>> PK$PEAK; |
| 90 | + private final List<Pair<BigDecimal, List<String>>> PK$ANNOTATION; // optional |
| 91 | + private final List<Triple<BigDecimal,BigDecimal,Integer>> PK$PEAK; |
98 | 92 |
|
99 | 93 | public Record() {
|
100 |
| - contributor = new String(); |
101 |
| - ACCESSION = new String(); |
| 94 | + contributor = ""; |
| 95 | + ACCESSION = ""; |
102 | 96 | deprecated = false;
|
103 |
| - deprecated_content = new String(); |
| 97 | + deprecated_content = ""; |
104 | 98 | RECORD_TITLE = new ArrayList<String>();
|
105 |
| - DATE = new String(); |
106 |
| - AUTHORS = new String(); |
107 |
| - LICENSE = new String(); |
108 |
| - COPYRIGHT = new String(); // optional |
109 |
| - PUBLICATION = new String(); // optional |
110 |
| - PROJECT = new String(); // optional |
| 99 | + DATE = ""; |
| 100 | + AUTHORS = ""; |
| 101 | + LICENSE = ""; |
| 102 | + COPYRIGHT = ""; // optional |
| 103 | + PUBLICATION = ""; // optional |
| 104 | + PROJECT = ""; // optional |
111 | 105 | COMMENT = new ArrayList<String>(); // optional
|
112 | 106 | CH$NAME = new ArrayList<String>();
|
113 | 107 | CH$COMPOUND_CLASS = new ArrayList<String>();
|
114 |
| - CH$FORMULA = new String(); |
| 108 | + CH$FORMULA = ""; |
115 | 109 | CH$EXACT_MASS = new BigDecimal(0);
|
116 |
| - CH$SMILES = new String(); |
117 |
| - CH$IUPAC = new String(); |
| 110 | + CH$SMILES = ""; |
| 111 | + CH$IUPAC = ""; |
118 | 112 | CH$LINK = new LinkedHashMap<String, String>(); // optional
|
119 |
| - SP$SCIENTIFIC_NAME = new String(); // optional |
120 |
| - SP$LINEAGE = new String(); // optional |
| 113 | + SP$SCIENTIFIC_NAME = ""; // optional |
| 114 | + SP$LINEAGE = ""; // optional |
121 | 115 | SP$LINK = new LinkedHashMap<String, String>(); // optional
|
122 | 116 | SP$SAMPLE = new ArrayList<String>(); // optional
|
123 |
| - AC$INSTRUMENT = new String(); |
124 |
| - AC$INSTRUMENT_TYPE = new String(); |
125 |
| - AC$MASS_SPECTROMETRY_MS_TYPE = new String(); |
126 |
| - AC$MASS_SPECTROMETRY_ION_MODE = new String(); |
| 117 | + AC$INSTRUMENT = ""; |
| 118 | + AC$INSTRUMENT_TYPE = ""; |
| 119 | + AC$MASS_SPECTROMETRY_MS_TYPE = ""; |
| 120 | + AC$MASS_SPECTROMETRY_ION_MODE = ""; |
127 | 121 | AC$MASS_SPECTROMETRY = new ArrayList<Pair<String, String>>(); // optional
|
128 | 122 | AC$CHROMATOGRAPHY = new ArrayList<Pair<String, String>>(); // optional
|
129 | 123 | MS$FOCUSED_ION = new ArrayList<Pair<String, String>>(); // optional
|
130 | 124 | MS$DATA_PROCESSING = new ArrayList<Pair<String, String>>(); // optional
|
131 |
| - PK$SPLASH = new String(); |
| 125 | + PK$SPLASH = ""; |
132 | 126 | PK$ANNOTATION_HEADER = new ArrayList<String>(); // optional
|
133 | 127 | PK$ANNOTATION = new ArrayList<Pair<BigDecimal, List<String>>>(); // optional
|
134 | 128 | PK$PEAK = new ArrayList<Triple<BigDecimal,BigDecimal,Integer>>();
|
@@ -474,54 +468,53 @@ public void PK_PEAK_ADD_LINE(Triple<BigDecimal,BigDecimal,Integer> peak) {
|
474 | 468 | public String toString() {
|
475 | 469 | StringBuilder sb = new StringBuilder();
|
476 | 470 |
|
477 |
| - sb.append("ACCESSION: " + ACCESSION() + "\n"); |
| 471 | + sb.append("ACCESSION: ").append(ACCESSION()).append("\n"); |
478 | 472 | if (DEPRECATED()) {
|
479 |
| - sb.append("DEPRECATED: "); |
480 |
| - sb.append(DEPRECATED_CONTENT()); |
| 473 | + sb.append("DEPRECATED: ").append(DEPRECATED_CONTENT()); |
481 | 474 | return sb.toString();
|
482 | 475 | }
|
483 |
| - sb.append("RECORD_TITLE: " + RECORD_TITLE1() + "\n"); |
484 |
| - sb.append("DATE: " + DATE() + "\n"); |
485 |
| - sb.append("AUTHORS: " + AUTHORS() + "\n"); |
486 |
| - sb.append("LICENSE: " + LICENSE() + "\n"); |
| 476 | + sb.append("RECORD_TITLE: ").append(RECORD_TITLE1()).append("\n"); |
| 477 | + sb.append("DATE: ").append(DATE()).append("\n"); |
| 478 | + sb.append("AUTHORS: ").append(AUTHORS()).append("\n"); |
| 479 | + sb.append("LICENSE: ").append(LICENSE()).append("\n"); |
487 | 480 | if (!"".equals(COPYRIGHT()))
|
488 |
| - sb.append("COPYRIGHT: " + COPYRIGHT() + "\n"); |
| 481 | + sb.append("COPYRIGHT: ").append(COPYRIGHT()).append("\n"); |
489 | 482 | if (!"".equals(PUBLICATION()))
|
490 |
| - sb.append("PUBLICATION: " + PUBLICATION() + "\n"); |
| 483 | + sb.append("PUBLICATION: ").append(PUBLICATION()).append("\n"); |
491 | 484 | if (!"".equals(PROJECT()))
|
492 |
| - sb.append("PROJECT: " + PROJECT() + "\n"); |
| 485 | + sb.append("PROJECT: ").append(PROJECT()).append("\n"); |
493 | 486 | for (String comment : COMMENT())
|
494 |
| - sb.append("COMMENT: " + comment + "\n"); |
| 487 | + sb.append("COMMENT: ").append(comment).append("\n"); |
495 | 488 |
|
496 | 489 | for (String ch_name : CH_NAME())
|
497 |
| - sb.append("CH$NAME: " + ch_name + "\n"); |
| 490 | + sb.append("CH$NAME: ").append(ch_name).append("\n"); |
498 | 491 | if (!CH_COMPOUND_CLASS().isEmpty()) {
|
499 |
| - sb.append("CH$COMPOUND_CLASS: " + String.join("; ", CH_COMPOUND_CLASS()) + "\n"); |
| 492 | + sb.append("CH$COMPOUND_CLASS: ").append(String.join("; ", CH_COMPOUND_CLASS())).append("\n"); |
500 | 493 | }
|
501 |
| - sb.append("CH$FORMULA: " + CH_FORMULA() + "\n"); |
502 |
| - sb.append("CH$EXACT_MASS: " + CH_EXACT_MASS() + "\n"); |
503 |
| - sb.append("CH$SMILES: " + CH_SMILES() + "\n"); |
504 |
| - sb.append("CH$IUPAC: " + CH_IUPAC() + "\n"); |
| 494 | + sb.append("CH$FORMULA: ").append(CH_FORMULA()).append("\n"); |
| 495 | + sb.append("CH$EXACT_MASS: ").append(CH_EXACT_MASS()).append("\n"); |
| 496 | + sb.append("CH$SMILES: ").append(CH_SMILES()).append("\n"); |
| 497 | + sb.append("CH$IUPAC: ").append(CH_IUPAC()).append("\n"); |
505 | 498 | CH_LINK().forEach((key,value) -> {
|
506 |
| - sb.append("CH$LINK: " + key + " " + value + "\n"); |
| 499 | + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("\n"); |
507 | 500 | });
|
508 | 501 |
|
509 | 502 | if (!"".equals(SP_SCIENTIFIC_NAME()))
|
510 |
| - sb.append("SP$SCIENTIFIC_NAME: " + SP_SCIENTIFIC_NAME() + "\n"); |
| 503 | + sb.append("SP$SCIENTIFIC_NAME: ").append(SP_SCIENTIFIC_NAME()).append("\n"); |
511 | 504 | if (!"".equals(SP_LINEAGE()))
|
512 |
| - sb.append("SP$LINEAGE: " + SP_LINEAGE() + "\n"); |
| 505 | + sb.append("SP$LINEAGE: ").append(SP_LINEAGE()).append("\n"); |
513 | 506 | SP_LINK().forEach((key,value) -> {
|
514 |
| - sb.append("SP$LINK: " + key + " " + value + "\n"); |
| 507 | + sb.append("SP$LINK: ").append(key).append(" ").append(value).append("\n"); |
515 | 508 | });
|
516 | 509 | for (String sample : SP_SAMPLE())
|
517 |
| - sb.append("SP$SAMPLE: " + sample + "\n"); |
| 510 | + sb.append("SP$SAMPLE: ").append(sample).append("\n"); |
518 | 511 |
|
519 |
| - sb.append("AC$INSTRUMENT: " + AC_INSTRUMENT() + "\n"); |
520 |
| - sb.append("AC$INSTRUMENT_TYPE: " + AC_INSTRUMENT_TYPE() + "\n"); |
521 |
| - sb.append("AC$MASS_SPECTROMETRY: MS_TYPE " + AC_MASS_SPECTROMETRY_MS_TYPE() + "\n"); |
522 |
| - sb.append("AC$MASS_SPECTROMETRY: ION_MODE " + AC_MASS_SPECTROMETRY_ION_MODE() + "\n"); |
| 512 | + sb.append("AC$INSTRUMENT: ").append(AC_INSTRUMENT()).append("\n"); |
| 513 | + sb.append("AC$INSTRUMENT_TYPE: ").append(AC_INSTRUMENT_TYPE()).append("\n"); |
| 514 | + sb.append("AC$MASS_SPECTROMETRY: MS_TYPE ").append(AC_MASS_SPECTROMETRY_MS_TYPE()).append("\n"); |
| 515 | + sb.append("AC$MASS_SPECTROMETRY: ION_MODE ").append(AC_MASS_SPECTROMETRY_ION_MODE()).append("\n"); |
523 | 516 | for (Pair<String,String> ac_mass_spectrometry : AC_MASS_SPECTROMETRY())
|
524 |
| - sb.append("AC$MASS_SPECTROMETRY: " + ac_mass_spectrometry.getKey() + " " + ac_mass_spectrometry.getValue() + "\n"); |
| 517 | + sb.append("AC$MASS_SPECTROMETRY: ").append(ac_mass_spectrometry.getKey()).append(" ").append(ac_mass_spectrometry.getValue()).append("\n"); |
525 | 518 | for (Pair<String,String> ac_chromatography : AC_CHROMATOGRAPHY())
|
526 | 519 | sb.append("AC$CHROMATOGRAPHY: " + ac_chromatography.getKey() + " " + ac_chromatography.getValue() + "\n");
|
527 | 520 | for (Pair<String,String> ms_focued_ion : MS_FOCUSED_ION())
|
@@ -580,7 +573,7 @@ public String createRecordString() {
|
580 | 573 | if (!"".equals(PUBLICATION())) {
|
581 | 574 | String pub=PUBLICATION();
|
582 | 575 | String regex_doi = "10\\.\\d{3,9}\\/[\\-\\._;\\(\\)\\/:a-zA-Z0-9]+[a-zA-Z0-9]";
|
583 |
| - String regex_pmid = "PMID:[ ]?\\d{8,8}"; |
| 576 | + String regex_pmid = "PMID:[ ]?\\d{8}"; |
584 | 577 | Pattern pattern_doi = Pattern.compile(".*" + "(" + regex_doi+ ")" + ".*");
|
585 | 578 | Pattern pattern_pmid = Pattern.compile(".*" + "(" + regex_pmid + ")" + ".*");
|
586 | 579 | Matcher matcher_doi = pattern_doi.matcher(pub);
|
@@ -841,7 +834,7 @@ public JsonArray createStructuredDataJsonArray() {
|
841 | 834 | chemicalSubstance.addProperty("url", "https://massbank.eu/MassBank/RecordDisplay?id="+ACCESSION());
|
842 | 835 | chemicalSubstance.addProperty("chemicalComposition", CH_FORMULA());
|
843 | 836 | if (CH_NAME().size() == 1) chemicalSubstance.addProperty("alternateName", CH_NAME().get(0));
|
844 |
| - else if (CH_NAME().size() >= 1) chemicalSubstance.add("alternateName", gson.toJsonTree(CH_NAME())); |
| 837 | + else if (!CH_NAME().isEmpty()) chemicalSubstance.add("alternateName", gson.toJsonTree(CH_NAME())); |
845 | 838 |
|
846 | 839 | JsonArray molecularEntitys = new JsonArray();
|
847 | 840 |
|
@@ -901,25 +894,11 @@ public JsonObject createPeakListData() {
|
901 | 894 | result.add("peaks", peaklist);
|
902 | 895 | return result;
|
903 | 896 | }
|
904 |
| - |
905 |
| - public static class Structure{ |
906 |
| - public final String CH_SMILES; |
907 |
| - public final String CH_IUPAC; |
908 |
| - public Structure(String CH_SMILES, String CH_IUPAC) { |
909 |
| - this.CH_SMILES = CH_SMILES; |
910 |
| - this.CH_IUPAC = CH_IUPAC; |
911 |
| - } |
| 897 | + |
| 898 | + public record Structure(String CH_SMILES, String CH_IUPAC) { |
912 | 899 | }
|
913 |
| - |
914 |
| - public static class Contributor{ |
915 |
| - public final String ACRONYM; |
916 |
| - public final String SHORT_NAME; |
917 |
| - public final String FULL_NAME; |
918 |
| - public Contributor(String ACRONYM, String SHORT_NAME, String FULL_NAME) { |
919 |
| - this.ACRONYM = ACRONYM; |
920 |
| - this.SHORT_NAME = SHORT_NAME; |
921 |
| - this.FULL_NAME = FULL_NAME; |
922 |
| - } |
| 900 | + |
| 901 | + public record Contributor(String ACRONYM, String SHORT_NAME, String FULL_NAME) { |
923 | 902 | }
|
924 | 903 |
|
925 | 904 | private static Map<String, String> listToMap(List<Pair<String, String>> list) {
|
|
0 commit comments