Correct publish flag import for BM import
[cdmlib-apps.git] / app-import / 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.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;
30
31
32 /**
33 * @author a.mueller
34 * @created 20.03.2008
35 * @version 1.0
36 */
37 @Component
38 public class BerlinModelAuthorExport extends BerlinModelExportBase<Person> {
39 private static final Logger logger = Logger.getLogger(BerlinModelAuthorExport.class);
40
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(){
46 super();
47 }
48
49
50 @Override
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);
56
57 return result;
58 }
59
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());
74
75 return mapping;
76 }
77
78 /* (non-Javadoc)
79 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#doInvoke(eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState)
80 */
81 @Override
82 protected void doInvoke(BerlinModelExportState state) {
83 try{
84 boolean success = true;
85 BerlinModelExportConfigurator bmeConfig = (BerlinModelExportConfigurator)state.getConfig();
86
87 logger.info("start make "+pluralString+" ...");
88 doDelete(bmeConfig);
89
90 TransactionStatus txStatus = startTransaction(true);
91 Class<Person> clazz = Person.class;
92 List<Person> persons = getAgentService().list(clazz, 100000000, 0, null, null);
93
94 CdmDbExportMapping<BerlinModelExportState, BerlinModelExportConfigurator, IExportTransformer> mapping = getMapping();
95 mapping.initialize(state);
96
97 logger.info("save "+pluralString+" ...");
98 int count = 0;
99 for (AgentBase<?> agent : persons){
100 doCount(count++, modCount, pluralString);
101 if (agent instanceof Person){
102 success &= mapping.invoke(agent);
103 }
104 }
105
106 commitTransaction(txStatus);
107 logger.info("end make "+pluralString+" ..." + getSuccessString(success));
108 if (!success){
109 state.setUnsuccessfull();
110 }
111 return;
112 }catch(SQLException e){
113 e.printStackTrace();
114 logger.error(e.getMessage());
115 state.setUnsuccessfull();
116 return;
117 }
118 }
119
120 protected boolean doDelete(BerlinModelExportConfigurator config){
121
122 //TODO make more generic for all BerlinModelExport classes
123 String sql;
124 Source destination = config.getDestination();
125 //RelPTaxon
126 sql = "DELETE FROM RelPTaxon";
127 destination.setQuery(sql);
128 destination.update(sql);
129 //Fact
130 sql = "DELETE FROM Fact";
131 destination.setQuery(sql);
132 destination.update(sql);
133 //PTaxon
134 sql = "DELETE FROM PTaxon";
135 destination.setQuery(sql);
136 destination.update(sql);
137
138 //NameHistory
139 sql = "DELETE FROM NameHistory";
140 destination.setQuery(sql);
141 destination.update(sql);
142 //RelName
143 sql = "DELETE FROM RelName";
144 destination.setQuery(sql);
145 destination.update(sql);
146 //NomStatusRel
147 sql = "DELETE FROM NomStatusRel";
148 destination.setQuery(sql);
149 destination.update(sql);
150 //Name
151 sql = "DELETE FROM Name";
152 destination.setQuery(sql);
153 destination.update(sql);
154 //RefDetail
155 sql = "DELETE FROM RefDetail";
156 destination.setQuery(sql);
157 destination.update(sql);
158 //Reference
159 sql = "DELETE FROM Reference";
160 destination.setQuery(sql);
161 destination.update(sql);
162 //AuthorTeamSequence
163 sql = "DELETE FROM AuthorTeamSequence";
164 destination.setQuery(sql);
165 destination.update(sql);
166 //AuthorTeam
167 sql = "DELETE FROM AuthorTeam";
168 destination.setQuery(sql);
169 destination.update(sql);
170 //Author
171 sql = "DELETE FROM Author";
172 destination.setQuery(sql);
173 destination.update(sql);
174 return true;
175 }
176
177
178 /* (non-Javadoc)
179 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IIoConfigurator)
180 */
181 @Override
182 protected boolean isIgnore(BerlinModelExportState state) {
183 return ! state.getConfig().isDoAuthors();
184 }
185
186 /* (non-Javadoc)
187 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
188 */
189 @Override
190 public Class<? extends CdmBase> getStandardMethodParameter() {
191 return standardMethodParameter;
192 }
193
194
195
196 }