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
.DbExtensionMapper
;
20 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.DbStringMapper
;
21 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.DbTimePeriodMapper
;
22 import eu
.etaxonomy
.cdm
.io
.berlinModel
.out
.mapper
.IdMapper
;
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
;
27 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
36 public class BerlinModelAuthorExport
extends BerlinModelExportBase
<Person
> {
37 private static final Logger logger
= Logger
.getLogger(BerlinModelAuthorExport
.class);
39 private static int modCount
= 5000;
40 private static final String dbTableName
= "Author";
41 private static final String pluralString
= "Authors";
42 private static final Class
<?
extends CdmBase
> standardMethodParameter
= Person
.class;
43 public BerlinModelAuthorExport(){
49 protected boolean doCheck(BerlinModelExportState state
){
50 boolean result
= true;
51 logger
.warn("Checking for "+pluralString
+" not yet implemented");
52 //result &= checkArticlesWithoutJournal(bmiConfig);
53 //result &= checkPartOfJournal(bmiConfig);
58 private BerlinModelExportMapping
getMapping(){
59 String tableName
= dbTableName
;
60 BerlinModelExportMapping mapping
= new BerlinModelExportMapping(tableName
);
61 mapping
.addMapper(IdMapper
.NewInstance("AuthorId"));
62 mapping
.addMapper(DbStringMapper
.NewInstance("nomenclaturalTitle", "Abbrev"));
63 mapping
.addMapper(DbStringMapper
.NewInstance("firstname", "FirstName"));
64 mapping
.addMapper(DbStringMapper
.NewInstance("lastname", "LastName"));
65 mapping
.addMapper(DbTimePeriodMapper
.NewInstance("lifespan", "Dates"));
66 mapping
.addMapper(DbExtensionMapper
.NewInstance(ExtensionType
.NOMENCLATURAL_STANDARD(), "NomStandard"));
67 mapping
.addMapper(DbExtensionMapper
.NewInstance(ExtensionType
.AREA_OF_INTREREST(), "AreaOfInterest"));
68 mapping
.addMapper(DbExtensionMapper
.NewInstance(ExtensionType
.ABBREVIATION(), "Initials"));
69 // mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.ABBREVIATION(),Kürzel")); //Initials used instead
70 // mapping.addMapper(DbExtensionMapper.NewInstance(ExtensionType.ABBREVIATION(), "DraftKürz")); //Initials used instead
71 mapping
.addMapper(CreatedAndNotesMapper
.NewInstance());
77 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#doInvoke(eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState)
80 protected boolean doInvoke(BerlinModelExportState 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
<AgentBase
> persons
= getAgentService().list(clazz
, 100000000, 0, null, null);
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
+" ..." + getSuccessString(success
));
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
);
173 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IIoConfigurator)
176 protected boolean isIgnore(BerlinModelExportState state
) {
177 return ! state
.getConfig().isDoAuthors();
181 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
184 public Class
<?
extends CdmBase
> getStandardMethodParameter() {
185 return standardMethodParameter
;