franta-hg@2: package cz.frantovo.abcDrupal; franta-hg@2: franta-hg@4: import java.sql.Connection; franta-hg@4: import java.sql.DriverManager; franta-hg@5: import java.sql.PreparedStatement; franta-hg@5: import java.sql.ResultSet; franta-hg@4: import java.sql.SQLException; franta-hg@5: import java.sql.Statement; franta-hg@2: import java.util.Date; franta-hg@5: import java.util.logging.Level; franta-hg@5: import java.util.logging.Logger; franta-hg@2: franta-hg@2: /** franta-hg@2: * Řídící třída, stará se o konverzi z databáze Drupalu do databáze ABC. franta-hg@2: * @author fiki franta-hg@2: */ franta-hg@2: public class Konvertor { franta-hg@2: franta-hg@5: private static final Logger log = Logger.getLogger(Konvertor.class.getSimpleName()); franta-hg@4: private PosluchacLogu posluchacLogu; franta-hg@2: private String jdbcZdroj; franta-hg@2: private String jdbcCil; franta-hg@4: private Connection dbZdroj; franta-hg@4: private Connection dbCil; franta-hg@2: franta-hg@2: public Konvertor(String jdbcZdroj, String jdbcCil, PosluchacLogu posluchacLogu) { franta-hg@2: this.jdbcZdroj = jdbcZdroj; franta-hg@2: this.jdbcCil = jdbcCil; franta-hg@2: this.posluchacLogu = posluchacLogu; franta-hg@2: } franta-hg@2: franta-hg@2: public void konvertuj() { franta-hg@2: vypis("Začíná migrace"); franta-hg@4: franta-hg@4: franta-hg@5: try { franta-hg@5: nastavDBspojeni(); franta-hg@5: } catch (SQLException e) { franta-hg@5: vypis("Chyba při připojování k databázím."); franta-hg@5: log.log(Level.SEVERE, "Chyba při připojování k databázím.", e); franta-hg@5: vypis("Končím."); franta-hg@5: return; franta-hg@5: } franta-hg@4: franta-hg@4: franta-hg@2: vypis("Migrace dokončena"); franta-hg@2: } franta-hg@5: franta-hg@5: /** franta-hg@5: * Připojí databáze a zkontroluje SQL dotazem, že jsou v pořádku. franta-hg@5: * @throws SQLException franta-hg@5: */ franta-hg@4: private void nastavDBspojeni() throws SQLException { franta-hg@5: dbZdroj = DriverManager.getConnection(jdbcZdroj); franta-hg@5: dbCil = DriverManager.getConnection(jdbcCil); franta-hg@5: franta-hg@5: PreparedStatement sqlZdroj = dbZdroj.prepareStatement("SELECT count(*) FROM node"); franta-hg@5: ResultSet rsZdroj = sqlZdroj.executeQuery(); franta-hg@5: rsZdroj.next(); franta-hg@5: int pocetZdroj = rsZdroj.getInt(1); franta-hg@5: log.log(Level.INFO, "Počet záznamů v tabulce „node“ ve zdrojové DB: " + pocetZdroj); franta-hg@5: zavri(null, sqlZdroj, rsZdroj); franta-hg@5: franta-hg@5: PreparedStatement sqlCil = dbCil.prepareStatement("SELECT count(*) FROM polozka"); franta-hg@5: ResultSet rsCil = sqlCil.executeQuery(); franta-hg@5: rsCil.next(); franta-hg@5: int pocetCil = rsCil.getInt(1); franta-hg@5: log.log(Level.INFO, "Počet záznamů v tabulce „polozka“ v cílové DB: " + pocetCil); franta-hg@5: zavri(null, sqlCil, rsCil); franta-hg@4: } franta-hg@4: franta-hg@2: private void vypis(String zprava) { franta-hg@2: if (posluchacLogu != null) { franta-hg@2: posluchacLogu.vypis(new Date() + " " + zprava); franta-hg@2: } franta-hg@2: } franta-hg@5: franta-hg@5: /** franta-hg@5: * Zavře všechno franta-hg@5: * @param spojeni DB spojení franta-hg@5: * @param prikaz DB dotaz franta-hg@5: * @param vysledek DB výsledek franta-hg@5: */ franta-hg@5: protected static void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) { franta-hg@5: if (vysledek != null) { franta-hg@5: try { franta-hg@5: vysledek.close(); franta-hg@5: } catch (Exception e) { franta-hg@5: } franta-hg@5: } franta-hg@5: if (prikaz != null) { franta-hg@5: try { franta-hg@5: prikaz.close(); franta-hg@5: } catch (Exception e) { franta-hg@5: } franta-hg@5: } franta-hg@5: if (spojeni != null) { franta-hg@5: try { franta-hg@5: spojeni.close(); franta-hg@5: } catch (Exception e) { franta-hg@5: } franta-hg@5: } franta-hg@5: } franta-hg@2: }