Project

General

Profile

Download (3.11 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.io.stream.excel;
2

    
3
import java.io.IOException;
4
import eu.etaxonomy.cdm.common.URI;
5

    
6
import org.apache.http.HttpException;
7
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
8
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
9
import org.springframework.stereotype.Component;
10

    
11
import eu.etaxonomy.cdm.io.dwca.in.DwcTaxonCsv2CdmTaxonRelationConverter;
12
import eu.etaxonomy.cdm.io.dwca.in.DwcTaxonStreamItem2CdmTaxonConverter;
13
import eu.etaxonomy.cdm.io.dwca.in.DwcaDataImportBase;
14
import eu.etaxonomy.cdm.io.excel.stream.ExcelRecordStream;
15
import eu.etaxonomy.cdm.io.excel.stream.ExcelStreamImportState;
16
import eu.etaxonomy.cdm.io.excel.stream.ExcelToStreamConverter;
17
import eu.etaxonomy.cdm.io.stream.IPartitionableConverter;
18
import eu.etaxonomy.cdm.io.stream.IReader;
19
import eu.etaxonomy.cdm.io.stream.StreamItem;
20
import eu.etaxonomy.cdm.io.stream.terms.TermUri;
21
import eu.etaxonomy.cdm.model.common.CdmBase;
22

    
23
/**
24
 * @author a.oppermann
25
 * @since 08.05.2013
26
 */
27
@Component
28
public class ExcelStreamImport
29
        extends DwcaDataImportBase<ExcelStreamImportConfigurator, ExcelStreamImportState>{
30

    
31
    private static final long serialVersionUID = -1067536880817966304L;
32

    
33
    private static final Logger logger = LogManager.getLogger(ExcelStreamImport.class);
34

    
35

    
36
	@Override
37
	protected void doInvoke(ExcelStreamImportState state) {
38

    
39
		makeSourceRef(state);
40
		URI source = state.getConfig().getSource();
41
		ExcelToStreamConverter<ExcelStreamImportState> excelStreamConverter = ExcelToStreamConverter.NewInstance(source);
42

    
43
		try {
44
			IReader<ExcelRecordStream> worksheetStream = excelStreamConverter.getWorksheetStream(state);
45

    
46
			while (worksheetStream.hasNext()){
47
				ExcelRecordStream recordStream = worksheetStream.read();
48
				try {
49
					handleSingleRecord(state, recordStream);
50
				} catch (Exception e) {
51
					String message = "Exception (%s) occurred while handling worksheet stream %s";
52
					message = String.format(message, e.getMessage(), recordStream.toString());
53
					fireWarningEvent (message, recordStream.toString(), 14);
54
				}
55
			}
56
			state.finish();
57
		} catch (IOException e1) {
58
			// TODO Auto-generated catch block
59
			e1.printStackTrace();
60
		} catch (HttpException e1) {
61
			// TODO Auto-generated catch block
62
			e1.printStackTrace();
63
		} catch (InvalidFormatException e) {
64
			// TODO Auto-generated catch block
65
			e.printStackTrace();
66
		}
67

    
68
		return;
69
	}
70

    
71
	@Override
72
	protected IPartitionableConverter<StreamItem, IReader<CdmBase>, String> getConverter(
73
			TermUri namespace, ExcelStreamImportState state) {
74

    
75
		if (namespace.equals(TermUri.DWC_TAXON)){
76
			if (! state.isTaxaCreated()){
77
				return new DwcTaxonStreamItem2CdmTaxonConverter(state);
78
			}else{
79
				return new DwcTaxonCsv2CdmTaxonRelationConverter(state);
80
			}
81
		}else{
82
			String message = "No converter available for %s";
83
			logger.error(String.format(message, namespace));
84
			return null;
85
		}
86
	}
87

    
88
	@Override
89
	protected boolean doCheck(ExcelStreamImportState state) {
90
		return state.isCheck();
91
	}
92

    
93
	@Override
94
	protected boolean isIgnore(ExcelStreamImportState state) {
95
		return false;  //we only have 1 import class for excel stream import
96
	}
97

    
98
}
(2-2/3)