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
.eflora
.centralAfrica
.checklist
;
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
.common
.CdmUtils
;
23 import eu
.etaxonomy
.cdm
.io
.common
.IOValidator
;
24 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportMapping
;
25 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportObjectCreationMapper
;
26 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.IMappingImport
;
27 import eu
.etaxonomy
.cdm
.io
.eflora
.centralAfrica
.checklist
.validation
.CentralAfricaChecklistTaxonImportValidator
;
28 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
29 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
30 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
31 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
32 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
33 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymRelationshipType
;
34 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
35 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
36 import eu
.etaxonomy
.cdm
.strategy
.parser
.NonViralNameParserImpl
;
45 public class CentralAfricaChecklistSynonymImport
extends CentralAfricaChecklistImportBase
<TaxonBase
> implements IMappingImport
<TaxonBase
, CentralAfricaChecklistImportState
>{
46 private static final Logger logger
= Logger
.getLogger(CentralAfricaChecklistSynonymImport
.class);
48 private NonViralNameParserImpl parser
= NonViralNameParserImpl
.NewInstance();
51 private DbImportMapping mapping
;
53 //second path is not used anymore, there is now an ErmsTaxonRelationImport class instead
54 private boolean isSecondPath
= false;
56 private int modCount
= 10000;
57 private static final String pluralString
= "synonyms";
58 private static final String dbTableName
= "synonyms";
59 private static final Class cdmTargetClass
= TaxonBase
.class;
60 private static final String strOrderBy
= "";
62 public CentralAfricaChecklistSynonymImport(){
63 super(pluralString
, dbTableName
, cdmTargetClass
);
69 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getIdQuery()
72 protected String
getIdQuery() {
73 String strQuery
= " SELECT syn_id FROM " + dbTableName
+ strOrderBy
;
79 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
81 protected DbImportMapping
getMapping() {
83 mapping
= new DbImportMapping();
85 mapping
.addMapper(DbImportObjectCreationMapper
.NewInstance(this, "syn_id", SYNONYM_NAMESPACE
));
86 //TODO Synonym mapper gibts es auch
93 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
96 protected String
getRecordQuery(CentralAfricaChecklistImportConfigurator config
) {
97 String strSelect
= " SELECT * ";
98 String strFrom
= " FROM " + dbTableName
;
99 String strWhere
= " WHERE ( syn_id IN (" + ID_LIST_TOKEN
+ ") )";
100 String strRecordQuery
= strSelect
+ strFrom
+ strWhere
+ strOrderBy
;
101 return strRecordQuery
;
106 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
108 public Map
<Object
, Map
<String
, ?
extends CdmBase
>> getRelatedObjectsForPartition(ResultSet rs
) {
112 Map
<Object
, Map
<String
, ?
extends CdmBase
>> result
= new HashMap
<Object
, Map
<String
, ?
extends CdmBase
>>();
115 Set
<String
> taxonIdSet
= new HashSet
<String
>();
117 handleForeignKey(rs
, taxonIdSet
, "acc_id");
121 nameSpace
= TAXON_NAMESPACE
;
122 cdmClass
= Taxon
.class;
124 Map
<String
, Taxon
> taxonMap
= (Map
<String
, Taxon
>)getCommonService().getSourcedObjectsByIdInSource(cdmClass
, idSet
, nameSpace
);
125 result
.put(nameSpace
, taxonMap
);
127 } catch (SQLException e
) {
128 throw new RuntimeException(e
);
135 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet)
137 public TaxonBase
createObject(ResultSet rs
, CentralAfricaChecklistImportState state
) throws SQLException
{
138 BotanicalName speciesName
= BotanicalName
.NewInstance(Rank
.SPECIES());
141 Integer accId
= rs
.getInt("acc_id");
142 Taxon taxon
= CdmBase
.deproxy(state
.getRelatedObject(TAXON_NAMESPACE
, String
.valueOf(accId
)), Taxon
.class);
144 Reference sec
= taxon
.getSec();
146 String genusString
= rs
.getString("synonym genus");
147 String speciesString
= rs
.getString("synonym species");
148 String authorityString
= rs
.getString("synonym authority");
150 Synonym synonym
= Synonym
.NewInstance(speciesName
, sec
);
152 speciesName
.setGenusOrUninomial(genusString
);
153 speciesName
.setSpecificEpithet(speciesString
);
154 parser
.handleAuthors(speciesName
, CdmUtils
.concat(" ", new String
[] {"", genusString
, speciesString
, authorityString
}), authorityString
);
157 taxon
.addSynonym(synonym
, SynonymRelationshipType
.SYNONYM_OF());
159 logger
.warn("Taxon (" + accId
+ ") not available for Synonym " + synonym
.getTitleCache());
166 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
169 protected boolean doCheck(CentralAfricaChecklistImportState state
){
170 IOValidator
<CentralAfricaChecklistImportState
> validator
= new CentralAfricaChecklistTaxonImportValidator();
171 return validator
.validate(state
);
176 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
178 protected boolean isIgnore(CentralAfricaChecklistImportState state
){
179 return ! state
.getConfig().isDoTaxa();