1
2
3
4
5
6
7
8
9 package eu.etaxonomy.cdm.io.berlinModel.in;
10
11 import java.sql.ResultSet;
12 import java.sql.SQLException;
13 import java.util.Collection;
14 import java.util.HashMap;
15 import java.util.Map;
16
17 import org.apache.log4j.Logger;
18 import org.springframework.stereotype.Component;
19
20 import eu.etaxonomy.cdm.common.CdmUtils;
21 import eu.etaxonomy.cdm.io.berlinModel.in.validation.BerlinModelAuthorImportValidator;
22 import eu.etaxonomy.cdm.io.common.IOValidator;
23 import eu.etaxonomy.cdm.io.common.ImportHelper;
24 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
25 import eu.etaxonomy.cdm.model.agent.Person;
26 import eu.etaxonomy.cdm.model.common.CdmBase;
27 import eu.etaxonomy.cdm.model.common.Extension;
28 import eu.etaxonomy.cdm.model.common.ExtensionType;
29 import eu.etaxonomy.cdm.model.common.TimePeriod;
30
31
32
33
34
35
36
37
38
39
40 @Component
41 public class BerlinModelAuthorImport extends BerlinModelImportBase {
42 private static final Logger logger = Logger.getLogger(BerlinModelAuthorImport.class);
43
44 public static final String NAMESPACE = "Author";
45
46 private static int recordsPerLog = 5000;
47 private static final String dbTableName = "Author";
48 private static final String pluralString = "Authors";
49
50 public BerlinModelAuthorImport(){
51 super();
52 }
53
54
55
56
57
58 @Override
59 protected String getRecordQuery(BerlinModelImportConfigurator config) {
60 String strRecordQuery =
61 " SELECT * " +
62 " FROM " + dbTableName + " " +
63 " WHERE authorId IN ( " + ID_LIST_TOKEN + " )";
64 return strRecordQuery;
65 }
66
67
68
69
70
71
72
73 public boolean doPartition(ResultSetPartitioner partitioner, BerlinModelImportState state) {
74 String dbAttrName;
75 String cdmAttrName;
76 Map<Integer, Person> personMap = new HashMap<Integer, Person>();
77
78 boolean success = true;
79 ResultSet rs = partitioner.getResultSet();
80 try{
81
82 while (rs.next()){
83
84
85
86
87 int authorId = rs.getInt("AuthorId");
88
89 Person author = Person.NewInstance();
90
91 dbAttrName = "Abbrev";
92 cdmAttrName = "nomenclaturalTitle";
93 success &= ImportHelper.addStringValue(rs, author, dbAttrName, cdmAttrName);
94
95 dbAttrName = "FirstName";
96 cdmAttrName = "firstname";
97 success &= ImportHelper.addStringValue(rs, author, dbAttrName, cdmAttrName);
98
99 dbAttrName = "LastName";
100 cdmAttrName = "lastname";
101 success &= ImportHelper.addStringValue(rs, author, dbAttrName, cdmAttrName);
102
103 String dates = rs.getString("dates");
104 if (dates != null){
105 dates.trim();
106 TimePeriod lifespan = TimePeriod.parseString(dates);
107 author.setLifespan(lifespan);
108 }
109
110
111 String areaOfInterest = rs.getString("AreaOfInterest");
112 if (CdmUtils.isNotEmpty(areaOfInterest)){
113 Extension datesExtension = Extension.NewInstance(author, areaOfInterest, ExtensionType.AREA_OF_INTREREST());
114 }
115
116
117 String nomStandard = rs.getString("NomStandard");
118 if (CdmUtils.isNotEmpty(nomStandard)){
119 Extension nomStandardExtension = Extension.NewInstance(author, nomStandard, ExtensionType.NOMENCLATURAL_STANDARD());
120 }
121
122 String initials = null;
123 for (int j = 1; j <= rs.getMetaData().getColumnCount(); j++){
124 String label = rs.getMetaData().getColumnLabel(j);
125 if (label.equalsIgnoreCase("Initials") || label.equalsIgnoreCase("Kürzel")){
126 initials = rs.getString(j);
127 break;
128 }
129 }
130 if (CdmUtils.isNotEmpty(initials)){
131 Extension initialsExtension = Extension.NewInstance(author, initials, ExtensionType.ABBREVIATION());
132 }
133
134
135 doIdCreatedUpdatedNotes(state, author, rs, authorId, NAMESPACE);
136
137 personMap.put(authorId, author);
138
139 }
140
141 getAgentService().save((Collection)personMap.values());
142
143 }catch(Exception ex){
144 logger.error(ex.getMessage());
145 ex.printStackTrace();
146 success = false;
147 }
148 return success;
149 }
150
151
152
153
154 public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
155 Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
156
157 return result;
158 }
159
160
161
162
163
164 @Override
165 protected boolean doCheck(BerlinModelImportState state){
166 IOValidator<BerlinModelImportState> validator = new BerlinModelAuthorImportValidator();
167 return validator.validate(state);
168 }
169
170
171
172
173
174 @Override
175 protected String getTableName() {
176 return dbTableName;
177 }
178
179
180
181
182
183 @Override
184 public String getPluralString() {
185 return pluralString;
186 }
187
188
189
190
191 protected boolean isIgnore(BerlinModelImportState state){
192 return ! state.getConfig().isDoAuthors();
193 }
194
195 }