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.BerlinModelTransformer;
19 import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase;
20 import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelTaxonImport;
21 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;
22 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbBooleanMapper;
23 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbExtensionMapper;
24 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbIntegerExtensionMapper;
25 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbMarkerMapper;
26 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;
27 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbStringMapper;
28 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;
29 import eu.etaxonomy.cdm.io.common.Source;
30 import eu.etaxonomy.cdm.model.common.CdmBase;
31 import eu.etaxonomy.cdm.model.common.ExtensionType;
32 import eu.etaxonomy.cdm.model.common.MarkerType;
33 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
34
35
36
37
38
39
40
41 @Component
42 public class BerlinModelTaxonExport extends BerlinModelExportBase<TaxonBase> {
43 private static final Logger logger = Logger.getLogger(BerlinModelTaxonExport.class);
44
45 private static int modCount = 1000;
46 private static final String dbTableName = "PTaxon";
47 private static final String pluralString = "Taxa";
48 private static final Class<? extends CdmBase> standardMethodParameter = TaxonBase.class;
49
50 public BerlinModelTaxonExport(){
51 super();
52 }
53
54
55
56
57 @Override
58 protected boolean doCheck(BerlinModelExportState state){
59 boolean result = true;
60 logger.warn("Checking for " + pluralString + " not yet implemented");
61
62
63
64 return result;
65 }
66
67 private BerlinModelExportMapping getMapping(){
68 String tableName = dbTableName;
69 BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);
70 mapping.addMapper(DbObjectMapper.NewInstance("name", "PTNameFk"));
71 mapping.addMapper(DbObjectMapper.NewInstance("sec", "PTRefFk"));
72 mapping.addMapper(MethodMapper.NewInstance("StatusFk", this));
73 mapping.addMapper(MethodMapper.NewInstance("DoubtfulFlag", this) );
74 mapping.addMapper(DbBooleanMapper.NewInstance("useNameCache", "UseNameCacheFlag", false));
75 mapping.addMapper(DbStringMapper.NewFacultativeInstance("appendedPhrase", "NamePhrase"));
76
77
78 ExtensionType detailExtensionType = (ExtensionType)getTermService().find(BerlinModelTaxonImport.DETAIL_EXT_UUID);
79 if (detailExtensionType != null){
80 mapping.addMapper(DbExtensionMapper.NewInstance(detailExtensionType, "Detail"));
81 }
82
83 ExtensionType idInSourceExtensionType = (ExtensionType)getTermService().find(BerlinModelImportBase.ID_IN_SOURCE_EXT_UUID);
84 if (idInSourceExtensionType != null){
85 mapping.addMapper(DbIntegerExtensionMapper.NewInstance(idInSourceExtensionType, "IdInSource"));
86 }
87
88
89
90
91
92
93
94
95
96
97
98 mapping.addMapper(DbMarkerMapper.NewInstance(MarkerType.PUBLISH(), "PublishFlag", true));
99
100
101 mapping.addMapper(CreatedAndNotesMapper.NewInstance());
102
103
104
105
106
107 return mapping;
108 }
109
110 protected boolean doInvoke(BerlinModelExportState state){
111 try{
112 logger.info("start make " + pluralString + " ...");
113 boolean success = true ;
114 doDelete(state);
115
116 TransactionStatus txStatus = startTransaction(true);
117
118 List<TaxonBase> list = getTaxonService().list(null,100000000, 0, null, null);
119
120 BerlinModelExportMapping mapping = getMapping();
121 mapping.initialize(state);
122
123 int count = 0;
124 for (TaxonBase<?> taxon : list){
125 doCount(count++, modCount, pluralString);
126 success &= mapping.invoke(taxon);
127 }
128 commitTransaction(txStatus);
129 logger.info("end make " + pluralString + " ..." + getSuccessString(success));
130
131 return success;
132 }catch(SQLException e){
133 e.printStackTrace();
134 logger.error(e.getMessage());
135 return false;
136 }
137 }
138
139
140
141
142 protected boolean doDelete(BerlinModelExportState state){
143 BerlinModelExportConfigurator bmeConfig = state.getConfig();
144
145 String sql;
146 Source destination = bmeConfig.getDestination();
147
148 sql = "DELETE FROM RelPTaxon";
149 destination.setQuery(sql);
150 destination.update(sql);
151
152 sql = "DELETE FROM Fact";
153 destination.setQuery(sql);
154 destination.update(sql);
155
156 sql = "DELETE FROM PTaxon";
157 destination.setQuery(sql);
158 destination.update(sql);
159
160 return true;
161 }
162
163
164
165
166
167 protected boolean isIgnore(BerlinModelExportState state){
168 return ! state.getConfig().isDoTaxa();
169 }
170
171
172 @SuppressWarnings("unused")
173 private static Integer getStatusFk(TaxonBase<?> taxon){
174 return BerlinModelTransformer.taxonBase2statusFk(taxon);
175 }
176
177 @SuppressWarnings("unused")
178 private static String getDoubtfulFlag(TaxonBase<?> taxon){
179 if (taxon.isDoubtful()){
180 return "d";
181 }else{
182 return "a";
183 }
184 }
185
186
187
188
189 @Override
190 public Class<? extends CdmBase> getStandardMethodParameter() {
191 return standardMethodParameter;
192 }
193 }