java/abc-drupal-gui/src/cz/frantovo/abcDrupal/Konvertor.java
author František Kučera <franta-hg@frantovo.cz>
Fri, 01 Jan 2010 17:11:36 +0100
changeset 5 ed73b8912549
parent 4 5816c7f61a2a
permissions -rw-r--r--
Navázání DB spojení a kontrola databází SQL dotazem.
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
}