adapt app-import to v5.45
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / jaxb / JaxbExportActivator.java
1 /**
2 * Copyright (C) 2008 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.jaxb;
10
11 import java.io.File;
12 import java.io.FileNotFoundException;
13 import java.io.FileOutputStream;
14 import java.io.OutputStreamWriter;
15 import java.io.PrintWriter;
16 import java.io.UnsupportedEncodingException;
17
18 import org.apache.logging.log4j.LogManager;
19 import org.apache.logging.log4j.Logger;
20
21 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
22 import eu.etaxonomy.cdm.app.common.CdmDestinations;
23 import eu.etaxonomy.cdm.app.common.tasks.TestDatabase;
24 import eu.etaxonomy.cdm.common.URI;
25 import eu.etaxonomy.cdm.database.DbSchemaValidation;
26 import eu.etaxonomy.cdm.database.ICdmDataSource;
27 import eu.etaxonomy.cdm.io.common.CdmDefaultExport;
28 import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;
29
30 /**
31 * @author a.babadshanjan
32 * @since 25.09.2008
33 */
34 public class JaxbExportActivator {
35
36 /* SerializeFrom DB **/
37 // private static final ICdmDataSource cdmSource = CdmDestinations.localH2();
38 private static final ICdmDataSource cdmSource = CdmDestinations.cdm_production_flora_deutschland();
39
40 // Export:
41 private static String exportFileName = "file:/F:/data/redlist/standardliste/standardliste_jaxb.xml";
42
43 /** NUMBER_ROWS_TO_RETRIEVE = 0 is the default case to retrieve all rows.
44 * For testing purposes: If NUMBER_ROWS_TO_RETRIEVE >0 then retrieve
45 * as many rows as specified for agents, references, etc.
46 * Only root taxa and no synonyms and relationships are retrieved. */
47 private static final int NUMBER_ROWS_TO_RETRIEVE = 0;
48
49 private static final Logger logger = LogManager.getLogger();
50
51 private void invokeExport(ICdmDataSource sourceParam, File file) {
52 // String server = "localhost";
53 // String database = "EDITimport";
54 // String username = "edit";
55 // sourceParam = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
56
57 JaxbExportConfigurator jaxbExportConfigurator;
58 if (file !=null && sourceParam != null){
59 jaxbExportConfigurator = JaxbExportConfigurator.NewInstance(sourceParam, file);
60 }else if (sourceParam != null){
61 jaxbExportConfigurator = JaxbExportConfigurator.NewInstance(sourceParam, new File(exportFileName));
62 } else if (file !=null ){
63 jaxbExportConfigurator = JaxbExportConfigurator.NewInstance(cdmSource, file);
64 } else{
65 jaxbExportConfigurator = JaxbExportConfigurator.NewInstance(cdmSource, new File(exportFileName));
66 }
67
68 CdmDefaultExport<JaxbExportConfigurator> jaxbExport =
69 new CdmDefaultExport<JaxbExportConfigurator>();
70
71 // invoke export
72 logger.debug("Invoking Jaxb export");
73 jaxbExport.invoke(jaxbExportConfigurator);
74
75 }
76 public static String chooseFile(String[] args) {
77 if(args == null) {
78 return null;
79 }
80 for (String dest: args){
81 if (dest.endsWith(".xml")){
82 return args[0];
83 }
84 }
85 return null;
86 }
87
88 private CdmApplicationController initDb(ICdmDataSource db) {
89 // Init source DB
90 CdmApplicationController appCtrInit = TestDatabase.initDb(db, DbSchemaValidation.VALIDATE, false);
91 return appCtrInit;
92 }
93
94 // Load test data to DB
95 private void loadTestData(CdmApplicationController appCtrInit) {
96 TestDatabase.loadTestData("", appCtrInit);
97 }
98
99 public static void main(String[] args) {
100
101 JaxbExportActivator sc = new JaxbExportActivator();
102 ICdmDataSource source = CdmDestinations.chooseDestination(args) != null ? CdmDestinations.chooseDestination(args) : cdmSource;
103 String file = chooseFile(args);
104 if (file == null){
105 file = exportFileName;
106 }
107 URI uri = URI.create(file);
108 try {
109 File myFile = new File(uri.getJavaUri());
110 PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(myFile), "UTF8"), true);
111 sc.initDb(source); //does this make sense here (it starts the appControler even if it is not needed later
112
113 sc.invokeExport(source, new File(file));
114 } catch (UnsupportedEncodingException e) {
115 // TODO Auto-generated catch block
116 e.printStackTrace();
117 } catch (FileNotFoundException e) {
118 // TODO Auto-generated catch block
119 e.printStackTrace();
120 }
121 }
122 }