Project

General

Profile

Download (5.56 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.net.URI;
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.springframework.transaction.TransactionStatus;
17

    
18
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
19
import eu.etaxonomy.cdm.api.application.ICdmRepository;
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
 * @date 27.02.2017
36
 *
37
 */
38
public class NepenthaceIpniActivator {
39

    
40
    static DbSchemaValidation hbm2dll = DbSchemaValidation.VALIDATE;
41

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

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

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

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

    
56
      ICdmRepository repository = null  ; //app  for now we do not want to deduplicate against repository
57
      ImportDeduplicationHelper<?> deduplicationHelper = new ImportDeduplicationHelper<>(repository);
58

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

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

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

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

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

    
92
      app.commitTransaction(txStatus);
93

    
94

    
95

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

    
105
/**
106
 * @param app
107
 * @param ipniSec
108
 * @param classification
109
 * @param ipniService
110
 * @param rank
111
 * @param namesConfig
112
 */
113
private void doSingleImport(CdmApplicationController app, Reference ipniSec, Classification classification,
114
        IpniServiceNamesConfigurator namesConfig, ImportDeduplicationHelper<?> deduplicationHelper) {
115

    
116
    IpniService ipniService = new IpniService();//(IpniService)app.getBean("ipniService");
117

    
118
    Rank rank = null;
119
      List<IBotanicalName> names = ipniService.getNamesAdvanced(null, "Nepenthes", null, null, null, null,
120
              null, null, rank, namesConfig, app);
121

    
122
      System.out.println(names.size());
123

    
124
      List<TaxonBase> taxaToSave  = new ArrayList<>();
125
      for (IBotanicalName name : names){
126
//          System.out.println(name.getTitleCache());
127
          deduplicationHelper.replaceAuthorNamesAndNomRef(null, name);
128
          Taxon taxon = Taxon.NewInstance(name, ipniSec);
129
          classification.addChildTaxon(taxon, null, null);
130
//          app.getTaxonService().saveOrUpdate(taxon);
131
          taxaToSave.add(taxon);
132
      }
133
      app.getTaxonService().saveOrUpdate(taxaToSave);
134
      app.getClassificationService().saveOrUpdate(classification);
135
}
136

    
137

    
138
  /**
139
   * @param args
140
   */
141
  public static void main(String[] args) {
142
      NepenthaceIpniActivator me = new NepenthaceIpniActivator();
143
      me.doImport(cdmDestination);
144
      System.exit(0);
145
  }
146

    
147

    
148
}
(14-14/15)