Project

General

Profile

« Previous | Next » 

Revision ff5db610

Added by Katja Luther over 4 years ago

ref #1445: merging fauna europaea and erms

View differences:

app-import/src/main/java/eu/etaxonomy/cdm/app/common/tasks/CacheUpdater.java
14 14

  
15 15
import org.apache.log4j.Logger;
16 16

  
17
import eu.etaxonomy.cdm.api.service.config.CacheUpdaterConfigurator;
17 18
import eu.etaxonomy.cdm.app.common.CdmDestinations;
18 19
import eu.etaxonomy.cdm.database.ICdmDataSource;
19 20
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
20 21
import eu.etaxonomy.cdm.io.common.ImportResult;
21
import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
22

  
22 23
import eu.etaxonomy.cdm.model.name.TaxonName;
23 24
import eu.etaxonomy.cdm.model.reference.Reference;
24 25
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
......
63 64

  
64 65
		CacheUpdaterConfigurator config;
65 66
		try {
66
			config = CacheUpdaterConfigurator.NewExludedInstance(destination, classListStrings);
67
			config = CacheUpdaterConfigurator.NewInstance(destination, classListStrings);
67 68

  
68 69
			// invoke import
69 70
			CdmDefaultImport<CacheUpdaterConfigurator> myImport = new CdmDefaultImport<>();
cdm-pesi/src/main/java/eu/etaxonomy/cdm/app/common/CdmDestinations.java
34 34
	public static ICdmDataSource cdm_test_local_faunaEu_mysql(){
35 35
		DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
36 36
		String cdmServer = "127.0.0.1";
37
		String cdmDB = "cdm_faunaeu_2017_03";
37
		String cdmDB = "cdm_fauna_europaea";
38 38
		String cdmUserName = "root";
39 39
		return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
40 40
	}
cdm-pesi/src/main/java/eu/etaxonomy/cdm/app/pesi/merging/FaunaEuErmsFindIdenticalNamesActivator.java
3 3
import java.io.FileWriter;
4 4
import java.io.IOException;
5 5
import java.util.ArrayList;
6
import java.util.HashSet;
6 7
import java.util.Iterator;
7 8
import java.util.List;
8 9
import java.util.Set;
10
import java.util.UUID;
9 11

  
10 12
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
11 13
import eu.etaxonomy.cdm.app.common.CdmDestinations;
14
import eu.etaxonomy.cdm.app.util.TestDatabase;
12 15
import eu.etaxonomy.cdm.database.DbSchemaValidation;
13 16
import eu.etaxonomy.cdm.database.ICdmDataSource;
14 17
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
......
18 21
import eu.etaxonomy.cdm.model.name.IZoologicalName;
19 22
import eu.etaxonomy.cdm.model.name.Rank;
20 23
import eu.etaxonomy.cdm.model.name.TaxonName;
24
import eu.etaxonomy.cdm.model.taxon.Classification;
21 25
import eu.etaxonomy.cdm.model.taxon.Taxon;
22 26
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
27
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
23 28

  
24 29
public class FaunaEuErmsFindIdenticalNamesActivator {
25 30

  
26
	static final ICdmDataSource faunaEuropaeaSource = CdmDestinations.localH2();
27
	//static final ICdmDataSource ermsSource = CdmDestinations.cdm_test_andreasM();
31
	//static final ICdmDataSource faunaEuropaeaSource = CdmDestinations.localH2();
32
	static final ICdmDataSource faunaEuropaeaSource = CdmDestinations.cdm_test_local_faunaEu_mysql();
28 33

  
29 34
	//TODO hole aus beiden DB alle TaxonNameBases
30 35

  
......
59 64
		propertyPaths.add("taxonBases.taxonNodes.parent.*");
60 65
		propertyPaths.add("taxonBases.taxonNodes.parent.taxon.name.*");
61 66
		System.err.println("Start getIdenticalNames...");
62
		List<TaxonName> namesOfIdenticalTaxa = appCtrFaunaEu.getTaxonService().findIdenticalTaxonNameIds(propertyPaths);
67
		List<UUID> namesOfIdenticalTaxa = appCtrFaunaEu.getTaxonService().findIdenticalTaxonNameIds(propertyPaths);
63 68
		//List<UUID> namesOfIdenticalTaxa = appCtrFaunaEu.getTaxonService().findIdenticalTaxonNameIds(propertyPaths);
64 69

  
65 70
		System.err.println("first name: " + namesOfIdenticalTaxa.get(0) + " " + namesOfIdenticalTaxa.size());
66
		TaxonName zooName = namesOfIdenticalTaxa.get(0);
67
		System.err.println(zooName + " nr of taxa " + namesOfIdenticalTaxa.size());
71
		//TaxonName zooName = namesOfIdenticalTaxa.get(0);
72
		//System.err.println(zooName + " nr of taxa " + namesOfIdenticalTaxa.size());
68 73
		//TaxonNameComparator taxComp = new TaxonNameComparator();
69 74

  
70 75
		//Collections.sort(namesOfIdenticalTaxa,taxComp);
......
275 280
			writer.append("synonym");
276 281
		}
277 282
		writer.append(';');
278
		writer.append(merging.getPhylumInFaunaEu());
283
		writer.append(merging.getPhylumInFaunaEu().getTaxonTitleCache());
279 284
		writer.append(';');
280 285
		writer.append(merging.getParentStringInFaunaEu());
281 286
		writer.append(';');
......
299 304
		}
300 305

  
301 306
		writer.append(';');
302
		writer.append(merging.getPhylumInErms());
307
		writer.append(merging.getPhylumInErms().getTaxonTitleCache());
303 308
		writer.append(';');
304 309
		writer.append(merging.getParentStringInErms());
305 310
		writer.append(';');
......
308 313
	}
309 314

  
310 315

  
311
	private List<FaunaEuErmsMerging> createMergeObjects(List<TaxonName> names, CdmApplicationController appCtr){
316
	private List<FaunaEuErmsMerging> createMergeObjects(List<UUID> uuids, CdmApplicationController appCtr){
312 317

  
313 318
		List<FaunaEuErmsMerging> merge = new ArrayList<>();
314 319
		TaxonName zooName, zooName2;
315 320
		FaunaEuErmsMerging mergeObject;
316 321
		String idInSource1;
317
		for (int i = 0; i<names.size()-1; i=i+2){
318
			zooName = names.get(i);
319
			zooName2 = names.get(i+1);
320
			mergeObject = new FaunaEuErmsMerging();
321
			//TODO:überprüfen, ob die beiden Namen identisch sind und aus unterschiedlichen DB kommen
322

  
323
			//getPhylum
324
			String phylum1 = null;
325
			if (!zooName.getRank().isHigher(Rank.PHYLUM())){
326
				phylum1 =appCtr.getTaxonService().getPhylumName(zooName);
327
			}
328

  
329
			String phylum2 = null;
330
			if (!zooName2.getRank().isHigher(Rank.PHYLUM())){
331
				phylum2 = appCtr.getTaxonService().getPhylumName(zooName2);
332
			}
333
			mergeObject.setPhylumInErms(phylum1);
334
			mergeObject.setPhylumInFaunaEu(phylum2);
335

  
336
			//getUuids
337
			mergeObject.setUuidErms(zooName.getUuid().toString());
338
			mergeObject.setUuidFaunaEu(zooName.getUuid().toString());
339

  
340
			Iterator<IdentifiableSource> sources = zooName.getSources().iterator();
341
			if (sources.hasNext()){
342
				IdentifiableSource source = sources.next();
343
				idInSource1 = source.getIdInSource();
344
				mergeObject.setIdInErms(idInSource1);
345
			}
346
			sources = zooName2.getSources().iterator();
347
			if (sources.hasNext()){
348
				IdentifiableSource source = sources.next();
349
				idInSource1 = source.getIdInSource();
350
				mergeObject.setIdInFaunaEu(idInSource1);
351
			}
352

  
353
			mergeObject.setNameCacheInErms(zooName.getNameCache());
354
			mergeObject.setNameCacheInFaunaEu(zooName2.getNameCache());
355

  
356
			mergeObject.setAuthorInErms(zooName.getAuthorshipCache());
357
			mergeObject.setAuthorInFaunaEu(zooName2.getAuthorshipCache());
358
			Set<Taxon> taxa = zooName.getTaxa();
359
			if (!taxa.isEmpty()){
360
				mergeObject.setStatInErms(true);
361
				Iterator<Taxon> taxaIterator = taxa.iterator();
362
				Taxon taxon = null;
363
				while (taxaIterator.hasNext()){
364
					taxon = taxaIterator.next();
365
					if (!taxon.isMisapplication()){
366
						break;
367
					}
322
		for(int j = 0; j<uuids.size()-1; j = j + 500) {
323
			Set<UUID> subset = new HashSet( uuids.subList(j, j+499));
324
			List<TaxonName> names = appCtr.getNameService().find(subset);
325
			for (int i = 0; i<names.size()-1; i=i+2){
326
				zooName = names.get(i);
327
				zooName2 = names.get(i+1);
328
				mergeObject = new FaunaEuErmsMerging();
329
				//TODO:überprüfen, ob die beiden Namen identisch sind und aus unterschiedlichen DB kommen
330
				Classification faunaEuClassification = appCtr.getClassificationService().load(UUID.fromString("44d8605e-a7ce-41e1-bee9-99edfec01e7c"));
331
				Classification ermsClassification = appCtr.getClassificationService().load(UUID.fromString("6fa988a9-10b7-48b0-a370-2586fbc066eb"));
332
				//getPhylum
333
				TaxonNodeDto phylum1 = null;
334
				if (!zooName.getRank().isHigher(Rank.PHYLUM())){
335
						phylum1 =appCtr.getTaxonNodeService().taxonNodeDtoParentRank(faunaEuClassification, Rank.PHYLUM(), zooName);
368 336
				}
369
				Set<TaxonNode> nodes = taxon.getTaxonNodes();
370
				Iterator<TaxonNode> taxonNodeIterator = nodes.iterator();
371
				TaxonNode node, parentNode = null;
372
				while (taxonNodeIterator.hasNext()){
373
					node = taxonNodeIterator.next();
374
					if (!node.isTopmostNode()){
375
						parentNode = node.getParent();
376
					}
337
	
338
				TaxonNodeDto phylum2 = null;
339
				if (!zooName2.getRank().isHigher(Rank.PHYLUM())){
340
					phylum2 = appCtr.getTaxonNodeService().taxonNodeDtoParentRank(ermsClassification, Rank.PHYLUM(), zooName2);
377 341
				}
378
				//TODO: ändern mit erweitertem Initializer..
379
				if (parentNode != null){
380
				    TaxonName parentName = HibernateProxyHelper.deproxy(parentNode.getTaxon().getName());
381
					String parentNameCache = parentName.getNameCache();
382
					mergeObject.setParentStringInErms(parentNameCache);
383
					mergeObject.setParentRankStringInErms(parentName.getRank().getLabel());
384
					//System.err.println("parentName: " + parentNameCache);
342
				mergeObject.setPhylumInErms(phylum1);
343
				mergeObject.setPhylumInFaunaEu(phylum2);
344
	
345
				//getUuids
346
				mergeObject.setUuidErms(zooName.getUuid().toString());
347
				mergeObject.setUuidFaunaEu(zooName.getUuid().toString());
348
	
349
				Iterator<IdentifiableSource> sources = zooName.getSources().iterator();
350
				if (sources.hasNext()){
351
					IdentifiableSource source = sources.next();
352
					idInSource1 = source.getIdInSource();
353
					mergeObject.setIdInErms(idInSource1);
385 354
				}
386
			}else{
387
				mergeObject.setStatInErms(false);
388
			}
389
			taxa = zooName2.getTaxa();
390
			if (!taxa.isEmpty()){
391
				mergeObject.setStatInFaunaEu(true);
392
				Iterator<Taxon> taxaIterator = taxa.iterator();
393
				Taxon taxon = null;
394
				while (taxaIterator.hasNext()){
395
					taxon = taxaIterator.next();
396
					if (!taxon.isMisapplication()){
397
						break;
398
					}
355
				sources = zooName2.getSources().iterator();
356
				if (sources.hasNext()){
357
					IdentifiableSource source = sources.next();
358
					idInSource1 = source.getIdInSource();
359
					mergeObject.setIdInFaunaEu(idInSource1);
399 360
				}
400
				Set<TaxonNode> nodes = taxon.getTaxonNodes();
401
				Iterator<TaxonNode> taxonNodeIterator = nodes.iterator();
402
				TaxonNode node, parentNode = null;
403
				while (taxonNodeIterator.hasNext()){
404
					node = taxonNodeIterator.next();
405
					if (!node.isTopmostNode()){
406
						parentNode = node.getParent();
361
	
362
				mergeObject.setNameCacheInErms(zooName.getNameCache());
363
				mergeObject.setNameCacheInFaunaEu(zooName2.getNameCache());
364
	
365
				mergeObject.setAuthorInErms(zooName.getAuthorshipCache());
366
				mergeObject.setAuthorInFaunaEu(zooName2.getAuthorshipCache());
367
				Set<Taxon> taxa = zooName.getTaxa();
368
				if (!taxa.isEmpty()){
369
					mergeObject.setStatInErms(true);
370
					Iterator<Taxon> taxaIterator = taxa.iterator();
371
					Taxon taxon = null;
372
					while (taxaIterator.hasNext()){
373
						taxon = taxaIterator.next();
374
						if (!taxon.isMisapplication()){
375
							break;
376
						}
407 377
					}
378
					Set<TaxonNode> nodes = taxon.getTaxonNodes();
379
					Iterator<TaxonNode> taxonNodeIterator = nodes.iterator();
380
					TaxonNode node, parentNode = null;
381
					while (taxonNodeIterator.hasNext()){
382
						node = taxonNodeIterator.next();
383
						if (!node.isTopmostNode()){
384
							parentNode = node.getParent();
385
						}
386
					}
387
					//TODO: ändern mit erweitertem Initializer..
388
					if (parentNode != null){
389
					    TaxonName parentName = HibernateProxyHelper.deproxy(parentNode.getTaxon().getName());
390
						String parentNameCache = parentName.getNameCache();
391
						mergeObject.setParentStringInErms(parentNameCache);
392
						mergeObject.setParentRankStringInErms(parentName.getRank().getLabel());
393
						//System.err.println("parentName: " + parentNameCache);
394
					}
395
				}else{
396
					mergeObject.setStatInErms(false);
408 397
				}
409
				//TODO: ändern mit erweitertem Initializer..
410
				if (parentNode != null){
411
					if (parentNode.getTaxon().getName().isZoological()){
412

  
413
    					IZoologicalName parentName = CdmBase.deproxy(parentNode.getTaxon().getName());
414
    					String parentNameCache = parentName.getNameCache();
415
    					mergeObject.setParentStringInFaunaEu(parentNameCache);
416
    					mergeObject.setParentRankStringInFaunaEu(parentName.getRank().getLabel());
417
    					System.err.println("parentName: " + parentNameCache);
418
					}else{
419
						System.err.println("no zoologicalName: " + parentNode.getTaxon().getName().getTitleCache() +" . "+parentNode.getTaxon().getName().getUuid());
398
				taxa = zooName2.getTaxa();
399
				if (!taxa.isEmpty()){
400
					mergeObject.setStatInFaunaEu(true);
401
					Iterator<Taxon> taxaIterator = taxa.iterator();
402
					Taxon taxon = null;
403
					while (taxaIterator.hasNext()){
404
						taxon = taxaIterator.next();
405
						if (!taxon.isMisapplication()){
406
							break;
407
						}
420 408
					}
421

  
409
					Set<TaxonNode> nodes = taxon.getTaxonNodes();
410
					Iterator<TaxonNode> taxonNodeIterator = nodes.iterator();
411
					TaxonNode node, parentNode = null;
412
					while (taxonNodeIterator.hasNext()){
413
						node = taxonNodeIterator.next();
414
						if (!node.isTopmostNode()){
415
							parentNode = node.getParent();
416
						}
417
					}
418
					//TODO: ändern mit erweitertem Initializer..
419
					if (parentNode != null){
420
						if (parentNode.getTaxon().getName().isZoological()){
421
	
422
	    					IZoologicalName parentName = CdmBase.deproxy(parentNode.getTaxon().getName());
423
	    					String parentNameCache = parentName.getNameCache();
424
	    					mergeObject.setParentStringInFaunaEu(parentNameCache);
425
	    					mergeObject.setParentRankStringInFaunaEu(parentName.getRank().getLabel());
426
	    					System.err.println("parentName: " + parentNameCache);
427
						}else{
428
							System.err.println("no zoologicalName: " + parentNode.getTaxon().getName().getTitleCache() +" . "+parentNode.getTaxon().getName().getUuid());
429
						}
430
	
431
					}
432
				}else{
433
					mergeObject.setStatInErms(false);
422 434
				}
423
			}else{
424
				mergeObject.setStatInErms(false);
425
			}
426
			taxa = zooName2.getTaxa();
427
			if (!taxa.isEmpty()){
428
				mergeObject.setStatInFaunaEu(true);
429
			}else{
430
				mergeObject.setStatInFaunaEu(false);
431

  
432
			}
433

  
434
			mergeObject.setRankInErms(zooName.getRank().getLabel());
435
			mergeObject.setRankInFaunaEu(zooName2.getRank().getLabel());
436

  
437
			//set parent informations
438

  
439

  
440
			/*
441
			Set<HybridRelationship> parentRelations = zooName.getParentRelationships();
442
			Iterator parentIterator = parentRelations.iterator();
443
			HybridRelationship parentRel;
444
			ZoologicalName parentName;
445
			while (parentIterator.hasNext()){
446
				parentRel = (HybridRelationship)parentIterator.next();
447
				parentName = (ZoologicalName)parentRel.getParentName();
448
				mergeObject.setParentRankStringInErms(parentName.getRank().getLabel());
449
				mergeObject.setParentStringInErms(parentName.getNameCache());
435
				taxa = zooName2.getTaxa();
436
				if (!taxa.isEmpty()){
437
					mergeObject.setStatInFaunaEu(true);
438
				}else{
439
					mergeObject.setStatInFaunaEu(false);
440
	
441
				}
442
	
443
				mergeObject.setRankInErms(zooName.getRank().getLabel());
444
				mergeObject.setRankInFaunaEu(zooName2.getRank().getLabel());
445
	
446
				//set parent informations
447
	
448
	
449
				/*
450
				Set<HybridRelationship> parentRelations = zooName.getParentRelationships();
451
				Iterator parentIterator = parentRelations.iterator();
452
				HybridRelationship parentRel;
453
				ZoologicalName parentName;
454
				while (parentIterator.hasNext()){
455
					parentRel = (HybridRelationship)parentIterator.next();
456
					parentName = (ZoologicalName)parentRel.getParentName();
457
					mergeObject.setParentRankStringInErms(parentName.getRank().getLabel());
458
					mergeObject.setParentStringInErms(parentName.getNameCache());
459
				}
460
	
461
				parentRelations = zooName2.getParentRelationships();
462
				parentIterator = parentRelations.iterator();
463
	
464
				while (parentIterator.hasNext()){
465
					parentRel = (HybridRelationship)parentIterator.next();
466
					parentName = (ZoologicalName)parentRel.getParentName();
467
					mergeObject.setParentRankStringInFaunaEu(parentName.getRank().getLabel());
468
					mergeObject.setParentStringInFaunaEu(parentName.getNameCache());
469
				}*/
470
				merge.add(mergeObject);
450 471
			}
451

  
452
			parentRelations = zooName2.getParentRelationships();
453
			parentIterator = parentRelations.iterator();
454

  
455
			while (parentIterator.hasNext()){
456
				parentRel = (HybridRelationship)parentIterator.next();
457
				parentName = (ZoologicalName)parentRel.getParentName();
458
				mergeObject.setParentRankStringInFaunaEu(parentName.getRank().getLabel());
459
				mergeObject.setParentStringInFaunaEu(parentName.getNameCache());
460
			}*/
461
			merge.add(mergeObject);
462 472
		}
463 473

  
464 474
		return merge;
cdm-pesi/src/main/java/eu/etaxonomy/cdm/app/pesi/merging/FaunaEuErmsMergeActivator.java
19 19
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
20 20
import eu.etaxonomy.cdm.api.service.pager.Pager;
21 21
import eu.etaxonomy.cdm.app.common.CdmDestinations;
22
import eu.etaxonomy.cdm.app.util.TestDatabase;
22 23
import eu.etaxonomy.cdm.database.DbSchemaValidation;
23 24
import eu.etaxonomy.cdm.database.ICdmDataSource;
24 25
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
......
139 140
			UUID uuidFaunaEu = UUID.fromString(row.get(faunaEuUuid));
140 141
			UUID uuidErms = UUID.fromString(row.get(ermsUuid));
141 142
			taxonFaunaEu = appCtrInit.getTaxonService().find(uuidFaunaEu);
142
			taxonErms = appCtrInit.getTaxonService().find(uuidFaunaEu);
143
			taxonErms = appCtrInit.getTaxonService().find(uuidErms);
143 144

  
144 145
			if (Integer.parseInt(row.get(18)) == 1){
145 146
				//isFaunaEu = 1 -> copy the author of Fauna Europaea to Erms
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/merging/FaunaEuErmsMerging.java
1 1
package eu.etaxonomy.cdm.io.pesi.merging;
2 2

  
3
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
4

  
3 5
public class FaunaEuErmsMerging {
4 6
	
5 7
	private String uuidFaunaEu;
......
20 22
	private String rankInFaunaEu;
21 23
	private String rankInErms;
22 24
	
23
	private String phylumInFaunaEu;
24
	private String phylumInErms;
25
	private TaxonNodeDto phylumInFaunaEu;
26
	private TaxonNodeDto phylumInErms;
25 27
	
26 28
	private String parentStringInFaunaEu;
27 29
	private String parentStringInErms;
......
85 87
		this.rankInFaunaEu = rankInFaunaEu;
86 88
	}
87 89

  
88
	public String getPhylumInFaunaEu() {
90
	public TaxonNodeDto getPhylumInFaunaEu() {
89 91
		return phylumInFaunaEu;
90 92
	}
91 93

  
92
	public void setPhylumInFaunaEu(String phylumInFaunaEu) {
94
	public void setPhylumInFaunaEu(TaxonNodeDto phylumInFaunaEu) {
93 95
		this.phylumInFaunaEu = phylumInFaunaEu;
94 96
	}
95 97

  
96
	public String getPhylumInErms() {
98
	public TaxonNodeDto getPhylumInErms() {
97 99
		return phylumInErms;
98 100
	}
99 101

  
100
	public void setPhylumInErms(String phylumInErms) {
102
	public void setPhylumInErms(TaxonNodeDto phylumInErms) {
101 103
		this.phylumInErms = phylumInErms;
102 104
	}
103 105

  

Also available in: Unified diff