Merge branch 'release/5.45.0'
[cdmlib.git] / cdmlib-io / src / test / java / eu / etaxonomy / cdm / io / sdd / in / SDDImportExportTest.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.io.sdd.in;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNotNull;
13
14 import java.io.File;
15 import java.io.FileNotFoundException;
16 import java.net.MalformedURLException;
17 import java.net.URISyntaxException;
18 import java.net.URL;
19 import java.sql.SQLException;
20
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Ignore;
24 import org.junit.Test;
25 import org.unitils.spring.annotation.SpringBeanByType;
26
27 import eu.etaxonomy.cdm.api.service.IClassificationService;
28 import eu.etaxonomy.cdm.api.service.INameService;
29 import eu.etaxonomy.cdm.api.service.ITaxonService;
30 import eu.etaxonomy.cdm.common.CdmUtils;
31 import eu.etaxonomy.cdm.common.URI;
32 import eu.etaxonomy.cdm.database.CdmDataSource;
33 import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
34 import eu.etaxonomy.cdm.database.DataSourceNotFoundException;
35 import eu.etaxonomy.cdm.database.ICdmDataSource;
36 import eu.etaxonomy.cdm.io.common.IExportConfigurator;
37 import eu.etaxonomy.cdm.io.sdd.out.SDDCdmExporter;
38 import eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator;
39 import eu.etaxonomy.cdm.io.sdd.out.SDDExportState;
40 import eu.etaxonomy.cdm.model.taxon.Classification;
41 import eu.etaxonomy.cdm.model.taxon.Taxon;
42 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
43
44 /**
45 * @author l.morris
46 * @since 14 Nov 2012
47 */
48 public class SDDImportExportTest extends CdmTransactionalIntegrationTest {
49
50 @SpringBeanByType
51 SDDImport sddImport;
52
53 private SDDImportConfigurator importConfigurator;
54
55 @SpringBeanByType
56 SDDCdmExporter sddCdmExporter;
57
58 @SpringBeanByType
59 INameService nameService;
60
61 @SpringBeanByType
62 ITaxonService taxonService;
63
64 @SpringBeanByType
65 IClassificationService classificationService;
66
67 private IExportConfigurator exportConfigurator;
68
69 @Before
70 @Ignore
71 //calling before testInit testDoInvoke. db stuff into devlopeACustomDatabase
72 //setDefaultRollback
73 public void setUp() throws URISyntaxException, MalformedURLException {
74 // input data
75 //URL url = this.getClass().getResource("/eu/etaxonomy/cdm/io/sdd/SDDImportTest-input3.xml");
76 URL url = this.getClass().getResource("/eu/etaxonomy/cdm/io/sdd/ant.sdd.xml");
77 URI uri = URI.fromUrl(url);
78
79 // export data
80 String exporturlStr = "SDDImportExportTest.sdd.xml";
81 File f = new File(exporturlStr);
82 exporturlStr = f.toURI().toURL().toString();
83 logger.debug("The exporturlStr is " + exporturlStr);
84
85 // URI.create("file:///C:/localCopy/Data/xper/Cichorieae-DA2.sdd.xml");
86
87 Assert.assertNotNull(url);
88
89 ICdmDataSource loadedDataSource = null;
90
91 /*
92 * enable below line if you wish to use a custom data source
93 */
94 //loadedDataSource = customDataSource();
95
96 importConfigurator = SDDImportConfigurator.NewInstance(uri, loadedDataSource);
97 exportConfigurator = SDDExportConfigurator.NewInstance(loadedDataSource, exporturlStr);
98 }
99
100 @Test
101 @Ignore
102 public void testDoInvoke() {
103
104 assertNotNull("sddImport should not be null", sddImport);
105 assertNotNull("sddCdmExporter should not be null", sddCdmExporter);
106
107 setDefaultRollback(false);
108
109 //printDataSet(System.err, new String[]{"DEFINEDTERMBASE"});
110
111 sddImport.doInvoke(new SDDImportState(importConfigurator));
112
113 //logger.setLevel(Level.DEBUG);
114 commitAndStartNewTransaction(new String[]{"DEFINEDTERMBASE"});
115
116 logger.debug("Name count: " + (nameService.count(null)));
117 logger.debug("Classification count: " + (classificationService.count(Classification.class)));
118 logger.debug("Taxon count: " + (taxonService.count(Taxon.class)));
119
120 //sddCdmExporter.doInvoke(null);
121 sddCdmExporter.doInvoke(new SDDExportState((SDDExportConfigurator) exportConfigurator));
122 assertEquals("Number of TaxonNames should be 1", 1, nameService.count(null));
123 }
124
125 private ICdmDataSource customDataSource() {
126
127 CdmPersistentDataSource loadedDataSource = null;
128 //ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("192.168.2.10", "cdm_test_niels2", 3306, "edit", password, code);
129 String dataSourceName = "cdm_test2";
130 String password = CdmUtils.readInputLine("Password: ");
131 ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("127.0.0.1", "cdm_test2", 3306, "ljm", password);
132 //ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("160.45.63.201", "cdm_test", 3306, "edit", password);
133 boolean connectionAvailable;
134 try {
135 connectionAvailable = dataSource.testConnection();
136 logger.debug("Is connection avaiable " + connectionAvailable);
137 Assert.assertTrue("Testdatabase is not available", connectionAvailable);
138
139 } catch (ClassNotFoundException e1) {
140 e1.printStackTrace();
141 } catch (SQLException e1) {
142 e1.printStackTrace();
143 }
144
145 CdmPersistentDataSource.save(dataSourceName, dataSource);
146 try {
147 loadedDataSource = CdmPersistentDataSource.NewInstance(dataSourceName);
148 // CdmApplicationController.NewInstance(loadedDataSource, DbSchemaValidation.CREATE);
149 // NomenclaturalCode loadedCode = loadedDataSource.getNomenclaturalCode();
150 //
151 // Assert.assertEquals(NomenclaturalCode.ICNAFP, loadedCode);
152 } catch (DataSourceNotFoundException e) {
153 // TODO Auto-generated catch block
154 e.printStackTrace();
155 }
156 //return loadedDataSource;
157 return dataSource;
158 }
159
160 @Override
161 public void createTestDataSet() throws FileNotFoundException {}
162 }