(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / berlinModel / BerlinModelOccurrenceIO.java
1 /**
2 *
3 */
4 package eu.etaxonomy.cdm.io.berlinModel;
5
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.util.HashSet;
9 import java.util.Map;
10 import java.util.Set;
11
12 import org.apache.log4j.Logger;
13 import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.*;
14 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
15 import eu.etaxonomy.cdm.api.service.ITaxonService;
16 import eu.etaxonomy.cdm.io.common.ICdmIO;
17 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
18 import eu.etaxonomy.cdm.io.common.MapWrapper;
19 import eu.etaxonomy.cdm.io.common.Source;
20 import eu.etaxonomy.cdm.model.common.CdmBase;
21 import eu.etaxonomy.cdm.model.common.Language;
22 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
23 import eu.etaxonomy.cdm.model.description.TaxonDescription;
24 import eu.etaxonomy.cdm.model.description.TextData;
25 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
26 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
27 import eu.etaxonomy.cdm.model.taxon.Taxon;
28 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
29
30
31 /**
32 * @author a.mueller
33 *
34 */
35 public class BerlinModelOccurrenceIO extends BerlinModelIOBase {
36 private static final Logger logger = Logger.getLogger(BerlinModelOccurrenceIO.class);
37
38 private static int modCount = 10000;
39
40 public BerlinModelOccurrenceIO(){
41 super();
42 }
43
44 /* (non-Javadoc)
45 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
46 */
47 @Override
48 protected boolean doCheck(IImportConfigurator config){
49 boolean result = true;
50 logger.warn("Checking for Occurrence not yet implemented");
51 //result &= checkArticlesWithoutJournal(bmiConfig);
52 //result &= checkPartOfJournal(bmiConfig);
53
54 return result;
55 }
56
57 /* (non-Javadoc)
58 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)
59 */
60 @Override
61 protected boolean doInvoke(IImportConfigurator config, CdmApplicationController cdmApp,
62 Map<String, MapWrapper<? extends CdmBase>> stores){
63
64 MapWrapper<TaxonBase> taxonMap = (MapWrapper<TaxonBase>)stores.get(ICdmIO.TAXON_STORE);
65 MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)stores.get(ICdmIO.REFERENCE_STORE);
66 BerlinModelImportConfigurator bmiConfig = (BerlinModelImportConfigurator)config;
67
68 if (true){
69 return false;
70 }
71
72
73
74
75
76
77
78
79 Set<TaxonBase> taxonStore = new HashSet<TaxonBase>();
80 Source source = bmiConfig.getSource();
81 ITaxonService taxonService = cdmApp.getTaxonService();
82
83 String dbAttrName;
84 String cdmAttrName;
85
86 logger.info("start makeFacts ...");
87
88 boolean delete = bmiConfig.isDeleteAll();
89
90 try {
91 //get data from database
92 String strQuery =
93 " SELECT xxx.*, PTaxon.RIdentifier as taxonId " +
94 " FROM Fact INNER JOIN " +
95 " dbo.PTaxon ON Fact.PTNameFk = PTaxon.PTNameFk AND Fact.PTRefFk = PTaxon.PTRefFk "+
96 " WHERE (1=1)";
97 ResultSet rs = source.getResultSet(strQuery) ;
98
99 int i = 0;
100 //for each reference
101 while (rs.next()){
102
103 if ((i++ % modCount) == 0){ logger.info("Facts handled: " + (i-1));}
104
105 int occurrenceId = rs.getInt("occId");
106 int taxonId = rs.getInt("taxonId");
107 int factRefFk = rs.getInt("factRefFk");
108 int categoryFk = rs.getInt("factCategoryFk");
109
110 TaxonBase taxonBase = taxonMap.get(taxonId);
111
112 if (taxonBase != null){
113 Taxon taxon;
114 if ( taxonBase instanceof Taxon ) {
115 taxon = (Taxon) taxonBase;
116 }else{
117 logger.warn("TaxonBase for Occurrence " + occurrenceId + " was not of type Taxon but: " + taxonBase.getClass().getSimpleName());
118 continue;
119 }
120
121 TaxonDescription taxonDescription = TaxonDescription.NewInstance();
122
123 taxon.addDescription(taxonDescription);
124
125 //commonNames
126 String commonNameString;
127 if (taxon.getName() != null){
128 commonNameString = "Common " + taxon.getName().getTitleCache();
129 }else{
130 commonNameString = "Common (null)";
131 }
132 Language language = bmiConfig.getFactLanguage();
133 language = null;
134 CommonTaxonName commonName = CommonTaxonName.NewInstance(commonNameString, language);
135 taxonDescription.addElement(commonName);
136
137
138 //TODO
139 //etc.
140
141 taxonStore.add(taxon);
142 }else{
143 //TODO
144 logger.warn("Taxon for Fact " + occurrenceId + " does not exist in store");
145 }
146 //put
147 }
148 logger.info("Taxa to save: " + taxonStore.size());
149 taxonService.saveTaxonAll(taxonStore);
150
151 logger.info("end makeFacts ...");
152 return true;
153 } catch (SQLException e) {
154 logger.error("SQLException:" + e);
155 return false;
156 }
157
158 }
159
160 /* (non-Javadoc)
161 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
162 */
163 protected boolean isIgnore(IImportConfigurator config){
164 return ! config.isDoOccurrence();
165 }
166
167
168 }