diff --git a/MassBank-Project/MassBank-lib/src/main/java/massbank/Record.java b/MassBank-Project/MassBank-lib/src/main/java/massbank/Record.java index 832f046f..e8592a3c 100644 --- a/MassBank-Project/MassBank-lib/src/main/java/massbank/Record.java +++ b/MassBank-Project/MassBank-lib/src/main/java/massbank/Record.java @@ -65,7 +65,7 @@ public class Record { private String COPYRIGHT; // optional private String PUBLICATION; // optional private String PROJECT; // optional - private List COMMENT = new ArrayList(); // optional + private List COMMENT; // optional private List CH$NAME; private List CH$COMPOUND_CLASS; // optional private String CH$FORMULA; @@ -95,37 +95,37 @@ public Record() { ACCESSION = ""; deprecated = false; deprecated_content = ""; - RECORD_TITLE = new ArrayList(); + RECORD_TITLE = new ArrayList<>(); DATE = ""; AUTHORS = ""; LICENSE = ""; COPYRIGHT = ""; // optional PUBLICATION = ""; // optional PROJECT = ""; // optional - COMMENT = new ArrayList(); // optional - CH$NAME = new ArrayList(); - CH$COMPOUND_CLASS = new ArrayList(); + COMMENT = new ArrayList<>(); // optional + CH$NAME = new ArrayList<>(); + CH$COMPOUND_CLASS = new ArrayList<>(); CH$FORMULA = ""; CH$EXACT_MASS = new BigDecimal(0); CH$SMILES = ""; CH$IUPAC = ""; - CH$LINK = new LinkedHashMap(); // optional + CH$LINK = new LinkedHashMap<>(); // optional SP$SCIENTIFIC_NAME = ""; // optional SP$LINEAGE = ""; // optional - SP$LINK = new LinkedHashMap(); // optional - SP$SAMPLE = new ArrayList(); // optional + SP$LINK = new LinkedHashMap<>(); // optional + SP$SAMPLE = new ArrayList<>(); // optional AC$INSTRUMENT = ""; AC$INSTRUMENT_TYPE = ""; AC$MASS_SPECTROMETRY_MS_TYPE = ""; AC$MASS_SPECTROMETRY_ION_MODE = ""; - AC$MASS_SPECTROMETRY = new ArrayList>(); // optional - AC$CHROMATOGRAPHY = new ArrayList>(); // optional - MS$FOCUSED_ION = new ArrayList>(); // optional - MS$DATA_PROCESSING = new ArrayList>(); // optional + AC$MASS_SPECTROMETRY = new ArrayList<>(); // optional + AC$CHROMATOGRAPHY = new ArrayList<>(); // optional + MS$FOCUSED_ION = new ArrayList<>(); // optional + MS$DATA_PROCESSING = new ArrayList<>(); // optional PK$SPLASH = ""; - PK$ANNOTATION_HEADER = new ArrayList(); // optional - PK$ANNOTATION = new ArrayList>>(); // optional - PK$PEAK = new ArrayList>(); + PK$ANNOTATION_HEADER = new ArrayList<>(); // optional + PK$ANNOTATION = new ArrayList<>(); // optional + PK$PEAK = new ArrayList<>(); } public String CONTRIBUTOR() { @@ -178,7 +178,7 @@ public void RECORD_TITLE(List value) { RECORD_TITLE = value; } public void RECORD_TITLE1(String value) { - RECORD_TITLE = new ArrayList(Arrays.asList(value.split("; "))); + RECORD_TITLE = new ArrayList<>(Arrays.asList(value.split("; "))); } @@ -240,7 +240,7 @@ public List COMMENT() { return COMMENT; } public void COMMENT(List value) { - COMMENT=new ArrayList(value); + COMMENT= new ArrayList<>(value); } @@ -248,7 +248,7 @@ public List CH_NAME() { return CH$NAME; } public void CH_NAME(List value) { - CH$NAME=new ArrayList(value); + CH$NAME= new ArrayList<>(value); } @@ -256,7 +256,7 @@ public List CH_COMPOUND_CLASS() { return CH$COMPOUND_CLASS; } public void CH_COMPOUND_CLASS(List value) { - CH$COMPOUND_CLASS=new ArrayList(value); + CH$COMPOUND_CLASS= new ArrayList<>(value); } /** @@ -293,7 +293,7 @@ public IAtomContainer CH_SMILES_obj() { try { return new SmilesParser(SilentChemObjectBuilder.getInstance()).parseSmiles(CH$SMILES); } catch (InvalidSmilesException e) { - logger.error("Structure generation from SMILES failed. Error: \""+ e.getMessage() + "\" for \"" + CH$SMILES + "\"."); + logger.error("Structure generation from SMILES failed. Error: {} for {}.", e.getMessage(), CH$SMILES); return SilentChemObjectBuilder.getInstance().newAtomContainer(); } } @@ -313,16 +313,16 @@ public IAtomContainer CH_IUPAC_obj() { InchiStatus ret = intostruct.getStatus(); if (ret == InchiStatus.WARNING) { // Structure generated, but with warning message - logger.warn("InChI warning: \"" + intostruct.getMessage() + "\" converting \"" + CH$IUPAC + "\"."); + logger.warn("InChI warning: {} converting {}.", intostruct.getMessage(), CH$IUPAC); } else if (ret == InchiStatus.ERROR) { // Structure generation failed - logger.error("Structure generation failed: " + intostruct.getMessage() + " converting \"" + CH$IUPAC + "\"."); + logger.error("Structure generation failed: {} converting {}.", intostruct.getMessage(), CH$IUPAC); return SilentChemObjectBuilder.getInstance().newAtomContainer(); } return intostruct.getAtomContainer(); } catch (CDKException e) { - logger.error("Structure generation from InChI failed. Error: \""+ e.getMessage() + "\" for \"" + CH$IUPAC + "\"."); + logger.error("Structure generation from InChI failed. Error: {} for {}.", e.getMessage(), CH$IUPAC); return SilentChemObjectBuilder.getInstance().newAtomContainer(); } } @@ -363,7 +363,7 @@ public List SP_SAMPLE() { return SP$SAMPLE; } public void SP_SAMPLE(List value) { - SP$SAMPLE=new ArrayList(value); + SP$SAMPLE= new ArrayList<>(value); } public String AC_INSTRUMENT() { @@ -401,7 +401,7 @@ public Map AC_MASS_SPECTROMETRY_asMap() { return listToMap(AC$MASS_SPECTROMETRY); } public void AC_MASS_SPECTROMETRY(List> value) { - AC$MASS_SPECTROMETRY=new ArrayList>(value); + AC$MASS_SPECTROMETRY= new ArrayList<>(value); } public List> AC_CHROMATOGRAPHY() { @@ -411,7 +411,7 @@ public Map AC_CHROMATOGRAPHY_asMap() { return listToMap(AC$CHROMATOGRAPHY); } public void AC_CHROMATOGRAPHY(List> value) { - AC$CHROMATOGRAPHY=new ArrayList>(value); + AC$CHROMATOGRAPHY= new ArrayList<>(value); } public List> MS_FOCUSED_ION() { @@ -421,14 +421,14 @@ public Map MS_FOCUSED_ION_asMap() { return listToMap(MS$FOCUSED_ION); } public void MS_FOCUSED_ION(List> value) { - MS$FOCUSED_ION=new ArrayList>(value); + MS$FOCUSED_ION= new ArrayList<>(value); } public List> MS_DATA_PROCESSING() { return MS$DATA_PROCESSING; } public void MS_DATA_PROCESSING(List> value) { - MS$DATA_PROCESSING=new ArrayList>(value); + MS$DATA_PROCESSING= new ArrayList<>(value); } public String PK_SPLASH() { @@ -442,7 +442,7 @@ public List PK_ANNOTATION_HEADER() { return PK$ANNOTATION_HEADER; } public void PK_ANNOTATION_HEADER(List value) { - PK$ANNOTATION_HEADER=new ArrayList(value); + PK$ANNOTATION_HEADER= new ArrayList<>(value); } // PK_ANNOTATION is a two-dimensional List @@ -495,17 +495,13 @@ public String toString() { sb.append("CH$EXACT_MASS: ").append(CH_EXACT_MASS()).append("\n"); sb.append("CH$SMILES: ").append(CH_SMILES()).append("\n"); sb.append("CH$IUPAC: ").append(CH_IUPAC()).append("\n"); - CH_LINK().forEach((key,value) -> { - sb.append("CH$LINK: ").append(key).append(" ").append(value).append("\n"); - }); + CH_LINK().forEach((key,value) -> sb.append("CH$LINK: ").append(key).append(" ").append(value).append("\n")); if (!"".equals(SP_SCIENTIFIC_NAME())) sb.append("SP$SCIENTIFIC_NAME: ").append(SP_SCIENTIFIC_NAME()).append("\n"); if (!"".equals(SP_LINEAGE())) sb.append("SP$LINEAGE: ").append(SP_LINEAGE()).append("\n"); - SP_LINK().forEach((key,value) -> { - sb.append("SP$LINK: ").append(key).append(" ").append(value).append("\n"); - }); + SP_LINK().forEach((key,value) -> sb.append("SP$LINK: ").append(key).append(" ").append(value).append("\n")); for (String sample : SP_SAMPLE()) sb.append("SP$SAMPLE: ").append(sample).append("\n"); @@ -516,30 +512,30 @@ public String toString() { for (Pair ac_mass_spectrometry : AC_MASS_SPECTROMETRY()) sb.append("AC$MASS_SPECTROMETRY: ").append(ac_mass_spectrometry.getKey()).append(" ").append(ac_mass_spectrometry.getValue()).append("\n"); for (Pair ac_chromatography : AC_CHROMATOGRAPHY()) - sb.append("AC$CHROMATOGRAPHY: " + ac_chromatography.getKey() + " " + ac_chromatography.getValue() + "\n"); + sb.append("AC$CHROMATOGRAPHY: ").append(ac_chromatography.getKey()).append(" ").append(ac_chromatography.getValue()).append("\n"); for (Pair ms_focued_ion : MS_FOCUSED_ION()) - sb.append("MS$FOCUSED_ION: " + ms_focued_ion.getKey() + " " + ms_focued_ion.getValue() + "\n"); + sb.append("MS$FOCUSED_ION: ").append(ms_focued_ion.getKey()).append(" ").append(ms_focued_ion.getValue()).append("\n"); for (Pair ms_data_processing : MS_DATA_PROCESSING()) - sb.append("MS$DATA_PROCESSING: " + ms_data_processing.getKey() + " " + ms_data_processing.getValue() + "\n"); + sb.append("MS$DATA_PROCESSING: ").append(ms_data_processing.getKey()).append(" ").append(ms_data_processing.getValue()).append("\n"); - sb.append("PK$SPLASH: " + PK_SPLASH() + "\n"); + sb.append("PK$SPLASH: ").append(PK_SPLASH()).append("\n"); if (!PK_ANNOTATION_HEADER().isEmpty()) { sb.append("PK$ANNOTATION:"); for (String annotation_header_item : PK_ANNOTATION_HEADER()) - sb.append(" " + annotation_header_item); + sb.append(" ").append(annotation_header_item); sb.append("\n"); for (Pair> annotation_line : PK_ANNOTATION()) { - sb.append(" " + annotation_line.getLeft() + " " + String.join(" ", annotation_line.getRight()) + "\n"); + sb.append(" ").append(annotation_line.getLeft()).append(" ").append(String.join(" ", annotation_line.getRight())).append("\n"); } } - sb.append("PK$NUM_PEAK: " + PK_NUM_PEAK() + "\n"); + sb.append("PK$NUM_PEAK: ").append(PK_NUM_PEAK()).append("\n"); sb.append("PK$PEAK: m/z int. rel.int.\n"); for (Triple peak : PK_PEAK()) { String intensity1 = peak.getMiddle().toPlainString(); String intensity2 = peak.getMiddle().toString(); String intensity = (intensity1.length() < intensity2.length() ) ? intensity1 : intensity2; - sb.append(" " + peak.getLeft() + " " + intensity + " " + peak.getRight() + "\n"); + sb.append(" ").append(peak.getLeft()).append(" ").append(intensity).append(" ").append(peak.getRight()).append("\n"); } sb.append("//\n"); @@ -548,161 +544,162 @@ public String toString() { public String createRecordString() { StringBuilder sb = new StringBuilder(); - - sb.append("ACCESSION: " + ACCESSION() + "
\n"); - sb.append("RECORD_TITLE: " + RECORD_TITLE1() + "
\n"); - sb.append("DATE: " + DATE() + "
\n"); - sb.append("AUTHORS: " + AUTHORS() + "
\n"); - if (LICENSE().equals("CC0")) { - sb.append("LICENSE: CC0
\n"); - } else if (LICENSE().equals("CC BY")) { - sb.append("LICENSE: CC BY
\n"); - } else if (LICENSE().equals("CC BY-SA")) { - sb.append("LICENSE: CC BY-SA
\n"); - } else if (LICENSE().equals("CC BY-NC")) { - sb.append("LICENSE: CC BY-NC
\n"); - } else if (LICENSE().equals("CC BY-NC-SA")) { - sb.append("LICENSE: CC BY-NC-SA
\n"); - } else if (LICENSE().equals("dl-de/by-2-0")) { - sb.append("LICENSE: dl-de/by-2-0
\n"); - } else { - sb.append("LICENSE: "+ LICENSE() + "
\n"); - } - if (!"".equals(COPYRIGHT())) - sb.append("COPYRIGHT: " + COPYRIGHT() + "
\n"); - if (!"".equals(PUBLICATION())) { - String pub=PUBLICATION(); - String regex_doi = "10\\.\\d{3,9}\\/[\\-\\._;\\(\\)\\/:a-zA-Z0-9]+[a-zA-Z0-9]"; - String regex_pmid = "PMID:[ ]?\\d{8}"; - Pattern pattern_doi = Pattern.compile(".*" + "(" + regex_doi+ ")" + ".*"); - Pattern pattern_pmid = Pattern.compile(".*" + "(" + regex_pmid + ")" + ".*"); - Matcher matcher_doi = pattern_doi.matcher(pub); - Matcher matcher_pmid = pattern_pmid.matcher(pub); - if(matcher_doi.matches()){ - //link doi - String doi=pub.substring(matcher_doi.start(1), matcher_doi.end(1)); - pub.replaceAll(doi, "" + doi + ""); - } else if (matcher_pmid.matches()) { - String PMID = pub.substring(matcher_pmid.start(1), matcher_pmid.end(1)); - String id = PMID.substring("PMID:".length()).trim(); - pub = pub.replaceAll(PMID, "" + PMID + ""); - } - sb.append("PUBLICATION: " + pub + "
\n"); - } - if (!"".equals(PROJECT())) - sb.append("PROJECT: " + PROJECT() + "
\n"); + + sb.append("ACCESSION: ").append(ACCESSION()).append("
\n") + .append("RECORD_TITLE: ").append(RECORD_TITLE1()).append("
\n") + .append("DATE: ").append(DATE()).append("
\n") + .append("AUTHORS: ").append(AUTHORS()).append("
\n") + .append("LICENSE: ").append(getLicenseLink()).append("
\n"); + if (!COPYRIGHT().isEmpty()) + sb.append("COPYRIGHT: ").append(COPYRIGHT()).append("
\n"); + if (!PUBLICATION().isEmpty()) + sb.append("PUBLICATION: ").append(getPublicationLink()).append("
\n"); + if (!PROJECT().isEmpty()) + sb.append("PROJECT: ").append(PROJECT()).append("
\n"); for (String comment : COMMENT()) - sb.append("COMMENT: " + comment + "
\n"); + sb.append("COMMENT: ").append(comment).append("
\n"); sb.append("
\n"); for (String ch_name : CH_NAME()) - sb.append("CH$NAME: " + ch_name + "
\n"); - sb.append("CH$COMPOUND_CLASS: " + String.join("; ", CH_COMPOUND_CLASS()) + "
\n"); - sb.append("CH$FORMULA: " + CH_FORMULA1() + "
\n"); - sb.append("CH$EXACT_MASS: " + CH_EXACT_MASS() + "
\n"); - sb.append("CH$SMILES: " + CH_SMILES() + "
\n"); - sb.append("CH$IUPAC: " + CH_IUPAC() + "
\n"); + sb.append("CH$NAME: ").append(ch_name).append("
\n"); + sb.append("CH$COMPOUND_CLASS: ").append(String.join("; ", CH_COMPOUND_CLASS())).append("
\n"); + sb.append("CH$FORMULA: ").append(CH_FORMULA1()).append("
\n"); + sb.append("CH$EXACT_MASS: ").append(CH_EXACT_MASS()).append("
\n"); + sb.append("CH$SMILES: ").append(CH_SMILES()).append("
\n"); + sb.append("CH$IUPAC: ").append(CH_IUPAC()).append("
\n"); CH_LINK().forEach((key,value) -> { switch(key){ case "CAS": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "CAYMAN": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "CHEBI": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "CHEMSPIDER": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "COMPTOX": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "HMDB": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "INCHIKEY": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "KAPPAVIEW": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "KEGG": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "KNAPSACK": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "LIPIDBANK": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "LIPIDMAPS": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "NIKKAJI": - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; case "PUBCHEM":{ - if(value.startsWith("CID:")) sb.append("CH$LINK: " + key + " " + value + "
\n"); - else if(value.startsWith("SID:")) sb.append("CH$LINK: " + key + " " + value + "
\n"); - else sb.append("CH$LINK: " + key + " " + value + "
\n"); + if(value.startsWith("CID:")) sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); + else if(value.startsWith("SID:")) sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); + else sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); break; } default: - sb.append("CH$LINK: " + key + " " + value + "
\n"); + sb.append("CH$LINK: ").append(key).append(" ").append(value).append("
\n"); } }); if (!"".equals(SP_SCIENTIFIC_NAME())) - sb.append("SP$SCIENTIFIC_NAME: " + SP_SCIENTIFIC_NAME() + "
\n"); + sb.append("SP$SCIENTIFIC_NAME: ").append(SP_SCIENTIFIC_NAME()).append("
\n"); if (!"".equals(SP_LINEAGE())) - sb.append("SP$LINEAGE: " + SP_LINEAGE() + "
\n"); - SP_LINK().forEach((key,value) -> { - sb.append("SP$LINK: " + key + " " + value + "
\n"); - }); + sb.append("SP$LINEAGE: ").append(SP_LINEAGE()).append("
\n"); + SP_LINK().forEach((key,value) -> sb.append("SP$LINK: ").append(key).append(" ").append(value).append("
\n")); for (String sample : SP_SAMPLE()) - sb.append("SP$SAMPLE: " + sample + "
\n"); + sb.append("SP$SAMPLE: ").append(sample).append("
\n"); sb.append("
\n"); - sb.append("AC$INSTRUMENT: " + AC_INSTRUMENT() + "
\n"); - sb.append("AC$INSTRUMENT_TYPE: " + AC_INSTRUMENT_TYPE() + "
\n"); - sb.append("AC$MASS_SPECTROMETRY: MS_TYPE " + AC_MASS_SPECTROMETRY_MS_TYPE() + "
\n"); - sb.append("AC$MASS_SPECTROMETRY: ION_MODE " + AC_MASS_SPECTROMETRY_ION_MODE() + "
\n"); + sb.append("AC$INSTRUMENT: ").append(AC_INSTRUMENT()).append("
\n"); + sb.append("AC$INSTRUMENT_TYPE: ").append(AC_INSTRUMENT_TYPE()).append("
\n"); + sb.append("AC$MASS_SPECTROMETRY: MS_TYPE ").append(AC_MASS_SPECTROMETRY_MS_TYPE()).append("
\n"); + sb.append("AC$MASS_SPECTROMETRY: ION_MODE ").append(AC_MASS_SPECTROMETRY_ION_MODE()).append("
\n"); for (Pair ac_mass_spectrometry : AC_MASS_SPECTROMETRY()) - sb.append("AC$MASS_SPECTROMETRY: " + ac_mass_spectrometry.getKey() + " " + ac_mass_spectrometry.getValue() + "
\n"); + sb.append("AC$MASS_SPECTROMETRY: ").append(ac_mass_spectrometry.getKey()).append(" ").append(ac_mass_spectrometry.getValue()).append("
\n"); for (Pair ac_chromatography : AC_CHROMATOGRAPHY()) - sb.append("AC$CHROMATOGRAPHY: " + ac_chromatography.getKey() + " " + ac_chromatography.getValue() + "
\n"); + sb.append("AC$CHROMATOGRAPHY: ").append(ac_chromatography.getKey()).append(" ").append(ac_chromatography.getValue()).append("
\n"); sb.append("
\n"); for (Pair ms_focued_ion : MS_FOCUSED_ION()) - sb.append("MS$FOCUSED_ION: " + ms_focued_ion.getKey() + " " + ms_focued_ion.getValue() + "
\n"); + sb.append("MS$FOCUSED_ION: ").append(ms_focued_ion.getKey()).append(" ").append(ms_focued_ion.getValue()).append("
\n"); for (Pair ms_data_processing : MS_DATA_PROCESSING()) - sb.append("MS$DATA_PROCESSING: " + ms_data_processing.getKey() + " " + ms_data_processing.getValue() + "
\n"); + sb.append("MS$DATA_PROCESSING: ").append(ms_data_processing.getKey()).append(" ").append(ms_data_processing.getValue()).append("
\n"); if (!MS_FOCUSED_ION().isEmpty() || !MS_DATA_PROCESSING().isEmpty()) sb.append("
\n"); - sb.append("PK$SPLASH: " + PK_SPLASH() + "
\n"); + sb.append("PK$SPLASH: ").append(PK_SPLASH()).append("
\n"); if (!PK_ANNOTATION_HEADER().isEmpty()) { sb.append("PK$ANNOTATION:"); for (String annotation_header_item : PK_ANNOTATION_HEADER()) - sb.append(" " + annotation_header_item); + sb.append(" ").append(annotation_header_item); sb.append("
\n"); for (Pair> annotation_line : PK$ANNOTATION) { - sb.append("  " + annotation_line.getLeft() + " " + String.join(" ", annotation_line.getRight()) + "
\n"); + sb.append("  ").append(annotation_line.getLeft()).append(" ").append(String.join(" ", annotation_line.getRight())).append("
\n"); } } - sb.append("PK$NUM_PEAK: " + PK_NUM_PEAK() + "
\n"); + sb.append("PK$NUM_PEAK: ").append(PK_NUM_PEAK()).append("
\n"); sb.append("PK$PEAK: m/z int. rel.int.
\n"); for (Triple peak : PK_PEAK()) { - sb.append("  " + peak.getLeft() + " " + peak.getMiddle() + " " + peak.getRight() + "
\n"); + sb.append("  ").append(peak.getLeft()).append(" ").append(peak.getMiddle()).append(" ").append(peak.getRight()).append("
\n"); } sb.append("//"); return sb.toString(); } - + + private String getLicenseLink() { + return switch (LICENSE()) { + case "CC0" -> "CC0"; + case "CC BY" -> "CC BY"; + case "CC BY-SA" -> + "CC BY-SA"; + case "CC BY-NC" -> + "CC BY-NC"; + case "CC BY-NC-SA" -> + "CC BY-NC-SA"; + case "dl-de/by-2-0" -> "dl-de/by-2-0"; + default -> LICENSE(); + }; + } + + private String getPublicationLink() { + String pub = PUBLICATION(); + String regex_doi = "10\\.\\d{3,9}/[\\-._;()/:a-zA-Z0-9]+[a-zA-Z0-9]"; + String regex_pmid = "PMID: ?\\d{8}"; + Pattern pattern_doi = Pattern.compile(".*(" + regex_doi + ").*"); + Pattern pattern_pmid = Pattern.compile(".*(" + regex_pmid + ").*"); + Matcher matcher_doi = pattern_doi.matcher(pub); + Matcher matcher_pmid = pattern_pmid.matcher(pub); + if (matcher_doi.matches()) { + String doi = pub.substring(matcher_doi.start(1), matcher_doi.end(1)); + pub = pub.replace(doi, "" + doi + ""); + } else if (matcher_pmid.matches()) { + String PMID = pub.substring(matcher_pmid.start(1), matcher_pmid.end(1)); + String id = PMID.substring("PMID:".length()).trim(); + pub = pub.replace(PMID, "" + PMID + ""); + } + return pub; + } + // [ // { // "identifier": "LQB00001", @@ -775,15 +772,16 @@ public JsonArray createStructuredDataJsonArray() { JsonArray keywords = new JsonArray(); keywords.add(gson.fromJson( - "{ \"@type\": \"DefinedTerm\"," - + "\"name\": \"Mass spectrometry data\"," - + "\"url\": \"http://edamontology.org/data_2536\"," - + "\"termCode\": \"data_2536\"," - + "\"inDefinedTermSet\": {" - + "\"@type\": \"DefinedTermSet\",\n" - + "\"name\": \"Bioinformatics operations, data types, formats, identifiers and topics\",\n" - + "\"url\": \"http://edamontology.org\"\n" - + "} }", JsonObject.class)); + """ + { "@type": "DefinedTerm",\ + "name": "Mass spectrometry data",\ + "url": "http://edamontology.org/data_2536",\ + "termCode": "data_2536",\ + "inDefinedTermSet": {\ + "@type": "DefinedTermSet", + "name": "Bioinformatics operations, data types, formats, identifiers and topics", + "url": "http://edamontology.org" + } }""", JsonObject.class)); dataset.add("keywords", keywords); if (LICENSE().equals("CC0")) { @@ -799,7 +797,12 @@ public JsonArray createStructuredDataJsonArray() { } else if (LICENSE().equals("dl-de/by-2-0")) { dataset.addProperty("license", "https://www.govdata.de/dl-de/by-2-0"); } - + + JsonObject about = new JsonObject(); + about.addProperty("@type", "ChemicalSubstance"); + about.addProperty("@id", "https://massbank.eu/MassBank/RecordDisplay?id=" + ACCESSION() + "#ChemicalSubstance"); + dataset.add("about", about); + dataset.addProperty("url", "https://massbank.eu/MassBank/RecordDisplay?id="+ACCESSION()); dataset.addProperty("datePublished", DATE1()[0].replace(".","-")); dataset.addProperty("citation", PUBLICATION()); @@ -857,7 +860,12 @@ public JsonArray createStructuredDataJsonArray() { molecularEntitys.add(molecularEntity); chemicalSubstance.add("hasBioChemEntityPart", molecularEntitys); - + + JsonObject subjectOf = new JsonObject(); + subjectOf.addProperty("@type", "Dataset"); + subjectOf.addProperty("@id", "https://massbank.eu/MassBank/RecordDisplay?id="+ACCESSION()+"#Dataset"); + chemicalSubstance.add("subjectOf", subjectOf); + // put MolecularEntity and Dataset together JsonArray structuredData = new JsonArray(); structuredData.add(dataset); @@ -902,7 +910,7 @@ public record Contributor(String ACRONYM, String SHORT_NAME, String FULL_NAME) { } private static Map listToMap(List> list) { - Map map = new HashMap(); + Map map = new HashMap<>(); for (Pair pair : list) map.put(pair.getKey(), pair.getValue()); return map; }