correcting utf8 chars
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / berlinModel / out / BerlinModelAuthorExport.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9 package eu.etaxonomy.cdm.io.berlinModel.out;
10
11 import java.sql.SQLException;
12 import java.util.List;
13
14 import org.apache.log4j.Logger;
15 import org.springframework.stereotype.Component;
16 import org.springframework.transaction.TransactionStatus;
17
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;
28
29
30 /**
31 * @author a.mueller
32 * @created 20.03.2008
33 * @version 1.0
34 */
35 @Component
36 public class BerlinModelAuthorExport extends BerlinModelExportBase<Person> {
37 private static final Logger logger = Logger.getLogger(BerlinModelAuthorExport.class);
38
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(){
44 super();
45 }
46
47
48 @Override
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);
54
55 return result;
56 }
57
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());
72
73 return mapping;
74 }
75
76 /* (non-Javadoc)
77 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#doInvoke(eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState)
78 */
79 @Override
80 protected boolean doInvoke(BerlinModelExportState state) {
81 try{
82 BerlinModelExportConfigurator bmeConfig = (BerlinModelExportConfigurator)state.getConfig();
83
84 logger.info("start make "+pluralString+" ...");
85 boolean success = true ;
86 doDelete(bmeConfig);
87
88 TransactionStatus txStatus = startTransaction(true);
89 Class<Person> clazz = Person.class;
90 List<AgentBase> persons = getAgentService().list(clazz, 100000000, 0, null, null);
91
92 BerlinModelExportMapping mapping = getMapping();
93 mapping.initialize(state);
94
95 logger.info("save "+pluralString+" ...");
96 int count = 0;
97 for (AgentBase<?> agent : persons){
98 doCount(count++, modCount, pluralString);
99 if (agent instanceof Person){
100 success &= mapping.invoke(agent);
101 }
102 }
103
104 commitTransaction(txStatus);
105 logger.info("end make "+pluralString+" ..." + getSuccessString(success));
106 return success;
107 }catch(SQLException e){
108 e.printStackTrace();
109 logger.error(e.getMessage());
110 return false;
111 }
112 }
113
114 protected boolean doDelete(BerlinModelExportConfigurator config){
115
116 //TODO make more generic for all BerlinModelExport classes
117 String sql;
118 Source destination = config.getDestination();
119 //RelPTaxon
120 sql = "DELETE FROM RelPTaxon";
121 destination.setQuery(sql);
122 destination.update(sql);
123 //Fact
124 sql = "DELETE FROM Fact";
125 destination.setQuery(sql);
126 destination.update(sql);
127 //PTaxon
128 sql = "DELETE FROM PTaxon";
129 destination.setQuery(sql);
130 destination.update(sql);
131
132 //NameHistory
133 sql = "DELETE FROM NameHistory";
134 destination.setQuery(sql);
135 destination.update(sql);
136 //RelName
137 sql = "DELETE FROM RelName";
138 destination.setQuery(sql);
139 destination.update(sql);
140 //NomStatusRel
141 sql = "DELETE FROM NomStatusRel";
142 destination.setQuery(sql);
143 destination.update(sql);
144 //Name
145 sql = "DELETE FROM Name";
146 destination.setQuery(sql);
147 destination.update(sql);
148 //RefDetail
149 sql = "DELETE FROM RefDetail";
150 destination.setQuery(sql);
151 destination.update(sql);
152 //Reference
153 sql = "DELETE FROM Reference";
154 destination.setQuery(sql);
155 destination.update(sql);
156 //AuthorTeamSequence
157 sql = "DELETE FROM AuthorTeamSequence";
158 destination.setQuery(sql);
159 destination.update(sql);
160 //AuthorTeam
161 sql = "DELETE FROM AuthorTeam";
162 destination.setQuery(sql);
163 destination.update(sql);
164 //Author
165 sql = "DELETE FROM Author";
166 destination.setQuery(sql);
167 destination.update(sql);
168 return true;
169 }
170
171
172 /* (non-Javadoc)
173 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IIoConfigurator)
174 */
175 @Override
176 protected boolean isIgnore(BerlinModelExportState state) {
177 return ! state.getConfig().isDoAuthors();
178 }
179
180 /* (non-Javadoc)
181 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
182 */
183 @Override
184 public Class<? extends CdmBase> getStandardMethodParameter() {
185 return standardMethodParameter;
186 }
187
188
189
190 }