Project

General

Profile

Download (3.7 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.io.berlinModel;
2

    
3
import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.*;
4
import java.sql.ResultSet;
5
import java.sql.SQLException;
6

    
7

    
8
import org.apache.log4j.Logger;
9
import org.springframework.stereotype.Service;
10

    
11
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
12
import eu.etaxonomy.cdm.api.service.ITaxonService;
13
import eu.etaxonomy.cdm.io.source.Source;
14
import eu.etaxonomy.cdm.model.agent.Agent;
15
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
16
import eu.etaxonomy.cdm.model.reference.ReferenceBase;
17
import eu.etaxonomy.cdm.model.taxon.Synonym;
18
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
19
import eu.etaxonomy.cdm.model.taxon.Taxon;
20
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
21

    
22
@Service
23
public class BerlinModelImport {
24
	private static final Logger logger = Logger.getLogger(BerlinModelImport.class);
25
	
26
	private boolean deleteAll = false;
27
	
28
	private boolean makeAuthors = false;
29
	private boolean makeReferences = true;
30
	private boolean makeTaxonNames = true;
31
	private boolean makeTaxa = true;
32
	private boolean makeRelNames = false;
33
	private boolean makeNameStatus = false;
34
	private boolean makeRelTaxa = true;
35
	private boolean makeFacts = true;
36
	
37
	
38
	//BerlinModelDB
39
	private Source source;
40
	
41
	//CdmApplication
42
	private CdmApplicationController cdmApp;
43
	
44
	//Constants
45
	//final boolean OBLIGATORY = true; 
46
	//final boolean FACULTATIVE = false; 
47
	final int modCount = 1000;
48

    
49
	
50
	//Hashmaps for Joins
51
	//OLD: private Map<Integer, UUID> referenceMap = new HashMap<Integer, UUID>();
52
	private MapWrapper<Agent> authorStore= new MapWrapper<Agent>(null);
53
	private MapWrapper<ReferenceBase> referenceStore= new MapWrapper<ReferenceBase>(null);
54
	private MapWrapper<TaxonNameBase> taxonNameStore = new MapWrapper<TaxonNameBase>(null);
55
	private MapWrapper<TaxonBase> taxonStore = new MapWrapper<TaxonBase>(null);
56

    
57

    
58
	/**
59
	 * Executes the whole 
60
	 */
61
	public boolean doImport(Source source, CdmApplicationController cdmApp){
62
		if (source == null || cdmApp == null){
63
			throw new NullPointerException("Source and CdmApplicationController must not be null");
64
		}
65
		this.source = source;
66
		this.cdmApp = cdmApp;
67

    
68
		//Authors
69
		if (makeAuthors){
70
			if (! BerlinModelAuthorIO.invoke(source, cdmApp, deleteAll, authorStore)){
71
				logger.warn("No Authors imported");
72
				return false;
73
			}
74
		}else{
75
			authorStore = null;
76
		}
77
		
78
		//References
79
		if (makeReferences){
80
			if (! BerlinModelReferenceIO.invoke(source, cdmApp, deleteAll, referenceStore, authorStore)){
81
				return false;
82
			}
83
		}else{
84
			logger.warn("No References imported");
85
			referenceStore = null;
86
		}
87
		
88
		//TaxonNames
89
		if (makeTaxonNames){
90
			if (! BerlinModelTaxonNameIO.invoke(source, cdmApp, deleteAll, taxonNameStore, referenceStore, authorStore)){
91
				//return false;
92
			}
93
		}else{
94
			logger.warn("No TaxonNames imported");
95
			taxonNameStore = null;
96
		}
97
		
98
		//make and save Taxa
99
		if(makeTaxa){
100
			if (! BerlinModelTaxonIO.invoke(source, cdmApp, deleteAll, taxonStore, taxonNameStore, referenceStore)){
101
				return false;
102
			}
103
		}else{
104
			logger.warn("No Taxa imported");
105
			taxonNameStore = null;
106
		}
107
		
108
		//make and save RelPTaxa
109
		if(makeRelTaxa){
110
			if (! BerlinModelTaxonIO.invokeRelations(source, cdmApp, deleteAll, taxonStore, referenceStore)){
111
				return false;
112
			}
113
		}else{
114
			logger.warn("No RelPTaxa imported");
115
		}
116

    
117
		
118
		//make and save Facts
119
		//makeRelTaxa();
120
		
121
		//make and save Facts
122
		if(makeFacts){
123
			if (! BerlinModelFactsIO.invoke(source, cdmApp, deleteAll, taxonStore, referenceStore)){
124
				return false;
125
			}
126
		}else{
127
			logger.warn("No Facts imported");
128
		}
129
		
130
		//return
131
		return true;
132
	}
133
	
134

    
135
}
(3-3/10)