(no commit message)
[cdmlib-apps.git] / cdm-pesi / src / main / java / eu / etaxonomy / cdm / io / pesi / erms / ErmsVernacularSourcesImport.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10
11 package eu.etaxonomy.cdm.io.pesi.erms;
12
13 import java.sql.ResultSet;
14 import java.sql.SQLException;
15 import java.util.HashMap;
16 import java.util.HashSet;
17 import java.util.Map;
18 import java.util.Set;
19
20 import org.apache.log4j.Logger;
21 import org.springframework.stereotype.Component;
22
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;
31
32 /**
33 * @author a.mueller
34 * @created 12.03.2010
35 * @version 1.0
36 */
37 @Component
38 public class ErmsVernacularSourcesImport extends ErmsImportBase<CommonTaxonName> {
39 private static final Logger logger = Logger.getLogger(ErmsVernacularSourcesImport.class);
40
41
42 //************************** VARIABLES ********************************************
43
44 private static String pluralString = "vernacular sources";
45 private static String dbTableName = "vernaculars_sources";
46 private static final Class cdmTargetClass = DescriptionElementSource.class;
47
48 private DbImportMapping mapping;
49
50
51 //******************************************* CONSTRUCTOR *******************************
52
53 /**
54 * @param dbTableName
55 * @param pluralString
56 * @param dbTableName
57 */
58 public ErmsVernacularSourcesImport() {
59 super(pluralString, dbTableName, cdmTargetClass);
60 }
61
62
63 /* (non-Javadoc)
64 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getRecordQuery(eu.etaxonomy.cdm.io.erms.ErmsImportConfigurator)
65 */
66 @Override
67 protected String getRecordQuery(ErmsImportConfigurator config) {
68 String strQuery =
69 " SELECT * " +
70 " FROM vernaculars_sources " +
71 " WHERE vernacular_id IN (" + ID_LIST_TOKEN + ") AND " +
72 " source_id IN (" + ID_LIST_TOKEN + ")";
73 return strQuery;
74 }
75
76 /* (non-Javadoc)
77 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getIdQuery()
78 */
79 @Override
80 protected String getIdQuery() {
81 String strQuery =
82 " SELECT vernacular_id, source_id " +
83 " FROM vernaculars_sources "
84 ;
85 return strQuery;
86 }
87
88 /* (non-Javadoc)
89 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
90 */
91 protected DbImportMapping getMapping() {
92 if (mapping == null){
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 ));
97 }
98 return mapping;
99 }
100
101 /* (non-Javadoc)
102 * @see eu.etaxonomy.cdm.io.common.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
103 */
104 public Map getRelatedObjectsForPartition(ResultSet rs) {
105 String nameSpace;
106 Class cdmClass;
107 Set<String> idSet;
108 Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
109
110 try{
111 Set<String> vernacularIdSet = new HashSet<String>();
112 Set<String> sourceIdSet = new HashSet<String>();
113 while (rs.next()){
114 handleForeignKey(rs, vernacularIdSet, "vernacular_id");
115 handleForeignKey(rs, sourceIdSet, "source_id");
116 }
117
118 //vernacular map
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);
124
125
126 //reference map
127 nameSpace = ErmsReferenceImport.REFERENCE_NAMESPACE;
128 cdmClass = Reference.class;
129 idSet = sourceIdSet;
130 Map<String, Reference> referenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
131 result.put(nameSpace, referenceMap);
132
133 } catch (SQLException e) {
134 throw new RuntimeException(e);
135 }
136 return result;
137 }
138
139
140 /* (non-Javadoc)
141 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IoStateBase)
142 */
143 @Override
144 protected boolean doCheck(ErmsImportState state) {
145 IOValidator<ErmsImportState> validator = new ErmsVernacularSourceImportValidator();
146 return validator.validate(state);
147 }
148
149
150 /* (non-Javadoc)
151 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IoStateBase)
152 */
153 @Override
154 protected boolean isIgnore(ErmsImportState state) {
155 boolean isDo = state.getConfig().isDoVernaculars() && state.getConfig().isDoVernaculars();
156 return ! isDo ;
157 }
158 }