Project

General

Profile

« Previous | Next » 

Revision 96533ef2

Added by Andreas Müller about 12 years ago

getAllRelationships reimplemented to match only relevant relationship classes,
Export generics include Transformer type

View differences:

cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTransformer.java
38 38
import eu.etaxonomy.cdm.model.location.NamedArea;
39 39
import eu.etaxonomy.cdm.model.location.TdwgArea;
40 40
import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
41
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
41 42
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
42 43
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
43 44
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
......
47 48
import eu.etaxonomy.cdm.model.reference.Reference;
48 49
import eu.etaxonomy.cdm.model.reference.ReferenceType;
49 50
import eu.etaxonomy.cdm.model.taxon.Synonym;
51
import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
50 52
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
51 53
import eu.etaxonomy.cdm.model.taxon.Taxon;
52 54
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
......
219 221
	public static int IS_INFERRED_GENUS_FOR = 302;
220 222
	public static int IS_POTENTIAL_COMBINATION_FOR = 303;
221 223

  
222
	public static String STR_IS_BASIONYM_FOR = "is basionym for";
223 224
	public static String STR_IS_BASIONYM_FOR_ZOOL = "is original combination for";
224
	public static String STR_IS_LATER_HOMONYM_OF = "is later homonym of";
225
	public static String STR_IS_REPLACED_SYNONYM_FOR = "is replaced synonym for";
226
	public static String STR_IS_VALIDATION_OF = "is validation of";
227
	public static String STR_IS_LATER_VALIDATION_OF = "is later validation of";
228
	public static String STR_IS_TYPE_OF = "is type of";
229
	public static String STR_IS_CONSERVED_TYPE_OF = "is conserved type of";
230
	public static String STR_IS_REJECTED_TYPE_OF = "is rejected type of";
231
	public static String STR_IS_FIRST_PARENT_OF = "is first parent of";
232
	public static String STR_IS_SECOND_PARENT_OF = "is second parent of";
233
	public static String STR_IS_FEMALE_PARENT_OF = "is female parent of";
234
	public static String STR_IS_MALE_PARENT_OF = "is male parent of";
235
	public static String STR_IS_CONSERVED_AGAINST = "is conserved against";
236
	public static String STR_IS_REJECTED_IN_FAVOUR_OF = "is rejected in favour of";
237
	public static String STR_IS_TREATED_AS_LATER_HOMONYM_OF = "is treated as later homonym of";
238
	public static String STR_IS_ORTHOGRAPHIC_VARIANT_OF = "is orthographic variant of";
239
	public static String STR_IS_ALTERNATIVE_NAME_FOR = "is alternative name for";
240
	public static String STR_HAS_SAME_TYPE_AS = "has same type as";
241
	public static String STR_IS_LECTOTYPE_OF = "is lectotype of";
242
	public static String STR_TYPE_NOT_DESIGNATED = "type not designated";
243
	public static String STR_IS_TAXONOMICALLY_INCLUDED_IN  = "is taxonomically included in";
244
	public static String STR_IS_SYNONYM_OF = "is synonym of";
245
	public static String STR_IS_MISAPPLIED_NAME_FOR = "is misapplied name for";
246
	public static String STR_IS_PRO_PARTE_SYNONYM_OF = "is pro parte synonym of";
247
	public static String STR_IS_PARTIAL_SYNONYM_OF = "is partial synonym of";
248
	public static String STR_IS_HETEROTYPIC_SYNONYM_OF = "is heterotypic synonym of";
249 225
	public static String STR_IS_HETEROTYPIC_SYNONYM_OF_ZOOL = "is subjective synonym of";
250
	public static String STR_IS_HOMOTYPIC_SYNONYM_OF = "is homotypic synonym of";
251 226
	private static final String STR_IS_HOMOTYPIC_SYNONYM_OF_ZOOL = "is objective synonym of";
252
	public static String STR_IS_PRO_PARTE_AND_HOMOTYPIC_SYNONYM_OF = "is pro parte and homotypic synonym of";
253
	public static String STR_IS_PRO_PARTE_AND_HETEROTYPIC_SYNONYM_OF = "is pro parte and heterotypic synonym of";
254
	public static String STR_IS_PARTIAL_AND_HOMOTYPIC_SYNONYM_OF = "is partial and homotypic synonym of";
255
	public static String STR_IS_PARTIAL_AND_HETEROTYPIC_SYNONYM_OF = "is partial and heterotypic synonym of";
256
	public static String STR_IS_INFERRED_EPITHET_FOR = "is inferred epithet for";
257
	public static String STR_IS_INFERRED_GENUS_FOR = "is inferred genus for";
258
	public static String STR_IS_POTENTIAL_COMBINATION_FOR = "is potential combination for";
259 227
	
228
	
229
	//namespaces
260 230
	public static String STR_NAMESPACE_NOMINAL_TAXON = "Nominal taxon from TAX_ID:";
261 231
	public static String STR_NAMESPACE_INFERRED_EPITHET = "Inferred epithet from TAX_ID:";
262 232
	public static String STR_NAMESPACE_INFERRED_GENUS = "Inferred genus from TAX_ID:";
263 233
	public static String STR_NAMESPACE_POTENTIAL_COMBINATION = "Potential combination from TAX_ID:";
264 234

  
235

  
265 236
	// Kingdoms
266 237
	public static int KINGDOM_NULL = 0;
267 238
	public static int KINGDOM_ANIMALIA = 2;
......
1253 1224
	private Map<String, String> tdwgLabelMap = new HashMap<String, String>();
1254 1225
	private Map<Integer, String> nameStatusCacheMap  = new HashMap<Integer, String>();
1255 1226
	private Map<Integer, String> qualityStatusCacheMap  = new HashMap<Integer, String>();
1227
	private Map<Integer, String> taxRelQualifierCacheMap  = new HashMap<Integer, String>();
1256 1228
	
1257 1229
	
1258 1230
	private Source destination;
......
1298 1270
					this.qualityStatusCacheMap.put(key, cache);
1299 1271
				} 
1300 1272
			}
1273
			//qualityStatusCache
1274
			sql = " SELECT QualifierId, Qualifier FROM RelTaxonQualifier ";
1275
			rs = destination.getResultSet(sql);
1276
			while (rs.next()){
1277
				Integer key = rs.getInt("QualifierId");
1278
				String cache = rs.getString("Qualifier");
1279
				if (StringUtils.isNotBlank(cache)){
1280
					this.taxRelQualifierCacheMap.put(key, cache);
1281
				} 
1282
			}
1283
			
1284
			
1301 1285
					
1302 1286
		} catch (SQLException e) {
1303 1287
			logger.error("SQLException when trying to read area map", e);
......
3514 3498
	 * @param relation
3515 3499
	 * @return
3516 3500
	 */
3517
	public static String taxonRelation2RelTaxonQualifierCache(RelationshipBase<?,?,?> relation, NomenclaturalCode code){
3518
		if (relation == null) {
3501
	public String getCacheByRelationshipType(RelationshipBase relation, NomenclaturalCode code){
3502
		if (relation == null){
3519 3503
			return null;
3520
		}
3521
		RelationshipTermBase<?> type = relation.getType();
3522
		if (type.equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())) {
3523
			return STR_IS_MISAPPLIED_NAME_FOR;
3524
		} else if (type.equals(SynonymRelationshipType.SYNONYM_OF())) {
3525
			return STR_IS_SYNONYM_OF;
3526
		} else if (type.equals(SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF())) {
3527
			if (code.equals(NomenclaturalCode.ICZN)){
3528
				return STR_IS_HOMOTYPIC_SYNONYM_OF_ZOOL;
3529
			}else{
3530
				return STR_IS_HOMOTYPIC_SYNONYM_OF;
3531
			}
3532
		} else if (type.equals(SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF())) {
3533
			if (code.equals(NomenclaturalCode.ICZN)){
3534
				return STR_IS_HETEROTYPIC_SYNONYM_OF_ZOOL;
3535
			}else{
3536
				return STR_IS_HETEROTYPIC_SYNONYM_OF;
3537
			}
3538
		} else if (type.equals(SynonymRelationshipType.INFERRED_EPITHET_OF())) {
3539
			return STR_IS_INFERRED_EPITHET_FOR;
3540
		} else if (type.equals(SynonymRelationshipType.INFERRED_GENUS_OF())) {
3541
			return STR_IS_INFERRED_GENUS_FOR;
3542
		} else if (type.equals(SynonymRelationshipType.POTENTIAL_COMBINATION_OF())) {
3543
			return STR_IS_POTENTIAL_COMBINATION_FOR;
3544
		} else if (type.equals(NameRelationshipType.BASIONYM())) {
3504
		}else{
3505
			//preliminary until #2816 is fixed
3506
			RelationshipTermBase<?> type = relation.getType();
3545 3507
			if (code.equals(NomenclaturalCode.ICZN)){
3546
				return STR_IS_BASIONYM_FOR_ZOOL;
3547
			}else{
3548
				return STR_IS_BASIONYM_FOR;
3508
				if (type.equals(NameRelationshipType.BASIONYM())) {
3509
					return STR_IS_BASIONYM_FOR_ZOOL;
3510
				}else if (type.equals(SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF())) {
3511
					return STR_IS_HOMOTYPIC_SYNONYM_OF_ZOOL;
3512
				} else if (type.equals(SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF())) {
3513
					return STR_IS_HETEROTYPIC_SYNONYM_OF_ZOOL;
3514
				} 
3549 3515
			}
3550
		} else if (type.equals(NameRelationshipType.LATER_HOMONYM())) {
3551
			return STR_IS_LATER_HOMONYM_OF;
3552
		} else if (type.equals(NameRelationshipType.REPLACED_SYNONYM())) {
3553
			return STR_IS_REPLACED_SYNONYM_FOR;
3554
		} else if (type.equals(NameRelationshipType.VALIDATED_BY_NAME())) {
3555
			return STR_IS_VALIDATION_OF;
3556
		} else if (type.equals(NameRelationshipType.LATER_VALIDATED_BY_NAME())) {
3557
			return STR_IS_LATER_VALIDATION_OF;
3558
		} else if (type.equals(NameRelationshipType.CONSERVED_AGAINST())) {
3559
			return STR_IS_CONSERVED_AGAINST;
3560
		} else if (type.equals(NameRelationshipType.TREATED_AS_LATER_HOMONYM())) {
3561
			return STR_IS_TREATED_AS_LATER_HOMONYM_OF;
3562
		} else if (type.equals(NameRelationshipType.ORTHOGRAPHIC_VARIANT())) {
3563
			return STR_IS_ORTHOGRAPHIC_VARIANT_OF;
3564
		} else if (type.equals(NameRelationshipType.ALTERNATIVE_NAME())) {
3565
			return STR_IS_ALTERNATIVE_NAME_FOR;
3566
		} else {
3567
			logger.warn("No equivalent RelationshipType found in datawarehouse for: " + type.getTitleCache());
3568
		}
3516
			//end preliminary
3569 3517
			
3570
		// The following have no equivalent attribute in CDM
3571
//		IS_TYPE_OF
3572
//		IS_CONSERVED_TYPE_OF
3573
//		IS_REJECTED_TYPE_OF
3574
//		IS_FIRST_PARENT_OF
3575
//		IS_SECOND_PARENT_OF
3576
//		IS_FEMALE_PARENT_OF
3577
//		IS_MALE_PARENT_OF
3578
//		IS_REJECTED_IN_FAVOUR_OF
3579
//		HAS_SAME_TYPE_AS
3580
//		IS_LECTOTYPE_OF
3581
//		TYPE_NOT_DESIGNATED
3582
//		IS_PRO_PARTE_SYNONYM_OF
3583
//		IS_PARTIAL_SYNONYM_OF
3584
//		IS_PRO_PARTE_AND_HOMOTYPIC_SYNONYM_OF
3585
//		IS_PRO_PARTE_AND_HETEROTYPIC_SYNONYM_OF
3586
//		IS_PARTIAL_AND_HOMOTYPIC_SYNONYM_OF
3587
//		IS_PARTIAL_AND_HETEROTYPIC_SYNONYM_OF
3588

  
3589
		return null;
3518
			Integer key = taxonRelation2RelTaxonQualifierFk(relation);
3519
			return this.taxRelQualifierCacheMap.get(key); 
3520
		}
3590 3521
	}
3591 3522
	
3592 3523
	/**
......
3602 3533
		if (type.equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())) {
3603 3534
			return IS_MISAPPLIED_NAME_FOR;
3604 3535
		} else if (type.equals(SynonymRelationshipType.SYNONYM_OF())) {
3605
			return IS_SYNONYM_OF;
3536
			SynonymRelationship synRel = CdmBase.deproxy(relation, SynonymRelationship.class);
3537
			if (synRel.isProParte()){
3538
				return IS_PRO_PARTE_SYNONYM_OF;
3539
			}else if (synRel.isPartial()){
3540
				return IS_PARTIAL_SYNONYM_OF;
3541
			}else{
3542
				return IS_SYNONYM_OF;
3543
			}
3606 3544
		} else if (type.equals(SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF())) {
3607
			return IS_HOMOTYPIC_SYNONYM_OF;
3545
			SynonymRelationship synRel = CdmBase.deproxy(relation, SynonymRelationship.class);
3546
			if (synRel.isProParte()){
3547
				return IS_PRO_PARTE_AND_HOMOTYPIC_SYNONYM_OF;
3548
			}else if (synRel.isPartial()){
3549
				return IS_PARTIAL_AND_HOMOTYPIC_SYNONYM_OF;
3550
			}else{
3551
				return IS_HOMOTYPIC_SYNONYM_OF;
3552
			}
3608 3553
		} else if (type.equals(SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF())) {
3609
			return IS_HETEROTYPIC_SYNONYM_OF;
3554
			SynonymRelationship synRel = CdmBase.deproxy(relation, SynonymRelationship.class);
3555
			if (synRel.isProParte()){
3556
				return IS_PRO_PARTE_AND_HETEROTYPIC_SYNONYM_OF;
3557
			}else if (synRel.isPartial()){
3558
				return IS_PARTIAL_AND_HETEROTYPIC_SYNONYM_OF;
3559
			}else{
3560
				return IS_HETEROTYPIC_SYNONYM_OF;
3561
			}
3610 3562
		} else if (type.equals(SynonymRelationshipType.INFERRED_EPITHET_OF())) {
3611 3563
			return IS_INFERRED_EPITHET_FOR;
3612 3564
		} else if (type.equals(SynonymRelationshipType.INFERRED_GENUS_OF())) {
......
3631 3583
			return IS_ORTHOGRAPHIC_VARIANT_OF;
3632 3584
		} else if (type.equals(NameRelationshipType.ALTERNATIVE_NAME())) {
3633 3585
			return IS_ALTERNATIVE_NAME_FOR;
3586
		} else if (type.equals(HybridRelationshipType.FEMALE_PARENT())) {
3587
			return IS_FEMALE_PARENT_OF;
3588
		} else if (type.equals(HybridRelationshipType.MALE_PARENT())) {
3589
			return IS_MALE_PARENT_OF;
3590
		} else if (type.equals(HybridRelationshipType.FIRST_PARENT())) {
3591
			return IS_FIRST_PARENT_OF;
3592
		} else if (type.equals(HybridRelationshipType.SECOND_PARENT())) {
3593
			return IS_SECOND_PARENT_OF;
3594
		
3634 3595
		} else {
3635 3596
			logger.warn("No equivalent RelationshipType found in datawarehouse for: " + type.getTitleCache());
3636 3597
		}
......
3639 3600
//		IS_TYPE_OF
3640 3601
//		IS_CONSERVED_TYPE_OF
3641 3602
//		IS_REJECTED_TYPE_OF
3642
//		IS_FIRST_PARENT_OF
3643
//		IS_SECOND_PARENT_OF
3644
//		IS_FEMALE_PARENT_OF
3645
//		IS_MALE_PARENT_OF
3646 3603
//		IS_REJECTED_IN_FAVOUR_OF
3647 3604
//		HAS_SAME_TYPE_AS
3648 3605
//		IS_LECTOTYPE_OF
3649 3606
//		TYPE_NOT_DESIGNATED
3650
//		IS_PRO_PARTE_SYNONYM_OF
3651
//		IS_PARTIAL_SYNONYM_OF
3652
//		IS_PRO_PARTE_AND_HOMOTYPIC_SYNONYM_OF
3653
//		IS_PRO_PARTE_AND_HETEROTYPIC_SYNONYM_OF
3654
//		IS_PARTIAL_AND_HOMOTYPIC_SYNONYM_OF
3655
//		IS_PARTIAL_AND_HETEROTYPIC_SYNONYM_OF
3607

  
3656 3608

  
3657 3609
		return null;
3658 3610
	}
......
3748 3700
		}else{
3749 3701
			return this.qualityStatusCacheMap.get(qualityStatusId); 
3750 3702
		}
3751

  
3752 3703
	}
3753 3704

  
3754 3705
	public static String getOriginalDbBySources(BitSet sources) {

Also available in: Unified diff