1
2
3
4
5
6
7
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
32
33
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
53
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
70
71 mapping.addMapper(CreatedAndNotesMapper.NewInstance());
72
73 return mapping;
74 }
75
76
77
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
117 String sql;
118 Source destination = config.getDestination();
119
120 sql = "DELETE FROM RelPTaxon";
121 destination.setQuery(sql);
122 destination.update(sql);
123
124 sql = "DELETE FROM Fact";
125 destination.setQuery(sql);
126 destination.update(sql);
127
128 sql = "DELETE FROM PTaxon";
129 destination.setQuery(sql);
130 destination.update(sql);
131
132
133 sql = "DELETE FROM NameHistory";
134 destination.setQuery(sql);
135 destination.update(sql);
136
137 sql = "DELETE FROM RelName";
138 destination.setQuery(sql);
139 destination.update(sql);
140
141 sql = "DELETE FROM NomStatusRel";
142 destination.setQuery(sql);
143 destination.update(sql);
144
145 sql = "DELETE FROM Name";
146 destination.setQuery(sql);
147 destination.update(sql);
148
149 sql = "DELETE FROM RefDetail";
150 destination.setQuery(sql);
151 destination.update(sql);
152
153 sql = "DELETE FROM Reference";
154 destination.setQuery(sql);
155 destination.update(sql);
156
157 sql = "DELETE FROM AuthorTeamSequence";
158 destination.setQuery(sql);
159 destination.update(sql);
160
161 sql = "DELETE FROM AuthorTeam";
162 destination.setQuery(sql);
163 destination.update(sql);
164
165 sql = "DELETE FROM Author";
166 destination.setQuery(sql);
167 destination.update(sql);
168 return true;
169 }
170
171
172
173
174
175 @Override
176 protected boolean isIgnore(BerlinModelExportState state) {
177 return ! state.getConfig().isDoAuthors();
178 }
179
180
181
182
183 @Override
184 public Class<? extends CdmBase> getStandardMethodParameter() {
185 return standardMethodParameter;
186 }
187
188
189
190 }