Project

General

Profile

Download (3.64 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.io.berlinModel.in.validation;
11

    
12
import java.sql.ResultSet;
13
import java.sql.SQLException;
14

    
15
import org.apache.commons.lang.StringUtils;
16
import org.apache.log4j.Logger;
17

    
18
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
19
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState;
20
import eu.etaxonomy.cdm.io.common.IOValidator;
21
import eu.etaxonomy.cdm.io.common.Source;
22

    
23
/**
24
 * @author a.mueller
25
 * @created 17.02.2010
26
 */
27
public class BerlinModelOccurrenceImportValidator implements IOValidator<BerlinModelImportState> {
28
	private static final Logger logger = Logger.getLogger(BerlinModelOccurrenceImportValidator.class);
29

    
30
	@Override
31
	public boolean validate(BerlinModelImportState state) {
32
		boolean result = true;
33
		BerlinModelImportConfigurator bmiConfig = state.getConfig();
34
		result &= checkTaxonIsAccepted(bmiConfig);
35
		//result &= checkPartOfJournal(bmiConfig);
36
		System.out.println("Checking for Occurrence not yet fully implemented");
37
		return result;
38
	}
39

    
40

    
41
	//******************************** CHECK *************************************************
42

    
43
	private static boolean checkTaxonIsAccepted(BerlinModelImportConfigurator config){
44
		try {
45
			boolean result = true;
46
			Source source = config.getSource();
47
			String strQuery = "SELECT emOccurrence.OccurrenceId, PTaxon.StatusFk, Name.FullNameCache, "
48
			                + " Status.Status, PTaxon.PTRefFk, Reference.RefCache, emArea.EMCode, emOccurrence.* " +
49
						" FROM emOccurrence INNER JOIN " +
50
							" PTaxon ON emOccurrence.PTNameFk = PTaxon.PTNameFk AND emOccurrence.PTRefFk = PTaxon.PTRefFk INNER JOIN " +
51
			                " Name ON PTaxon.PTNameFk = Name.NameId INNER JOIN " +
52
			                " emArea ON emOccurrence.AreaFk = emArea.AreaId INNER JOIN " +
53
			                " Status ON PTaxon.StatusFk = Status.StatusId LEFT OUTER JOIN " +
54
			                " Reference ON PTaxon.PTRefFk = Reference.RefId " +
55
						" WHERE (PTaxon.StatusFk NOT IN ( 1, 5))  ";
56

    
57
			if (StringUtils.isNotBlank(config.getOccurrenceFilter())){
58
				strQuery += String.format(" AND (%s) ", config.getOccurrenceFilter()) ;
59
			}
60

    
61

    
62
			ResultSet resultSet = source.getResultSet(strQuery);
63
			boolean firstRow = true;
64
			while (resultSet.next()){
65
				if (firstRow){
66
					System.out.println("========================================================");
67
					System.out.println("There are Occurrences for a taxon that is not accepted!");
68
					System.out.println("--------------------------------------------------------");
69
					System.out.println(strQuery);
70
					System.out.println("========================================================");
71

    
72
				}
73
				int occurrenceId = resultSet.getInt("OccurrenceId");
74
//					int statusFk = resulSet.getInt("StatusFk");
75
				String status = resultSet.getString("Status");
76
				String fullNameCache = resultSet.getString("FullNameCache");
77
				String ptRefFk = resultSet.getString("PTRefFk");
78
				String ptRef = resultSet.getString("RefCache");
79
				String area = resultSet.getString("EMCode");
80

    
81
				System.out.println("OccurrenceId:" + occurrenceId + "\n  Status: " + status +
82
						"\n  FullNameCache: " + fullNameCache +  "\n  ptRefFk: " + ptRefFk +
83
						"\n  sec: " + ptRef + "\n area: " + area) ;
84

    
85
				result = firstRow = false;
86
			}
87

    
88
			return result;
89
		} catch (SQLException e) {
90
			e.printStackTrace();
91
			return false;
92
		}
93
	}
94

    
95
}
(8-8/19)