View Javadoc

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.berlinModel.out.mapper;
12  
13  import java.sql.Connection;
14  import java.sql.PreparedStatement;
15  import java.sql.SQLException;
16  import java.util.Date;
17  
18  import org.apache.log4j.Logger;
19  import org.hsqldb.Types;
20  
21  import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportMapping;
22  import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState;
23  import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportConfigurator;
24  import eu.etaxonomy.cdm.io.common.ImportHelper;
25  import eu.etaxonomy.cdm.model.common.CdmBase;
26  import eu.etaxonomy.cdm.model.description.Feature;
27  import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
28  import eu.etaxonomy.cdm.model.reference.ReferenceBase;
29  
30  /**
31   * @author a.mueller
32   * @created 12.05.2009
33   * @version 1.0
34   */
35  public class FactCategoryMapper extends DbSingleAttributeExportMapperBase<BerlinModelExportState> implements IDbExportMapper<BerlinModelExportState>{
36  	@SuppressWarnings("unused")
37  	private static final Logger logger = Logger.getLogger(FactCategoryMapper.class);
38  	
39  	private PreparedStatement preparedStatement;
40  	private BerlinModelExportMapping mapping = null; 
41  	private String dbTableName = "NomStatusRel";
42  //	protected BerlinModelExportState<?> state;
43  
44  	public static FactCategoryMapper NewInstance(String cdmAttributeString, String dbAttributeString){
45  		return new FactCategoryMapper(cdmAttributeString, dbAttributeString);
46  	}
47  
48  	private BerlinModelExportMapping getMapping(){
49  		boolean doExecute = false;
50  		String tableName = dbTableName;
51  		BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);
52  
53  		mapping.addMapper(MethodMapper.NewInstance("NomStatusFk", this.getClass(), "getNomStatusFk", NomenclaturalStatus.class));
54  		mapping.addMapper(DbObjectMapper.NewInstance("citation", "NomStatusRefFk"));
55  		mapping.addMapper(RefDetailMapper.NewInstance("citationMicroReference","citation", "NomStatusRefDetailFk"));
56  		
57  		mapping.addMapper(CreatedAndNotesMapper.NewInstance());
58  		//TODO
59  //		DoubtfulFlag
60  		
61  		return mapping;
62  	}
63  	
64  	
65  //	public static RefDetailMapper NewInstance(String cdmAttributeString, String dbAttributeString){
66  //		return new RefDetailMapper();
67  //	}
68  
69  	
70  	/**
71  	 * @param dbAttributString
72  	 * @param cdmAttributeString
73  	 */
74  	private FactCategoryMapper(String cdmAttributeString, String dbAttributeString) {
75  		super(cdmAttributeString, dbAttributeString, null);
76  	}
77  
78  	
79  	
80  	/* (non-Javadoc)
81  	 * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#initialize(java.sql.PreparedStatement, eu.etaxonomy.cdm.io.berlinModel.out.mapper.IndexCounter, eu.etaxonomy.cdm.io.berlinModel.out.DbExportState)
82  	 */
83  	@Override
84  	public void initialize(PreparedStatement stmt, IndexCounter index,BerlinModelExportState state, String tableName) {
85  		super.initialize(stmt, index, state, tableName);
86  		mapping = getMapping();
87  
88  //		String inRefSql = "INSERT INTO FactCategory (FactCategoryId, FactCategory , " + 
89  //	 		" MaxFactNumber , RankRestrictionFk" +
90  //	 		" VALUES (?,?,?,?)";    
91  //		Connection con = getState().getConfig().getDestination().getConnection();
92  		try {
93  			mapping.initialize(state);
94  			mapping.initialize(state);
95  //			preparedStatement = con.prepareStatement(inRefSql);
96  		} catch (SQLException e) {
97  			e.printStackTrace();
98  			throw new RuntimeException();
99  		}
100 	}
101 
102 	/* (non-Javadoc)
103 	 * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()
104 	 */
105 	//@Override
106 	public Object invoke(CdmBase cdmBase, boolean xxx) {
107 		String value = (String)super.getValue(cdmBase);
108 		boolean isBoolean = false;
109 		Feature feature = (Feature)ImportHelper.getValue(cdmBase, getSourceAttribute(), isBoolean, true);
110 		Object result = makeRow(feature);
111 //		getState().getConfig().getCdmAppController().commitTransaction(tx);
112 		return result;
113 	}
114 	
115 	/* (non-Javadoc)
116 	 * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()
117 	 */
118 	@Override
119 	protected Object getValue(CdmBase cdmBase) {
120 		String value = (String)super.getValue(cdmBase);
121 		boolean isBoolean = false;
122 		Feature feature = (Feature)ImportHelper.getValue(cdmBase, getSourceAttribute(), isBoolean, true);
123 		Object result = makeRow(feature);
124 //		getState().getConfig().getCdmAppController().commitTransaction(tx);
125 		return result;
126 	}
127 
128 	
129 	protected Integer makeRow(Feature feature){
130 		if (feature == null){
131 			return null;		
132 		}
133 		Integer factCategoryId = getState().getNextFactCategoryId();
134 		String factCategory = feature.getLabel();
135 		Integer maxFactNumber = null;
136 		Integer RankRestrictionFk = null;
137 		
138 		try {
139 			preparedStatement.setInt(1, factCategoryId);
140 			preparedStatement.setString(2, factCategory);
141 			preparedStatement.setNull(3, Types.INTEGER) ;//.setString(3, maxFactNumber);
142 			preparedStatement.setNull(4, Types.INTEGER) ;//.setString(4, RankRestrictionFk);
143 			preparedStatement.executeUpdate();
144 		} catch (SQLException e) {
145 			// TODO Auto-generated catch block
146 			e.printStackTrace();
147 		}
148 		return factCategoryId;
149 	}
150 
151 	protected Integer getId(CdmBase cdmBase){
152 		BerlinModelExportConfigurator config = getState().getConfig();
153 		if (false && config.getIdType() == BerlinModelExportConfigurator.IdType.CDM_ID){
154 			return cdmBase.getId();
155 		}else{
156 			Integer id = getState().getDbId(cdmBase);
157 			return id;
158 		}
159 	}	
160 
161 	/* (non-Javadoc)
162 	 * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()
163 	 */
164 	@Override
165 	protected int getSqlType() {
166 		return Types.INTEGER;
167 	}
168 
169 	/* (non-Javadoc)
170 	 * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()
171 	 */
172 	@Override
173 	public Class<?> getTypeClass() {
174 		return String.class;
175 	}
176 
177 
178 
179 
180 }