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