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