franta-hg@2
|
1 |
package cz.frantovo.abcDrupal;
|
franta-hg@2
|
2 |
|
franta-hg@4
|
3 |
import java.sql.Connection;
|
franta-hg@4
|
4 |
import java.sql.DriverManager;
|
franta-hg@5
|
5 |
import java.sql.PreparedStatement;
|
franta-hg@5
|
6 |
import java.sql.ResultSet;
|
franta-hg@4
|
7 |
import java.sql.SQLException;
|
franta-hg@5
|
8 |
import java.sql.Statement;
|
franta-hg@2
|
9 |
import java.util.Date;
|
franta-hg@5
|
10 |
import java.util.logging.Level;
|
franta-hg@5
|
11 |
import java.util.logging.Logger;
|
franta-hg@2
|
12 |
|
franta-hg@2
|
13 |
/**
|
franta-hg@2
|
14 |
* Řídící třída, stará se o konverzi z databáze Drupalu do databáze ABC.
|
franta-hg@2
|
15 |
* @author fiki
|
franta-hg@2
|
16 |
*/
|
franta-hg@2
|
17 |
public class Konvertor {
|
franta-hg@2
|
18 |
|
franta-hg@5
|
19 |
private static final Logger log = Logger.getLogger(Konvertor.class.getSimpleName());
|
franta-hg@4
|
20 |
private PosluchacLogu posluchacLogu;
|
franta-hg@2
|
21 |
private String jdbcZdroj;
|
franta-hg@2
|
22 |
private String jdbcCil;
|
franta-hg@4
|
23 |
private Connection dbZdroj;
|
franta-hg@4
|
24 |
private Connection dbCil;
|
franta-hg@2
|
25 |
|
franta-hg@2
|
26 |
public Konvertor(String jdbcZdroj, String jdbcCil, PosluchacLogu posluchacLogu) {
|
franta-hg@2
|
27 |
this.jdbcZdroj = jdbcZdroj;
|
franta-hg@2
|
28 |
this.jdbcCil = jdbcCil;
|
franta-hg@2
|
29 |
this.posluchacLogu = posluchacLogu;
|
franta-hg@2
|
30 |
}
|
franta-hg@2
|
31 |
|
franta-hg@2
|
32 |
public void konvertuj() {
|
franta-hg@2
|
33 |
vypis("Začíná migrace");
|
franta-hg@4
|
34 |
|
franta-hg@4
|
35 |
|
franta-hg@5
|
36 |
try {
|
franta-hg@5
|
37 |
nastavDBspojeni();
|
franta-hg@5
|
38 |
} catch (SQLException e) {
|
franta-hg@5
|
39 |
vypis("Chyba při připojování k databázím.");
|
franta-hg@5
|
40 |
log.log(Level.SEVERE, "Chyba při připojování k databázím.", e);
|
franta-hg@5
|
41 |
vypis("Končím.");
|
franta-hg@5
|
42 |
return;
|
franta-hg@5
|
43 |
}
|
franta-hg@4
|
44 |
|
franta-hg@4
|
45 |
|
franta-hg@2
|
46 |
vypis("Migrace dokončena");
|
franta-hg@2
|
47 |
}
|
franta-hg@5
|
48 |
|
franta-hg@5
|
49 |
/**
|
franta-hg@5
|
50 |
* Připojí databáze a zkontroluje SQL dotazem, že jsou v pořádku.
|
franta-hg@5
|
51 |
* @throws SQLException
|
franta-hg@5
|
52 |
*/
|
franta-hg@4
|
53 |
private void nastavDBspojeni() throws SQLException {
|
franta-hg@5
|
54 |
dbZdroj = DriverManager.getConnection(jdbcZdroj);
|
franta-hg@5
|
55 |
dbCil = DriverManager.getConnection(jdbcCil);
|
franta-hg@5
|
56 |
|
franta-hg@5
|
57 |
PreparedStatement sqlZdroj = dbZdroj.prepareStatement("SELECT count(*) FROM node");
|
franta-hg@5
|
58 |
ResultSet rsZdroj = sqlZdroj.executeQuery();
|
franta-hg@5
|
59 |
rsZdroj.next();
|
franta-hg@5
|
60 |
int pocetZdroj = rsZdroj.getInt(1);
|
franta-hg@5
|
61 |
log.log(Level.INFO, "Počet záznamů v tabulce „node“ ve zdrojové DB: " + pocetZdroj);
|
franta-hg@5
|
62 |
zavri(null, sqlZdroj, rsZdroj);
|
franta-hg@5
|
63 |
|
franta-hg@5
|
64 |
PreparedStatement sqlCil = dbCil.prepareStatement("SELECT count(*) FROM polozka");
|
franta-hg@5
|
65 |
ResultSet rsCil = sqlCil.executeQuery();
|
franta-hg@5
|
66 |
rsCil.next();
|
franta-hg@5
|
67 |
int pocetCil = rsCil.getInt(1);
|
franta-hg@5
|
68 |
log.log(Level.INFO, "Počet záznamů v tabulce „polozka“ v cílové DB: " + pocetCil);
|
franta-hg@5
|
69 |
zavri(null, sqlCil, rsCil);
|
franta-hg@4
|
70 |
}
|
franta-hg@4
|
71 |
|
franta-hg@2
|
72 |
private void vypis(String zprava) {
|
franta-hg@2
|
73 |
if (posluchacLogu != null) {
|
franta-hg@2
|
74 |
posluchacLogu.vypis(new Date() + " " + zprava);
|
franta-hg@2
|
75 |
}
|
franta-hg@2
|
76 |
}
|
franta-hg@5
|
77 |
|
franta-hg@5
|
78 |
/**
|
franta-hg@5
|
79 |
* Zavře všechno
|
franta-hg@5
|
80 |
* @param spojeni DB spojení
|
franta-hg@5
|
81 |
* @param prikaz DB dotaz
|
franta-hg@5
|
82 |
* @param vysledek DB výsledek
|
franta-hg@5
|
83 |
*/
|
franta-hg@5
|
84 |
protected static void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) {
|
franta-hg@5
|
85 |
if (vysledek != null) {
|
franta-hg@5
|
86 |
try {
|
franta-hg@5
|
87 |
vysledek.close();
|
franta-hg@5
|
88 |
} catch (Exception e) {
|
franta-hg@5
|
89 |
}
|
franta-hg@5
|
90 |
}
|
franta-hg@5
|
91 |
if (prikaz != null) {
|
franta-hg@5
|
92 |
try {
|
franta-hg@5
|
93 |
prikaz.close();
|
franta-hg@5
|
94 |
} catch (Exception e) {
|
franta-hg@5
|
95 |
}
|
franta-hg@5
|
96 |
}
|
franta-hg@5
|
97 |
if (spojeni != null) {
|
franta-hg@5
|
98 |
try {
|
franta-hg@5
|
99 |
spojeni.close();
|
franta-hg@5
|
100 |
} catch (Exception e) {
|
franta-hg@5
|
101 |
}
|
franta-hg@5
|
102 |
}
|
franta-hg@5
|
103 |
}
|
franta-hg@2
|
104 |
}
|