Project

General

Profile

« Previous | Next » 

Revision 030ad7c6

Added by Andreas Müller over 7 years ago

ref #5499 latest changes to Edaphobase import

View differences:

app-import/src/main/java/eu/etaxonomy/cdm/app/common/CdmImportSources.java
128 128
        return  makeSource(dbms, strServer, strDB, port, userName, null);
129 129
    }
130 130

  
131
    public static Source EDAPHOBASE2(){
132
        String dbms = Source.POSTGRESQL9;
133
        String strServer = "130.133.70.26";  //BGBM-PESISQL
134
        String strDB = "edaphobase2";
135
        int port = 5432;
136
        String userName = "postgres";
137
        return  makeSource(dbms, strServer, strDB, port, userName, null);
138
    }
139

  
131 140

  
132 141

  
133 142

  
app-import/src/main/java/eu/etaxonomy/cdm/app/edaphobase/EdaphobaseActivator.java
38 38
    //database validation status (create, update, validate ...)
39 39
    static DbSchemaValidation dbSchemaValidation = DbSchemaValidation.CREATE;
40 40

  
41
    static final Source edaphoSource = CdmImportSources.EDAPHOBASE();
41
    static final Source edaphoSource = CdmImportSources.EDAPHOBASE2();
42 42

  
43 43
//    static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
44 44
//    static final ICdmDataSource cdmDestination = CdmDestinations.cdm_local_edaphobase();
app-import/src/main/java/eu/etaxonomy/cdm/io/edaphobase/EdaphobaseImportConfigurator.java
13 13

  
14 14
import eu.etaxonomy.cdm.database.ICdmDataSource;
15 15
import eu.etaxonomy.cdm.io.common.DbImportConfiguratorBase;
16
import eu.etaxonomy.cdm.io.common.IImportConfigurator;
17 16
import eu.etaxonomy.cdm.io.common.Source;
18 17
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
19 18
import eu.etaxonomy.cdm.model.reference.Reference;
......
26 25
 */
27 26
public class EdaphobaseImportConfigurator
28 27
        extends DbImportConfiguratorBase<EdaphobaseImportState>
29
        implements IImportConfigurator
30 28
{
31 29
    private static final long serialVersionUID = 5397992611211404553L;
32 30
    @SuppressWarnings("unused")
app-import/src/main/java/eu/etaxonomy/cdm/io/edaphobase/EdaphobaseImportTransformer.java
9 9
*/
10 10
package eu.etaxonomy.cdm.io.edaphobase;
11 11

  
12
import java.util.UUID;
13

  
12 14
import org.apache.log4j.Logger;
13 15

  
14 16
import eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase;
......
25 27
    @SuppressWarnings("unused")
26 28
    private static final Logger logger = Logger.getLogger(EdaphobaseImportTransformer.class);
27 29

  
30
    private static final UUID uuidTaxGrossgruppeMarker = UUID.fromString("71f22f44-5131-4d54-8362-1c77ac5c567a");
31
    private static final UUID uuidEdaphoRankMarker = UUID.fromString("6eaeffd2-b89b-436b-b0ee-75af5f0a9b81");
32

  
28 33
    @Override
29 34
    public Rank getRankByKey(String key) throws UndefinedTransformerMethodException {
30 35
        if (key == null){return null;}
......
55 60
        return null;
56 61
    }
57 62

  
58
//    @Override
59
//    public UUID getRankUuid(String key) throws UndefinedTransformerMethodException {
60
//        // TODO Auto-generated method stub
61
//        return super.getRankUuid(key);
62
//    }
63
    @Override
64
    public UUID getMarkerTypeUuid(String key) throws UndefinedTransformerMethodException {
65
        if (key == null){
66
            return null;
67
        }else if (key.equals("TaxGrossgruppe")){
68
            return uuidTaxGrossgruppeMarker;
69
        }else if (key.equals("EdaphoRankMarker")){
70
            return uuidEdaphoRankMarker;
71
        }
72
        return null;
73
    }
63 74

  
64 75

  
65 76

  
app-import/src/main/java/eu/etaxonomy/cdm/io/edaphobase/EdaphobaseTaxonImport.java
28 28
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
29 29
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
30 30
import eu.etaxonomy.cdm.model.common.CdmBase;
31
import eu.etaxonomy.cdm.model.common.Language;
32
import eu.etaxonomy.cdm.model.common.Marker;
33
import eu.etaxonomy.cdm.model.common.MarkerType;
34
import eu.etaxonomy.cdm.model.common.Representation;
31 35
import eu.etaxonomy.cdm.model.name.Rank;
32 36
import eu.etaxonomy.cdm.model.name.ZoologicalName;
33 37
import eu.etaxonomy.cdm.model.reference.Reference;
......
75 79
                    + " LEFT JOIN tax_taxon ppt ON pt.parent_taxon_fk = ppt.taxon_id"
76 80
                    + " LEFT OUTER JOIN tax_rank_en r ON r.element_id = t.tax_rank_fk "
77 81
                    + " LEFT OUTER JOIN tax_rank_en pr ON pr.element_id = pt.tax_rank_fk "
78
                    + " LEFT OUTER JOIN tax_rank_en ppr ON pr.element_id = ppt.tax_rank_fk "
82
                    + " LEFT OUTER JOIN tax_rank_en ppr ON ppr.element_id = ppt.tax_rank_fk "
79 83
                + " WHERE t.taxon_id IN (@IDSET)";
80 84
        result = result.replace("@IDSET", IPartitionedIO.ID_LIST_TOKEN);
81 85
        return result;
......
94 98
        try {
95 99
            while (rs.next()){
96 100
                makeSingleTaxon(state, rs, taxaToSave);
97

  
98 101
            }
99
        } catch (SQLException e) {
100
            // TODO Auto-generated catch block
101
            e.printStackTrace();
102
        } catch (SQLException | UndefinedTransformerMethodException e) {
103
             e.printStackTrace();
102 104
        }
103 105

  
104 106
        getTaxonService().saveOrUpdate(taxaToSave);
......
110 112
     * @param rs
111 113
     * @param taxaToSave
112 114
     * @throws SQLException
115
     * @throws UndefinedTransformerMethodException
113 116
     */
114 117
    private void makeSingleTaxon(EdaphobaseImportState state, ResultSet rs, Set<TaxonBase> taxaToSave)
115
            throws SQLException {
118
            throws SQLException, UndefinedTransformerMethodException {
116 119
        Integer id = nullSafeInt(rs, "taxon_id");
117 120
        Integer year = nullSafeInt(rs, "tax_year");
118 121
        boolean isBrackets = rs.getBoolean("tax_brackets");
......
142 145

  
143 146
        //Name etc.
144 147
        Rank rank = makeRank(state, rankStr);
148
        checkRankMarker(state, rank);
145 149
        ZoologicalName name = ZoologicalName.NewInstance(rank);
146 150
        setNamePart(nameStr, rank, name);
147 151
        Rank parentRank = makeRank(state, parentRankStr);
148 152
        setNamePart(parentNameStr, parentRank, name);
149 153
        Rank parentParentRank = makeRank(state, grandParentRankStr);
150 154
        setNamePart(grandParentNameStr, parentParentRank, name);
155
        if (parentParentRank != null && parentParentRank.isLower(Rank.GENUS()) || isBlank(name.getGenusOrUninomial()) ){
156
            logger.warn("Grandparent rank is lower than genus for " + name.getTitleCache() + " (edapho-id: " + id + "; cdm-id: " + name.getId());
157
        }
151 158

  
152 159
        //Authors
153 160
        if (StringUtils.isNotBlank(authorName)){
......
175 182
        }
176 183
        name.setNomenclaturalMicroReference(StringUtils.isBlank(pages)? null : pages);
177 184

  
178

  
185
        //taxon
179 186
        Reference secRef = state.getRelatedObject(REFERENCE_NAMESPACE, state.getConfig().getSecUuid().toString(), Reference.class);
180 187
        if (secRef == null){
181 188
            secRef = makeSecRef(state);
......
185 192
        }else{
186 193
            taxonBase = Synonym.NewInstance(name, secRef);
187 194
        }
195
        handleTaxonomicGroupMarker(state, taxonBase, isGroup);
188 196
        taxaToSave.add(taxonBase);
189 197

  
190 198
        //remarks
......
196 204
    }
197 205

  
198 206

  
207
    /**
208
     * @param state
209
     * @param rank
210
     * @throws UndefinedTransformerMethodException
211
     */
212
    private void checkRankMarker(EdaphobaseImportState state, Rank rank) throws UndefinedTransformerMethodException {
213

  
214
        Set<Marker> markers = rank.getMarkers();
215
        if ( markers.size() == 0){  //we assume that no markers exist. at least not for markers of unused ranks
216
            UUID edaphoRankMarkerTypeUuid = state.getTransformer().getMarkerTypeUuid("EdaphoRankMarker");
217
            MarkerType marker = getMarkerType(state, edaphoRankMarkerTypeUuid, "Edaphobase rank", "Rank used in Edaphobase", "EdaRk" );
218
            Representation rep = Representation.NewInstance("Rang, verwendet in Edaphobase", "Edaphobase Rang", "EdaRg", Language.GERMAN());
219
            marker.addRepresentation(rep);
220
            rank.addMarker(Marker.NewInstance(marker, true));
221
            getTermService().saveOrUpdate(rank);
222
        }
223
    }
224

  
225
    /**
226
     * @param state
227
     * @param isGroup
228
     * @param taxonBase
229
     */
230
    private void handleTaxonomicGroupMarker(EdaphobaseImportState state, TaxonBase<?> taxonBase, boolean isGroup) {
231
        if (! isGroup){
232
            return;
233
        }else{
234
            try {
235
                MarkerType markerType = getMarkerType(state, state.getTransformer().getMarkerTypeUuid("TaxGrossgruppe"), "Tax. Gruppe", "Taxonomische Grossgruppe", "TGG", null, Language.GERMAN());
236
                if (taxonBase.isInstanceOf(Synonym.class)){
237
                    logger.warn("Syonym is marked as 'taxonomische Grossgruppe'");
238
                }
239
                taxonBase.addMarker(Marker.NewInstance(markerType, true));
240
            } catch (UndefinedTransformerMethodException e) {
241
            }
242
        }
243
    }
244

  
199 245
    /**
200 246
     * @param state
201 247
     * @return

Also available in: Unified diff