4 package eu
.etaxonomy
.cdm
.io
.berlinModel
;
6 import java
.sql
.ResultSet
;
7 import java
.sql
.SQLException
;
8 import java
.util
.HashSet
;
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
;
35 public class BerlinModelOccurrenceIO
extends BerlinModelIOBase
{
36 private static final Logger logger
= Logger
.getLogger(BerlinModelOccurrenceIO
.class);
38 private static int modCount
= 10000;
40 public BerlinModelOccurrenceIO(){
45 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
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);
58 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)
61 protected boolean doInvoke(IImportConfigurator config
, CdmApplicationController cdmApp
,
62 Map
<String
, MapWrapper
<?
extends CdmBase
>> stores
){
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
;
79 Set
<TaxonBase
> taxonStore
= new HashSet
<TaxonBase
>();
80 Source source
= bmiConfig
.getSource();
81 ITaxonService taxonService
= cdmApp
.getTaxonService();
86 logger
.info("start makeFacts ...");
88 boolean delete
= bmiConfig
.isDeleteAll();
91 //get data from database
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 "+
97 ResultSet rs
= source
.getResultSet(strQuery
) ;
103 if ((i
++ % modCount
) == 0){ logger
.info("Facts handled: " + (i
-1));}
105 int occurrenceId
= rs
.getInt("occId");
106 int taxonId
= rs
.getInt("taxonId");
107 int factRefFk
= rs
.getInt("factRefFk");
108 int categoryFk
= rs
.getInt("factCategoryFk");
110 TaxonBase taxonBase
= taxonMap
.get(taxonId
);
112 if (taxonBase
!= null){
114 if ( taxonBase
instanceof Taxon
) {
115 taxon
= (Taxon
) taxonBase
;
117 logger
.warn("TaxonBase for Occurrence " + occurrenceId
+ " was not of type Taxon but: " + taxonBase
.getClass().getSimpleName());
121 TaxonDescription taxonDescription
= TaxonDescription
.NewInstance();
123 taxon
.addDescription(taxonDescription
);
126 String commonNameString
;
127 if (taxon
.getName() != null){
128 commonNameString
= "Common " + taxon
.getName().getTitleCache();
130 commonNameString
= "Common (null)";
132 Language language
= bmiConfig
.getFactLanguage();
134 CommonTaxonName commonName
= CommonTaxonName
.NewInstance(commonNameString
, language
);
135 taxonDescription
.addElement(commonName
);
141 taxonStore
.add(taxon
);
144 logger
.warn("Taxon for Fact " + occurrenceId
+ " does not exist in store");
148 logger
.info("Taxa to save: " + taxonStore
.size());
149 taxonService
.saveTaxonAll(taxonStore
);
151 logger
.info("end makeFacts ...");
153 } catch (SQLException e
) {
154 logger
.error("SQLException:" + e
);
161 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
163 protected boolean isIgnore(IImportConfigurator config
){
164 return ! config
.isDoOccurrence();