4 package eu
.etaxonomy
.cdm
.io
.berlinModel
;
6 import java
.sql
.ResultSet
;
7 import java
.sql
.SQLException
;
8 import java
.util
.HashSet
;
11 import org
.apache
.log4j
.Logger
;
12 import static eu
.etaxonomy
.cdm
.io
.berlinModel
.BerlinModelTransformer
.*;
13 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationController
;
14 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonService
;
15 import eu
.etaxonomy
.cdm
.io
.source
.Source
;
16 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
17 import eu
.etaxonomy
.cdm
.model
.description
.CommonTaxonName
;
18 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
19 import eu
.etaxonomy
.cdm
.model
.description
.TextData
;
20 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
21 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
22 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
29 public class BerlinModelOccurrenceIO
{
30 private static final Logger logger
= Logger
.getLogger(BerlinModelOccurrenceIO
.class);
32 private static int modCount
= 10000;
34 public static boolean check(BerlinModelImportConfigurator bmiConfig
){
35 boolean result
= true;
36 logger
.warn("Checking for Occurrence not yet implemented");
37 //result &= checkArticlesWithoutJournal(bmiConfig);
38 //result &= checkPartOfJournal(bmiConfig);
43 public static boolean invoke(BerlinModelImportConfigurator bmiConfig
, CdmApplicationController cdmApp
,
44 MapWrapper
<TaxonBase
> taxonMap
, MapWrapper
<ReferenceBase
> referenceMap
){
46 Set
<TaxonBase
> taxonStore
= new HashSet
<TaxonBase
>();
47 Source source
= bmiConfig
.getSource();
48 ITaxonService taxonService
= cdmApp
.getTaxonService();
53 logger
.info("start makeFacts ...");
55 boolean delete
= bmiConfig
.isDeleteAll();
58 //get data from database
60 " SELECT xxx.*, PTaxon.RIdentifier as taxonId " +
61 " FROM Fact INNER JOIN " +
62 " dbo.PTaxon ON Fact.PTNameFk = PTaxon.PTNameFk AND Fact.PTRefFk = PTaxon.PTRefFk "+
64 ResultSet rs
= source
.getResultSet(strQuery
) ;
70 if ((i
++ % modCount
) == 0){ logger
.info("Facts handled: " + (i
-1));}
72 int occurrenceId
= rs
.getInt("occId");
73 int taxonId
= rs
.getInt("taxonId");
74 int factRefFk
= rs
.getInt("factRefFk");
75 int categoryFk
= rs
.getInt("factCategoryFk");
77 TaxonBase taxonBase
= taxonMap
.get(taxonId
);
79 if (taxonBase
!= null){
81 if ( taxonBase
instanceof Taxon
) {
82 taxon
= (Taxon
) taxonBase
;
84 logger
.warn("TaxonBase for Occurrence " + occurrenceId
+ " was not of type Taxon but: " + taxonBase
.getClass().getSimpleName());
88 TaxonDescription taxonDescription
= TaxonDescription
.NewInstance();
90 taxon
.addDescription(taxonDescription
);
93 String commonNameString
;
94 if (taxon
.getName() != null){
95 commonNameString
= "Common " + taxon
.getName().getTitleCache();
97 commonNameString
= "Common (null)";
99 Language language
= bmiConfig
.getFactLanguage();
101 CommonTaxonName commonName
= CommonTaxonName
.NewInstance(commonNameString
, language
);
102 taxonDescription
.addElement(commonName
);
108 taxonStore
.add(taxon
);
111 logger
.warn("Taxon for Fact " + occurrenceId
+ " does not exist in store");
115 logger
.info("Taxa to save: " + taxonStore
.size());
116 taxonService
.saveTaxonAll(taxonStore
);
118 logger
.info("end makeFacts ...");
120 } catch (SQLException e
) {
121 logger
.error("SQLException:" + e
);