Revision cd79d676
Added by Andreas Müller about 5 years ago
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/erms/ErmsVernacularImport.java | ||
---|---|---|
26 | 26 |
import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping; |
27 | 27 |
import eu.etaxonomy.cdm.io.common.mapping.DbImportObjectMapper; |
28 | 28 |
import eu.etaxonomy.cdm.io.common.mapping.DbImportStringMapper; |
29 |
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer; |
|
29 | 30 |
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException; |
30 | 31 |
import eu.etaxonomy.cdm.io.pesi.erms.validation.ErmsVernacularImportValidator; |
31 | 32 |
import eu.etaxonomy.cdm.model.common.AnnotationType; |
... | ... | |
59 | 60 |
@Override |
60 | 61 |
protected String getRecordQuery(ErmsImportConfigurator config) { |
61 | 62 |
String strRecordQuery = |
62 |
" SELECT vernaculars.*, tu.tu_acctaxon, tu.id " + |
|
63 |
" FROM vernaculars INNER JOIN tu ON vernaculars.tu_id = tu.id " + |
|
64 |
" WHERE ( vernaculars.id IN (" + ID_LIST_TOKEN + ") )"; |
|
63 |
" SELECT v.*, tu.tu_acctaxon, tu.id, l.* " + |
|
64 |
" FROM vernaculars v INNER JOIN tu ON v.tu_id = tu.id " |
|
65 |
+ " LEFT OUTER JOIN languages l ON l.LanID = v.lan_id " + |
|
66 |
" WHERE ( v.id IN (" + ID_LIST_TOKEN + ") )"; |
|
65 | 67 |
return strRecordQuery; |
66 | 68 |
} |
67 | 69 |
|
... | ... | |
91 | 93 |
Set<String> idSet; |
92 | 94 |
Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<>(); |
93 | 95 |
|
96 |
Map<String, Language> languageMap = new HashMap<>(); |
|
94 | 97 |
try{ |
95 | 98 |
Set<String> taxonIdSet = new HashSet<>(); |
96 |
Set<String> languageIdSet = new HashSet<>(); |
|
99 |
// Set<String> languageIdSet = new HashSet<>();
|
|
97 | 100 |
while (rs.next()){ |
98 | 101 |
handleForeignKey(rs, taxonIdSet, "tu_id"); |
99 |
handleForeignKey(rs, languageIdSet, "lan_id");
|
|
102 |
addLanguage(rs, languageMap, state);
|
|
100 | 103 |
} |
101 | 104 |
|
102 | 105 |
//taxon map |
... | ... | |
109 | 112 |
|
110 | 113 |
//language map |
111 | 114 |
nameSpace = LANGUAGE_NAMESPACE; |
112 |
Map<String, Language> languageMap = new HashMap<>(); |
|
113 |
ErmsTransformer transformer = new ErmsTransformer(); |
|
114 |
for (String lanAbbrev: languageIdSet){ |
|
115 |
Language language = null; |
|
116 |
try { |
|
117 |
language = transformer.getLanguageByKey(lanAbbrev); |
|
118 |
if (language == null || language.equals(Language.UNDETERMINED())){ |
|
119 |
UUID uuidLang = transformer.getLanguageUuid(lanAbbrev); |
|
120 |
if (uuidLang != null){ |
|
121 |
language = getLanguage(state, uuidLang, lanAbbrev, lanAbbrev, lanAbbrev); |
|
122 |
|
|
123 |
} |
|
124 |
if (language == null || language.equals(Language.UNDETERMINED() )){ |
|
125 |
logger.warn("Langauge undefined: " + lanAbbrev); |
|
126 |
} |
|
127 |
} |
|
128 |
|
|
129 |
} catch (IllegalArgumentException e) { |
|
130 |
e.printStackTrace(); |
|
131 |
} catch (UndefinedTransformerMethodException e) { |
|
132 |
e.printStackTrace(); |
|
133 |
} |
|
134 |
languageMap.put(lanAbbrev, language); |
|
135 |
} |
|
136 | 115 |
result.put(nameSpace, languageMap); |
137 | 116 |
|
138 | 117 |
} catch (SQLException e) { |
... | ... | |
141 | 120 |
return result; |
142 | 121 |
} |
143 | 122 |
|
144 |
@Override |
|
123 |
/** |
|
124 |
* @param rs |
|
125 |
* @param languageMap |
|
126 |
* @param state |
|
127 |
* @throws SQLException |
|
128 |
*/ |
|
129 |
private void addLanguage(ResultSet rs, Map<String, Language> languageMap, ErmsImportState state) throws SQLException { |
|
130 |
IInputTransformer transformer = state.getTransformer(); |
|
131 |
String id639_1 = rs.getString("639_1"); |
|
132 |
String id639_2 = rs.getString("639_2"); |
|
133 |
String id639_3 = rs.getString("639_3"); |
|
134 |
String lanId = rs.getString("LanID"); |
|
135 |
if (id639_1 != null && Language.getLanguageByIsoCode(id639_1)!= null){ |
|
136 |
languageMap.put(lanId, Language.getLanguageByIsoCode(id639_1)); |
|
137 |
}else if (id639_2 != null && Language.getLanguageByIsoCode(id639_2)!= null){ |
|
138 |
languageMap.put(lanId, Language.getLanguageByIsoCode(id639_2)); |
|
139 |
}else{ |
|
140 |
Language language = null; |
|
141 |
try { |
|
142 |
language = transformer.getLanguageByKey(lanId); |
|
143 |
if (language == null || language.equals(Language.UNDETERMINED())){ |
|
144 |
UUID uuidLang = transformer.getLanguageUuid(lanId); |
|
145 |
if (uuidLang != null){ |
|
146 |
language = getLanguage(state, uuidLang, rs.getString("LanName"), "LanName", "639_3"); |
|
147 |
} |
|
148 |
if (language == null || language.equals(Language.UNDETERMINED() )){ |
|
149 |
logger.warn("Langauge undefined: " + lanId); |
|
150 |
} |
|
151 |
} |
|
152 |
|
|
153 |
} catch (IllegalArgumentException e) { |
|
154 |
e.printStackTrace(); |
|
155 |
} catch (UndefinedTransformerMethodException e) { |
|
156 |
e.printStackTrace(); |
|
157 |
} |
|
158 |
} |
|
159 |
} |
|
160 |
|
|
161 |
@Override |
|
145 | 162 |
protected boolean doCheck(ErmsImportState state){ |
146 | 163 |
IOValidator<ErmsImportState> validator = new ErmsVernacularImportValidator(); |
147 | 164 |
return validator.validate(state); |
Also available in: Unified diff
ref #1444 ref #7976 some changes to ERMS import