2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.io
.pesi
.erms
;
12 import java
.sql
.ResultSet
;
13 import java
.sql
.SQLException
;
14 import java
.util
.HashMap
;
15 import java
.util
.HashSet
;
19 import org
.apache
.log4j
.Logger
;
20 import org
.springframework
.stereotype
.Component
;
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
;
46 public class ErmsDrImport
extends ErmsImportBase
<Distribution
> {
47 @SuppressWarnings("unused")
48 private static final Logger logger
= Logger
.getLogger(ErmsDrImport
.class);
50 private DbImportMapping mapping
;
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;
57 public ErmsDrImport(){
58 super(pluralString
, dbTableName
, cdmTargetClass
);
63 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
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
;
75 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
77 protected DbImportMapping
getMapping() {
79 mapping
= new DbImportMapping();
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
);
86 mapping
.addMapper(DbImportObjectMapper
.NewInstance("gu_id", "area", ErmsAreaImport
.AREA_NAMESPACE
));
87 mapping
.addMapper(DbImportAnnotationMapper
.NewInstance("note", AnnotationType
.EDITORIAL()));
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"));
117 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
119 public Map
<Object
, Map
<String
, ?
extends CdmBase
>> getRelatedObjectsForPartition(ResultSet rs
) {
123 Map
<Object
, Map
<String
, ?
extends CdmBase
>> result
= new HashMap
<Object
, Map
<String
, ?
extends CdmBase
>>();
126 Set
<String
> taxonIdSet
= new HashSet
<String
>();
127 Set
<String
> areaIdSet
= new HashSet
<String
>();
128 Set
<String
> sourceIdSet
= new HashSet
<String
>();
130 handleForeignKey(rs
, taxonIdSet
,"tu_acctaxon" );
131 handleForeignKey(rs
, areaIdSet
, "gu_id");
132 handleForeignKey(rs
, sourceIdSet
, "source_id");
136 nameSpace
= ErmsTaxonImport
.TAXON_NAMESPACE
;
137 cdmClass
= TaxonBase
.class;
139 Map
<String
, TaxonBase
> taxonMap
= (Map
<String
, TaxonBase
>)getCommonService().getSourcedObjectsByIdInSource(cdmClass
, idSet
, nameSpace
);
140 result
.put(nameSpace
, taxonMap
);
143 nameSpace
= ErmsAreaImport
.AREA_NAMESPACE
;
144 cdmClass
= NamedArea
.class;
146 Map
<String
, NamedArea
> areaMap
= (Map
<String
, NamedArea
>)getCommonService().getSourcedObjectsByIdInSource(cdmClass
, idSet
, nameSpace
);
147 result
.put(nameSpace
, areaMap
);
150 nameSpace
= ErmsReferenceImport
.REFERENCE_NAMESPACE
;
151 cdmClass
= Reference
.class;
153 Map
<String
, Reference
> referenceMap
= (Map
<String
, Reference
>)getCommonService().getSourcedObjectsByIdInSource(cdmClass
, idSet
, nameSpace
);
154 result
.put(nameSpace
, referenceMap
);
157 } catch (SQLException e
) {
158 throw new RuntimeException(e
);
164 * @param distribution
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);
174 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet, eu.etaxonomy.cdm.io.common.ImportStateBase)
176 public Distribution
createObject(ResultSet rs
, ErmsImportState state
)
177 throws SQLException
{
178 return null; //not needed
183 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
186 protected boolean doCheck(ErmsImportState state
){
187 IOValidator
<ErmsImportState
> validator
= new ErmsReferenceImportValidator();
188 return validator
.validate(state
);
192 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
194 protected boolean isIgnore(ErmsImportState state
){
195 return ! state
.getConfig().isDoOccurrence();