Project

General

Profile

« Previous | Next » 

Revision 8422c0cd

Added by Andreas Müller almost 8 years ago

Remove generics from Reference in cdmlib-app #5830

View differences:

cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/erms/ErmsTaxonImport.java
1 1
/**
2 2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
3
* European Distributed Institute of Taxonomy
4 4
* http://www.e-taxonomy.eu
5
* 
5
*
6 6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7 7
* See LICENSE.TXT at the top of this package for the full license terms.
8 8
*/
......
53 53
@Component
54 54
public class ErmsTaxonImport  extends ErmsImportBase<TaxonBase<?>> implements IMappingImport<TaxonBase<?>, ErmsImportState>{
55 55
	private static final Logger logger = Logger.getLogger(ErmsTaxonImport.class);
56
	
56

  
57 57
	public static final UUID TNS_EXT_UUID = UUID.fromString("41cb0450-ac84-4d73-905e-9c7773c23b05");
58
	
58

  
59 59
	private DbImportMapping<ErmsImportState, ErmsImportConfigurator> mapping;
60
	
60

  
61 61
	private static final String pluralString = "taxa";
62 62
	private static final String dbTableName = "tu";
63 63
	private static final Class<?> cdmTargetClass = TaxonBase.class;
......
65 65
	public ErmsTaxonImport(){
66 66
		super(pluralString, dbTableName, cdmTargetClass);
67 67
	}
68
	
69
	
68

  
69

  
70 70

  
71 71
//	/* (non-Javadoc)
72 72
//	 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getIdQuery()
......
81 81
	/* (non-Javadoc)
82 82
	 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
83 83
	 */
84
	protected DbImportMapping<ErmsImportState, ErmsImportConfigurator> getMapping() {
84
	@Override
85
    protected DbImportMapping<ErmsImportState, ErmsImportConfigurator> getMapping() {
85 86
		if (mapping == null){
86 87
			mapping = new DbImportMapping<ErmsImportState, ErmsImportConfigurator>();
87
			
88

  
88 89
			mapping.addMapper(DbImportObjectCreationMapper.NewInstance(this, "id", TAXON_NAMESPACE)); //id + tu_status
89 90
			UUID tsnUuid = ErmsTransformer.uuidTsn;
90
			mapping.addMapper(DbImportLsidMapper.NewInstance("GUID", "lsid")); 
91
			mapping.addMapper(DbImportLsidMapper.NewInstance("GUID", "lsid"));
91 92

  
92
			ExtensionType tsnExtType = getExtensionType(tsnUuid, "TSN", "TSN", "TSN"); 
93
			ExtensionType tsnExtType = getExtensionType(tsnUuid, "TSN", "TSN", "TSN");
93 94
			mapping.addMapper(DbImportExtensionMapper.NewInstance("tsn", tsnExtType));
94 95
//			mapping.addMapper(DbImportStringMapper.NewInstance("tu_name", "(NonViralName)name.nameCache"));
95
			
96
			ExtensionType displayNameExtType = getExtensionType(ErmsTransformer.uuidDisplayName, "display name", "display name", "display name"); 
96

  
97
			ExtensionType displayNameExtType = getExtensionType(ErmsTransformer.uuidDisplayName, "display name", "display name", "display name");
97 98
			mapping.addMapper(DbImportExtensionMapper.NewInstance("tu_displayname", displayNameExtType));
98
			ExtensionType fuzzyNameExtType = getExtensionType(ErmsTransformer.uuidFuzzyName, "fuzzy name", "fuzzy name", "fuzzy name"); 
99
			ExtensionType fuzzyNameExtType = getExtensionType(ErmsTransformer.uuidFuzzyName, "fuzzy name", "fuzzy name", "fuzzy name");
99 100
			mapping.addMapper(DbImportExtensionMapper.NewInstance("tu_fuzzyname", fuzzyNameExtType));
100 101
			mapping.addMapper(DbImportStringMapper.NewInstance("tu_authority", "(NonViralName)name.authorshipCache"));
101
			
102
			ExtensionType fossilStatusExtType = getExtensionType(ErmsTransformer.uuidFossilStatus, "fossil status", "fossil status", "fos. stat."); 
102

  
103
			ExtensionType fossilStatusExtType = getExtensionType(ErmsTransformer.uuidFossilStatus, "fossil status", "fossil status", "fos. stat.");
103 104
			mapping.addMapper(DbImportExtensionMapper.NewInstance("fossil_name", fossilStatusExtType));
104 105
//			mapping.addMapper(DbImportExtensionTypeCreationMapper.NewInstance("fossil_name", EXTENSION_TYPE_NAMESPACE, "fossil_name", "fossil_name", "fossil_name"));
105 106

  
106
			ExtensionType unacceptExtType = getExtensionType(ErmsTransformer.uuidUnacceptReason, "unaccept reason", "unaccept reason", "reason"); 
107
			ExtensionType unacceptExtType = getExtensionType(ErmsTransformer.uuidUnacceptReason, "unaccept reason", "unaccept reason", "reason");
107 108
			mapping.addMapper(DbImportExtensionMapper.NewInstance("tu_unacceptreason", unacceptExtType));
108
			
109
			ExtensionType qualityStatusExtType = getExtensionType(ErmsTransformer.uuidQualityStatus, "quality status", "quality status", "quality status"); 
109

  
110
			ExtensionType qualityStatusExtType = getExtensionType(ErmsTransformer.uuidQualityStatus, "quality status", "quality status", "quality status");
110 111
			mapping.addMapper(DbImportExtensionMapper.NewInstance("qualitystatus_name", qualityStatusExtType)); //checked by Tax Editor ERMS1.1, Added by db management team (2x), checked by Tax Editor
111 112

  
112 113
			mapping.addMapper(DbImportMarkerMapper.NewInstance("tu_marine", ErmsTransformer.uuidMarkerMarine, "marine", "marine", "marine", null));
......
114 115
			mapping.addMapper(DbImportMarkerMapper.NewInstance("tu_fresh", ErmsTransformer.uuidMarkerFreshwater, "freshwater", "fresh", "fresh", null));
115 116
			mapping.addMapper(DbImportMarkerMapper.NewInstance("tu_terrestrial", ErmsTransformer.uuidMarkerTerrestrial, "terrestrial", "terrestrial", "terrestrial", null));
116 117

  
117
			
118

  
118 119
//			UUID hiddenUuid = ErmsTransformer.uuidHidden;
119 120
//			mapping.addMapper(DbImportMarkerCreationMapper.Mapper.NewInstance("qualitystatus_name", qualityUuid, "quality status", "quality status", "quality status")); //checked by Tax Editor ERMS1.1, Added by db management team (2x), checked by Tax Editor
120
			
121

  
121 122
			//not yet implemented
122
			mapping.addMapper(DbNotYetImplementedMapper.NewInstance("tu_sp", "included in rank/object creation")); 
123
			mapping.addMapper(DbNotYetImplementedMapper.NewInstance("tu_sp", "included in rank/object creation"));
123 124
			mapping.addMapper(DbIgnoreMapper.NewInstance("cache_citation", "Needs check if this is needed in PESI"));
124
			
125
			
125

  
126

  
126 127
			//ignore
127 128
			mapping.addMapper(DbIgnoreMapper.NewInstance("tu_fossil", "tu_fossil implemented as foreign key"));
128
			
129

  
129 130
		}
130 131

  
131 132
		return mapping;
......
136 137
	 */
137 138
	@Override
138 139
	protected String getRecordQuery(ErmsImportConfigurator config) {
139
		String strSelect = " SELECT tu.*, parent1.tu_name AS parent1name, parent2.tu_name AS parent2name, parent3.tu_name AS parent3name, " 
140
			+ " parent1.tu_rank AS parent1rank, parent2.tu_rank AS parent2rank, parent3.tu_rank AS parent3rank, " + 
140
		String strSelect = " SELECT tu.*, parent1.tu_name AS parent1name, parent2.tu_name AS parent2name, parent3.tu_name AS parent3name, "
141
			+ " parent1.tu_rank AS parent1rank, parent2.tu_rank AS parent2rank, parent3.tu_rank AS parent3rank, " +
141 142
			" status.status_id as status_id, status.status_name, fossil.fossil_name, qualitystatus.qualitystatus_name";
142
		String strFrom = " FROM tu  LEFT OUTER JOIN  tu AS parent1 ON parent1.id = tu.tu_parent " + 
143
				" LEFT OUTER JOIN   tu AS parent2  ON parent2.id = parent1.tu_parent " + 
144
				" LEFT OUTER JOIN tu AS parent3 ON parent2.tu_parent = parent3.id " + 
145
				" LEFT OUTER JOIN status ON tu.tu_status = status.status_id " + 
143
		String strFrom = " FROM tu  LEFT OUTER JOIN  tu AS parent1 ON parent1.id = tu.tu_parent " +
144
				" LEFT OUTER JOIN   tu AS parent2  ON parent2.id = parent1.tu_parent " +
145
				" LEFT OUTER JOIN tu AS parent3 ON parent2.tu_parent = parent3.id " +
146
				" LEFT OUTER JOIN status ON tu.tu_status = status.status_id " +
146 147
				" LEFT OUTER JOIN fossil ON tu.tu_fossil = fossil.fossil_id " +
147 148
				" LEFT OUTER JOIN qualitystatus ON tu.tu_qualitystatus = qualitystatus.id ";
148 149
		String strWhere = " WHERE ( tu.id IN (" + ID_LIST_TOKEN + ") )";
149 150
		String strRecordQuery = strSelect + strFrom + strWhere;
150 151
		return strRecordQuery;
151 152
	}
152
	
153
	
153

  
154

  
154 155
	/* (non-Javadoc)
155 156
	 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#doInvoke(eu.etaxonomy.cdm.io.erms.ErmsImportState)
156 157
	 */
157 158
	@Override
158 159
	protected void doInvoke(ErmsImportState state) {
159 160
		state.setAcceptedTaxaKeys(getAcceptedTaxaKeys(state));
160
		
161

  
161 162
		//first path
162 163
		super.doInvoke(state);
163 164
		return;
......
180 181
				" UNION  SELECT DISTINCT %s FROM %s " +
181 182
				" UNION  SELECT DISTINCT %s FROM %s " +
182 183
				" UNION  SELECT DISTINCT %s FROM %s ";
183
		sql = String.format(sql, 
184
				parentCol, taxonTable, 
185
				idCol, taxonTable, accCol,  
184
		sql = String.format(sql,
185
				parentCol, taxonTable,
186
				idCol, taxonTable, accCol,
186 187
				accCol, taxonTable,
187 188
				tuFk, vernacularsTable,
188 189
				tuFk, distributionTable);
......
208 209
		Class<?> cdmClass;
209 210
		Set<String> idSet;
210 211
		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
211
		
212

  
212 213
		try{
213 214
				Set<String> nameIdSet = new HashSet<String>();
214 215
				Set<String> referenceIdSet = new HashSet<String>();
......
228 229
		}
229 230
		return result;
230 231
	}
231
	
232

  
232 233
	@Override
233 234
	public TaxonBase<?> createObject(ResultSet rs, ErmsImportState state) throws SQLException {
234 235
		int statusId = rs.getInt("status_id");
235 236
//		Object accTaxonId = rs.getObject("tu_acctaxon");
236 237
		Integer meId = rs.getInt("id");
237
		
238

  
238 239
		String tuName = rs.getString("tu_name");
239 240
		String displayName = rs.getString("tu_displayname");
240
		
241

  
241 242
		String parent1Name = rs.getString("parent1name");
242 243
		Integer parent1Rank = rs.getInt("parent1rank");
243
		
244

  
244 245
		String parent2Name = rs.getString("parent2name");
245 246
		Integer parent2Rank = rs.getInt("parent2rank");
246
		
247

  
247 248
		String parent3Name = rs.getString("parent3name");
248 249
//		Integer parent3Rank = rs.getInt("parent3rank");
249
		
250

  
250 251
		NonViralName<?> taxonName = getTaxonName(rs, state);
251 252
		//set epithets
252 253
		if (taxonName.isGenus() || taxonName.isSupraGeneric()){
......
275 276
				logger.warn(warning);
276 277
				taxonName.setNameCache(tuName);
277 278
			}
278
			
279

  
279 280
		}
280 281
		//e.g. Leucon [Platyhelminthes] ornatus
281 282
		if (containsBrackets(displayName)){
282 283
			taxonName.setNameCache(displayName);
283 284
			logger.warn("Set name cache: " +  displayName + ";id =" + meId);
284 285
		}
285
		
286

  
286 287
		//add original source for taxon name (taxon original source is added in mapper
287
		Reference<?> citation = state.getTransactionalSourceReference();
288
		Reference citation = state.getTransactionalSourceReference();
288 289
		addOriginalSource(rs, taxonName, "id", NAME_NAMESPACE, citation);
289
		
290

  
290 291
		//old: if (statusId == 1){
291 292
		if (state.getAcceptedTaxaKeys().contains(meId)){
292 293
			Taxon result = Taxon.NewInstance(taxonName, citation);
......
305 306
	private void handleNotAcceptedTaxon(Taxon taxon, int statusId, ErmsImportState state, ResultSet rs) throws SQLException {
306 307
		ExtensionType notAccExtensionType = getExtensionType(state, ErmsTransformer.uuidErmsTaxonStatus, "ERMS taxon status", "ERMS taxon status", "status", null);
307 308
		String statusName = rs.getString("status_name");
308
		
309

  
309 310
		if (statusId > 1){
310 311
			taxon.addExtension(statusName, notAccExtensionType);
311 312
		}
......
315 316

  
316 317
	/**
317 318
	 * @param parent1Rank
318
	 * @param displayName 
319
	 * @param taxonName 
320
	 * @param meId 
319
	 * @param displayName
320
	 * @param taxonName
321
	 * @param meId
321 322
	 */
322 323
	private void handleException(Integer parent1Rank, NonViralName<?> taxonName, String displayName, Integer meId) {
323 324
		logger.warn("Parent of infra specific taxon is higher than species. Used nameCache: " + displayName +  "; id=" + meId) ;
......
357 358
	 * Returns an empty Taxon Name instance according to the given rank and kingdom.
358 359
	 * @param rs
359 360
	 * @return
360
	 * @throws SQLException 
361
	 * @throws SQLException
361 362
	 */
362 363
	private NonViralName<?> getTaxonName(ResultSet rs, ErmsImportState state) throws SQLException {
363 364
		NonViralName<?> result;
364 365
		Integer kingdomId = parseKingdomId(rs);
365 366
		Integer intRank = rs.getInt("tu_rank");
366
		
367

  
367 368
		NomenclaturalCode nc = ErmsTransformer.kingdomId2NomCode(kingdomId);
368 369
		Rank rank = null;
369 370
		if (kingdomId != null){
......
384 385
			NonViralNameDefaultCacheStrategy<?> cacheStrategy = PesiTaxonExport.zooNameStrategy;
385 386
			result.setCacheStrategy(cacheStrategy);
386 387
		}
387
		
388

  
388 389
		return result;
389 390
	}
390 391

  
391 392
	/**
392
	 * Returns the kingdom id by extracting it from the second character in the <code>tu_sp</code> 
393
	 * Returns the kingdom id by extracting it from the second character in the <code>tu_sp</code>
393 394
	 * attribute. If the attribute can not be parsed to a valid id <code>null</code>
394 395
	 * is returned. If the attribute is <code>null</code> the id of the record is returned.
395 396
	 * @param rs
......
402 403
		if (treeString != null){
403 404
			if (CdmUtils.isNotEmpty(treeString) && treeString.length() > 1){
404 405
				String strKingdom = treeString.substring(1,2);
405
				
406

  
406 407
				if (! treeString.substring(0, 1).equals("#") && ! treeString.substring(2, 3).equals("#") ){
407 408
					logger.warn("Tree string " + treeString + " has no recognized format");
408 409
				}else{
......
420 421
		return result;
421 422
	}
422 423

  
423
	
424

  
424 425
	/* (non-Javadoc)
425 426
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
426 427
	 */
......
429 430
		IOValidator<ErmsImportState> validator = new ErmsTaxonImportValidator();
430 431
		return validator.validate(state);
431 432
	}
432
	
433
	
433

  
434

  
434 435
	/* (non-Javadoc)
435 436
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
436 437
	 */
437
	protected boolean isIgnore(ErmsImportState state){
438
	@Override
439
    protected boolean isIgnore(ErmsImportState state){
438 440
		return ! state.getConfig().isDoTaxa();
439 441
	}
440 442

  

Also available in: Unified diff