3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.io
.berlinModel
.in
.validation
;
13 import java
.sql
.ResultSet
;
14 import java
.sql
.SQLException
;
16 import org
.apache
.log4j
.Logger
;
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
;
28 public class BerlinModelTaxonImportValidator
implements IOValidator
<BerlinModelImportState
>{
29 private static final Logger logger
= Logger
.getLogger(BerlinModelTaxonImportValidator
.class);
31 public boolean validate(BerlinModelImportState state
){
32 boolean result
= true;
33 BerlinModelImportConfigurator bmiConfig
= state
.getConfig();
34 logger
.warn("Checking for Taxa not yet fully implemented");
35 result
&= checkTaxonStatus(bmiConfig
);
36 result
&= checkInactivated(bmiConfig
);
40 private boolean checkTaxonStatus(BerlinModelImportConfigurator bmiConfig
){
42 boolean result
= true;
43 Source source
= bmiConfig
.getSource();
44 String strSQL
= " SELECT RelPTaxon.RelQualifierFk, RelPTaxon.relPTaxonId, PTaxon.PTNameFk, PTaxon.PTRefFk, PTaxon_1.PTNameFk AS Expr1, PTaxon.RIdentifier, PTaxon_1.RIdentifier AS Expr3, Name.FullNameCache " +
46 " INNER JOIN PTaxon ON RelPTaxon.PTNameFk1 = PTaxon.PTNameFk AND RelPTaxon.PTRefFk1 = PTaxon.PTRefFk " +
47 " INNER JOIN PTaxon AS PTaxon_1 ON RelPTaxon.PTNameFk2 = PTaxon_1.PTNameFk AND RelPTaxon.PTRefFk2 = PTaxon_1.PTRefFk " +
48 " INNER JOIN Name ON PTaxon.PTNameFk = Name.NameId " +
49 " WHERE (dbo.PTaxon.StatusFk = 1) AND ((RelPTaxon.RelQualifierFk = 7) OR (RelPTaxon.RelQualifierFk = 6) OR (RelPTaxon.RelQualifierFk = 2)) ";
50 ResultSet rs
= source
.getResultSet(strSQL
);
51 boolean firstRow
= true;
56 System
.out
.println("========================================================");
57 logger
.warn("There are taxa that have a 'is synonym of' - relationship but having taxon status 'accepted'!");
58 System
.out
.println("========================================================");
60 int rIdentifier
= rs
.getInt("RIdentifier");
61 int nameFk
= rs
.getInt("PTNameFk");
62 int refFk
= rs
.getInt("PTRefFk");
63 int relPTaxonId
= rs
.getInt("relPTaxonId");
64 String taxonName
= rs
.getString("FullNameCache");
66 System
.out
.println("RIdentifier:" + rIdentifier
+ "\n name: " + nameFk
+
67 "\n taxonName: " + taxonName
+ "\n refId: " + refFk
+ "\n RelPTaxonId: " + relPTaxonId
);
68 result
= firstRow
= false;
71 System
.out
.println(" ");
75 } catch (SQLException e
) {
81 private boolean checkInactivated(BerlinModelImportConfigurator bmiConfig
){
83 boolean result
= true;
84 Source source
= bmiConfig
.getSource();
85 String strSQL
= " SELECT * " +
87 " INNER JOIN Name ON PTaxon.PTNameFk = Name.NameId " +
88 " WHERE (PTaxon.DoubtfulFlag = 'i') ";
89 ResultSet rs
= source
.getResultSet(strSQL
);
90 boolean firstRow
= true;
95 System
.out
.println("========================================================");
96 logger
.warn("There are taxa that have a doubtful flag 'i'(inactivated). Inactivated is not supported by CDM!");
97 System
.out
.println("========================================================");
99 int rIdentifier
= rs
.getInt("RIdentifier");
100 int nameFk
= rs
.getInt("PTNameFk");
101 int refFk
= rs
.getInt("PTRefFk");
102 String taxonName
= rs
.getString("FullNameCache");
104 System
.out
.println("RIdentifier:" + rIdentifier
+ "\n nameId: " + nameFk
+
105 "\n taxonName: " + taxonName
+ "\n refId: " + refFk
);
106 result
= firstRow
= false;
109 System
.out
.println(" ");
113 } catch (SQLException e
) {