Project

General

Profile

Download (5.02 KB) Statistics
| Branch: | Tag: | Revision:
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 && i!= 1 ){ 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
}
(7-7/16)