minor
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / jaxb / JaxbImportActivator.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
10 package eu.etaxonomy.cdm.app.jaxb;
11
12 import java.io.File;
13 import java.net.URI;
14 import java.net.URISyntaxException;
15
16 import org.apache.log4j.Logger;
17
18 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
19 import eu.etaxonomy.cdm.app.common.CdmDestinations;
20 import eu.etaxonomy.cdm.app.util.TestDatabase;
21 import eu.etaxonomy.cdm.database.DbSchemaValidation;
22 import eu.etaxonomy.cdm.database.ICdmDataSource;
23 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
24 import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
25
26 /**
27 * @author a.babadshanjan
28 * @created 25.09.2008
29 *
30 * NOTE: the result may go into
31 * cdmlib-persistence\target\test-classes\eu\etaxonomy\cdm\h2\LocalH2
32 */
33 public class JaxbImportActivator {
34
35 /* SerializeFrom DB **/
36 // private static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql_test();
37 //if you run from IDE it may run into {cdmlib-folder}\cdmlib-persistence\target\test-classes\eu\etaxonomy\cdm\h2\LocalH2\
38 private static final ICdmDataSource cdmDestination = CdmDestinations.localH2Armeria();
39
40
41 // Import:
42 private static String importFileNameString =
43 //"C:\\workspace\\cdmlib_2.2\\cdmlib-io\\src\\test\\resources\\eu\\etaxonomy\\cdm\\io\\jaxb\\export_test_app_import.xml";
44 // "file:/C:/export_test_app_import.xml";
45 // "file:/C:/opt/data/rl/201406041541-jaxb_export-Regenwuermer.xml";
46 // "file:/C:/opt/data/rl/201406241132-jaxb_export-Armeria.xml";
47 // "file:/F:/data/redlist/standardliste/standardliste_jaxb.xml";
48 // "//PESIIMPORT3/redlist/standardliste/standardliste_jaxb.xml";
49 "//PESIIMPORT3/redlist/201411261506-jaxb_export-armeria_demo_local.xml";
50
51
52
53
54
55
56 /** NUMBER_ROWS_TO_RETRIEVE = 0 is the default case to retrieve all rows.
57 * For testing purposes: If NUMBER_ROWS_TO_RETRIEVE >0 then retrieve
58 * as many rows as specified for agents, references, etc.
59 * Only root taxa and no synonyms and relationships are retrieved. */
60 private static final int NUMBER_ROWS_TO_RETRIEVE = 0;
61
62 private static final Logger logger = Logger.getLogger(JaxbImportActivator.class);
63
64 private void invokeImport(String importFileParamString, ICdmDataSource destination) {
65 try {
66 JaxbImportConfigurator jaxbImportConfigurator;
67 if (importFileParamString !=null && destination != null){
68 URI importFileParam = new URI(importFileParamString);
69 jaxbImportConfigurator = JaxbImportConfigurator.NewInstance(importFileParam, destination);
70 }else if (destination != null){
71 URI importFileName = new URI(importFileNameString);
72 jaxbImportConfigurator = JaxbImportConfigurator.NewInstance(importFileName, destination);
73 } else if (importFileParamString !=null ){
74 URI importFileParam = new URI(importFileParamString);
75 jaxbImportConfigurator = JaxbImportConfigurator.NewInstance(importFileParam, cdmDestination);
76 } else{
77 URI importFileName = new URI(importFileNameString);
78 jaxbImportConfigurator = JaxbImportConfigurator.NewInstance(importFileName, cdmDestination);
79 }
80
81 CdmDefaultImport<JaxbImportConfigurator> jaxbImport =
82 new CdmDefaultImport<JaxbImportConfigurator>();
83
84
85 // invoke import
86 logger.debug("Invoking Jaxb import");
87
88 jaxbImport.invoke(jaxbImportConfigurator, destination, true);
89 } catch (URISyntaxException e) {
90 e.printStackTrace();
91 }
92 }
93
94 private void invokeImport(URI importUri, ICdmDataSource destination) {
95 JaxbImportConfigurator jaxbImportConfigurator;
96 if (destination != null){
97 jaxbImportConfigurator = JaxbImportConfigurator.NewInstance(importUri, destination);
98 }else {
99 jaxbImportConfigurator = JaxbImportConfigurator.NewInstance(importUri, cdmDestination);
100 }
101
102 CdmDefaultImport<JaxbImportConfigurator> jaxbImport =
103 new CdmDefaultImport<JaxbImportConfigurator>();
104
105
106 // invoke import
107 logger.debug("Invoking Jaxb import");
108
109 jaxbImport.invoke(jaxbImportConfigurator, destination, true);
110
111 }
112
113
114 private CdmApplicationController initDb(ICdmDataSource db) {
115
116 // Init source DB
117 CdmApplicationController appCtrInit = null;
118
119 appCtrInit = TestDatabase.initDb(db, DbSchemaValidation.CREATE, false);
120
121 return appCtrInit;
122 }
123
124
125 // Load test data to DB
126 private void loadTestData(CdmApplicationController appCtrInit) {
127
128 TestDatabase.loadTestData("", appCtrInit);
129 }
130
131 public static String chooseFile(String[] args) {
132 if(args == null)
133 return null;
134 for (String dest: args){
135 if (dest.endsWith(".xml")){
136 return args[0];
137 }
138 }
139 return null;
140 }
141
142 /**
143 * @param args
144 */
145 public static void main(String[] args) {
146
147 JaxbImportActivator jia = new JaxbImportActivator();
148 ICdmDataSource destination = CdmDestinations.chooseDestination(args) != null ? CdmDestinations.chooseDestination(args) : cdmDestination;
149 String fileStr = chooseFile(args)!= null ? chooseFile(args) : importFileNameString;
150 File file = new File(fileStr);
151
152 URI uri = file.toURI();
153 System.out.println(new File(uri).exists());
154 if (! new File(uri).exists()){
155 System.out.println("File does not exist! Exit");
156 return;
157 }
158 jia.invokeImport(uri, destination);
159 }
160
161 }