fix #5862 by correctly managing dependencies
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / sdd / SDDExportActivator.java
1 /**
2 * Copyright (C) 2009 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.sdd;
10
11 import java.io.File;
12 import java.net.MalformedURLException;
13 import java.sql.SQLException;
14
15 import org.apache.log4j.Logger;
16 import org.springframework.util.Assert;
17
18 import eu.etaxonomy.cdm.common.CdmUtils;
19 import eu.etaxonomy.cdm.database.CdmDataSource;
20 import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
21 import eu.etaxonomy.cdm.database.DataSourceNotFoundException;
22 import eu.etaxonomy.cdm.database.DbSchemaValidation;
23 import eu.etaxonomy.cdm.database.ICdmDataSource;
24 import eu.etaxonomy.cdm.io.common.CdmDefaultExport;
25 import eu.etaxonomy.cdm.io.common.IExportConfigurator.DO_REFERENCES;
26 import eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator;
27 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
28
29 /**
30 * @author l.morris
31 * @date 29 Nov 2012
32 *
33 */
34 public class SDDExportActivator {
35
36 /* SerializeFrom DB **/
37 private static final String sourceDbName = "cdm";
38 //private static final String destinationFileName = "ViolaFromCDM.xml";
39 //private static final String destinationFolder = "/Developer/exports SDD";
40 //private static final String destinationFolder = "C:/tmp/viola/exports_SDD";
41
42 /** NUMBER_ROWS_TO_RETRIEVE = 0 is the default case to retrieve all rows.
43 * For testing purposes: If NUMBER_ROWS_TO_RETRIEVE >0 then retrieve
44 * as many rows as specified for agents, references, etc.
45 * Only root taxa and no synonyms and relationships are retrieved. */
46 private static final int NUMBER_ROWS_TO_RETRIEVE = 0;
47
48 private static final String server = "134.157.190.207";
49 private static final String username = "sa";
50
51 public static ICdmDataSource CDM_DB(String dbname) {
52
53 logger.info("Setting DB " + dbname);
54 ICdmDataSource datasource = CdmDataSource.NewH2EmbeddedInstance(dbname, username, "");
55 return datasource;
56 }
57
58 private static ICdmDataSource customDataSource() {
59
60 CdmPersistentDataSource loadedDataSource = null;
61 //ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("192.168.2.10", "cdm_test_niels2", 3306, "edit", password, code);
62
63 String dataSourceName = CdmUtils.readInputLine("Database name: ");
64 String username = CdmUtils.readInputLine("Username: ");
65 String password = CdmUtils.readInputLine("Password: ");
66
67 dataSourceName = (dataSourceName.equals("")) ? "cdm_test3" : dataSourceName;
68 username = (username.equals("")) ? "ljm" : username;
69
70 //ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("127.0.0.1", "cdm_test3", 3306, "ljm", password, NomenclaturalCode.ICBN);
71 ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("127.0.0.1", dataSourceName, 3306, username, password, NomenclaturalCode.ICNAFP);
72 //ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("127.0.0.1", "cdm_edit_cichorieae", 3306, "ljm", password, NomenclaturalCode.ICBN);
73 //ICdmDataSource dataSource =
74 CdmDataSource.NewMySqlInstance("160.45.63.201", "cdm_edit_cichorieae", 3306, "edit", password, NomenclaturalCode.ICNAFP);
75 boolean connectionAvailable;
76 try {
77 connectionAvailable = dataSource.testConnection();
78 System.out.println("LORNA connection available " + connectionAvailable);
79 Assert.isTrue(connectionAvailable, "Testdatabase is not available");
80
81 } catch (ClassNotFoundException e1) {
82 // TODO Auto-generated catch block
83 e1.printStackTrace();
84 } catch (SQLException e1) {
85 // TODO Auto-generated catch block
86 e1.printStackTrace();
87 }
88
89 CdmPersistentDataSource.save(dataSourceName, dataSource);
90 try {
91 loadedDataSource = CdmPersistentDataSource.NewInstance(dataSourceName);
92 // CdmApplicationController.NewInstance(loadedDataSource, DbSchemaValidation.CREATE);
93 NomenclaturalCode loadedCode = loadedDataSource.getNomenclaturalCode();
94
95 Assert.isTrue(NomenclaturalCode.ICNAFP.equals(loadedCode));
96 } catch (DataSourceNotFoundException e) {
97 // TODO Auto-generated catch block
98 e.printStackTrace();
99 }
100 //return loadedDataSource;
101 return dataSource;
102 }
103
104
105
106 private static final Logger logger = Logger.getLogger(ViolaExportActivator.class);
107
108 //private static final ICdmDataSource sourceDb = ViolaExportActivator.CDM_DB(sourceDbName);
109 private static final ICdmDataSource sourceDb = customDataSource();
110 //private static final File destinationFile = new File(destinationFolder + File.separator + destinationFileName);
111
112 private static boolean doAgents = true;
113 private static boolean doAgentData = true;
114 private static boolean doLanguageData = true;
115 private static boolean doFeatureData = true;
116 private static boolean doDescriptions = true;
117 private static boolean doMedia = true;
118 private static boolean doOccurrences = true;
119 //private static boolean doReferences = true;
120 private static final DO_REFERENCES doReferences = DO_REFERENCES.ALL;
121 private static boolean doReferencedEntities = true;
122 private static boolean doRelationships = false; //causes org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [eu.etaxonomy.cdm.model.taxon.Taxon#24563] in cichoriae
123 private static boolean doSynonyms = true;
124 private static boolean doTaxonNames = true;
125 private static boolean doTaxa = true;
126 private static boolean doTerms = true;
127 private static boolean doTermVocabularies = true;
128 private static boolean doHomotypicalGroups = true;//try export again
129
130 private void invokeExport() {
131
132 // export data
133 //String exporturlStr = "/sdd/SDDImportExportTest.sdd.xml";
134 String exporturlStr = "SDDImportExportTest.sdd.xml";
135 File f = new File(exporturlStr);
136 try {
137 exporturlStr = f.toURI().toURL().toString();
138 } catch (MalformedURLException e) {
139 // TODO Auto-generated catch block
140 e.printStackTrace();
141 }
142
143 //lorna//SDDExportConfigurator sddExportConfigurator =
144 //SDDExportConfigurator.NewInstance(sourceDb, destinationFileName, destinationFolder);
145
146 SDDExportConfigurator sddExportConfigurator =
147 SDDExportConfigurator.NewInstance(sourceDb, exporturlStr);
148
149
150 CdmDefaultExport<SDDExportConfigurator> sddExport =
151 new CdmDefaultExport<SDDExportConfigurator>();
152
153 sddExportConfigurator.setSource(sourceDb);
154 //lorna//sddExportConfigurator.setDestination(destinationFile);
155 sddExportConfigurator.setDbSchemaValidation(DbSchemaValidation.VALIDATE);
156
157 sddExportConfigurator.setMaxRows(NUMBER_ROWS_TO_RETRIEVE);
158
159 sddExportConfigurator.setDoAuthors(doAgents);
160 sddExportConfigurator.setDoAgentData(doAgentData);
161 sddExportConfigurator.setDoLanguageData(doLanguageData);
162 sddExportConfigurator.setDoFeatureData(doFeatureData);
163 sddExportConfigurator.setDoDescriptions(doDescriptions);
164 sddExportConfigurator.setDoMedia(doMedia);
165 sddExportConfigurator.setDoOccurrence(doOccurrences);
166 sddExportConfigurator.setDoReferences(doReferences);
167 sddExportConfigurator.setDoReferencedEntities(doReferencedEntities);
168 sddExportConfigurator.setDoRelTaxa(doRelationships);
169 sddExportConfigurator.setDoSynonyms(doSynonyms);
170 sddExportConfigurator.setDoTaxonNames(doTaxonNames);
171 sddExportConfigurator.setDoTaxa(doTaxa);
172 sddExportConfigurator.setDoTerms(doTerms);
173 sddExportConfigurator.setDoTermVocabularies(doTermVocabularies);
174 sddExportConfigurator.setDoHomotypicalGroups(doHomotypicalGroups);
175
176 // invoke export
177 logger.debug("Invoking SDD export");
178 sddExport.invoke(sddExportConfigurator);
179
180 }
181
182 /**
183 * @param args
184 */
185 public static void main(String[] args) {
186
187 SDDExportActivator sddex = new SDDExportActivator();
188
189 sddex.invokeExport();
190
191 }
192
193 }