adapt app-import to v5.45
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / dwca / DwcaExportActivator.java
1 /**
2 * Copyright (C) 2007 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.dwca;
10
11 import java.io.File;
12 import java.util.Arrays;
13 import java.util.List;
14 import java.util.UUID;
15
16 import org.apache.logging.log4j.LogManager;
17 import org.apache.logging.log4j.Logger;
18 import org.joda.time.DateTime;
19
20 import eu.etaxonomy.cdm.app.common.CdmDestinations;
21 import eu.etaxonomy.cdm.common.URI;
22 import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;
23 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
24 import eu.etaxonomy.cdm.database.ICdmDataSource;
25 import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
26 import eu.etaxonomy.cdm.io.common.CdmDefaultExport;
27 import eu.etaxonomy.cdm.io.common.ExportResult;
28 import eu.etaxonomy.cdm.io.common.IExportConfigurator.CHECK;
29 import eu.etaxonomy.cdm.io.dwca.out.DwcaEmlRecord;
30 import eu.etaxonomy.cdm.io.dwca.out.DwcaTaxExportConfigurator;
31 import eu.etaxonomy.cdm.model.agent.Institution;
32 import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
33 import eu.etaxonomy.cdm.model.agent.Person;
34
35 /**
36 * Activator for running a general DwC-A export.
37 *
38 * Note: there is a specific version for Cichorieae in the Cichorieae folder.
39 *
40 * @author a.mueller
41 */
42 public class DwcaExportActivator {
43
44 @SuppressWarnings("unused")
45 private static final Logger logger = LogManager.getLogger();
46
47 //database validation status (create, update, validate ...)
48 private static final String fileDestination = "C:\\Users\\muellera\\tmp\\export\\Cichorieae\\dwca-export.zip";
49 // private static final ICdmDataSource cdmSource = CdmDestinations.cdm_local_cichorieae();
50 // private static final ICdmDataSource cdmSource = CdmDestinations.cdm_test_local_mysql();
51 private static final ICdmDataSource cdmSource = CdmDestinations.cdm_production_cichorieae();
52 // private static final ICdmDataSource cdmSource = CdmDestinations.cdm_production_cyprus();
53
54 private IProgressMonitor monitor = DefaultProgressMonitor.NewInstance();
55
56 private static DateTime dateTime = new DateTime();
57 private static String date = dateTime.getYear() + "-" + dateTime.getMonthOfYear() + "-" + dateTime.getDayOfMonth();
58
59 private static final String defaultBibliographicCitation = "xxx; " +
60 "accessed ["+date+"].";
61
62 private static final String taxonSourceDefault = "http://wp6-cichorieae.e-taxonomy.eu/portal/?q=cdm_dataportal/taxon/{id}";
63
64 //Cichorioideae subtree / standard view
65 private static final UUID subtreeUuid = UUID.fromString("a523a752-aa7c-4efd-b733-64bf3bf580e9");
66
67 //check - import
68 private static final CHECK check = CHECK.EXPORT_WITHOUT_CHECK;
69
70 private static List<UUID> featureExclusions = Arrays.asList(new UUID[]{
71 UUID.fromString("5deff505-1a32-4817-9a74-50e6936fd630"), //occurrences
72 UUID.fromString("8075074c-ace8-496b-ac82-47c14553f7fd"), //Editor_Parenthesis
73 UUID.fromString("c0cc5ebe-1f0c-4c31-af53-d486858ea415"), //Image Sources
74 UUID.fromString("9f6c551d-0f19-45ea-a855-4946f6fc1093"), //Credits
75 UUID.fromString("cbf12c6c-94e6-4724-9c48-0f6f10d83e1c"), //Editor Brackets
76 UUID.fromString("0508114d-4158-48b5-9100-369fa75120d3") //inedited
77 });
78
79
80 // ****************** ALL *****************************************
81
82 // private boolean doTaxa = true;
83 // private boolean doResourceRelation = true;
84 // private boolean doTypesAndSpecimen = true;
85 // private boolean doVernacularNames = true;
86 // private boolean doReferences = true;
87 // private boolean doDescription = true;
88 // private boolean doDistributions = true;
89 // private boolean doImages = false;
90 // private boolean doMetaData = true;
91 // private boolean doEml = true;
92
93 // ************************ NONE **************************************** //
94
95 private boolean doTaxa = true;
96 private boolean doResourceRelation = true;
97 private boolean doTypesAndSpecimen = true;
98 private boolean doVernacularNames = true;
99 private boolean doReferences = true;
100 private boolean doDescription = true;
101 private boolean doDistributions = true;
102 private boolean doImages = false;
103 private boolean doMetaData = true;
104 private boolean doEml = true;
105
106 public ExportResult doExport(ICdmDataSource source){
107 System.out.println("Start export to DWC-A ("+ fileDestination + ") ...");
108
109 // CdmUpdater su = CdmUpdater.NewInstance();
110 // IProgressMonitor monitor = DefaultProgressMonitor.NewInstance();
111 //
112 // try {
113 // su.updateToCurrentVersion(source, monitor);
114 // } catch (Exception e) {
115 // e.printStackTrace();
116 // }
117 // if (true){
118 // return true;
119 // }
120
121 //make file destination
122 String destination = fileDestination;
123 DwcaEmlRecord emlRecord = getEmlRecord();
124
125 DwcaTaxExportConfigurator config = DwcaTaxExportConfigurator.NewInstance(source, new File(destination), emlRecord);
126
127 TaxonNodeFilter taxonNodeFilter = TaxonNodeFilter.NewSubtreeInstance(subtreeUuid);
128 config.setTaxonNodeFilter(taxonNodeFilter);
129
130 config.setDoTaxa(doTaxa);
131 config.setDoResourceRelations(doResourceRelation);
132 config.setDoTypesAndSpecimen(doTypesAndSpecimen);
133 config.setDoVernacularNames(doVernacularNames);
134 config.setDoReferences(doReferences);
135 config.setDoDescriptions(doDescription);
136 config.setDoDistributions(doDistributions);
137 config.setDoImages(doImages);
138 config.setDoMetaData(doMetaData);
139 config.setDoEml(doEml);
140 config.setCheck(check);
141 config.setProgressMonitor(monitor);
142 config.setDefaultBibliographicCitation(defaultBibliographicCitation);
143 config.setDefaultTaxonSource(taxonSourceDefault);
144 monitor.beginTask("DwcA-Export", 10);
145
146 config.setFeatureExclusions(featureExclusions);
147 // invoke import
148 CdmDefaultExport<DwcaTaxExportConfigurator> dwcaExport = new CdmDefaultExport<>();
149 ExportResult result = dwcaExport.invoke(config);
150
151 System.out.println("End export to DWC-A ("+ fileDestination + ")..." + "("+result.getState().toString()+")");
152 return result;
153 }
154
155
156 private DwcaEmlRecord getEmlRecord() {
157 DwcaEmlRecord emlRecord = new DwcaEmlRecord();
158 emlRecord.setIdentifier("My Identifier");
159 emlRecord.setTitle("Flora of cyprus");
160 emlRecord.setPublicationDate(new DateTime());
161 emlRecord.setExpectedCitation("Expected Citation");
162 emlRecord.setAbstractInfo("The abstract");
163 emlRecord.setAdditionalInformation("Add info");
164 emlRecord.setResourceLanguage(null);
165 emlRecord.setResourceUrl(URI.create("http://www.flora-of-cyprus.eu//portal/"));
166 emlRecord.setMetaDataLanguage(null);
167 emlRecord.setResourceLogoUri(null);
168 emlRecord.setCreativeCommonsLicensing(null);
169 emlRecord.setProjectTitle("Projekt tit");
170 emlRecord.setProjectLead("Proj Lead");
171 emlRecord.setProjectDescription("Proj Desc");
172
173 Person person = Person.NewInstance();
174 Institution institution = Institution.NewInstance();
175
176 InstitutionalMembership m = person.addInstitutionalMembership(institution, null, null, null);
177 emlRecord.setResourceCreator(m);
178
179 return emlRecord;
180 }
181
182 public static void main(String[] args) {
183 DwcaExportActivator ex = new DwcaExportActivator();
184 ICdmDataSource source = CdmDestinations.chooseDestination(args) != null ? CdmDestinations.chooseDestination(args) : cdmSource;
185 ex.doExport(source);
186 System.exit(0);
187 }
188 }