3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.io
.pesi
.erms
;
13 import java
.sql
.ResultSet
;
14 import java
.sql
.SQLException
;
15 import java
.util
.HashMap
;
16 import java
.util
.HashSet
;
20 import org
.apache
.log4j
.Logger
;
21 import org
.springframework
.stereotype
.Component
;
23 import eu
.etaxonomy
.cdm
.io
.common
.IOValidator
;
24 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportDescriptionElementSourceCreationMapper
;
25 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportMapping
;
26 import eu
.etaxonomy
.cdm
.io
.pesi
.erms
.validation
.ErmsVernacularSourceImportValidator
;
27 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
28 import eu
.etaxonomy
.cdm
.model
.common
.DescriptionElementSource
;
29 import eu
.etaxonomy
.cdm
.model
.description
.CommonTaxonName
;
30 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
38 public class ErmsVernacularSourcesImport
extends ErmsImportBase
<CommonTaxonName
> {
39 private static final Logger logger
= Logger
.getLogger(ErmsVernacularSourcesImport
.class);
42 //************************** VARIABLES ********************************************
44 private static String pluralString
= "vernacular sources";
45 private static String dbTableName
= "vernaculars_sources";
46 private static final Class cdmTargetClass
= DescriptionElementSource
.class;
48 private DbImportMapping mapping
;
51 //******************************************* CONSTRUCTOR *******************************
58 public ErmsVernacularSourcesImport() {
59 super(pluralString
, dbTableName
, cdmTargetClass
);
64 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getRecordQuery(eu.etaxonomy.cdm.io.erms.ErmsImportConfigurator)
67 protected String
getRecordQuery(ErmsImportConfigurator config
) {
70 " FROM vernaculars_sources " +
71 " WHERE vernacular_id IN (" + ID_LIST_TOKEN
+ ") AND " +
72 " source_id IN (" + ID_LIST_TOKEN
+ ")";
77 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getIdQuery()
80 protected String
getIdQuery() {
82 " SELECT vernacular_id, source_id " +
83 " FROM vernaculars_sources "
89 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
91 protected DbImportMapping
getMapping() {
93 mapping
= new DbImportMapping();
94 String vernacularNamespace
= ErmsVernacularImport
.VERNACULAR_NAMESPACE
;
95 String referenceNamespace
= ErmsReferenceImport
.REFERENCE_NAMESPACE
;
96 mapping
.addMapper(DbImportDescriptionElementSourceCreationMapper
.NewInstance("vernacular_id", vernacularNamespace
, "source_id", referenceNamespace
));
102 * @see eu.etaxonomy.cdm.io.common.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
104 public Map
getRelatedObjectsForPartition(ResultSet rs
) {
108 Map
<Object
, Map
<String
, ?
extends CdmBase
>> result
= new HashMap
<Object
, Map
<String
, ?
extends CdmBase
>>();
111 Set
<String
> vernacularIdSet
= new HashSet
<String
>();
112 Set
<String
> sourceIdSet
= new HashSet
<String
>();
114 handleForeignKey(rs
, vernacularIdSet
, "vernacular_id");
115 handleForeignKey(rs
, sourceIdSet
, "source_id");
119 nameSpace
= ErmsVernacularImport
.VERNACULAR_NAMESPACE
;
120 cdmClass
= CommonTaxonName
.class;
121 idSet
= vernacularIdSet
;
122 Map
<String
, CommonTaxonName
> vernacularMap
= (Map
<String
, CommonTaxonName
>)getCommonService().getSourcedObjectsByIdInSource(cdmClass
, idSet
, nameSpace
);
123 result
.put(nameSpace
, vernacularMap
);
127 nameSpace
= ErmsReferenceImport
.REFERENCE_NAMESPACE
;
128 cdmClass
= Reference
.class;
130 Map
<String
, Reference
> referenceMap
= (Map
<String
, Reference
>)getCommonService().getSourcedObjectsByIdInSource(cdmClass
, idSet
, nameSpace
);
131 result
.put(nameSpace
, referenceMap
);
133 } catch (SQLException e
) {
134 throw new RuntimeException(e
);
141 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IoStateBase)
144 protected boolean doCheck(ErmsImportState state
) {
145 IOValidator
<ErmsImportState
> validator
= new ErmsVernacularSourceImportValidator();
146 return validator
.validate(state
);
151 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IoStateBase)
154 protected boolean isIgnore(ErmsImportState state
) {
155 boolean isDo
= state
.getConfig().isDoVernaculars() && state
.getConfig().isDoVernaculars();