1 package fr.ifremer.dali;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import fr.ifremer.common.synchro.dao.Daos;
28 import fr.ifremer.quadrige3.core.config.QuadrigeConfiguration;
29 import fr.ifremer.dali.dao.DaliDatabaseResource;
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32 import org.dbunit.DatabaseUnitException;
33 import org.dbunit.database.DatabaseConnection;
34 import org.dbunit.database.DatabaseSequenceFilter;
35 import org.dbunit.database.IDatabaseConnection;
36 import org.dbunit.dataset.FilteredDataSet;
37 import org.dbunit.dataset.IDataSet;
38 import org.dbunit.dataset.filter.ITableFilter;
39 import org.dbunit.dataset.xml.FlatXmlDataSet;
40 import org.dbunit.ext.hsqldb.HsqldbDataTypeFactory;
41 import org.junit.Assert;
42 import org.junit.ClassRule;
43 import org.junit.Test;
44
45 import java.io.File;
46 import java.io.FileOutputStream;
47 import java.io.IOException;
48 import java.sql.Connection;
49 import java.sql.SQLException;
50
51
52
53
54
55
56
57 public class ExportDbTest {
58
59 private static final Log log = LogFactory.getLog(ExportDbTest.class);
60
61 @ClassRule
62 public static final DaliDatabaseResource dbResource = DaliDatabaseResource.readDb();
63
64 @Test
65 public void fullDatabaseExport() {
66 File file = new File("target", "dbDump" + System.currentTimeMillis() + ".xml");
67 log.info("Exporting DB data... [" + file.getAbsolutePath() + "]");
68
69 try {
70 file.createNewFile();
71 Connection jdbcConnection = Daos.createConnection(QuadrigeConfiguration.getInstance().getConnectionProperties());
72 IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
73 connection.getConfig().setProperty("http://www.dbunit.org/properties/datatypeFactory", new HsqldbDataTypeFactory());
74 ITableFilter filter = new DatabaseSequenceFilter(connection);
75 IDataSet dataset = new FilteredDataSet(filter, connection.createDataSet());
76 FlatXmlDataSet.write(dataset, new FileOutputStream(file));
77 } catch (DatabaseUnitException | IOException | SQLException ex) {
78 log.error(ex.getLocalizedMessage(), ex);
79 Assert.fail("Export Failed");
80 }
81
82 log.info("DB data successfully exported to [" + file.getAbsolutePath() + "]");
83 }
84
85 }