Project

General

Profile

Download (4.86 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2020 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.caryo;
10

    
11
import java.util.HashMap;
12
import java.util.HashSet;
13
import java.util.Map;
14
import java.util.Set;
15
import java.util.UUID;
16

    
17
import org.apache.logging.log4j.LogManager;
18
import org.apache.logging.log4j.Logger;
19
import org.springframework.stereotype.Component;
20

    
21
import eu.etaxonomy.cdm.io.mexico.SimpleExcelTaxonImportState;
22
import eu.etaxonomy.cdm.model.common.CdmBase;
23
import eu.etaxonomy.cdm.model.name.TaxonName;
24
import eu.etaxonomy.cdm.model.taxon.Classification;
25
import eu.etaxonomy.cdm.model.taxon.Synonym;
26
import eu.etaxonomy.cdm.model.taxon.Taxon;
27
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
28
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
29

    
30
/**
31
 * @author a.mueller
32
 * @since 02.02.2023
33
 */
34
@Component
35
public class CaryoSileneaeTaxonImport extends CaryoSileneaeImportBase {
36

    
37
    private static final long serialVersionUID = 5594951908819469636L;
38
    private static final Logger logger = LogManager.getLogger();
39

    
40
    private static final String ACCEPTED_TAXON_ID = "AcceptedTaxon_ID";
41
    private static final String NOMEN_LINK = "nomen_link";
42
    private static final String PARENT = "parent";
43

    
44
    private Map<String, UUID> taxonMapping = new HashMap<>();
45
    private Set<String> neglectedRecords = new HashSet<>();
46

    
47
    private SimpleExcelTaxonImportState<CaryoSileneaeImportConfigurator> state;
48

    
49
    @Override
50
    protected void firstPass(SimpleExcelTaxonImportState<CaryoSileneaeImportConfigurator> state) {
51
        int line = state.getCurrentLine();
52
        if ((line % 500) == 0){
53
            newTransaction(state);
54
            System.out.println(line);
55
        }
56

    
57
        this.state = state;
58
        Map<String, String> record = state.getOriginalRecord();
59

    
60
        Integer accTaxonId = Integer.valueOf(getValue(record, ACCEPTED_TAXON_ID));
61
        Integer nameLinkID = Integer.valueOf(getValue(record, NOMEN_LINK));
62

    
63
        String row = String.valueOf(line) + "("+accTaxonId+"): ";
64

    
65
        TaxonName name = getName(state, nameLinkID);
66

    
67
        if (name == null) {
68
            logger.warn(row + "Name does not exist");
69
            return;
70
        }
71

    
72
        Taxon taxon = Taxon.NewInstance(name, getSecRef(state));
73

    
74
        getTaxonService().saveOrUpdate(taxon);
75
    }
76

    
77
    @Override
78
    protected void secondPass(SimpleExcelTaxonImportState<CaryoSileneaeImportConfigurator> state) {
79
        int line = state.getCurrentLine();
80
        if ((line % 500) == 0){
81
            newTransaction(state);
82
            System.out.println(line);
83
        }
84

    
85
        this.state = state;
86
        Map<String, String> record = state.getOriginalRecord();
87

    
88
        Integer accTaxonId = Integer.valueOf(getValue(record, ACCEPTED_TAXON_ID));
89
        Integer parentId = Integer.valueOf(getValue(record, PARENT));
90

    
91
        String row = String.valueOf(line) + "("+accTaxonId+"): ";
92

    
93
        Taxon taxon = getTaxon(state, accTaxonId);
94
        if (taxon == null) {
95
            logger.warn(row + "Taxon does not exist");
96
            return;
97
        }
98

    
99
        Taxon parent = getTaxon(state, parentId);
100
        if (parent == null) {
101
            logger.warn(row + "Taxon does not exist");
102
            return;
103
        }
104

    
105
        Classification classification = getClassification(state);
106

    
107
        //TODO ref needed?
108
        TaxonNode node = classification.addParentChild(parent, taxon, null, null);
109

    
110
        getTaxonNodeService().saveOrUpdate(node);
111
    }
112

    
113
    private Classification getClassification(SimpleExcelTaxonImportState<CaryoSileneaeImportConfigurator> state2) {
114
        // TODO Auto-generated method stub
115
        return null;
116
    }
117

    
118
    private boolean hasSameAcceptedTaxon(TaxonBase<?> taxonBase, TaxonBase<?> basionymTaxon) {
119
        if (taxonBase.isInstanceOf(Synonym.class)){
120
            taxonBase = CdmBase.deproxy(taxonBase, Synonym.class).getAcceptedTaxon();
121
        }
122
        if (basionymTaxon.isInstanceOf(Synonym.class)){
123
            basionymTaxon = CdmBase.deproxy(basionymTaxon, Synonym.class).getAcceptedTaxon();
124
        }
125
        return taxonBase != null && basionymTaxon != null && taxonBase.equals(basionymTaxon);
126
    }
127

    
128
    private TaxonNode getFamily(){
129
        UUID uuid = UUID.fromString("0334809a-aa20-447d-add9-138194f80f56");
130
        TaxonNode aizoaceae = getTaxonNodeService().find(uuid);
131
        return aizoaceae;
132
    }
133

    
134
    private TaxonNode hybridParent(){
135
        UUID uuid = UUID.fromString("2fae0fa1-758a-4fcb-bb6c-a2bd11f40641");
136
        TaxonNode hybridParent = getTaxonNodeService().find(uuid);
137
        return hybridParent;
138
    }
139
    private TaxonNode unresolvedParent(){
140
        UUID uuid = UUID.fromString("accb1ff6-5748-4b18-b529-9368c331a38d");
141
        TaxonNode unresolvedParent = getTaxonNodeService().find(uuid);
142
        return unresolvedParent;
143
    }
144
}
(11-11/15)