1
2
3
4
5
6
7
8
9
10
11 package eu.etaxonomy.cdm.io.erms;
12
13 import java.sql.ResultSet;
14 import java.sql.SQLException;
15 import java.util.HashMap;
16 import java.util.Map;
17
18 import org.apache.log4j.Logger;
19 import org.springframework.stereotype.Component;
20
21 import eu.etaxonomy.cdm.io.common.IOValidator;
22 import eu.etaxonomy.cdm.io.common.Source;
23 import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
24 import eu.etaxonomy.cdm.io.erms.validation.ErmsRankImportValidator;
25 import eu.etaxonomy.cdm.model.common.CdmBase;
26 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
27 import eu.etaxonomy.cdm.model.name.Rank;
28 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;
29
30
31
32
33
34
35 @Component
36 public class ErmsImportRankMap extends ErmsImportBase<Rank>{
37 private static final Logger logger = Logger.getLogger(ErmsImportRankMap.class);
38
39 private Map<Integer, Map<Integer,Rank>> rankMap;
40
41
42
43
44
45 public ErmsImportRankMap() {
46 super(null, null, null);
47 }
48
49
50
51
52
53 public boolean invoke (ErmsImportState state){
54 rankMap = new HashMap<Integer, Map<Integer,Rank>>();
55 Source source = state.getConfig().getSource() ;
56 String strSQL = " SELECT * FROM ranks ";
57 ResultSet rs = source.getResultSet(strSQL);
58 try {
59 while (rs.next()){
60 Integer kingdomId = rs.getInt("kingdom_id");
61 Integer rankId = rs.getInt("rank_id");
62 String rankName = rs.getString("rank_name");
63 NomenclaturalCode nc = ErmsTransformer.kingdomId2NomCode(kingdomId);
64
65 Map<Integer, Rank> kingdomMap = makeKingdomMap(rankMap, rankId);
66 try {
67 rankName = rankName.replace("Forma", "Form").replace("Subforma", "Subform");
68 Rank rank = Rank.getRankByEnglishName(rankName, nc, false);
69 if (rank == null){
70 logger.warn("Rank is null: " + rankName);
71 }
72 kingdomMap.put(kingdomId, rank);
73 } catch (UnknownCdmTypeException e) {
74 String errorMessage = "Rank '" + rankName + "' is not well mapped for code " + nc + ", kingdom_id = " + kingdomId + ". Rank is ignored!";
75 logger.warn(errorMessage);
76 }
77 }
78 } catch (SQLException e) {
79 logger.error(e.getMessage());
80 throw new RuntimeException(e);
81 }
82 state.setRankMap(rankMap);
83 return true;
84 }
85
86
87
88
89
90
91
92
93 private Map<Integer, Rank> makeKingdomMap(Map<Integer, Map<Integer, Rank>> rankMap, Integer rankId) {
94 Map<Integer, Rank> result = rankMap.get(rankId);
95 if (result == null){
96 result = new HashMap<Integer, Rank>();
97 rankMap.put(rankId, result);
98 }
99 return result;
100 }
101
102
103
104
105
106 @Override
107 protected boolean doCheck(ErmsImportState state) {
108 IOValidator rankImport = new ErmsRankImportValidator();
109 return rankImport.validate(state);
110 }
111
112
113
114
115
116 @Override
117 protected String getRecordQuery(ErmsImportConfigurator config) {
118
119 return null;
120 }
121
122
123
124
125
126 @Override
127 protected boolean isIgnore(ErmsImportState state) {
128 return false;
129 }
130
131
132
133
134
135 public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
136 return null;
137 }
138
139
140
141
142 public Rank createObject(ResultSet rs, ErmsImportState state)
143 throws SQLException {
144 return null;
145 }
146
147
148
149
150
151 @Override
152 protected DbImportMapping<?, ?> getMapping() {
153 return null;
154 }
155
156
157
158 }