Project

General

Profile

Download (5.46 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2017 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.app.eflora;
10

    
11
import java.util.ArrayList;
12
import java.util.List;
13
import java.util.UUID;
14

    
15
import org.springframework.transaction.TransactionStatus;
16

    
17
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
18
import eu.etaxonomy.cdm.api.application.ICdmRepository;
19
import eu.etaxonomy.cdm.common.URI;
20
import eu.etaxonomy.cdm.database.DbSchemaValidation;
21
import eu.etaxonomy.cdm.database.ICdmDataSource;
22
import eu.etaxonomy.cdm.ext.ipni.IpniService;
23
import eu.etaxonomy.cdm.ext.ipni.IpniServiceNamesConfigurator;
24
import eu.etaxonomy.cdm.io.common.utils.ImportDeduplicationHelper;
25
import eu.etaxonomy.cdm.model.name.IBotanicalName;
26
import eu.etaxonomy.cdm.model.name.Rank;
27
import eu.etaxonomy.cdm.model.reference.Reference;
28
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
29
import eu.etaxonomy.cdm.model.taxon.Classification;
30
import eu.etaxonomy.cdm.model.taxon.Taxon;
31
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
32

    
33
/**
34
 * @author a.mueller
35
 * @since 27.02.2017
36
 */
37
public class NepenthaceIpniActivator {
38

    
39
    static DbSchemaValidation hbm2dll = DbSchemaValidation.VALIDATE;
40

    
41
////    static final ICdmDataSource cdmDestination = CdmDestinations.cdm_nepenthes_production();
42
//  static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
43
  static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();
44
//  static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql_test();
45

    
46
  static final URI ipniFile = URI.create("file:////BGBM-PESIHPC/FloraMalesianaXml/advPlantNameSearch.txt");
47

    
48
  private void doImport(ICdmDataSource cdmDestination){
49
      if (cdmDestination.getDatabaseType().equals(CdmDestinations.localH2().getDatabaseType())){
50
          hbm2dll = DbSchemaValidation.CREATE;
51
      }
52

    
53
      CdmApplicationController app = CdmApplicationController.NewInstance(cdmDestination, hbm2dll);
54

    
55
      ICdmRepository repository = null  ; //app  for now we do not want to deduplicate against repository
56
      ImportDeduplicationHelper deduplicationHelper = ImportDeduplicationHelper.NewInstance(repository, null);
57

    
58
      TransactionStatus txStatus = app.startTransaction();
59
      Reference ipniSec = app.getReferenceService().find(UUID.fromString("17ffcbc7-7f80-42cd-a95e-25d0289c9f71"));
60
      if (ipniSec == null){
61
          ipniSec = ReferenceFactory.newGeneric();
62
          ipniSec.setTitle("IPNI");
63
      }
64

    
65
      IpniServiceNamesConfigurator namesConfig = IpniServiceNamesConfigurator.NewInstance();
66
      namesConfig.setDoApni(false);
67
      namesConfig.setDoGci(false);
68

    
69
      Classification classification = Classification.NewInstance("IPNI Nepenthes (IK)");
70
      classification.setUuid(UUID.fromString("89b1a50a-15f5-415b-9ab8-b98ffb6d3c5a"));
71
      classification.setReference(ipniSec);
72
      app.getClassificationService().save(classification);
73
      doSingleImport(app, ipniSec, classification, namesConfig, deduplicationHelper);
74

    
75
      classification = Classification.NewInstance("IPNI Nepenthes (APNI)");
76
      classification.setUuid(UUID.fromString("c9d1371a-c77a-4249-8406-bb0cb0c1b6f2"));
77
      classification.setReference(ipniSec);
78
      app.getClassificationService().save(classification);
79
      namesConfig.setDoApni(true);
80
      namesConfig.setDoIk(false);
81
      doSingleImport(app, ipniSec, classification, namesConfig, deduplicationHelper);
82

    
83
      classification = Classification.NewInstance("IPNI Nepenthes (GCI)");
84
      classification.setUuid(UUID.fromString("ecddac67-95d6-49ff-a1f3-83e167d581f5"));
85
      classification.setReference(ipniSec);
86
      app.getClassificationService().save(classification);
87
      namesConfig.setDoApni(false);
88
      namesConfig.setDoGci(true);
89
      doSingleImport(app, ipniSec, classification, namesConfig, deduplicationHelper);
90

    
91
      app.commitTransaction(txStatus);
92

    
93
////      CSVReader csvReader = new CSVReader(reader);
94
//
95
//      List<String[]> allLines = csvReader.readAll();
96
//
97
//      for (String[] nextLine : allLines){
98
//          handleSingleLine(app, nextLine);
99
//      }
100
   }
101

    
102
    private void doSingleImport(CdmApplicationController app, Reference ipniSec, Classification classification,
103
        IpniServiceNamesConfigurator namesConfig, ImportDeduplicationHelper deduplicationHelper) {
104

    
105
        IpniService ipniService = new IpniService();//(IpniService)app.getBean("ipniService");
106

    
107
        Rank rank = null;
108
        List<IBotanicalName> names = ipniService.getNamesAdvanced(null, "Nepenthes", null, null, null, null,
109
              null, null, rank, namesConfig, app);
110

    
111
        System.out.println(names.size());
112

    
113
        List<TaxonBase> taxaToSave  = new ArrayList<>();
114
        for (IBotanicalName name : names){
115
//          System.out.println(name.getTitleCache());
116
            deduplicationHelper.replaceAuthorNamesAndNomRef(name);
117
            Taxon taxon = Taxon.NewInstance(name, ipniSec);
118
            classification.addChildTaxon(taxon, null, null);
119
//          app.getTaxonService().saveOrUpdate(taxon);
120
            taxaToSave.add(taxon);
121
        }
122
        app.getTaxonService().saveOrUpdate(taxaToSave);
123
        app.getClassificationService().saveOrUpdate(classification);
124
    }
125

    
126
    public static void main(String[] args) {
127
        NepenthaceIpniActivator me = new NepenthaceIpniActivator();
128
        me.doImport(cdmDestination);
129
        System.exit(0);
130
    }
131
}
(14-14/15)