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
.out
.mapper
.CreatedAndNotesMapper
;
19 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.DbStringMapper
;
20 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.DbTimePeriodMapper
;
21 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.IdMapper
;
22 import eu
.etaxonomy
.cdm
.io
.common
.IExportConfigurator
;
23 import eu
.etaxonomy
.cdm
.io
.common
.Source
;
24 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
25 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
26 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
35 public class BerlinModelAuthorExport
extends BerlinModelExportBase
<Person
> {
36 private static final Logger logger
= Logger
.getLogger(BerlinModelAuthorExport
.class);
38 private static int modCount
= 1000;
39 private static final String dbTableName
= "Author";
40 private static final String pluralString
= "Authors";
41 private static final Class
<?
extends CdmBase
> standardMethodParameter
= Person
.class;
42 public BerlinModelAuthorExport(){
47 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
50 protected boolean doCheck(IExportConfigurator config
){
51 boolean result
= true;
52 logger
.warn("Checking for "+pluralString
+" not yet implemented");
53 //result &= checkArticlesWithoutJournal(bmiConfig);
54 //result &= checkPartOfJournal(bmiConfig);
59 private BerlinModelExportMapping
getMapping(){
60 String tableName
= dbTableName
;
61 BerlinModelExportMapping mapping
= new BerlinModelExportMapping(tableName
);
62 mapping
.addMapper(IdMapper
.NewInstance("AuthorId"));
63 mapping
.addMapper(DbStringMapper
.NewInstance("nomenclaturalTitle", "Abbrev"));
64 mapping
.addMapper(DbStringMapper
.NewInstance("firstname", "FirstName"));
65 mapping
.addMapper(DbStringMapper
.NewInstance("lastname", "LastName"));
66 mapping
.addMapper(DbTimePeriodMapper
.NewInstance("lifespan", "Dates"));
69 // mapping.addMapper(DbStringMapper.NewInstance("", "NomStandard"));
70 // mapping.addMapper(DbStringMapper.NewInstance("", "Kürzel"));
71 // mapping.addMapper(DbStringMapper.NewInstance("", "DraftKürz"));
72 // mapping.addMapper(DbStringMapper.NewInstance("", "Initials"));
74 mapping
.addMapper(CreatedAndNotesMapper
.NewInstance());
80 protected boolean doInvoke(BerlinModelExportState
<BerlinModelExportConfigurator
> state
){
82 BerlinModelExportConfigurator bmeConfig
= (BerlinModelExportConfigurator
)state
.getConfig();
84 logger
.info("start make "+pluralString
+" ...");
85 boolean success
= true ;
88 TransactionStatus txStatus
= startTransaction(true);
89 Class
<Person
> clazz
= Person
.class;
90 List
<?
extends Person
> persons
= getAgentService().list(clazz
, 100000000, 0);
92 BerlinModelExportMapping mapping
= getMapping();
93 mapping
.initialize(state
);
95 logger
.info("save "+pluralString
+" ...");
97 for (AgentBase
<?
> agent
: persons
){
98 doCount(count
++, modCount
, pluralString
);
99 if (agent
instanceof Person
){
100 success
&= mapping
.invoke(agent
);
104 commitTransaction(txStatus
);
105 logger
.info("end make "+pluralString
+" ...");
107 }catch(SQLException e
){
109 logger
.error(e
.getMessage());
114 protected boolean doDelete(BerlinModelExportConfigurator config
){
116 //TODO make more generic for all BerlinModelExport classes
118 Source destination
= config
.getDestination();
120 sql
= "DELETE FROM RelPTaxon";
121 destination
.setQuery(sql
);
122 destination
.update(sql
);
124 sql
= "DELETE FROM Fact";
125 destination
.setQuery(sql
);
126 destination
.update(sql
);
128 sql
= "DELETE FROM PTaxon";
129 destination
.setQuery(sql
);
130 destination
.update(sql
);
133 sql
= "DELETE FROM NameHistory";
134 destination
.setQuery(sql
);
135 destination
.update(sql
);
137 sql
= "DELETE FROM RelName";
138 destination
.setQuery(sql
);
139 destination
.update(sql
);
141 sql
= "DELETE FROM NomStatusRel";
142 destination
.setQuery(sql
);
143 destination
.update(sql
);
145 sql
= "DELETE FROM Name";
146 destination
.setQuery(sql
);
147 destination
.update(sql
);
149 sql
= "DELETE FROM RefDetail";
150 destination
.setQuery(sql
);
151 destination
.update(sql
);
153 sql
= "DELETE FROM Reference";
154 destination
.setQuery(sql
);
155 destination
.update(sql
);
157 sql
= "DELETE FROM AuthorTeamSequence";
158 destination
.setQuery(sql
);
159 destination
.update(sql
);
161 sql
= "DELETE FROM AuthorTeam";
162 destination
.setQuery(sql
);
163 destination
.update(sql
);
165 sql
= "DELETE FROM Author";
166 destination
.setQuery(sql
);
167 destination
.update(sql
);
172 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
174 protected boolean isIgnore(IExportConfigurator config
){
175 return ! ((BerlinModelExportConfigurator
)config
).isDoAuthors();
179 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
182 public Class
<?
extends CdmBase
> getStandardMethodParameter() {
183 return standardMethodParameter
;