package bazy.gotowe.postgresql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class P10_Batch_wersja_bez_batch_do_porownania {

	public static void main(String[] args) {
		int ID = 4000;
		int ILE = 1000;

		String deleteSql = "DELETE FROM locations WHERE location_id BETWEEN ? AND ?";
		final String insertSql = "INSERT INTO locations(location_id, street_address, postal_code, city, country_id)"
				+ " VALUES(?,?,?,?,?)";

		try(Connection c = DriverManager.getConnection(Ustawienia.URL, Ustawienia.USER, Ustawienia.PASSWD);
			PreparedStatement deleteStmt = c.prepareStatement(deleteSql);
			PreparedStatement insertStmt = c.prepareStatement(insertSql)) {

			c.setAutoCommit(false);  // wyłączamy automatyczne commitowanie - przechodzimy w tryb traksakcji

			deleteStmt.setInt(1, ID);
			deleteStmt.setInt(2, ID + ILE - 1);
			int ileD = deleteStmt.executeUpdate();
			System.out.println("Usunięto " + ileD + "rekordów.");

			System.out.println("start");
			long poczatek = System.currentTimeMillis();
			
			for(int i=0; i<ILE; i++) {
				insertStmt.setInt(1, ID + i);
				insertStmt.setString(2, "Jasna 14/16a lok. " + i);
				insertStmt.setString(3, "01-234");
				insertStmt.setString(4, "Warszawa");
				insertStmt.setString(5, "UK");

				insertStmt.executeUpdate();
				
				if(i % 50 == 0) {
					System.out.println();
				}
				System.out.print(".");
				System.out.flush();
			}
			System.out.print("\n***");
		
			//c.rollback();
			c.commit();
			long koniec = System.currentTimeMillis();
			System.out.println("\n\nGotowe, czas = " + (koniec - poczatek) + " ms");
		} catch (SQLException e) {
			System.err.println("Błąd podczas łączenia albo wykonywania SQL");
			e.printStackTrace();
		}
	}
}
