Project

General

Profile

« Previous | Next » 

Revision 6f79628c

Added by Andreas Müller over 4 years ago

2717 cleanup and better logging for PesiExport

View differences:

cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTaxonExport.java
105 105
	private static final String parentPluralString = "Taxa";
106 106
	private static final String pluralStringNames = "Names";
107 107

  
108
	private PreparedStatement parentTaxonFk_TreeIndex_KingdomFkStmt;
108
//	private PreparedStatement parentTaxonFk_TreeIndex_KingdomFkStmts;
109 109
	private PreparedStatement parentTaxonFkStmt;
110 110
	private PreparedStatement rankTypeExpertsUpdateStmt;
111 111
	private PreparedStatement rankUpdateStmt;
......
201 201

  
202 202

  
203 203
	private void initPreparedStatements(PesiExportState state) throws SQLException {
204
		initTreeIndexStatement(state);
204
//		initTreeIndexStatement(state);
205 205
		initRankExpertsUpdateStmt(state);
206 206
		initRankUpdateStatement(state);
207 207

  
208 208
		initParentFkStatement(state);
209 209
	}
210 210

  
211
	// Prepare TreeIndex-And-KingdomFk-Statement
212
	private void initTreeIndexStatement(PesiExportState state) throws SQLException {
213
		Connection connection = state.getConfig().getDestination().getConnection();
214
		String parentTaxonFk_TreeIndex_KingdomFkSql = "UPDATE Taxon SET ParentTaxonFk = ?, TreeIndex = ? WHERE TaxonId = ?";
215
		parentTaxonFk_TreeIndex_KingdomFkStmt = connection.prepareStatement(parentTaxonFk_TreeIndex_KingdomFkSql);
216
	}
211
//	// Prepare TreeIndex-And-KingdomFk-Statement
212
//	private void initTreeIndexStatement(PesiExportState state) throws SQLException {
213
//		Connection connection = state.getConfig().getDestination().getConnection();
214
//		String parentTaxonFk_TreeIndex_KingdomFkSql = "UPDATE Taxon SET ParentTaxonFk = ?, TreeIndex = ? WHERE TaxonId = ?";
215
//		parentTaxonFk_TreeIndex_KingdomFkStmt = connection.prepareStatement(parentTaxonFk_TreeIndex_KingdomFkSql);
216
//	}
217 217

  
218 218
	// Prepare TreeIndex-And-KingdomFk-Statement
219 219
	private void initParentFkStatement(PesiExportState state) throws SQLException {
......
240 240
	}
241 241

  
242 242
	private boolean doPhase01(PesiExportState state, PesiExportMapping mapping, PesiExportMapping additionalSourceMapping){
243
		if (!state.getConfig().isDoTaxaPhase1()){
244
		    return true;
245
		}
243

  
246 244
	    int count = 0;
247 245
		int pastCount = 0;
248 246
		boolean success = true;
......
490 488
            logger.info("Started new transaction for rank, kingdom, typeName, expertFk and speciesExpertFK. Fetching some " + pluralString + " (max: " + limit + ") ...");
491 489
        }
492 490
		int partitionCount = 0;
493
		List<TaxonBase> list;
491
		@SuppressWarnings("rawtypes")
492
        List<TaxonBase> list;
494 493
		while ((list = getNextTaxonPartition(TaxonBase.class, limit, partitionCount++, null)) != null) {
495 494

  
496 495
			if (logger.isDebugEnabled()) {
......
507 506
				doCount(count++, modCount, pluralString);
508 507
				Integer typeNameFk = getTypeNameFk(taxonName, state);
509 508
				Integer kingdomFk = findKingdomIdFromTreeIndex(taxon, state);
509
				Integer rankFk = getRankFk(taxonName, kingdomFk);
510 510

  
511 511
			    invokeRankDataAndTypeNameFkAndKingdomFk(taxonName, state.getDbId(taxon),
512
						typeNameFk, kingdomFk, state);
512
						typeNameFk, kingdomFk, rankFk, state);
513 513
			}
514 514

  
515 515
			// Commit transaction
......
590 590
                    matcher = pattern.matcher(treeIndex);
591 591
                    if(matcher.find()) {
592 592
                        String treeIndexKingdom = matcher.group(0);
593
                        kingdomID = state.getTreeIndexKingdomMap().get(treeIndexKingdom);
593
                        Map<String, Integer> map = state.getTreeIndexKingdomMap();
594
                        kingdomID = map.get(treeIndexKingdom);
594 595
                    }
595 596
                }
596 597
                if(Rank.DOMAIN().equals(taxon.getName().getRank())){
......
1095 1096
	 * @param nomenclaturalCode The {@link NomenclaturalCode NomenclaturalCode}.
1096 1097
	 * @param taxonFk The TaxonFk to store the values for.
1097 1098
	 * @param typeNameFk The TypeNameFk.
1099
	 * @param rankFk
1098 1100
	 * @param state
1099 1101
	 * @param kindomFk The KingdomFk.
1100 1102
	 * @param expertFk The ExpertFk.
......
1102 1104
	 * @return Whether save was successful or not.
1103 1105
	 */
1104 1106
	private boolean invokeRankDataAndTypeNameFkAndKingdomFk(TaxonName taxonName,
1105
			Integer taxonFk, Integer typeNameFk, Integer kingdomFk, PesiExportState state) {
1106

  
1107
	    NomenclaturalCode nomenclaturalCodes = taxonName.getNameType();
1107
			Integer taxonFk, Integer typeNameFk, Integer kingdomFk, Integer rankFk, PesiExportState state) {
1108 1108

  
1109
	    Integer rankFk = null;
1110 1109
	    try {
1111 1110
			int index = 1;
1112
			rankFk = getRankFk(taxonName, kingdomFk);
1113 1111
			if (rankFk != null) {
1114 1112
				rankTypeExpertsUpdateStmt.setInt(index++, rankFk);
1115 1113
			} else {
......
1157 1155
			rankTypeExpertsUpdateStmt.executeUpdate();
1158 1156
			return true;
1159 1157
		} catch (SQLException e) {
1160
			logger.error("Data could not be inserted into database: " + e.getMessage() + "; rankFk = " + rankFk + "; kingdomFk = " + kingdomFk );
1158
		    String name = taxonName == null? null:taxonName.getTitleCache();
1159
			logger.error("Data could not be inserted into database: " + e.getMessage() + "; rankFk = " + rankFk + "; kingdomFk = " + kingdomFk  + "; taxonFk = "+ taxonFk  + "; typeNameFk = "  + typeNameFk + "; name = " + name);
1161 1160
			e.printStackTrace();
1162 1161
			return false;
1163 1162
		} catch (Exception e) {
1164
			logger.error("Some exception occurred: " + e.getMessage() + "; rankFk = " + rankFk + "; kingdomFk = " + kingdomFk);
1163
		    String name = taxonName == null? null:taxonName.getTitleCache();
1164
            logger.error("Some exception occurred: " + e.getMessage() + "; rankFk = " + rankFk + "; kingdomFk = " + kingdomFk  + "; taxonFk = "+ taxonFk + "; typeNameFk = " + typeNameFk + "; name = " + name);
1165 1165
			e.printStackTrace();
1166 1166
			return false;
1167 1167
		}
......
1173 1173
	 * @return Whether the delete operation was successful or not.
1174 1174
	 */
1175 1175
	protected boolean doDelete(PesiExportState state) {
1176
	    if (!state.getConfig().isDoTaxaPhase1()){
1177
	        return true;
1178
	    }
1176

  
1179 1177
		Source destination =  state.getConfig().getDestination();
1180 1178

  
1181 1179
		String[] tables = new String[]{"AdditionalTaxonSource","CommonNameSource","CommonName",
......
1227 1225
	    if (nodes == null||nodes.isEmpty()){
1228 1226
	        kingdomId = getKingdomFk(taxonName);
1229 1227
	    }else{
1228
	        //should not happen, method exists only pure names
1230 1229
	        kingdomId = findKingdomIdFromTreeIndex(nodes.iterator().next().getTaxon(), state);
1231 1230
	    }
1232 1231
        return getRankCache(taxonName, kingdomId, state);
......
2208 2207
		//experts
2209 2208
		ExtensionType extensionTypeSpeciesExpertName = (ExtensionType)getTermService().find(PesiTransformer.uuidExtSpeciesExpertName);
2210 2209
		mapping.addMapper(DbExtensionMapper.NewInstance(extensionTypeSpeciesExpertName, "SpeciesExpertName"));
2211

  
2212 2210
		ExtensionType extensionTypeExpertName = (ExtensionType)getTermService().find(PesiTransformer.uuidExtExpertName);
2213 2211
		mapping.addMapper(DbExtensionMapper.NewInstance(extensionTypeExpertName, "ExpertName"));
2214 2212

  
2215
		//handled in Phase02 now
2216
//		mapping.addMapper(MethodMapper.NewInstance("ParentTaxonFk", this, TaxonBase.class, PesiExportState.class));  //by AM, doesn't work, FK exception
2213
		//ParentTaxonFk handled in Phase02 now
2217 2214
		mapping.addMapper(ObjectChangeMapper.NewInstance(TaxonBase.class, TaxonName.class, "Name"));
2218 2215

  
2219 2216
		addNameMappers(mapping);
......
2248 2245
		mapping.addMapper(DbLastActionMapper.NewInstance("LastAction", true));
2249 2246

  
2250 2247
		addNameMappers(mapping);
2251
		//TODO add author mapper, TypeNameFk
2248
		//TODO add author mapper
2252 2249

  
2253 2250
		return mapping;
2254 2251
	}
2255 2252

  
2256 2253
	private void addNameMappers(PesiExportMapping mapping) {
2254

  
2255
	    //epithets
2257 2256
		mapping.addMapper(DbStringMapper.NewInstance("GenusOrUninomial", "GenusOrUninomial"));
2258 2257
		mapping.addMapper(DbStringMapper.NewInstance("InfraGenericEpithet", "InfraGenericEpithet"));
2259 2258
		mapping.addMapper(DbStringMapper.NewInstance("SpecificEpithet", "SpecificEpithet"));
2260 2259
		mapping.addMapper(DbStringMapper.NewInstance("InfraSpecificEpithet", "InfraSpecificEpithet"));
2261 2260

  
2261
		//full name
2262 2262
//		mapping.addMapper(DbStringMapper.NewInstance("NameCache", "WebSearchName"));  //does not work as we need other cache strategy
2263 2263
		mapping.addMapper(MethodMapper.NewInstance("WebSearchName", this, TaxonName.class));
2264

  
2265 2264
		mapping.addMapper(MethodMapper.NewInstance("FullName", this, TaxonName.class));
2266 2265

  
2267

  
2266
		//nom ref
2268 2267
		mapping.addMapper(MethodMapper.NewInstance("NomRefString", this, TaxonName.class));
2269 2268

  
2269
		//status
2270 2270
		mapping.addMapper(MethodMapper.NewInstance("NameStatusFk", this, TaxonName.class));
2271 2271
		mapping.addMapper(MethodMapper.NewInstance("NameStatusCache", this, TaxonName.class, PesiExportState.class));
2272
		mapping.addMapper(MethodMapper.NewInstance("TypeFullnameCache", this, TaxonName.class));
2273
		//TODO TypeNameFk
2274

  
2275
		//quality status
2276 2272
		mapping.addMapper(MethodMapper.NewInstance("QualityStatusFk", this, TaxonName.class));
2277 2273
		mapping.addMapper(MethodMapper.NewInstance("QualityStatusCache", this, TaxonName.class, PesiExportState.class));
2278 2274

  
2275
		//types
2276
		mapping.addMapper(MethodMapper.NewInstance("TypeFullnameCache", this, TaxonName.class));
2277
		//TypeNameFk handled in Phase3
2278

  
2279
		//supplemental
2279 2280
		mapping.addMapper(MethodMapper.NewInstance("IdInSource", this, IdentifiableEntity.class));
2280 2281
		mapping.addMapper(MethodMapper.NewInstance("OriginalDB", this, IdentifiableEntity.class) );
2281 2282

  

Also available in: Unified diff