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
.logging
.log4j
.LogManager
;
15 import org
.apache
.logging
.log4j
.Logger
;
16 import org
.springframework
.stereotype
.Component
;
17 import org
.springframework
.transaction
.TransactionStatus
;
19 import eu
.etaxonomy
.cdm
.io
.berlinModel
.BerlinModelTransformer
;
20 import eu
.etaxonomy
.cdm
.io
.common
.Source
;
21 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.CdmDbExportMapping
;
22 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.CreatedAndNotesMapper
;
23 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbBooleanMapper
;
24 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbExtensionMapper
;
25 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbIntegerExtensionMapper
;
26 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbMarkerMapper
;
27 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbObjectMapper
;
28 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbStringMapper
;
29 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.IExportTransformer
;
30 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.MethodMapper
;
31 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
32 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
33 import eu
.etaxonomy
.cdm
.model
.common
.MarkerType
;
34 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
42 public class BerlinModelTaxonExport
extends BerlinModelExportBase
<TaxonBase
> {
44 private static final long serialVersionUID
= 145503113573711492L;
45 private static final Logger logger
= LogManager
.getLogger();
47 private static int modCount
= 1000;
48 private static final String dbTableName
= "PTaxon";
49 private static final String pluralString
= "Taxa";
50 private static final Class
<?
extends CdmBase
> standardMethodParameter
= TaxonBase
.class;
52 public BerlinModelTaxonExport(){
57 protected boolean doCheck(BerlinModelExportState state
){
58 boolean result
= true;
59 logger
.warn("Checking for " + pluralString
+ " not yet implemented");
60 //result &= checkArticlesWithoutJournal(bmiConfig);
61 //result &= checkPartOfJournal(bmiConfig);
66 private CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
> getMapping(){
67 String tableName
= dbTableName
;
68 CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
> mapping
= new CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
>(tableName
);
69 mapping
.addMapper(DbObjectMapper
.NewInstance("name", "PTNameFk"));
70 mapping
.addMapper(DbObjectMapper
.NewInstance("sec", "PTRefFk"));
71 mapping
.addMapper(MethodMapper
.NewInstance("StatusFk", this));
72 mapping
.addMapper(MethodMapper
.NewInstance("DoubtfulFlag", this) );
73 mapping
.addMapper(DbBooleanMapper
.NewInstance("useNameCache", "UseNameCacheFlag", false));
74 mapping
.addMapper(DbStringMapper
.NewFacultativeInstance("appendedPhrase", "NamePhrase"));
77 ExtensionType detailExtensionType
= (ExtensionType
)getTermService().find(BerlinModelTransformer
.DETAIL_EXT_UUID
);
78 if (detailExtensionType
!= null){
79 mapping
.addMapper(DbExtensionMapper
.NewInstance(detailExtensionType
, "Detail"));
82 ExtensionType idInSourceExtensionType
= (ExtensionType
)getTermService().find(BerlinModelTransformer
.ID_IN_SOURCE_EXT_UUID
);
83 if (idInSourceExtensionType
!= null){
84 mapping
.addMapper(DbIntegerExtensionMapper
.NewInstance(idInSourceExtensionType
, "IdInSource"));
87 // ExtensionType namePhraseExtensionType = (ExtensionType)getTermService().getTermByUuid(BerlinModelTaxonImport.APPENDED_TITLE_PHRASE);
88 // if (namePhraseExtensionType != null){
89 // mapping.addMapper(DbExtensionMapper.NewInstance(namePhraseExtensionType, "NamePhrase"));
92 // MarkerType useNameCacheMarkerType = (MarkerType)getTermService().getTermByUuid(BerlinModelTaxonImport.USE_NAME_CACHE);
93 // if (useNameCacheMarkerType != null){
94 // mapping.addMapper(DbMarkerMapper.NewInstance(useNameCacheMarkerType, "UseNameCacheFlag", false));
97 mapping
.addMapper(DbMarkerMapper
.NewInstance(MarkerType
.PUBLISH(), "PublishFlag", true));
100 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 String message
= "An undefined error occurred during Taxon export";
132 state
.getResult().addError(message
);
135 }catch(SQLException e
){
137 logger
.error(e
.getMessage());
138 state
.getResult().addException(e
);
143 protected boolean doDelete(BerlinModelExportState state
){
144 BerlinModelExportConfigurator bmeConfig
= state
.getConfig();
147 Source destination
= bmeConfig
.getDestination();
149 sql
= "DELETE FROM RelPTaxon";
150 destination
.setQuery(sql
);
151 destination
.update(sql
);
153 sql
= "DELETE FROM Fact";
154 destination
.setQuery(sql
);
155 destination
.update(sql
);
157 sql
= "DELETE FROM PTaxon";
158 destination
.setQuery(sql
);
159 destination
.update(sql
);
165 protected boolean isIgnore(BerlinModelExportState state
){
166 return ! state
.getConfig().isDoTaxa();
169 //called by MethodMapper
170 @SuppressWarnings("unused")
171 private static Integer
getStatusFk(TaxonBase
<?
> taxon
){
172 return BerlinModelTransformer
.taxonBase2statusFk(taxon
);
175 @SuppressWarnings("unused")
176 private static String
getDoubtfulFlag(TaxonBase
<?
> taxon
){
177 if (taxon
.isDoubtful()){
185 public Class
<?
extends CdmBase
> getStandardMethodParameter() {
186 return standardMethodParameter
;