html tagged display name for pesi taxon export
[cdmlib-apps.git] / cdm-pesi / src / main / java / eu / etaxonomy / cdm / io / pesi / erms / ErmsDrImport.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.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.DbIgnoreMapper;
24 import eu.etaxonomy.cdm.io.common.mapping.DbImportAnnotationMapper;
25 import eu.etaxonomy.cdm.io.common.mapping.DbImportDescriptionElementSourceCreationMapper;
26 import eu.etaxonomy.cdm.io.common.mapping.DbImportDistributionCreationMapper;
27 import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
28 import eu.etaxonomy.cdm.io.common.mapping.DbImportObjectMapper;
29 import eu.etaxonomy.cdm.io.common.mapping.DbNotYetImplementedMapper;
30 import eu.etaxonomy.cdm.io.pesi.erms.validation.ErmsReferenceImportValidator;
31 import eu.etaxonomy.cdm.model.common.AnnotationType;
32 import eu.etaxonomy.cdm.model.common.CdmBase;
33 import eu.etaxonomy.cdm.model.description.Distribution;
34 import eu.etaxonomy.cdm.model.description.PresenceTerm;
35 import eu.etaxonomy.cdm.model.location.NamedArea;
36 import eu.etaxonomy.cdm.model.reference.Reference;
37 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
38
39
40 /**
41 * @author a.mueller
42 * @created 20.02.2010
43 * @version 1.0
44 */
45 @Component
46 public class ErmsDrImport extends ErmsImportBase<Distribution> {
47 @SuppressWarnings("unused")
48 private static final Logger logger = Logger.getLogger(ErmsDrImport.class);
49
50 private DbImportMapping mapping;
51
52 private int modCount = 10000;
53 private static final String pluralString = "distributions";
54 private static final String dbTableName = "dr";
55 private static final Class cdmTargetClass = Distribution.class;
56
57 public ErmsDrImport(){
58 super(pluralString, dbTableName, cdmTargetClass);
59 }
60
61
62 /* (non-Javadoc)
63 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
64 */
65 @Override
66 protected String getRecordQuery(ErmsImportConfigurator config) {
67 String strRecordQuery =
68 " SELECT dr.*, tu.tu_acctaxon, tu.id " +
69 " FROM dr INNER JOIN tu ON dr.tu_id = tu.id " +
70 " WHERE ( dr.id IN (" + ID_LIST_TOKEN + ") )";
71 return strRecordQuery;
72 }
73
74 /* (non-Javadoc)
75 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
76 */
77 protected DbImportMapping getMapping() {
78 if (mapping == null){
79 mapping = new DbImportMapping();
80
81 PresenceTerm status = PresenceTerm.PRESENT();
82 DbImportDistributionCreationMapper<?> distributionMapper = DbImportDistributionCreationMapper.NewFixedStatusInstance("id", DR_NAMESPACE, "tu_acctaxon", ErmsTaxonImport.TAXON_NAMESPACE, status);
83 distributionMapper.setSource("source_id", REFERENCE_NAMESPACE, null);
84 mapping.addMapper(distributionMapper);
85
86 mapping.addMapper(DbImportObjectMapper.NewInstance("gu_id", "area", ErmsAreaImport.AREA_NAMESPACE));
87 mapping.addMapper(DbImportAnnotationMapper.NewInstance("note", AnnotationType.EDITORIAL()));
88
89 mapping.addMapper(DbIgnoreMapper.NewInstance("unacceptsource_id"));
90 mapping.addMapper(DbIgnoreMapper.NewInstance("unacceptreason"));
91 mapping.addMapper(DbIgnoreMapper.NewInstance("valid_flag"));
92 mapping.addMapper(DbIgnoreMapper.NewInstance("certain_flag"));
93 mapping.addMapper(DbIgnoreMapper.NewInstance("map_flag"));
94 mapping.addMapper(DbIgnoreMapper.NewInstance("endemic_flag"));
95 mapping.addMapper(DbIgnoreMapper.NewInstance("exotic_flag"));
96 mapping.addMapper(DbIgnoreMapper.NewInstance("typelocality_flag"));
97 mapping.addMapper(DbIgnoreMapper.NewInstance("specimenflag"));
98 mapping.addMapper(DbIgnoreMapper.NewInstance("lat"));
99 mapping.addMapper(DbIgnoreMapper.NewInstance("long"));
100 mapping.addMapper(DbIgnoreMapper.NewInstance("depthshallow"));
101 mapping.addMapper(DbIgnoreMapper.NewInstance("depthdeep"));
102 mapping.addMapper(DbIgnoreMapper.NewInstance("beginyear"));
103 mapping.addMapper(DbIgnoreMapper.NewInstance("beginmonth"));
104 mapping.addMapper(DbIgnoreMapper.NewInstance("beginday"));
105 mapping.addMapper(DbIgnoreMapper.NewInstance("endyear"));
106 mapping.addMapper(DbIgnoreMapper.NewInstance("endmonth"));
107 mapping.addMapper(DbIgnoreMapper.NewInstance("endday"));
108 mapping.addMapper(DbIgnoreMapper.NewInstance("min_abundance"));
109 mapping.addMapper(DbIgnoreMapper.NewInstance("max_abundance"));
110
111
112 }
113 return mapping;
114 }
115
116 /* (non-Javadoc)
117 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
118 */
119 public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
120 String nameSpace;
121 Class cdmClass;
122 Set<String> idSet;
123 Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
124
125 try{
126 Set<String> taxonIdSet = new HashSet<String>();
127 Set<String> areaIdSet = new HashSet<String>();
128 Set<String> sourceIdSet = new HashSet<String>();
129 while (rs.next()){
130 handleForeignKey(rs, taxonIdSet,"tu_acctaxon" );
131 handleForeignKey(rs, areaIdSet, "gu_id");
132 handleForeignKey(rs, sourceIdSet, "source_id");
133 }
134
135 //taxon map
136 nameSpace = ErmsTaxonImport.TAXON_NAMESPACE;
137 cdmClass = TaxonBase.class;
138 idSet = taxonIdSet;
139 Map<String, TaxonBase> taxonMap = (Map<String, TaxonBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
140 result.put(nameSpace, taxonMap);
141
142 //areas
143 nameSpace = ErmsAreaImport.AREA_NAMESPACE;
144 cdmClass = NamedArea.class;
145 idSet = areaIdSet;
146 Map<String, NamedArea> areaMap = (Map<String, NamedArea>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
147 result.put(nameSpace, areaMap);
148
149 //reference map
150 nameSpace = ErmsReferenceImport.REFERENCE_NAMESPACE;
151 cdmClass = Reference.class;
152 idSet = sourceIdSet;
153 Map<String, Reference> referenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
154 result.put(nameSpace, referenceMap);
155
156
157 } catch (SQLException e) {
158 throw new RuntimeException(e);
159 }
160 return result;
161 }
162
163 /**
164 * @param distribution
165 * @param source_id
166 * @param state
167 */
168 private void addSource(Distribution distribution, Integer source_id, ErmsImportState state) {
169 Reference ref = (Reference)state.getRelatedObject(ErmsReferenceImport.REFERENCE_NAMESPACE, String.valueOf(source_id));
170 distribution.addSource(null, null, ref, null);
171 }
172
173 /* (non-Javadoc)
174 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet, eu.etaxonomy.cdm.io.common.ImportStateBase)
175 */
176 public Distribution createObject(ResultSet rs, ErmsImportState state)
177 throws SQLException {
178 return null; //not needed
179 }
180
181
182 /* (non-Javadoc)
183 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
184 */
185 @Override
186 protected boolean doCheck(ErmsImportState state){
187 IOValidator<ErmsImportState> validator = new ErmsReferenceImportValidator();
188 return validator.validate(state);
189 }
190
191 /* (non-Javadoc)
192 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
193 */
194 protected boolean isIgnore(ErmsImportState state){
195 return ! state.getConfig().isDoOccurrence();
196 }
197
198
199
200
201 }