(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / berlinModel / BerlinModelImport.java
1 package eu.etaxonomy.cdm.io.berlinModel;
2
3 import org.apache.log4j.Logger;
4 import org.springframework.stereotype.Service;
5
6 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
7 import eu.etaxonomy.cdm.io.source.Source;
8 import eu.etaxonomy.cdm.model.agent.Agent;
9 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
10 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
11 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
12
13 @Service
14 public class BerlinModelImport {
15 private static final Logger logger = Logger.getLogger(BerlinModelImport.class);
16
17 private boolean deleteAll = false;
18
19 private boolean makeAuthors = false;
20
21 //references
22 private boolean makeReferences = true;
23
24 //names
25 private boolean makeTaxonNames = true;
26 private boolean makeRelNames = true;
27 private boolean makeNameStatus = false;
28
29 //taxa
30 private boolean makeTaxa = true;
31 private boolean makeRelTaxa = true;
32 private boolean makeFacts = false;
33
34
35 //BerlinModelDB
36 private Source source;
37
38 //CdmApplication
39 private CdmApplicationController cdmApp;
40
41 //Constants
42 //final boolean OBLIGATORY = true;
43 //final boolean FACULTATIVE = false;
44 final int modCount = 1000;
45
46
47 //Hashmaps for Joins
48 //OLD: private Map<Integer, UUID> referenceMap = new HashMap<Integer, UUID>();
49 private MapWrapper<Agent> authorStore= new MapWrapper<Agent>(null);
50 private MapWrapper<ReferenceBase> referenceStore= new MapWrapper<ReferenceBase>(null);
51 private MapWrapper<TaxonNameBase> taxonNameStore = new MapWrapper<TaxonNameBase>(null);
52 private MapWrapper<TaxonBase> taxonStore = new MapWrapper<TaxonBase>(null);
53
54
55 /**
56 * Executes the whole
57 */
58 public boolean doImport(ReferenceBase berlinModelRef, Source source, CdmApplicationController cdmApp){
59 System.out.println("Start import from BerlinModel ("+ source.getDatabase() + ") to Cdm (" + cdmApp.getDatabaseService().getUrl() + ") ...");
60 if (source == null || cdmApp == null){
61 throw new NullPointerException("Source and CdmApplicationController must not be null");
62 }
63 this.source = source;
64 this.cdmApp = cdmApp;
65
66 //Authors
67 if (makeAuthors){
68 if (! BerlinModelAuthorIO.invoke(berlinModelRef ,source, cdmApp, deleteAll, authorStore)){
69 logger.warn("No Authors imported");
70 return false;
71 }
72 }else{
73 authorStore = null;
74 }
75
76 //References
77 if (makeReferences){
78 if (! BerlinModelReferenceIO.invoke(berlinModelRef ,source, cdmApp, deleteAll, referenceStore, authorStore)){
79 return false;
80 }
81 }else{
82 logger.warn("No References imported");
83 referenceStore = null;
84 }
85
86 //TaxonNames
87 if (makeTaxonNames){
88 if (! BerlinModelTaxonNameIO.invoke(berlinModelRef ,source, cdmApp, deleteAll, taxonNameStore, referenceStore, authorStore)){
89 //return false;
90 }
91 }else{
92 logger.warn("No TaxonNames imported");
93 taxonNameStore = null;
94 }
95
96
97 //make and save RelNames
98 if(makeRelNames){
99 if (! BerlinModelTaxonNameIO.invokeRelations(berlinModelRef ,source, cdmApp, deleteAll, taxonNameStore, referenceStore)){
100 return false;
101 }
102 }else{
103 logger.warn("No RelPTaxa imported");
104 }
105
106 //TODO NomStatus
107 //TODO Types
108
109 //make and save Taxa
110 if(makeTaxa){
111 if (! BerlinModelTaxonIO.invoke(berlinModelRef, source, cdmApp, deleteAll, taxonStore, taxonNameStore, referenceStore)){
112 return false;
113 }
114 }else{
115 logger.warn("No Taxa imported");
116 taxonNameStore = null;
117 }
118
119 //make and save RelPTaxa
120 if(makeRelTaxa){
121 if (! BerlinModelTaxonIO.invokeRelations(berlinModelRef, source, cdmApp, deleteAll, taxonStore, referenceStore)){
122 return false;
123 }
124 }else{
125 logger.warn("No RelPTaxa imported");
126 }
127
128 //make and save Facts
129 if(makeFacts){
130 if (! BerlinModelFactsIO.invoke(berlinModelRef, source, cdmApp, deleteAll, taxonStore, referenceStore)){
131 return false;
132 }
133 }else{
134 logger.warn("No Facts imported");
135 }
136
137 //return
138 System.out.println("End import from BerlinModel ("+ source.getDatabase() + ") to Cdm (" + cdmApp.getDatabaseService().getUrl() + ") ...");
139 return true;
140 }
141
142
143 }