(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / berlinModel / out / BerlinModelNomStatusExport.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.BerlinModelTransformer;
19 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;
20 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;
21 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;
22 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;
23 import eu.etaxonomy.cdm.io.berlinModel.out.mapper.RefDetailMapper;
24 import eu.etaxonomy.cdm.io.common.IExportConfigurator;
25 import eu.etaxonomy.cdm.io.common.Source;
26 import eu.etaxonomy.cdm.model.common.CdmBase;
27 import eu.etaxonomy.cdm.model.common.RelationshipBase;
28 import eu.etaxonomy.cdm.model.name.HybridRelationship;
29 import eu.etaxonomy.cdm.model.name.NameRelationship;
30 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
31
32
33 /**
34 * @author a.mueller
35 * @created 20.03.2008
36 * @version 1.0
37 */
38 @Component
39 public class BerlinModelNomStatusExport extends BerlinModelExportBase {
40 private static final Logger logger = Logger.getLogger(BerlinModelNomStatusExport.class);
41
42 private static int modCount = 1000;
43 private static final String dbTableName = "NomStatusRel";
44 private static final String pluralString = "NomStatus";
45 private static final Class<? extends CdmBase> standardMethodParameter = NomenclaturalStatus.class;
46
47
48 public BerlinModelNomStatusExport(){
49 super();
50 }
51
52 /* (non-Javadoc)
53 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
54 */
55 @Override
56 protected boolean doCheck(IExportConfigurator config){
57 boolean result = true;
58 logger.warn("Checking for " + pluralString + " not yet implemented");
59 //result &= checkArticlesWithoutJournal(bmiConfig);
60 //result &= checkPartOfJournal(bmiConfig);
61
62 return result;
63 }
64
65 private BerlinModelExportMapping getMapping(){
66 String tableName = dbTableName;
67 BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);
68 // NameFk
69 // NomStatusFk
70 // NomStatusRefFk
71 // NomStatusRefDetailFk
72 // DoubtfulFlag
73
74 mapping.addMapper(DbObjectMapper.NewInstance("fromName", "NameFk"));
75 mapping.addMapper(DbObjectMapper.NewInstance("toName", "NameFk1"));
76
77
78 mapping.addMapper(MethodMapper.NewInstance("NomStatusFk", this));
79
80 mapping.addMapper(DbObjectMapper.NewInstance("citation", "NomStatusRefFk"));
81 mapping.addMapper(RefDetailMapper.NewInstance("citationMicroReference","citation", "NomStatusRefDetailFk"));
82
83 mapping.addMapper(CreatedAndNotesMapper.NewInstance());
84
85 NomenclaturalStatus r = null;
86
87
88 return mapping;
89 }
90
91 protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){
92 try{
93 logger.info("start make " + pluralString + " ...");
94 boolean success = true ;
95 doDelete(state);
96
97 TransactionStatus txStatus = startTransaction(true);
98
99 List<RelationshipBase> list = getNameService().getAllRelationships(100000000, 0);
100
101 BerlinModelExportMapping mapping = getMapping();
102 mapping.initialize(state);
103
104 int count = 0;
105 for (RelationshipBase<?,?,?> rel : list){
106 if (rel.isInstanceOf(NameRelationship.class) || rel.isInstanceOf(HybridRelationship.class )){
107 doCount(count++, modCount, pluralString);
108 success &= mapping.invoke(rel);
109 }
110 }
111 commitTransaction(txStatus);
112 logger.info("end make " + pluralString + " ...");
113 return success;
114 }catch(SQLException e){
115 e.printStackTrace();
116 logger.error(e.getMessage());
117 return false;
118 }
119 }
120
121
122 protected boolean doDelete(BerlinModelExportState<BerlinModelExportConfigurator> state){
123 BerlinModelExportConfigurator bmeConfig = state.getConfig();
124
125 String sql;
126 Source destination = bmeConfig.getDestination();
127 //RelPTaxon
128 sql = "DELETE FROM RelPTaxon";
129 destination.setQuery(sql);
130 destination.update(sql);
131
132 return true;
133 }
134
135
136 /* (non-Javadoc)
137 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
138 */
139 protected boolean isIgnore(IExportConfigurator config){
140 return ! ((BerlinModelExportConfigurator)config).isDoTaxonNames();
141 }
142
143 //called by MethodMapper
144 @SuppressWarnings("unused")
145 private static Integer getNomStatusFk(NomenclaturalStatus status){
146 return BerlinModelTransformer.nomStatus2nomStatusFk(status);
147 }
148
149 /* (non-Javadoc)
150 * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()
151 */
152 @Override
153 public Class<? extends CdmBase> getStandardMethodParameter() {
154 return standardMethodParameter;
155 }
156 }