Advertisement
Merry123

Untitled

Jun 16th, 2023
854
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.97 KB | None | 0 0
  1. package Exercises;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.Scanner;
  8.  
  9. public class AddMinion {
  10.     private static Connection connection;
  11.     public static void main(String[] args) throws SQLException {
  12.          connection = Utils.getConnection();
  13.  
  14.         Scanner sc = new Scanner(System.in);
  15.  
  16.         String[] minionInfo = sc.nextLine().split("\\s+");
  17.         String minionName = minionInfo[1];
  18.         int minionAge = Integer.parseInt(minionInfo[2]);
  19.         String minionTown = minionInfo[3];
  20.         String villainName = sc.nextLine().split("\\s+")[1];
  21.  
  22.  
  23.         addTownIfItDoesntExist(minionTown);
  24.         addVillainIfItDoesntExist(villainName);
  25.         addMinion(minionName, minionAge, minionTown);
  26.         setVillainToMinion(minionName, villainName);
  27.  
  28.     }
  29.  
  30.     private static void setVillainToMinion(String minionName, String villainName) throws SQLException {
  31.         PreparedStatement preparedStatement = connection
  32.                 .prepareStatement("INSERT INTO minions_villains VALUES (?, ?);");
  33.         int minionId = getMinionId(minionName);
  34.         int villainId = getVillainId(villainName);
  35.         preparedStatement.setInt(1, minionId);
  36.         preparedStatement.setInt(2, villainId);
  37.         preparedStatement.executeUpdate();
  38.  
  39.         System.out.printf("Successfully added %s to be minion of %s.%n", minionName, villainName);
  40.     }
  41.  
  42.     private static int getVillainId(String villainName) throws SQLException {
  43.         PreparedStatement preparedStatement = connection
  44.                 .prepareStatement("SELECT DISTINCT id FROM villains WHERE name = ?");
  45.         preparedStatement.setString(1, villainName);
  46.         ResultSet resultSet = preparedStatement.executeQuery();
  47.  
  48.         resultSet.next();
  49.  
  50.         return resultSet.getInt(1);
  51.     }
  52.  
  53.     private static int getMinionId(String minionName) throws SQLException {
  54.         PreparedStatement preparedStatement = connection.prepareStatement("SELECT DISTINCT id FROM minions WHERE name = ?");
  55.         preparedStatement.setString(1, minionName);
  56.         ResultSet resultSet = preparedStatement.executeQuery();
  57.  
  58.         resultSet.next();
  59.         return resultSet.getInt(1);
  60.     }
  61.  
  62.     private static void addMinion(String minionName, int minionAge, String minionTown) throws SQLException {
  63.         PreparedStatement addMinion = connection
  64.                 .prepareStatement("INSERT INTO minions(name, age, town_id) VALUES(?, ?, ?)");
  65.         addMinion.setString(1, minionName);
  66.         addMinion.setInt(2, minionAge);
  67.         addMinion.setInt(3, getTownIdByName(minionTown));
  68.  
  69.         addMinion.executeUpdate();
  70.     }
  71.  
  72.     private static int getTownIdByName(String minionTown) throws SQLException {
  73.         PreparedStatement preparedStatement = connection
  74.                 .prepareStatement("SELECT DISTINCT id FROM towns WHERE name = ?;");
  75.  
  76.         preparedStatement.setString(1, minionTown);
  77.  
  78.         ResultSet resultSet = preparedStatement.executeQuery();
  79.  
  80.         resultSet.next();
  81.  
  82.         return resultSet.getInt(1);
  83.     }
  84.  
  85.     private static void addVillainIfItDoesntExist(String villainName) throws SQLException {
  86.         if (checkIfVillainExists(villainName)) {
  87.             PreparedStatement addVillain = connection
  88.                     .prepareStatement("INSERT INTO villains(name, evilness_factor) VALUES(?, ?)");
  89.             addVillain.setString(1, villainName);
  90.             addVillain.setString(2, "evil");
  91.  
  92.             addVillain.executeUpdate();
  93.  
  94.             System.out.printf("Villain %s was added to the database.%n", villainName);
  95.         }
  96.     }
  97.  
  98.     private static boolean checkIfVillainExists(String villainName) throws SQLException {
  99.         PreparedStatement preparedStatement = connection
  100.                 .prepareStatement("SELECT DISTINCT COUNT(*) FROM villains WHERE name = ?");
  101.  
  102.         preparedStatement.setString(1, villainName);
  103.         ResultSet resultSet = preparedStatement.executeQuery();
  104.  
  105.         resultSet.next();
  106.  
  107.         return resultSet.getInt(1) == 0;
  108.     }
  109.  
  110.     private static void addTownIfItDoesntExist(String minionTown) throws SQLException {
  111.         if (checkIfTownExists(minionTown)) {
  112.             PreparedStatement preparedStatement = connection
  113.                     .prepareStatement("INSERT INTO towns(name) VALUES(?);");
  114.             preparedStatement.setString(1, minionTown);
  115.  
  116.             preparedStatement.executeUpdate();
  117.  
  118.             System.out.printf("Town %s was added to the database.%n", minionTown);
  119.         }
  120.     }
  121.  
  122.     private static boolean checkIfTownExists(String minionTown) throws SQLException {
  123.         PreparedStatement preparedStatement = connection
  124.                 .prepareStatement("SELECT DISTINCT COUNT(*) FROM towns WHERE name = ?");
  125.  
  126.         preparedStatement.setString(1, minionTown);
  127.         ResultSet resultSet = preparedStatement.executeQuery();
  128.  
  129.         resultSet.next();
  130.  
  131.         return resultSet.getInt(1) == 0;
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement