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
.common
.Source
;
19 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.CdmDbExportMapping
;
20 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.CreatedAndNotesMapper
;
21 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbExtensionMapper
;
22 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbStringMapper
;
23 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.DbTimePeriodMapper
;
24 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.IExportTransformer
;
25 import eu
.etaxonomy
.cdm
.io
.common
.mapping
.out
.IdMapper
;
26 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
27 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
28 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
29 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
38 public class BerlinModelAuthorExport
extends BerlinModelExportBase
<Person
> {
39 private static final Logger logger
= Logger
.getLogger(BerlinModelAuthorExport
.class);
41 private static int modCount
= 5000;
42 private static final String dbTableName
= "Author";
43 private static final String pluralString
= "Authors";
44 private static final Class
<?
extends CdmBase
> standardMethodParameter
= Person
.class;
45 public BerlinModelAuthorExport(){
51 protected boolean doCheck(BerlinModelExportState state
){
52 boolean result
= true;
53 logger
.warn("Checking for "+pluralString
+" not yet implemented");
54 //result &= checkArticlesWithoutJournal(bmiConfig);
55 //result &= checkPartOfJournal(bmiConfig);
60 private CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
> getMapping(){
61 String tableName
= dbTableName
;
62 CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
> mapping
= new CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
>(tableName
);
63 mapping
.addMapper(IdMapper
.NewInstance("AuthorId"));
64 mapping
.addMapper(DbStringMapper
.NewInstance("nomenclaturalTitle", "Abbrev"));
65 mapping
.addMapper(DbStringMapper
.NewInstance("firstname", "FirstName"));
66 mapping
.addMapper(DbStringMapper
.NewInstance("lastname", "LastName"));
67 mapping
.addMapper(DbTimePeriodMapper
.NewInstance("lifespan", "Dates"));
68 mapping
.addMapper(DbExtensionMapper
.NewInstance(ExtensionType
.NOMENCLATURAL_STANDARD(), "NomStandard"));
69 mapping
.addMapper(DbExtensionMapper
.NewInstance(ExtensionType
.AREA_OF_INTREREST(), "AreaOfInterest"));
70 mapping
.addMapper(DbExtensionMapper
.NewInstance(ExtensionType
.ABBREVIATION(), "Initials"));
71 // mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.ABBREVIATION(),Kürzel")); //Initials used instead
72 // mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.ABBREVIATION(), "DraftKürz")); //Initials used instead
73 mapping
.addMapper(CreatedAndNotesMapper
.NewInstance());
79 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#doInvoke(eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState)
82 protected void doInvoke(BerlinModelExportState state
) {
84 boolean success
= true;
85 BerlinModelExportConfigurator bmeConfig
= (BerlinModelExportConfigurator
)state
.getConfig();
87 logger
.info("start make "+pluralString
+" ...");
90 TransactionStatus txStatus
= startTransaction(true);
91 Class
<Person
> clazz
= Person
.class;
92 List
<Person
> persons
= getAgentService().list(clazz
, 100000000, 0, null, null);
94 CdmDbExportMapping
<BerlinModelExportState
, BerlinModelExportConfigurator
, IExportTransformer
> mapping
= getMapping();
95 mapping
.initialize(state
);
97 logger
.info("save "+pluralString
+" ...");
99 for (AgentBase
<?
> agent
: persons
){
100 doCount(count
++, modCount
, pluralString
);
101 if (agent
instanceof Person
){
102 success
&= mapping
.invoke(agent
);
106 commitTransaction(txStatus
);
107 logger
.info("end make "+pluralString
+" ..." + getSuccessString(success
));
109 state
.setUnsuccessfull();
112 }catch(SQLException e
){
114 logger
.error(e
.getMessage());
115 state
.setUnsuccessfull();
120 protected boolean doDelete(BerlinModelExportConfigurator config
){
122 //TODO make more generic for all BerlinModelExport classes
124 Source destination
= config
.getDestination();
126 sql
= "DELETE FROM RelPTaxon";
127 destination
.setQuery(sql
);
128 destination
.update(sql
);
130 sql
= "DELETE FROM Fact";
131 destination
.setQuery(sql
);
132 destination
.update(sql
);
134 sql
= "DELETE FROM PTaxon";
135 destination
.setQuery(sql
);
136 destination
.update(sql
);
139 sql
= "DELETE FROM NameHistory";
140 destination
.setQuery(sql
);
141 destination
.update(sql
);
143 sql
= "DELETE FROM RelName";
144 destination
.setQuery(sql
);
145 destination
.update(sql
);
147 sql
= "DELETE FROM NomStatusRel";
148 destination
.setQuery(sql
);
149 destination
.update(sql
);
151 sql
= "DELETE FROM Name";
152 destination
.setQuery(sql
);
153 destination
.update(sql
);
155 sql
= "DELETE FROM RefDetail";
156 destination
.setQuery(sql
);
157 destination
.update(sql
);
159 sql
= "DELETE FROM Reference";
160 destination
.setQuery(sql
);
161 destination
.update(sql
);
163 sql
= "DELETE FROM AuthorTeamSequence";
164 destination
.setQuery(sql
);
165 destination
.update(sql
);
167 sql
= "DELETE FROM AuthorTeam";
168 destination
.setQuery(sql
);
169 destination
.update(sql
);
171 sql
= "DELETE FROM Author";
172 destination
.setQuery(sql
);
173 destination
.update(sql
);
179 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IIoConfigurator)
182 protected boolean isIgnore(BerlinModelExportState state
) {
183 return ! state
.getConfig().isDoAuthors();
187 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
190 public Class
<?
extends CdmBase
> getStandardMethodParameter() {
191 return standardMethodParameter
;