Import categories and states of FloraTerms (PlantGlossary)
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / io / plantglossary / PlantGlossaryCsvImportState.java
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.io.plantglossary;
10
11 import java.net.URI;
12 import java.net.URISyntaxException;
13 import java.util.ArrayList;
14 import java.util.HashSet;
15 import java.util.List;
16 import java.util.Set;
17
18 import eu.etaxonomy.cdm.api.service.ITermService;
19 import eu.etaxonomy.cdm.api.service.IVocabularyService;
20 import eu.etaxonomy.cdm.io.csv.in.CsvImportState;
21 import eu.etaxonomy.cdm.model.agent.Institution;
22 import eu.etaxonomy.cdm.model.agent.Person;
23 import eu.etaxonomy.cdm.model.agent.Team;
24 import eu.etaxonomy.cdm.model.common.TermVocabulary;
25 import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
26 import eu.etaxonomy.cdm.model.description.State;
27 import eu.etaxonomy.cdm.model.reference.Reference;
28 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
29
30 /**
31 *
32 * @author pplitzner
33 * @since Dec 7, 2018
34 *
35 */
36 public class PlantGlossaryCsvImportState extends CsvImportState<PlantGlossaryCsvImportConfigurator> {
37
38 private List<TermVocabulary> existingVocabularies = new ArrayList<>();
39 private List<State> existingTerms = new ArrayList<>();
40 private Set<TermVocabulary> vocabularies = new HashSet<>();
41 private final Reference citation;
42
43
44 protected PlantGlossaryCsvImportState(PlantGlossaryCsvImportConfigurator config) {
45 super(config);
46 citation = ReferenceFactory.newGeneric();
47 citation.setTitle("FloraTerms");
48 Team team = Team.NewInstance();
49 team.addTeamMember(Person.NewInstance(null, "Cui", null, "Hong"));
50 team.addTeamMember(Person.NewInstance(null, "Cole", null, "Heather"));
51 team.addTeamMember(Person.NewInstance(null, "Endara", null, "Lorena"));
52 team.addTeamMember(Person.NewInstance(null, "Macklin", null, "James"));
53 team.addTeamMember(Person.NewInstance(null, "Sachs", null, "Joel"));
54 citation.setAuthorship(team);
55 VerbatimTimePeriod datePublished = VerbatimTimePeriod.NewVerbatimInstance();
56 datePublished.setStartYear(2014);
57 datePublished.setStartMonth(6);
58 datePublished.setStartDay(13);
59 citation.setDatePublished(datePublished);
60 Institution institution = Institution.NewNamedInstance("OTO System");
61 institution.addUrl(URI.create("http://biosemantics.arizona.edu/OTO/"));
62 citation.setInstitution(institution);
63 URI uri;
64 try {
65 uri = new URI("https://terms.tdwg.org/wiki/FloraTerms");
66 citation.setUri(uri);
67 } catch (URISyntaxException e) {
68 }
69 }
70
71 @Override
72 public void resetSession(){
73 super.resetSession();
74 }
75
76 void addVocabulary(TermVocabulary vocabulary) {
77 vocabularies.add(vocabulary);
78 }
79
80 TermVocabulary checkVocabularies(String vocName, IVocabularyService vocabularyService){
81 if(existingVocabularies.isEmpty()){
82 existingVocabularies = vocabularyService.list(TermVocabulary.class, null, null, null, null);
83 }
84 for (TermVocabulary termVocabulary : vocabularies) {
85 if(termVocabulary.getLabel().equals(vocName)){
86 return termVocabulary;
87 }
88 }
89 return null;
90 }
91
92 public boolean isTermPresent(String termName, ITermService termService) {
93 if(existingTerms.isEmpty()){
94 existingTerms = termService.list(State.class, null, null, null, null);
95 }
96 return existingTerms.stream().map(term->term.getLabel()).anyMatch(label->label.equals(termName));
97 }
98
99 Reference getCitation() {
100 return citation;
101 }
102
103 }