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
;
17 import org
.apache
.log4j
.Logger
;
18 import org
.springframework
.stereotype
.Component
;
20 import eu
.etaxonomy
.cdm
.io
.common
.IImportConfigurator
;
21 import eu
.etaxonomy
.cdm
.io
.common
.IOValidator
;
22 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbIgnoreMapper
;
23 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportAnnotationMapper
;
24 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportExtensionMapper
;
25 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportMapping
;
26 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportObjectCreationMapper
;
27 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportStringMapper
;
28 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbImportTruncatedStringMapper
;
29 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.DbNotYetImplementedMapper
;
30 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.IMappingImport
;
31 import eu
.etaxonomy
.cdm
.io
.pesi
.erms
.validation
.ErmsReferenceImportValidator
;
32 import eu
.etaxonomy
.cdm
.model
.common
.AnnotationType
;
33 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
34 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
35 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
36 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
37 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
46 public class ErmsReferenceImport
extends ErmsImportBase
<Reference
> implements IMappingImport
<Reference
, ErmsImportState
>{
47 private static final Logger logger
= Logger
.getLogger(ErmsReferenceImport
.class);
49 private DbImportMapping mapping
;
52 private int modCount
= 10000;
53 private static final String pluralString
= "sources";
54 private static final String dbTableName
= "sources";
55 private static final Class cdmTargetClass
= Reference
.class;
57 public ErmsReferenceImport(){
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
=
70 " WHERE ( sources.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 mapping
.addMapper(DbImportObjectCreationMapper
.NewInstance(this, "id", REFERENCE_NAMESPACE
)); //id
82 ExtensionType imisExtType
= getExtensionType( ErmsTransformer
.IMIS_UUID
, "imis", "imis", "imis");
83 mapping
.addMapper(DbImportExtensionMapper
.NewInstance("imis_id", imisExtType
));
85 mapping
.addMapper(DbImportTruncatedStringMapper
.NewInstance("source_name", "titleCache", "title"));
86 mapping
.addMapper(DbImportStringMapper
.NewInstance("source_abstract", "referenceAbstract"));
87 mapping
.addMapper(DbImportAnnotationMapper
.NewInstance("source_note", AnnotationType
.EDITORIAL(), Language
.DEFAULT()));
90 mapping
.addMapper(DbImportExtensionMapper
.NewInstance("source_link", ExtensionType
.URL()));
93 mapping
.addMapper(DbIgnoreMapper
.NewInstance("source_type", "Handled by ObjectCreateMapper - but mapping not yet fully correct. See comments there."));
94 mapping
.addMapper(DbIgnoreMapper
.NewInstance("source_orig_fn", "Currently not needed. Holds information about pdf files."));
95 mapping
.addMapper(DbIgnoreMapper
.NewInstance("source_openaccess", "Currently not needed. Holds information about open access of the source."));
102 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet, eu.etaxonomy.cdm.io.common.ImportStateBase)
104 public Reference
createObject(ResultSet rs
, ErmsImportState state
) throws SQLException
{
105 int id
= rs
.getInt("id");
106 String type
= rs
.getString("source_type");
108 if (type
.equalsIgnoreCase("p")){
109 //TDOO is this correct? maybe mark as 'publication'
110 ref
= ReferenceFactory
.newGeneric();
111 }else if (type
.equalsIgnoreCase("d")){
112 ref
= ReferenceFactory
.newDatabase();
113 }else if (type
.equalsIgnoreCase("e")){
114 //TODO is this correct, maybe mark as "informal"
115 ref
= ReferenceFactory
.newGeneric();
116 }else if (type
.equalsIgnoreCase("i")){
117 //TODO is this correct?
118 ref
= ReferenceFactory
.newGeneric();
120 ref
= ReferenceFactory
.newGeneric();
121 logger
.warn("Unknown reference type: " + type
+ ". Created generic instead.");
128 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
130 public Map
<Object
, Map
<String
, ?
extends CdmBase
>> getRelatedObjectsForPartition(ResultSet rs
) {
131 Map
<Object
, Map
<String
, ?
extends CdmBase
>> result
= new HashMap
<Object
, Map
<String
, ?
extends CdmBase
>>();
132 return result
; //not needed
136 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
139 protected boolean doCheck(ErmsImportState state
){
140 IOValidator
<ErmsImportState
> validator
= new ErmsReferenceImportValidator();
141 return validator
.validate(state
);
146 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
148 protected boolean isIgnore(ErmsImportState state
){
150 return state
.getConfig().getDoReferences() != IImportConfigurator
.DO_REFERENCES
.ALL
;