aed1oN

GeografijaDAO

May 18th, 2021
517
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package ba.unsa.etf.rs;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.sql.*;
  6. import java.util.ArrayList;
  7. import java.util.Scanner;
  8.  
  9. public class GeografijaDAO {
  10.     private static GeografijaDAO instance;
  11.     private Connection conn;
  12.     private PreparedStatement testUpit, gradoviUpit, drzavaNazivUpit, glavniGradUpit, drzavaIdUpit, obrisiDrzavuUpit,
  13.             obrisiGradoveUpit, dodajGradUpit, dodajDrzavuUpit, zadnjiGradIdUpit, zadnjaDrzavaIdUpit;
  14.  
  15.     public static GeografijaDAO getInstance() {
  16.         if (instance == null) {
  17.             instance = new GeografijaDAO();
  18.         }
  19.         return instance;
  20.     }
  21.  
  22.     private GeografijaDAO() {
  23.         try {
  24.             conn = DriverManager.getConnection("jdbc:sqlite:baza.db");
  25.         } catch (SQLException e) {
  26.             e.printStackTrace();
  27.         }
  28.         try {
  29.             testUpit = conn.prepareStatement("SELECT * FROM grad, drzava");
  30.         } catch (SQLException e) {
  31.             obnoviBazu();
  32.             try {
  33.                 gradoviUpit = conn.prepareStatement("SELECT * FROM grad ORDER BY broj_stanovnika DESC");
  34.                 drzavaNazivUpit = conn.prepareStatement("SELECT * FROM drzava WHERE drzava.naziv =?");
  35.                 glavniGradUpit = conn.prepareStatement("SELECT * FROM grad, drzava WHERE drzava.naziv =? AND drzava.glavni_grad = grad.id");
  36.                 drzavaIdUpit = conn.prepareStatement("SELECT * FROM drzava WHERE drzava.id=?");
  37.                 obrisiDrzavuUpit = conn.prepareStatement("DELETE FROM drzava WHERE drzava.id=?");
  38.                 obrisiGradoveUpit = conn.prepareStatement("DELETE FROM grad WHERE grad.drzava=?");
  39.                 dodajGradUpit = conn.prepareStatement("INSERT INTO grad VALUES (?,?,?,?)");
  40.                 dodajDrzavuUpit = conn.prepareStatement("INSERT INTO drzava VALUES (?,?,?)");
  41.                 zadnjiGradIdUpit = conn.prepareStatement("SELECT MAX(id) FROM grad");
  42.                 zadnjaDrzavaIdUpit = conn.prepareStatement("SELECT MAX(id) FROM drzava");
  43.             } catch (SQLException throwables) {
  44.                 throwables.printStackTrace();
  45.             }
  46.  
  47.         }
  48.     }
  49.  
  50.     public static void removeInstance() { instance = null; }
  51.  
  52.     public Grad glavniGrad(String drzava) {
  53.          try {
  54.              glavniGradUpit.setString(1 , drzava);
  55.              ResultSet rs = glavniGradUpit.executeQuery();
  56.              if (!rs.next()) return null;
  57.              return dajGradIzResultSeta(rs);
  58.         } catch (SQLException throwables) {
  59.              throwables.printStackTrace();
  60.              return null;
  61.  
  62.         }
  63.  
  64.     }
  65.  
  66.     public void obrisiDrzavu(String drzava) {
  67.         try {
  68.             drzavaNazivUpit.setString(1, drzava);
  69.             ResultSet rs = drzavaNazivUpit.executeQuery();
  70.             if (!rs.next()) return;
  71.             obrisiGradoveUpit.setInt(1, rs.getInt(1));
  72.             obrisiDrzavuUpit.setInt(1, rs.getInt(1));
  73.             obrisiGradoveUpit.executeUpdate();
  74.             obrisiDrzavuUpit.executeUpdate();
  75.         } catch (SQLException throwables) {
  76.             throwables.printStackTrace();
  77.         }
  78.     }
  79.  
  80.     public ArrayList<Grad> gradovi() {
  81.         ArrayList<Grad> rez = new ArrayList<>();
  82.         try {
  83.             ResultSet rsGrad = gradoviUpit.executeQuery();
  84.             while (rsGrad.next()) {
  85.                 Grad grad = dajGradIzResultSeta(rsGrad);
  86.                 rez.add(grad);
  87.             }
  88.             return rez;
  89.         } catch (SQLException e) {
  90.             e.printStackTrace();
  91.             return null;
  92.         }
  93.     }
  94.  
  95.     public void dodajGrad(Grad grad) {
  96.         try {
  97.             ResultSet rs = zadnjiGradIdUpit.executeQuery();
  98.             int id = 1;
  99.             if (rs.next()) {
  100.                 id = rs.getInt(1) + 1;
  101.             }
  102.             dodajGradUpit.setInt(1, id);
  103.             dodajGradUpit.setString(2, grad.getNaziv());
  104.             dodajGradUpit.setInt(3, grad.getBrojStanovnika());
  105.             dodajGradUpit.setInt(3, grad.getDrzava().getId());
  106.             dodajGradUpit.executeUpdate();
  107.         } catch (SQLException throwables) {
  108.             throwables.printStackTrace();
  109.         }
  110.     }
  111.     public void dodajDrzavu(Drzava drzava) {
  112.         try {
  113.             ResultSet rs = zadnjaDrzavaIdUpit.executeQuery();
  114.             dodajDrzavuUpit.setInt(1, ;
  115.             dodajDrzavuUpit.setString(2, drzava.getNaziv());
  116.             dodajDrzavuUpit.setInt(3, drzava.getGlavniGrad().getId());
  117.             dodajDrzavuUpit.executeUpdate();
  118.         } catch (SQLException throwables) {
  119.             throwables.printStackTrace();
  120.         }
  121.     }
  122.  
  123.  
  124.  
  125.     private Grad dajGradIzResultSeta(ResultSet rs) throws SQLException {
  126.         Grad grad = new Grad(rs.getInt(1), rs.getString(2), rs.getInt(3), null);
  127.         grad.setDrzava(dajDrzavu(rs.getInt(4), grad));
  128.         return grad;
  129.     }
  130.  
  131.     private Drzava dajDrzavu(int id, Grad grad) {
  132.         try {
  133.             drzavaIdUpit.setInt(1, id);
  134.             ResultSet rs = drzavaIdUpit.executeQuery();
  135.             return dajDrzavuIzResultSeta(rs, grad);
  136.         } catch (SQLException throwables) {
  137.             throwables.printStackTrace();
  138.             return null;
  139.         }
  140.  
  141.     }
  142.  
  143.     private Drzava dajDrzavuIzResultSeta(ResultSet rs, Grad grad) throws SQLException {
  144.         return new Drzava(rs.getInt(1),  rs.getString(2), grad);
  145.  
  146.     }
  147.  
  148.     private void obnoviBazu() {
  149.         try {
  150.             Scanner scan = new Scanner(new FileInputStream("baza.db.sql"));
  151.             String upit = "";
  152.             while(scan.hasNext()) {
  153.                 upit += scan.nextLine();
  154.                 if (upit.charAt(upit.length() - 1) == ';') {
  155.                     try {
  156.                         Statement stmt = conn.createStatement();
  157.                         stmt.executeQuery(upit);
  158.                         upit = "";
  159.                     } catch (SQLException throwables) {
  160.                         upit = "";
  161.                     }
  162.  
  163.                 }
  164.             }
  165.             scan.close();
  166.         } catch (FileNotFoundException e) {
  167.             e.printStackTrace();
  168.         }
  169.     }
  170.  
  171.     public Drzava nadjiDrzavu(String francuska) {
  172.         try {
  173.             drzavaNazivUpit.setString(1, francuska);
  174.             ResultSet rs = drzavaNazivUpit.executeQuery();
  175.             return dajDrzavuIzResultSeta(rs, null);
  176.         } catch (SQLException throwables) {
  177.             throwables.printStackTrace();
  178.             return null;
  179.         }
  180.     }
  181. }
  182.  
RAW Paste Data