implement source reference for partitions
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / common / mapping / DbImportExtensionTypeCreationMapper.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.common.mapping;
12
13 import java.sql.ResultSet;
14 import java.sql.SQLException;
15 import java.util.UUID;
16
17 import org.apache.log4j.Logger;
18
19 import eu.etaxonomy.cdm.io.common.DbImportStateBase;
20 import eu.etaxonomy.cdm.model.common.ExtensionType;
21 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
22 import eu.etaxonomy.cdm.model.common.VersionableEntity;
23
24 /**
25 * This class retrives or creates an existing or a new extension type.
26 *
27 * @see DbImportDefinedTermCreationMapperBase
28 * @author a.mueller
29 * @created 11.03.2010
30 * @version 1.0
31 */
32 public class DbImportExtensionTypeCreationMapper<STATE extends DbImportStateBase<?,?>> extends DbImportDefinedTermCreationMapperBase<ExtensionType, IdentifiableEntity, DbImportStateBase<?,?>> {
33 @SuppressWarnings("unused")
34 private static final Logger logger = Logger.getLogger(DbImportExtensionTypeCreationMapper.class);
35
36 //******************************** FACTORY METHOD ***************************************************/
37
38
39 /**
40 *
41 * @param dbIdAttribute
42 * @parem extensionTypeNamespace
43 * @param dbTermAttribute
44 * @param dbLabelAttribute
45 * @param dbLabelAbbrevAttribute
46 * @return
47 */
48 public static DbImportExtensionTypeCreationMapper<?> NewInstance(String dbIdAttribute, String extensionTypeNamespace, String dbTermAttribute, String dbLabelAttribute, String dbLabelAbbrevAttribute){
49 return new DbImportExtensionTypeCreationMapper(dbIdAttribute, extensionTypeNamespace, dbTermAttribute, dbLabelAttribute, dbLabelAbbrevAttribute);
50 }
51
52
53 // /**
54 // * Creates a Distribution with status <code>status</code> and adds it to the description of a taxon.
55 // * @param dbIdAttribute
56 // * @param objectToCreateNamespace
57 // * @param dbTaxonFkAttribute
58 // * @param taxonNamespace
59 // * @param status
60 // * @return
61 // */
62 // public static DbImportFeatureCreationMapper<?> NewInstance(String dbIdAttribute, String dbTermAttribute, String dbLabelAttribute, String dbLabelAbbrevAttribute){
63 // return new DbImportFeatureCreationMapper(dbIdAttribute, objectToCreateNamespace, dbTaxonFkAttribute, taxonNamespace, dbTextAttribute, language, feature, format);
64 // }
65
66 //******************************* ATTRIBUTES ***************************************/
67
68
69 //********************************* CONSTRUCTOR ****************************************/
70
71 /**
72 * @param dbIdAttribute
73 * @param extensionTypeNamespace
74 * @param dbTermAttribute
75 * @param dbLabelAttribute
76 * @param dbLabelAbbrevAttribute
77 */
78 protected DbImportExtensionTypeCreationMapper(String dbIdAttribute, String extensionTypeNamespace, String dbTermAttribute, String dbLabelAttribute, String dbLabelAbbrevAttribute) {
79 super(dbIdAttribute, extensionTypeNamespace, dbTermAttribute, dbLabelAttribute, dbLabelAbbrevAttribute);
80 }
81
82 //************************************ METHODS *******************************************/
83
84 /* (non-Javadoc)
85 * @see eu.etaxonomy.cdm.io.common.mapping.DbImportDefinedTermCreationMapperBase#getTermFromState(java.lang.String)
86 */
87 @Override
88 protected ExtensionType getTermFromState(UUID uuid) {
89 return getState().getExtensionType(uuid);
90 }
91
92
93 /* (non-Javadoc)
94 * @see eu.etaxonomy.cdm.io.common.mapping.DbImportDefinedTermCreationMapperBase#getTermFromTransformer(java.sql.ResultSet)
95 */
96 @Override
97 protected ExtensionType getTermFromTransformer(String key, IInputTransformer transformer) throws UndefinedTransformerMethodException {
98 return transformer.getExtensionTypeByKey(key);
99 }
100
101
102 /* (non-Javadoc)
103 * @see eu.etaxonomy.cdm.io.common.mapping.DbImportDefinedTermCreationMapperBase#getUuidFromTransformer(java.sql.ResultSet)
104 */
105 @Override
106 protected UUID getUuidFromTransformer(String key, IInputTransformer transformer) throws UndefinedTransformerMethodException {
107 UUID uuid = transformer.getExtensionTypeUuid(key);
108 return uuid;
109 }
110
111
112 /* (non-Javadoc)
113 * @see eu.etaxonomy.cdm.io.common.mapping.DbImportDefinedTermCreationMapperBase#saveTermToState(java.lang.String, eu.etaxonomy.cdm.model.common.DefinedTermBase)
114 */
115 @Override
116 protected void saveTermToState(ExtensionType extensionType) {
117 getState().putExtensionType(extensionType);
118
119 }
120
121
122 /* (non-Javadoc)
123 * @see eu.etaxonomy.cdm.io.common.mapping.DbImportDefinedTermCreationMapperBase#createDefinedTerm(java.sql.ResultSet)
124 */
125 @Override
126 protected ExtensionType createDefinedTerm(ResultSet rs) throws SQLException {
127 String term = this.getStringDbValue(rs, dbTermAttribute);
128 String label = this.getStringDbValue(rs, dbLabelAttribute);
129 String labelAbbrev = this.getStringDbValue(rs, dbLabelAbbrevAttribute);
130 if (term != null || label != null || labelAbbrev != null){
131 ExtensionType definedTerm = ExtensionType.NewInstance(term, label, labelAbbrev);
132 return definedTerm;
133 }else{
134 return null;
135 }
136
137 }
138
139
140 }