latest EMRS import changes
[cdmlib-apps.git] / cdm-pesi / src / main / java / eu / etaxonomy / cdm / io / pesi / erms / ErmsReferenceImport.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.Map;
16
17 import org.apache.log4j.Logger;
18 import org.springframework.stereotype.Component;
19
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;
38
39
40 /**
41 * @author a.mueller
42 * @created 20.02.2010
43 * @version 1.0
44 */
45 @Component
46 public class ErmsReferenceImport extends ErmsImportBase<Reference> implements IMappingImport<Reference, ErmsImportState>{
47 private static final Logger logger = Logger.getLogger(ErmsReferenceImport.class);
48
49 private DbImportMapping mapping;
50
51
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;
56
57 public ErmsReferenceImport(){
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 * " +
69 " FROM sources " +
70 " WHERE ( sources.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 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));
84
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()));
88
89 //or as Extension?
90 mapping.addMapper(DbImportExtensionMapper.NewInstance("source_link", ExtensionType.URL()));
91
92 //not yet implemented
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."));
96
97 }
98 return mapping;
99 }
100
101 /* (non-Javadoc)
102 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet, eu.etaxonomy.cdm.io.common.ImportStateBase)
103 */
104 public Reference createObject(ResultSet rs, ErmsImportState state) throws SQLException {
105 int id = rs.getInt("id");
106 String type = rs.getString("source_type");
107 Reference ref;
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();
119 }else{
120 ref = ReferenceFactory.newGeneric();
121 logger.warn("Unknown reference type: " + type + ". Created generic instead.");
122 }
123
124 return ref;
125 }
126
127 /* (non-Javadoc)
128 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
129 */
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
133 }
134
135 /* (non-Javadoc)
136 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
137 */
138 @Override
139 protected boolean doCheck(ErmsImportState state){
140 IOValidator<ErmsImportState> validator = new ErmsReferenceImportValidator();
141 return validator.validate(state);
142 }
143
144
145 /* (non-Javadoc)
146 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
147 */
148 protected boolean isIgnore(ErmsImportState state){
149 //TODO
150 return state.getConfig().getDoReferences() != IImportConfigurator.DO_REFERENCES.ALL;
151 }
152
153
154
155
156
157 }