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
.berlinModel
.out
.mapper
.CreatedAndNotesMapper
;
20 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.DbObjectMapper
;
21 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.IdMapper
;
22 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.MethodMapper
;
23 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.RefDetailMapper
;
24 import eu
.etaxonomy
.cdm
.io
.common
.IExportConfigurator
;
25 import eu
.etaxonomy
.cdm
.io
.common
.Source
;
26 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
27 import eu
.etaxonomy
.cdm
.model
.common
.RelationshipBase
;
28 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationship
;
29 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationship
;
30 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
39 public class BerlinModelNomStatusExport
extends BerlinModelExportBase
{
40 private static final Logger logger
= Logger
.getLogger(BerlinModelNomStatusExport
.class);
42 private static int modCount
= 1000;
43 private static final String dbTableName
= "NomStatusRel";
44 private static final String pluralString
= "NomStatus";
45 private static final Class
<?
extends CdmBase
> standardMethodParameter
= NomenclaturalStatus
.class;
48 public BerlinModelNomStatusExport(){
53 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
56 protected boolean doCheck(IExportConfigurator config
){
57 boolean result
= true;
58 logger
.warn("Checking for " + pluralString
+ " not yet implemented");
59 //result &= checkArticlesWithoutJournal(bmiConfig);
60 //result &= checkPartOfJournal(bmiConfig);
65 private BerlinModelExportMapping
getMapping(){
66 String tableName
= dbTableName
;
67 BerlinModelExportMapping mapping
= new BerlinModelExportMapping(tableName
);
71 // NomStatusRefDetailFk
74 mapping
.addMapper(DbObjectMapper
.NewInstance("fromName", "NameFk"));
75 mapping
.addMapper(DbObjectMapper
.NewInstance("toName", "NameFk1"));
78 mapping
.addMapper(MethodMapper
.NewInstance("NomStatusFk", this));
80 mapping
.addMapper(DbObjectMapper
.NewInstance("citation", "NomStatusRefFk"));
81 mapping
.addMapper(RefDetailMapper
.NewInstance("citationMicroReference","citation", "NomStatusRefDetailFk"));
83 mapping
.addMapper(CreatedAndNotesMapper
.NewInstance());
85 NomenclaturalStatus r
= null;
91 protected boolean doInvoke(BerlinModelExportState
<BerlinModelExportConfigurator
> state
){
93 logger
.info("start make " + pluralString
+ " ...");
94 boolean success
= true ;
97 TransactionStatus txStatus
= startTransaction(true);
99 List
<RelationshipBase
> list
= getNameService().getAllRelationships(100000000, 0);
101 BerlinModelExportMapping mapping
= getMapping();
102 mapping
.initialize(state
);
105 for (RelationshipBase
<?
,?
,?
> rel
: list
){
106 if (rel
.isInstanceOf(NameRelationship
.class) || rel
.isInstanceOf(HybridRelationship
.class )){
107 doCount(count
++, modCount
, pluralString
);
108 success
&= mapping
.invoke(rel
);
111 commitTransaction(txStatus
);
112 logger
.info("end make " + pluralString
+ " ...");
114 }catch(SQLException e
){
116 logger
.error(e
.getMessage());
122 protected boolean doDelete(BerlinModelExportState
<BerlinModelExportConfigurator
> state
){
123 BerlinModelExportConfigurator bmeConfig
= state
.getConfig();
126 Source destination
= bmeConfig
.getDestination();
128 sql
= "DELETE FROM RelPTaxon";
129 destination
.setQuery(sql
);
130 destination
.update(sql
);
137 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
139 protected boolean isIgnore(IExportConfigurator config
){
140 return ! ((BerlinModelExportConfigurator
)config
).isDoTaxonNames();
143 //called by MethodMapper
144 @SuppressWarnings("unused")
145 private static Integer
getNomStatusFk(NomenclaturalStatus status
){
146 return BerlinModelTransformer
.nomStatus2nomStatusFk(status
);
150 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
153 public Class
<?
extends CdmBase
> getStandardMethodParameter() {
154 return standardMethodParameter
;