ref #9932 implement reference import (1st version) for Mexico Eflora import
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / io / mexico / MexicoEfloraReferenceImportBase.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.cdm.io.mexico;
10
11 import org.apache.log4j.Logger;
12 import org.springframework.stereotype.Component;
13
14 import eu.etaxonomy.cdm.common.DOI;
15 import eu.etaxonomy.cdm.model.agent.Team;
16 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
17 import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
18 import eu.etaxonomy.cdm.model.reference.Reference;
19 import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
20
21 /**
22 * @author a.mueller
23 * @since 08.02.2022
24 */
25 @Component
26 public abstract class MexicoEfloraReferenceImportBase extends MexicoEfloraImportBase {
27
28 public static final String NAMESPACE = "References";
29
30 private static final long serialVersionUID = -5161951752826380728L;
31 private static final Logger logger = Logger.getLogger(MexicoEfloraReferenceImportBase.class);
32
33 public MexicoEfloraReferenceImportBase(String dbTableName, String pluralString){
34 super(dbTableName, pluralString);
35 }
36
37 @Override
38 protected String getIdQuery(MexicoEfloraImportState state) {
39 String sql = " SELECT 'CONABIO-BIB-ID' "
40 + " FROM " + getTableName()
41 + " ORDER BY 'CONABIO-BIB-ID' ";
42 return sql;
43 }
44
45 @Override
46 protected String getRecordQuery(MexicoEfloraImportConfigurator config) {
47 String sqlSelect = " SELECT * ";
48 String sqlFrom = " FROM " + getTableName();
49 String sqlWhere = " WHERE ( 'CONABIO-BIB-ID' IN (" + ID_LIST_TOKEN + ") )";
50
51 String strRecordQuery =sqlSelect + " " + sqlFrom + " " + sqlWhere ;
52 return strRecordQuery;
53 }
54
55 @Override
56 protected boolean doCheck(MexicoEfloraImportState state){
57 return true;
58 }
59
60 protected void handleAuthorStr(MexicoEfloraImportState state, String authorStr, Reference ref, int refId) {
61
62 //author
63 if (isNotBlank(authorStr)) {
64 TeamOrPersonBase<?> author = Team.NewInstance();
65 //TODO parse
66 author.setTitleCache(authorStr, true);
67 //TODO is parsed really ok?
68 state.getDeduplicationHelper().getExistingAgent(author, true);
69 ref.setAuthorship(author);
70 }else {
71 logger.warn(refId + ": No author");
72 }
73 }
74
75 protected void handleYearStr(MexicoEfloraImportState state, String yearStr, Reference ref, int refId) {
76 //year
77 if (isNotBlank(yearStr)) {
78 VerbatimTimePeriod tp = TimePeriodParser.parseStringVerbatim(yearStr);
79 ref.setDatePublished(tp);
80 }else {
81 logger.warn(refId + ": No year");
82 }
83 }
84
85 protected void handleTitleStr(MexicoEfloraImportState state, String titleStr, Reference ref, int refId) {
86
87 //articleTitle
88 if (isNotBlank(titleStr)) {
89 ref.setTitle(titleStr);
90 }else {
91 logger.warn(refId + ": No title");
92 }
93 }
94
95 protected void handleUrlStr(MexicoEfloraImportState state, String urlStr, Reference ref, int refId) {
96
97 //url
98 if (isNotBlank(urlStr)) {
99 //TODO
100 // URI
101 // IJournal journal = ReferenceFactory.newJournal();
102 // journal.setTitle(journalTitleStr);
103 // ref.setInJournal(journal);
104 }else {
105 // logger.warn(refId + ": No url");
106 }
107 }
108
109 protected void handleDoiStr(MexicoEfloraImportState state, String doiStr, Reference ref, int refId) {
110
111 //doi
112 if (isNotBlank(doiStr)) {
113 DOI doi;
114 try {
115 doi = DOI.fromString(doiStr);
116 ref.setDoi(doi);
117 } catch (Exception e) {
118 logger.warn(refId + ": Doi could not be parsed: " + doiStr);
119 }
120 }
121 }
122
123 protected void handleId(MexicoEfloraImportState state, int refId, Reference ref, String detail) {
124 state.getReferenceUuidMap().put(refId, ref.getUuid());
125 state.getRefDetailMap().put(refId, detail);
126
127 ref.addImportSource(String.valueOf(refId), MexicoEfloraReferenceImportBase.NAMESPACE,
128 ref, null);
129 }
130
131 @Override
132 protected boolean isIgnore(MexicoEfloraImportState state){
133 return ! state.getConfig().isDoReferences();
134 }
135 }