2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.io
.berlinModel
.out
;
11 import java
.sql
.SQLException
;
12 import java
.util
.List
;
14 import org
.apache
.log4j
.Logger
;
15 import org
.springframework
.stereotype
.Component
;
16 import org
.springframework
.transaction
.TransactionStatus
;
18 import eu
.etaxonomy
.cdm
.io
.berlinModel
.BerlinModelTransformer
;
19 import eu
.etaxonomy
.cdm
.io
.common
.Source
;
20 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.CdmDbExportMapping
;
21 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.CreatedAndNotesMapper
;
22 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbBooleanMapper
;
23 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbExtensionMapper
;
24 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbIntegerExtensionMapper
;
25 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbMarkerMapper
;
26 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbObjectMapper
;
27 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbStringMapper
;
28 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.IExportTransformer
;
29 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.MethodMapper
;
30 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
31 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
32 import eu
.etaxonomy
.cdm
.model
.common
.MarkerType
;
33 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
42 public class BerlinModelTaxonExport
extends BerlinModelExportBase
<TaxonBase
> {
43 private static final Logger logger
= Logger
.getLogger(BerlinModelTaxonExport
.class);
45 private static int modCount
= 1000;
46 private static final String dbTableName
= "PTaxon";
47 private static final String pluralString
= "Taxa";
48 private static final Class
<?
extends CdmBase
> standardMethodParameter
= TaxonBase
.class;
50 public BerlinModelTaxonExport(){
55 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
58 protected boolean doCheck(BerlinModelExportState state
){
59 boolean result
= true;
60 logger
.warn("Checking for " + pluralString
+ " not yet implemented");
61 //result &= checkArticlesWithoutJournal(bmiConfig);
62 //result &= checkPartOfJournal(bmiConfig);
67 private CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
> getMapping(){
68 String tableName
= dbTableName
;
69 CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
> mapping
= new CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
>(tableName
);
70 mapping
.addMapper(DbObjectMapper
.NewInstance("name", "PTNameFk"));
71 mapping
.addMapper(DbObjectMapper
.NewInstance("sec", "PTRefFk"));
72 mapping
.addMapper(MethodMapper
.NewInstance("StatusFk", this));
73 mapping
.addMapper(MethodMapper
.NewInstance("DoubtfulFlag", this) );
74 mapping
.addMapper(DbBooleanMapper
.NewInstance("useNameCache", "UseNameCacheFlag", false));
75 mapping
.addMapper(DbStringMapper
.NewFacultativeInstance("appendedPhrase", "NamePhrase"));
78 ExtensionType detailExtensionType
= (ExtensionType
)getTermService().find(BerlinModelTransformer
.DETAIL_EXT_UUID
);
79 if (detailExtensionType
!= null){
80 mapping
.addMapper(DbExtensionMapper
.NewInstance(detailExtensionType
, "Detail"));
83 ExtensionType idInSourceExtensionType
= (ExtensionType
)getTermService().find(BerlinModelTransformer
.ID_IN_SOURCE_EXT_UUID
);
84 if (idInSourceExtensionType
!= null){
85 mapping
.addMapper(DbIntegerExtensionMapper
.NewInstance(idInSourceExtensionType
, "IdInSource"));
88 // ExtensionType namePhraseExtensionType = (ExtensionType)getTermService().getTermByUuid(BerlinModelTaxonImport.APPENDED_TITLE_PHRASE);
89 // if (namePhraseExtensionType != null){
90 // mapping.addMapper(DbExtensionMapper.NewInstance(namePhraseExtensionType, "NamePhrase"));
93 // MarkerType useNameCacheMarkerType = (MarkerType)getTermService().getTermByUuid(BerlinModelTaxonImport.USE_NAME_CACHE);
94 // if (useNameCacheMarkerType != null){
95 // mapping.addMapper(DbMarkerMapper.NewInstance(useNameCacheMarkerType, "UseNameCacheFlag", false));
98 mapping
.addMapper(DbMarkerMapper
.NewInstance(MarkerType
.PUBLISH(), "PublishFlag", true));
101 mapping
.addMapper(CreatedAndNotesMapper
.NewInstance());
110 protected void doInvoke(BerlinModelExportState state
){
112 logger
.info("start make " + pluralString
+ " ...");
113 boolean success
= true ;
116 TransactionStatus txStatus
= startTransaction(true);
118 List
<TaxonBase
> list
= getTaxonService().list(null,100000000, 0, null, null);
120 CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
> mapping
= getMapping();
121 mapping
.initialize(state
);
124 for (TaxonBase
<?
> taxon
: list
){
125 doCount(count
++, modCount
, pluralString
);
126 success
&= mapping
.invoke(taxon
);
128 commitTransaction(txStatus
);
129 logger
.info("end make " + pluralString
+ " ..." + getSuccessString(success
));
131 state
.setUnsuccessfull();
134 }catch(SQLException e
){
136 logger
.error(e
.getMessage());
137 state
.setUnsuccessfull();
145 protected boolean doDelete(BerlinModelExportState state
){
146 BerlinModelExportConfigurator bmeConfig
= state
.getConfig();
149 Source destination
= bmeConfig
.getDestination();
151 sql
= "DELETE FROM RelPTaxon";
152 destination
.setQuery(sql
);
153 destination
.update(sql
);
155 sql
= "DELETE FROM Fact";
156 destination
.setQuery(sql
);
157 destination
.update(sql
);
159 sql
= "DELETE FROM PTaxon";
160 destination
.setQuery(sql
);
161 destination
.update(sql
);
168 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
170 protected boolean isIgnore(BerlinModelExportState state
){
171 return ! state
.getConfig().isDoTaxa();
174 //called by MethodMapper
175 @SuppressWarnings("unused")
176 private static Integer
getStatusFk(TaxonBase
<?
> taxon
){
177 return BerlinModelTransformer
.taxonBase2statusFk(taxon
);
180 @SuppressWarnings("unused")
181 private static String
getDoubtfulFlag(TaxonBase
<?
> taxon
){
182 if (taxon
.isDoubtful()){
190 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
193 public Class
<?
extends CdmBase
> getStandardMethodParameter() {
194 return standardMethodParameter
;