MySoulIsCry

Untitled

Apr 20th, 2022
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.83 KB | None | 0 0
  1. package com.lairon.xclans.data;
  2.  
  3. import com.lairon.xclans.clan.Clan;
  4. import com.lairon.xclans.settings.DataProviderSettings;
  5.  
  6. import java.lang.reflect.InvocationTargetException;
  7. import java.sql.*;
  8. import java.text.SimpleDateFormat;
  9. import java.util.ArrayList;
  10.  
  11. public class DataProvider {
  12.  
  13.     private Connection connection;
  14.     private ClanFactory clanFactory = new ClanFactory();
  15.  
  16.     public DataProvider(DataProviderSettings settings) throws ClassNotFoundException, SQLException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
  17.         if (settings.isMySqlEnabled()) {
  18.             Class.forName("com.mysql.jdbc.Driver").getDeclaredConstructor().newInstance();
  19.  
  20.             connection = DriverManager.getConnection("jdbc:mysql://" + settings.getIp() + "/" + settings.getDbName() + "?autoReconnect=true&useSSL=false", settings.getUserName(), settings.getPassword());
  21.         } else {
  22.             Class.forName("org.sqlite.JDBC");
  23.             connection = DriverManager.getConnection("jdbc:sqlite:plugins/XClans/ClansData.db");
  24.         }
  25.         Statement statement = connection.createStatement();
  26.         statement.execute("""
  27.                CREATE TABLE IF NOT EXISTS `Clans` (
  28.                `ID` VARCHAR(43) NOT NULL,
  29.                `Owner` VARCHAR(45) NOT NULL,
  30.                `Members` LONGTEXT NULL DEFAULT NULL,
  31.                `Moderators` LONGTEXT NULL DEFAULT NULL,
  32.                `WelcomeMessage` LONGTEXT NULL DEFAULT NULL,
  33.                `Balance` INT NULL DEFAULT 0,
  34.                `Exp` INT NULL DEFAULT 0,
  35.                `Date` DATETIME NULL DEFAULT NULL,
  36.                `Color` VARCHAR(2) NULL DEFAULT NULL,
  37.                `Home` VARCHAR(45) NULL DEFAULT NULL,
  38.                `OpenHome` TINYINT NULL DEFAULT 0,
  39.                `Level` INT NULL DEFAULT 0,
  40.                `Pvp` TINYINT NULL DEFAULT 0,
  41.                `Alliances` VARCHAR(45) NULL DEFAULT NULL,
  42.                PRIMARY KEY (`ID`))              
  43.                """);
  44.         statement.close();
  45.  
  46.     }
  47.  
  48.  
  49.     public Clan[] loadAllClans() throws SQLException {
  50.         ArrayList<Clan> clans = new ArrayList<>();
  51.         String sql = "SELECT * FROM Clans;";
  52.         Statement statement = connection.createStatement();
  53.         ResultSet resultSet = statement.executeQuery(sql);
  54.         while (resultSet.next()) {
  55.             Clan clan = clanFactory.createClanInstanceByResultSet(resultSet);
  56.             clans.add(clan);
  57.         }
  58.         return clans.toArray(new Clan[]{});
  59.     }
  60.  
  61.     public void saveClan(Clan clan) throws SQLException {
  62.         String sql = """              
  63.                INSERT INTO `Clans`
  64.                (`ID`,
  65.                `Owner`,
  66.                `Members`,
  67.                `Moderators`,
  68.                `WelcomeMessage`,
  69.                `Balance`,
  70.                `Exp`,
  71.                `Date`,
  72.                `Color`,
  73.                `Home`,
  74.                `OpenHome`,
  75.                `Level`,
  76.                `Pvp`,
  77.                `Alliances`)
  78.                VALUES
  79.                (<{ID}>,
  80.                <{Owner}>,
  81.                <{Members}>,
  82.                <{Moderators}>,
  83.                <{WelcomeMessage}>,
  84.                <{Balance}>,
  85.                <{Exp}>,
  86.                <{Date}>,
  87.                <{Color}>,
  88.                <{Home}>,
  89.                <{OpenHome}>,
  90.                <{Level}>,
  91.                <{Pvp}>,
  92.                <{Alliances}>);        
  93.                """;
  94.         sql = sql.replace("<{ID}>", "\"" + clan.getClanID() + "\"")
  95.                 .replace("<{Owner}>", "\"" + clan.getOwner() + "\"")
  96.                 .replace("<{Members}>", clan.getMembers() == null ? "NULL" : "'" + String.join(" ", clan.getMembers()) + "'")
  97.                 .replace("<{Moderators}>", clan.getModerators() == null ? "NULL" : "'" + String.join(" ", clan.getModerators()) + "'")
  98.                 .replace("<{WelcomeMessage}>", clan.getWelcomeMessage() == null ? "NULL" : "'" + clan.getWelcomeMessage() + "'")
  99.                 .replace("<{Balance}>", clan.getBalance() + "")
  100.                 .replace("<{Exp}>", clan.getExp() + "")
  101.                 .replace("<{Date}>", clan.getDate() == null ? "NULL" : "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(clan.getDate()) + "'")
  102.                 .replace("<{Color}>", clan.getColor() == null ? "NULL" : "'" + clan.getColor().toString() + "'")
  103.                 .replace("<{Home}>", clan.getClanHome() == null ? "NULL" : "'" +
  104.                         clan.getClanHome().getWorld().getName() + " " +
  105.                         clan.getClanHome().getX() + " " +
  106.                         clan.getClanHome().getY() + " " +
  107.                         clan.getClanHome().getZ() + "'")
  108.                 .replace("<{OpenHome}>", clan.isOpenCH() + "")
  109.                 .replace("<{Level}>", clan.getLevel() + "")
  110.                 .replace("<{Pvp}>", clan.isPvp() + "")
  111.                 .replace("<{Alliances}>", clan.getAlliances() == null ? "NULL" : "'" + String.join(" ", clan.getAlliances()) + "'");
  112.  
  113.         var statement = connection.createStatement();
  114.         statement.execute(sql);
  115.         statement.close();
  116.     }
  117.  
  118.     public Clan loadClanByID(String id) throws SQLException {
  119.         String sql = "SELECT * FROM Clans WHERE ID = \"" + id + "\"";
  120.         Statement statement = connection.createStatement();
  121.         ResultSet resultSet = statement.executeQuery(sql);
  122.         while (resultSet.next()) {
  123.             return clanFactory.createClanInstanceByResultSet(resultSet);
  124.         }
  125.         statement.close();
  126.         return null;
  127.     }
  128.  
  129.     public void deleteClan(String id) throws SQLException {
  130.         String sql = "DELETE FROM `Clans` WHERE ID = \"" + id + "\"";
  131.         Statement statement = statement = connection.createStatement();
  132.         statement.execute(sql);
  133.         statement.close();
  134.     }
  135.  
  136.  
  137. }
  138.  
Advertisement
Add Comment
Please, Sign In to add comment