Project

General

Profile

« Previous | Next » 

Revision 783428fc

Added by Patrick Plitzner almost 8 years ago

#5448 Move import of concept relationships to classification import
class

  • there we already have the accepted taxa for the synonyms

View differences:

app-import/src/main/java/eu/etaxonomy/cdm/io/redlist/gefaesspflanzen/RedListGefaesspflanzenImportClassification.java
36 36
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
37 37
import eu.etaxonomy.cdm.model.taxon.Taxon;
38 38
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
39
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
39 40

  
40 41
/**
41 42
 *
......
131 132
        String gueltString = rs.getString(RedListUtil.GUELT);
132 133
        String taxZusatzString = rs.getString(RedListUtil.TAX_ZUSATZ);
133 134

  
135
        String relationE = rs.getString(RedListUtil.E);
136
        String relationW = rs.getString(RedListUtil.W);
137
        String relationK = rs.getString(RedListUtil.K);
138
        String relationAW = rs.getString(RedListUtil.AW);
139
        String relationAO = rs.getString(RedListUtil.AO);
140
        String relationR = rs.getString(RedListUtil.R);
141
        String relationO = rs.getString(RedListUtil.O);
142
        String relationS = rs.getString(RedListUtil.S);
143

  
134 144
        //Gesamtliste
135 145
        TaxonBase<?> taxonBaseGL = state.getRelatedObject(RedListUtil.TAXON_GESAMTLISTE_NAMESPACE, String.valueOf(id), TaxonBase.class);
136 146
        TaxonBase<?> parentBaseGL = state.getRelatedObject(RedListUtil.TAXON_GESAMTLISTE_NAMESPACE, parentId, TaxonBase.class);
......
160 170
        }
161 171

  
162 172
        //add taxa for concept relationships to E, W, K, AW, AO, R, O, S
163
        addTaxonToClassification(classificationE, RedListUtil.CLASSIFICATION_NAMESPACE_E, id, state);
164
        addTaxonToClassification(classificationW, RedListUtil.CLASSIFICATION_NAMESPACE_W, id, state);
165
        addTaxonToClassification(classificationK, RedListUtil.CLASSIFICATION_NAMESPACE_K, id, state);
166
        addTaxonToClassification(classificationAW, RedListUtil.CLASSIFICATION_NAMESPACE_AW, id, state);
167
        addTaxonToClassification(classificationAO, RedListUtil.CLASSIFICATION_NAMESPACE_AO, id, state);
168
        addTaxonToClassification(classificationR, RedListUtil.CLASSIFICATION_NAMESPACE_R, id, state);
169
        addTaxonToClassification(classificationO, RedListUtil.CLASSIFICATION_NAMESPACE_O, id, state);
170
        addTaxonToClassification(classificationS, RedListUtil.CLASSIFICATION_NAMESPACE_S, id, state);
173
        addTaxonToClassification(classificationE, RedListUtil.CLASSIFICATION_NAMESPACE_E, relationE, taxonBaseGL, taxonBaseCL, id, state);
174
        addTaxonToClassification(classificationW, RedListUtil.CLASSIFICATION_NAMESPACE_W, relationW, taxonBaseGL, taxonBaseCL, id, state);
175
        addTaxonToClassification(classificationK, RedListUtil.CLASSIFICATION_NAMESPACE_K, relationK, taxonBaseGL, taxonBaseCL, id, state);
176
        addTaxonToClassification(classificationAW, RedListUtil.CLASSIFICATION_NAMESPACE_AW, relationAW, taxonBaseGL, taxonBaseCL, id, state);
177
        addTaxonToClassification(classificationAO, RedListUtil.CLASSIFICATION_NAMESPACE_AO, relationAO, taxonBaseGL, taxonBaseCL, id, state);
178
        addTaxonToClassification(classificationR, RedListUtil.CLASSIFICATION_NAMESPACE_R, relationR, taxonBaseGL, taxonBaseCL, id, state);
179
        addTaxonToClassification(classificationO, RedListUtil.CLASSIFICATION_NAMESPACE_O, relationO, taxonBaseGL, taxonBaseCL, id, state);
180
        addTaxonToClassification(classificationS, RedListUtil.CLASSIFICATION_NAMESPACE_S, relationS, taxonBaseGL, taxonBaseCL, id, state);
171 181
    }
172 182

  
173
    private void addTaxonToClassification(Classification classification, String classificationNamespace, long id, RedListGefaesspflanzenImportState state){
183
    private void addTaxonToClassification(Classification classification, String classificationNamespace, String relationString, final TaxonBase<?> gesamtListeTaxon, final TaxonBase<?> checklisteTaxon, long id, RedListGefaesspflanzenImportState state){
174 184
        Taxon taxon = HibernateProxyHelper.deproxy(state.getRelatedObject(classificationNamespace, String.valueOf(id), TaxonBase.class), Taxon.class);
185
        //add concept relation to gesamtliste and checkliste
186
        if(CdmUtils.isNotBlank(relationString) && !relationString.equals(".")){
187
            //if the related concept in gesamtliste/checkliste is a synonym then we
188
            //create a relation to the accepted taxon
189
            Taxon acceptedGesamtListeTaxon = getAcceptedTaxon(gesamtListeTaxon);
190
            Taxon acceptedChecklistTaxon = getAcceptedTaxon(checklisteTaxon);
191
            String relationSubstring = relationString.substring(relationString.length()-1, relationString.length());
192
            TaxonRelationshipType taxonRelationshipTypeByKey = new RedListGefaesspflanzenTransformer().getTaxonRelationshipTypeByKey(relationSubstring);
193
            if(taxonRelationshipTypeByKey==null){
194
                RedListUtil.logMessage(id, "Could not interpret relationship "+relationString+" for taxon "+gesamtListeTaxon.generateTitle(), logger);
195
            }
196
            //there is no type "included in" so we have to reverse the direction
197
            if(relationSubstring.equals("<")){
198
                if(acceptedGesamtListeTaxon!=null){
199
                    acceptedGesamtListeTaxon.addTaxonRelation(taxon, taxonRelationshipTypeByKey, null, null);
200
                }
201
                if(acceptedChecklistTaxon!=null) {
202
                    acceptedChecklistTaxon.addTaxonRelation(taxon, taxonRelationshipTypeByKey, null, null);
203
                }
204
            }
205
            else{
206
                if(acceptedGesamtListeTaxon!=null){
207
                    taxon.addTaxonRelation(acceptedGesamtListeTaxon, taxonRelationshipTypeByKey, null, null);
208
                }
209
                if(acceptedChecklistTaxon!=null) {
210
                    taxon.addTaxonRelation(acceptedChecklistTaxon, taxonRelationshipTypeByKey, null, null);
211
                }
212
            }
213
        }
214

  
175 215
        if(taxon!=null){//not all taxa exist in these classifications
176 216
            taxon.setSec(classification.getReference());
177 217
            taxon.setTitleCache(null);//Reset title cache to reflect sec ref in title

Also available in: Unified diff