Revision b463135c
Added by Patrick Plitzner about 8 years ago
app-import/src/main/java/eu/etaxonomy/cdm/io/redlist/gefaesspflanzen/RedListGefaesspflanzenImportNames.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 |
|
|
10 |
package eu.etaxonomy.cdm.io.redlist.gefaesspflanzen; |
|
11 |
|
|
12 |
import java.sql.ResultSet; |
|
13 |
import java.sql.SQLException; |
|
14 |
import java.util.HashMap; |
|
15 |
import java.util.HashSet; |
|
16 |
import java.util.Map; |
|
17 |
import java.util.Set; |
|
18 |
|
|
19 |
import org.apache.log4j.Logger; |
|
20 |
import org.springframework.stereotype.Component; |
|
21 |
|
|
22 |
import eu.etaxonomy.cdm.io.common.DbImportBase; |
|
23 |
import eu.etaxonomy.cdm.io.common.IPartitionedIO; |
|
24 |
import eu.etaxonomy.cdm.io.common.ImportHelper; |
|
25 |
import eu.etaxonomy.cdm.io.common.ResultSetPartitioner; |
|
26 |
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException; |
|
27 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
|
28 |
import eu.etaxonomy.cdm.model.name.BotanicalName; |
|
29 |
import eu.etaxonomy.cdm.model.name.Rank; |
|
30 |
import eu.etaxonomy.cdm.model.name.TaxonNameBase; |
|
31 |
|
|
32 |
/** |
|
33 |
* @author a.mueller |
|
34 |
* @created 05.01.2016 |
|
35 |
*/ |
|
36 |
|
|
37 |
@Component |
|
38 |
@SuppressWarnings("serial") |
|
39 |
public class RedListGefaesspflanzenImportNames extends DbImportBase<RedListGefaesspflanzenImportState, RedListGefaesspflanzenImportConfigurator> { |
|
40 |
private static final Logger logger = Logger.getLogger(RedListGefaesspflanzenImportNames.class); |
|
41 |
|
|
42 |
private static final String tableName = "Rote Liste Gefäßpflanzen"; |
|
43 |
|
|
44 |
private static final String pluralString = "names"; |
|
45 |
|
|
46 |
private static final String TAXON_NAMESPACE = "name"; |
|
47 |
|
|
48 |
public RedListGefaesspflanzenImportNames() { |
|
49 |
super(tableName, pluralString); |
|
50 |
} |
|
51 |
|
|
52 |
@Override |
|
53 |
protected String getIdQuery(RedListGefaesspflanzenImportState state) { |
|
54 |
return "SELECT NAMNR " |
|
55 |
+ "FROM V_TAXATLAS_D20_EXPORT t " |
|
56 |
+ " ORDER BY NAMNR"; |
|
57 |
} |
|
58 |
|
|
59 |
@Override |
|
60 |
protected String getRecordQuery(RedListGefaesspflanzenImportConfigurator config) { |
|
61 |
String result = " SELECT * " |
|
62 |
+ " FROM V_TAXATLAS_D20_EXPORT t " |
|
63 |
+ " WHERE t.NAMNR IN (@IDSET)"; |
|
64 |
result = result.replace("@IDSET", IPartitionedIO.ID_LIST_TOKEN); |
|
65 |
return result; |
|
66 |
} |
|
67 |
|
|
68 |
@Override |
|
69 |
protected void doInvoke(RedListGefaesspflanzenImportState state) { |
|
70 |
super.doInvoke(state); |
|
71 |
} |
|
72 |
|
|
73 |
|
|
74 |
@Override |
|
75 |
public boolean doPartition(ResultSetPartitioner partitioner, RedListGefaesspflanzenImportState state) { |
|
76 |
ResultSet rs = partitioner.getResultSet(); |
|
77 |
Set<TaxonNameBase> taxaToSave = new HashSet<TaxonNameBase>(); |
|
78 |
try { |
|
79 |
while (rs.next()){ |
|
80 |
makeSingleName(state, rs, taxaToSave); |
|
81 |
|
|
82 |
} |
|
83 |
} catch (SQLException e) { |
|
84 |
e.printStackTrace(); |
|
85 |
} |
|
86 |
|
|
87 |
getNameService().saveOrUpdate(taxaToSave); |
|
88 |
return true; |
|
89 |
} |
|
90 |
|
|
91 |
private void makeSingleName(RedListGefaesspflanzenImportState state, ResultSet rs, Set<TaxonNameBase> namesToSave) |
|
92 |
throws SQLException { |
|
93 |
long id = rs.getLong("NAMNR"); |
|
94 |
String taxNameString = rs.getString("TAXNAME"); |
|
95 |
String rangString = rs.getString("RANG"); |
|
96 |
String ep1String = rs.getString("EPI1"); |
|
97 |
String ep2String = rs.getString("EPI2"); |
|
98 |
String ep3String = rs.getString("EPI3"); |
|
99 |
String nomZusatzString = rs.getString("NOM_ZUSATZ"); |
|
100 |
String zusatzString = rs.getString("ZUSATZ"); |
|
101 |
|
|
102 |
|
|
103 |
BotanicalName name = BotanicalName.NewInstance(makeRank(state, rangString)); |
|
104 |
|
|
105 |
//id |
|
106 |
ImportHelper.setOriginalSource(name, state.getTransactionalSourceReference(), id, TAXON_NAMESPACE); |
|
107 |
} |
|
108 |
|
|
109 |
private Rank makeRank(RedListGefaesspflanzenImportState state, String rankStr) { |
|
110 |
Rank rank = null; |
|
111 |
try { |
|
112 |
rank = state.getTransformer().getRankByKey(rankStr); |
|
113 |
} catch (UndefinedTransformerMethodException e) { |
|
114 |
e.printStackTrace(); |
|
115 |
} |
|
116 |
return rank; |
|
117 |
} |
|
118 |
|
|
119 |
|
|
120 |
|
|
121 |
@Override |
|
122 |
public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs, |
|
123 |
RedListGefaesspflanzenImportState state) { |
|
124 |
Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<>(); |
|
125 |
// Map<String, TeamOrPersonBase<?>> authorMap = new HashMap<>(); |
|
126 |
// Set<String> authorKombSet = new HashSet<>(); |
|
127 |
// Set<String> referenceIdSet = new HashSet<String>(); |
|
128 |
// |
|
129 |
// try { |
|
130 |
// while (rs.next()){ |
|
131 |
// String authorStr = rs.getString("tax_author_name"); |
|
132 |
// authorKombSet.add(authorStr); |
|
133 |
// handleForeignKey(rs, referenceIdSet, "tax_document"); |
|
134 |
// } |
|
135 |
// } catch (SQLException e) { |
|
136 |
// e.printStackTrace(); |
|
137 |
// } |
|
138 |
// |
|
139 |
// //Authors |
|
140 |
// Set<UUID> uuidSet = new HashSet<>(); |
|
141 |
// for (String authorStr : authorKombSet){ |
|
142 |
// UUID uuid = state.getAuthorUuid(authorStr); |
|
143 |
// uuidSet.add(uuid); |
|
144 |
// } |
|
145 |
// List<TeamOrPersonBase<?>> authors = (List)getAgentService().find(uuidSet); |
|
146 |
// Map<UUID, TeamOrPersonBase<?>> authorUuidMap = new HashMap<>(); |
|
147 |
// for (TeamOrPersonBase<?> author : authors){ |
|
148 |
// authorUuidMap.put(author.getUuid(), author); |
|
149 |
// } |
|
150 |
// |
|
151 |
// for (String authorStr : authorKombSet){ |
|
152 |
// UUID uuid = state.getAuthorUuid(authorStr); |
|
153 |
// TeamOrPersonBase<?> author = authorUuidMap.get(uuid); |
|
154 |
// authorMap.put(authorStr, author); |
|
155 |
// } |
|
156 |
// result.put(AUTHOR_NAMESPACE, authorMap); |
|
157 |
// |
|
158 |
// //reference map |
|
159 |
// String nameSpace = REFERENCE_NAMESPACE; |
|
160 |
// Class<?> cdmClass = Reference.class; |
|
161 |
// Set<String> idSet = referenceIdSet; |
|
162 |
// Map<String, Reference<?>> referenceMap = (Map<String, Reference<?>>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace); |
|
163 |
// result.put(nameSpace, referenceMap); |
|
164 |
// |
|
165 |
// //secundum |
|
166 |
// UUID secUuid = state.getConfig().getSecUuid(); |
|
167 |
// Reference<?> secRef = getReferenceService().find(secUuid); |
|
168 |
// referenceMap.put(secUuid.toString(), secRef); |
|
169 |
|
|
170 |
return result; |
|
171 |
} |
|
172 |
|
|
173 |
@Override |
|
174 |
protected boolean doCheck(RedListGefaesspflanzenImportState state) { |
|
175 |
return false; |
|
176 |
} |
|
177 |
|
|
178 |
@Override |
|
179 |
protected boolean isIgnore(RedListGefaesspflanzenImportState state) { |
|
180 |
return false; |
|
181 |
} |
|
182 |
|
|
183 |
} |
Also available in: Unified diff
Add name import