Revision 4ae09d10
Added by Patrick Plitzner almost 8 years ago
app-import/src/main/java/eu/etaxonomy/cdm/io/redlist/gefaesspflanzen/RedListGefaesspflanzenImportClassification.java | ||
---|---|---|
94 | 94 |
ResultSet rs = partitioner.getResultSet(); |
95 | 95 |
Classification gesamtListeClassification = getClassificationService().load(state.getConfig().getClassificationUuid()); |
96 | 96 |
Classification checklistClassification = getClassificationService().load(RedListUtil.checkListClassificationUuid); |
97 |
Classification classificationE = getClassificationService().load(RedListUtil.uuidClassificationE); |
|
98 |
Classification classificationW = getClassificationService().load(RedListUtil.uuidClassificationW); |
|
99 |
Classification classificationK = getClassificationService().load(RedListUtil.uuidClassificationK); |
|
100 |
Classification classificationAW = getClassificationService().load(RedListUtil.uuidClassificationAW); |
|
101 |
Classification classificationAO = getClassificationService().load(RedListUtil.uuidClassificationAO); |
|
102 |
Classification classificationR = getClassificationService().load(RedListUtil.uuidClassificationR); |
|
103 |
Classification classificationO = getClassificationService().load(RedListUtil.uuidClassificationO); |
|
104 |
Classification classificationS = getClassificationService().load(RedListUtil.uuidClassificationS); |
|
97 | 105 |
try { |
98 | 106 |
while (rs.next()){ |
99 |
makeSingleTaxonNode(state, rs, gesamtListeClassification, checklistClassification); |
|
107 |
makeSingleTaxonNode(state, rs, gesamtListeClassification, checklistClassification, |
|
108 |
classificationE, classificationW, classificationK, classificationAW |
|
109 |
, classificationAO, classificationR, classificationO, classificationS); |
|
100 | 110 |
|
101 | 111 |
} |
102 | 112 |
} catch (SQLException e) { |
... | ... | |
109 | 119 |
return true; |
110 | 120 |
} |
111 | 121 |
|
112 |
private void makeSingleTaxonNode(RedListGefaesspflanzenImportState state, ResultSet rs, Classification gesamtListeClassification, Classification checklistClassification) |
|
122 |
private void makeSingleTaxonNode(RedListGefaesspflanzenImportState state, ResultSet rs, |
|
123 |
Classification gesamtListeClassification, Classification checklistClassification, |
|
124 |
Classification classificationE, Classification classificationW, Classification classificationK, |
|
125 |
Classification classificationAW, Classification classificationAO, Classification classificationR, |
|
126 |
Classification classificationO, Classification classificationS) |
|
113 | 127 |
throws SQLException { |
114 | 128 |
long id = rs.getLong(RedListUtil.NAMNR); |
115 | 129 |
String parentId = String.valueOf(rs.getLong(RedListUtil.LOWER)); |
... | ... | |
137 | 151 |
} |
138 | 152 |
|
139 | 153 |
//add taxa for concept relationships to E, W, K, AW, AO, R, O, S |
140 |
addTaxonToClassification(RedListUtil.uuidClassificationE, RedListUtil.CLASSIFICATION_NAMESPACE_E, id, state);
|
|
141 |
addTaxonToClassification(RedListUtil.uuidClassificationW, RedListUtil.CLASSIFICATION_NAMESPACE_W, id, state);
|
|
142 |
addTaxonToClassification(RedListUtil.uuidClassificationK, RedListUtil.CLASSIFICATION_NAMESPACE_K, id, state);
|
|
143 |
addTaxonToClassification(RedListUtil.uuidClassificationAW, RedListUtil.CLASSIFICATION_NAMESPACE_AW, id, state);
|
|
144 |
addTaxonToClassification(RedListUtil.uuidClassificationAO, RedListUtil.CLASSIFICATION_NAMESPACE_AO, id, state);
|
|
145 |
addTaxonToClassification(RedListUtil.uuidClassificationR, RedListUtil.CLASSIFICATION_NAMESPACE_R, id, state);
|
|
146 |
addTaxonToClassification(RedListUtil.uuidClassificationO, RedListUtil.CLASSIFICATION_NAMESPACE_O, id, state);
|
|
147 |
addTaxonToClassification(RedListUtil.uuidClassificationS, RedListUtil.CLASSIFICATION_NAMESPACE_S, id, state);
|
|
154 |
addTaxonToClassification(classificationE, RedListUtil.CLASSIFICATION_NAMESPACE_E, id, state);
|
|
155 |
addTaxonToClassification(classificationW, RedListUtil.CLASSIFICATION_NAMESPACE_W, id, state);
|
|
156 |
addTaxonToClassification(classificationK, RedListUtil.CLASSIFICATION_NAMESPACE_K, id, state);
|
|
157 |
addTaxonToClassification(classificationAW, RedListUtil.CLASSIFICATION_NAMESPACE_AW, id, state);
|
|
158 |
addTaxonToClassification(classificationAO, RedListUtil.CLASSIFICATION_NAMESPACE_AO, id, state);
|
|
159 |
addTaxonToClassification(classificationR, RedListUtil.CLASSIFICATION_NAMESPACE_R, id, state);
|
|
160 |
addTaxonToClassification(classificationO, RedListUtil.CLASSIFICATION_NAMESPACE_O, id, state);
|
|
161 |
addTaxonToClassification(classificationS, RedListUtil.CLASSIFICATION_NAMESPACE_S, id, state);
|
|
148 | 162 |
} |
149 | 163 |
|
150 |
private void addTaxonToClassification(UUID classificationUuid, String classificationNamespace, long id, RedListGefaesspflanzenImportState state){
|
|
164 |
private void addTaxonToClassification(Classification classification, String classificationNamespace, long id, RedListGefaesspflanzenImportState state){
|
|
151 | 165 |
Taxon taxon = HibernateProxyHelper.deproxy(state.getRelatedObject(classificationNamespace, String.valueOf(id), TaxonBase.class), Taxon.class); |
152 |
Classification classification = getClassificationService().load(classificationUuid); |
|
153 | 166 |
classification.addChildTaxon(taxon, null, null); |
154 | 167 |
} |
155 | 168 |
|
app-import/src/main/java/eu/etaxonomy/cdm/io/redlist/gefaesspflanzen/RedListGefaesspflanzenImportNames.java | ||
---|---|---|
152 | 152 |
*/ |
153 | 153 |
//checklist |
154 | 154 |
if(CdmUtils.isNotBlank(clTaxonString) && !clTaxonString.trim().equals("-")){ |
155 |
cloneTaxon(taxonBase, name, TaxonRelationshipType.CONGRUENT_TO(), taxaToSave, id, RedListUtil.TAXON_CHECKLISTE_NAMESPACE, state); |
|
155 |
cloneTaxon(taxonBase, name, TaxonRelationshipType.CONGRUENT_TO(), taxaToSave, id, RedListUtil.TAXON_CHECKLISTE_NAMESPACE, false, true, state);
|
|
156 | 156 |
} |
157 | 157 |
//E, W, K, AW, AO, R, O, S |
158 | 158 |
addConceptRelation(relationE, RedListUtil.CLASSIFICATION_NAMESPACE_E, taxonBase, name, taxaToSave, id, state); |
... | ... | |
171 | 171 |
|
172 | 172 |
private void addConceptRelation(String relationString, String classificationNamespace, TaxonBase taxonBase, TaxonNameBase name, Set<TaxonBase> taxaToSave, long id, RedListGefaesspflanzenImportState state){ |
173 | 173 |
if(CdmUtils.isNotBlank(relationString) && !relationString.equals(".")){ |
174 |
TaxonRelationshipType taxonRelationshipTypeByKey = new RedListGefaesspflanzenTransformer().getTaxonRelationshipTypeByKey(relationString); |
|
174 |
String substring = relationString.substring(relationString.length()-1, relationString.length()); |
|
175 |
TaxonRelationshipType taxonRelationshipTypeByKey = new RedListGefaesspflanzenTransformer().getTaxonRelationshipTypeByKey(substring); |
|
175 | 176 |
if(taxonRelationshipTypeByKey==null){ |
176 |
RedListUtil.logMessage(id, "Could not interpret relationship "+relationString+" for taxon "+taxonBase, logger); |
|
177 |
RedListUtil.logMessage(id, "Could not interpret relationship "+relationString+" for taxon "+taxonBase.generateTitle(), logger); |
|
178 |
} |
|
179 |
//there is no type "included in" so we have to reverse the direction |
|
180 |
if(substring.equals("<")){ |
|
181 |
cloneTaxon(taxonBase, name, taxonRelationshipTypeByKey, taxaToSave, id, classificationNamespace, true, false, state); |
|
182 |
} |
|
183 |
else{ |
|
184 |
cloneTaxon(taxonBase, name, taxonRelationshipTypeByKey, taxaToSave, id, classificationNamespace, false, false, state); |
|
177 | 185 |
} |
178 |
cloneTaxon(taxonBase, name, taxonRelationshipTypeByKey, taxaToSave, id, classificationNamespace, state); |
|
179 | 186 |
} |
180 | 187 |
} |
181 | 188 |
|
182 | 189 |
/** |
183 | 190 |
* <b>NOTE:</b> the {@link TaxonRelationshipType} passed as parameter is |
184 |
* directed <b>from the clone</b> to the taxon |
|
191 |
* directed <b>from the clone</b> to the taxon.<br> |
|
192 |
* This can be changed with parameter <i>reverseRelation</i> |
|
185 | 193 |
*/ |
186 |
private void cloneTaxon(TaxonBase taxonBase, TaxonNameBase name, TaxonRelationshipType relationFromCloneToTaxon, Set<TaxonBase> taxaToSave, long id, String sourceNameSpace, RedListGefaesspflanzenImportState state){ |
|
187 |
TaxonBase clone = (TaxonBase) taxonBase.clone(); |
|
188 |
clone.setName(name); |
|
189 |
if(taxonBase.isInstanceOf(Taxon.class)){ |
|
190 |
TaxonRelationship taxonRelation = ((Taxon) clone).addTaxonRelation((Taxon) taxonBase, relationFromCloneToTaxon, null, null); |
|
191 |
taxonRelation.setDoubtful(true);//TODO Ist das mit " mit Fragezeichen" gemeint? |
|
194 |
private void cloneTaxon(TaxonBase taxonBase, TaxonNameBase name, TaxonRelationshipType relationFromCloneToTaxon, Set<TaxonBase> taxaToSave, long id, String sourceNameSpace, boolean reverseRelation, boolean doubtful, RedListGefaesspflanzenImportState state){ |
|
195 |
TaxonBase clone = (TaxonBase) taxonBase.clone(); |
|
196 |
clone.setName(name); |
|
197 |
if(taxonBase.isInstanceOf(Taxon.class)){ |
|
198 |
TaxonRelationship taxonRelation; |
|
199 |
if(reverseRelation){ |
|
200 |
taxonRelation = ((Taxon) taxonBase).addTaxonRelation((Taxon) clone, relationFromCloneToTaxon, null, null); |
|
192 | 201 |
} |
193 |
ImportHelper.setOriginalSource(clone, state.getTransactionalSourceReference(), id, sourceNameSpace); |
|
194 |
taxaToSave.add(clone); |
|
202 |
else { |
|
203 |
taxonRelation = ((Taxon) clone).addTaxonRelation((Taxon) taxonBase, relationFromCloneToTaxon, null, null); |
|
204 |
} |
|
205 |
taxonRelation.setDoubtful(doubtful); |
|
206 |
} |
|
207 |
ImportHelper.setOriginalSource(clone, state.getTransactionalSourceReference(), id, sourceNameSpace); |
|
208 |
taxaToSave.add(clone); |
|
195 | 209 |
} |
196 | 210 |
|
197 | 211 |
private TaxonBase importTaxon(long id, String taxNameString, String gueltString, String authorBasiString, |
app-import/src/main/java/eu/etaxonomy/cdm/io/redlist/gefaesspflanzen/RedListGefaesspflanzenTransformer.java | ||
---|---|---|
72 | 72 |
public TaxonRelationshipType getTaxonRelationshipTypeByKey(String key) { |
73 | 73 |
if (key == null){return null;} |
74 | 74 |
else { |
75 |
String substring = key.substring(key.length()-1, key.length()); |
|
76 | 75 |
// if (key.equals("<")){return TaxonRelationshipType.();}//TODO: what to do here? |
77 |
if (substring.equals("=")){return TaxonRelationshipType.CONGRUENT_TO();} |
|
78 |
else if (substring.equals(">")){return TaxonRelationshipType.INCLUDES();} |
|
79 |
else if (substring.equals("!")){return TaxonRelationshipType.OVERLAPS();} |
|
80 |
else if (substring.equals("?")){return TaxonRelationshipType.ALL_RELATIONSHIPS();} |
|
76 |
if (key.equals("=")){return TaxonRelationshipType.CONGRUENT_TO();} |
|
77 |
else if (key.equals(">")){return TaxonRelationshipType.INCLUDES();} |
|
78 |
else if (key.equals("<")){return TaxonRelationshipType.INCLUDES();} |
|
79 |
else if (key.equals("!")){return TaxonRelationshipType.OVERLAPS();} |
|
80 |
// else if (key.equals("?")){return TaxonRelationshipType.;}//TODO: what to do here? |
|
81 | 81 |
// else if (key.equals("x")){return TaxonRelationshipType.();}//TODO: what to do here? |
82 | 82 |
} |
83 | 83 |
return null; |
Also available in: Unified diff
Add taxa to classifications #5448