1 |
38e84b8e
|
Andreas Müller
|
/**
|
2 |
|
|
* Copyright (C) 2007 EDIT
|
3 |
bff8d9fe
|
Andreas Müller
|
* European Distributed Institute of Taxonomy
|
4 |
38e84b8e
|
Andreas Müller
|
* http://www.e-taxonomy.eu
|
5 |
bff8d9fe
|
Andreas Müller
|
*
|
6 |
38e84b8e
|
Andreas Müller
|
* 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.pesi.erms;
|
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.IOValidator;
|
23 |
|
|
import eu.etaxonomy.cdm.io.common.mapping.DbImportDescriptionElementSourceCreationMapper;
|
24 |
|
|
import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
|
25 |
5fbecb37
|
Andreas Müller
|
import eu.etaxonomy.cdm.io.pesi.erms.validation.ErmsNoteSourceImportValidator;
|
26 |
38e84b8e
|
Andreas Müller
|
import eu.etaxonomy.cdm.model.common.CdmBase;
|
27 |
|
|
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
|
28 |
bb38665e
|
Andreas Müller
|
import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
|
29 |
3dee8a19
|
Andreas Müller
|
import eu.etaxonomy.cdm.model.reference.Reference;
|
30 |
38e84b8e
|
Andreas Müller
|
|
31 |
|
|
/**
|
32 |
|
|
* @author a.mueller
|
33 |
a13538c8
|
Andreas Müller
|
* @since 12.03.2010
|
34 |
38e84b8e
|
Andreas Müller
|
*/
|
35 |
|
|
@Component
|
36 |
|
|
public class ErmsNotesSourcesImport extends ErmsImportBase<CommonTaxonName> {
|
37 |
bff8d9fe
|
Andreas Müller
|
private static final long serialVersionUID = -5197101648269924453L;
|
38 |
|
|
|
39 |
|
|
@SuppressWarnings("unused")
|
40 |
38e84b8e
|
Andreas Müller
|
private static final Logger logger = Logger.getLogger(ErmsNotesSourcesImport.class);
|
41 |
bff8d9fe
|
Andreas Müller
|
|
42 |
|
|
|
43 |
38e84b8e
|
Andreas Müller
|
//************************** VARIABLES ********************************************
|
44 |
bff8d9fe
|
Andreas Müller
|
|
45 |
38e84b8e
|
Andreas Müller
|
private static String pluralString = "note sources";
|
46 |
|
|
private static String dbTableName = "notes_sources";
|
47 |
9900f429
|
Andreas Müller
|
private static final Class<?> cdmTargetClass = DescriptionElementSource.class;
|
48 |
38e84b8e
|
Andreas Müller
|
|
49 |
bff8d9fe
|
Andreas Müller
|
private DbImportMapping<ErmsImportState, ErmsImportConfigurator> mapping;
|
50 |
|
|
|
51 |
|
|
//******************************************* CONSTRUCTOR *******************************
|
52 |
38e84b8e
|
Andreas Müller
|
|
53 |
|
|
/**
|
54 |
bff8d9fe
|
Andreas Müller
|
* @param dbTableName
|
55 |
38e84b8e
|
Andreas Müller
|
* @param pluralString
|
56 |
|
|
* @param dbTableName
|
57 |
|
|
*/
|
58 |
|
|
public ErmsNotesSourcesImport() {
|
59 |
|
|
super(pluralString, dbTableName, cdmTargetClass);
|
60 |
|
|
}
|
61 |
|
|
|
62 |
|
|
@Override
|
63 |
|
|
protected String getRecordQuery(ErmsImportConfigurator config) {
|
64 |
bff8d9fe
|
Andreas Müller
|
String strQuery =
|
65 |
|
|
" SELECT * " +
|
66 |
38e84b8e
|
Andreas Müller
|
" FROM vernaculars_sources " +
|
67 |
|
|
" WHERE vernacular_id IN (" + ID_LIST_TOKEN + ") AND " +
|
68 |
|
|
" source_id IN (" + ID_LIST_TOKEN + ")";
|
69 |
|
|
return strQuery;
|
70 |
|
|
}
|
71 |
|
|
|
72 |
|
|
@Override
|
73 |
|
|
protected String getIdQuery() {
|
74 |
bff8d9fe
|
Andreas Müller
|
String strQuery =
|
75 |
|
|
" SELECT vernacular_id, source_id " +
|
76 |
|
|
" FROM vernaculars_sources "
|
77 |
38e84b8e
|
Andreas Müller
|
;
|
78 |
|
|
return strQuery;
|
79 |
|
|
}
|
80 |
bff8d9fe
|
Andreas Müller
|
|
81 |
9900f429
|
Andreas Müller
|
@Override
|
82 |
bff8d9fe
|
Andreas Müller
|
protected DbImportMapping<ErmsImportState, ErmsImportConfigurator> getMapping() {
|
83 |
38e84b8e
|
Andreas Müller
|
if (mapping == null){
|
84 |
bff8d9fe
|
Andreas Müller
|
mapping = new DbImportMapping<>();
|
85 |
|
|
String vernacularNamespace = ErmsImportBase.VERNACULAR_NAMESPACE;
|
86 |
|
|
String referenceNamespace = ErmsImportBase.REFERENCE_NAMESPACE;
|
87 |
38e84b8e
|
Andreas Müller
|
mapping.addMapper(DbImportDescriptionElementSourceCreationMapper.NewInstance("vernacular_id", vernacularNamespace, "source_id", referenceNamespace ));
|
88 |
|
|
}
|
89 |
|
|
return mapping;
|
90 |
|
|
}
|
91 |
|
|
|
92 |
9900f429
|
Andreas Müller
|
@Override
|
93 |
bff8d9fe
|
Andreas Müller
|
public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs, ErmsImportState state) {
|
94 |
38e84b8e
|
Andreas Müller
|
String nameSpace;
|
95 |
9900f429
|
Andreas Müller
|
Class<?> cdmClass;
|
96 |
38e84b8e
|
Andreas Müller
|
Set<String> idSet;
|
97 |
bff8d9fe
|
Andreas Müller
|
Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<>();
|
98 |
|
|
|
99 |
38e84b8e
|
Andreas Müller
|
try{
|
100 |
|
|
Set<String> vernacularIdSet = new HashSet<String>();
|
101 |
|
|
Set<String> sourceIdSet = new HashSet<String>();
|
102 |
|
|
while (rs.next()){
|
103 |
|
|
handleForeignKey(rs, vernacularIdSet, "vernacular_id");
|
104 |
|
|
handleForeignKey(rs, sourceIdSet, "source_id");
|
105 |
|
|
}
|
106 |
bff8d9fe
|
Andreas Müller
|
|
107 |
38e84b8e
|
Andreas Müller
|
//vernacular map
|
108 |
bff8d9fe
|
Andreas Müller
|
nameSpace = ErmsImportBase.VERNACULAR_NAMESPACE;
|
109 |
38e84b8e
|
Andreas Müller
|
cdmClass = CommonTaxonName.class;
|
110 |
|
|
idSet = vernacularIdSet;
|
111 |
|
|
Map<String, CommonTaxonName> vernacularMap = (Map<String, CommonTaxonName>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
|
112 |
|
|
result.put(nameSpace, vernacularMap);
|
113 |
bff8d9fe
|
Andreas Müller
|
|
114 |
|
|
|
115 |
38e84b8e
|
Andreas Müller
|
//reference map
|
116 |
bff8d9fe
|
Andreas Müller
|
nameSpace = ErmsImportBase.REFERENCE_NAMESPACE;
|
117 |
3dee8a19
|
Andreas Müller
|
cdmClass = Reference.class;
|
118 |
38e84b8e
|
Andreas Müller
|
idSet = sourceIdSet;
|
119 |
bff8d9fe
|
Andreas Müller
|
@SuppressWarnings("unchecked")
|
120 |
|
|
Map<String, Reference> referenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
|
121 |
38e84b8e
|
Andreas Müller
|
result.put(nameSpace, referenceMap);
|
122 |
bff8d9fe
|
Andreas Müller
|
|
123 |
38e84b8e
|
Andreas Müller
|
} catch (SQLException e) {
|
124 |
|
|
throw new RuntimeException(e);
|
125 |
|
|
}
|
126 |
|
|
return result;
|
127 |
|
|
}
|
128 |
bff8d9fe
|
Andreas Müller
|
|
129 |
38e84b8e
|
Andreas Müller
|
@Override
|
130 |
|
|
protected boolean doCheck(ErmsImportState state) {
|
131 |
5fbecb37
|
Andreas Müller
|
IOValidator<ErmsImportState> validator = new ErmsNoteSourceImportValidator();
|
132 |
38e84b8e
|
Andreas Müller
|
return validator.validate(state);
|
133 |
|
|
}
|
134 |
bff8d9fe
|
Andreas Müller
|
|
135 |
38e84b8e
|
Andreas Müller
|
@Override
|
136 |
|
|
protected boolean isIgnore(ErmsImportState state) {
|
137 |
|
|
boolean isDo = state.getConfig().isDoVernaculars() && state.getConfig().isDoVernaculars();
|
138 |
|
|
return ! isDo ;
|
139 |
|
|
}
|
140 |
|
|
}
|