package net.diamonddominion.esaych.survival; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Calendar; import net.diamonddominion.esaych.CustomPlugin; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.block.BlockState; import org.bukkit.block.Sign; public class ModAppWall { private CustomPlugin plugin; private Location p_nameSignLoc; private Location p_rateSignLoc; private Location u_nameSignLoc; private Location u_rateSignLoc; private Location d_nameSignLoc; private Location d_rateSignLoc; private int num; public ModAppWall(CustomPlugin plugin) { this.plugin = plugin; } @SuppressWarnings("deprecation") public void enable() { plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() { @Override public void run() { updateWall(); } }, 60, 20*60*10); log("Enabled"); } public void updateWall() { p_nameSignLoc = new Location(Bukkit.getWorld("Survival"), 68, 73, 161); p_rateSignLoc = new Location (Bukkit.getWorld("Survival"), 68, 73, 162); u_nameSignLoc = new Location(Bukkit.getWorld("Survival"), 68, 73, 163); u_rateSignLoc = new Location (Bukkit.getWorld("Survival"), 68, 73, 164); d_nameSignLoc = new Location(Bukkit.getWorld("Survival"), 68, 73, 165); d_rateSignLoc = new Location (Bukkit.getWorld("Survival"), 68, 73, 166); clearSigns(); Connection con = null; Statement st = null; ResultSet rs = null; String url = "jdbc:mysql://192.185.24.94:3306/diamond_appstatus"; String user = "diamond_admin"; String password = "AdminControl123"; Calendar cal = Calendar.getInstance(); int month = cal.get(Calendar.MONTH); int day = cal.get(Calendar.DAY_OF_MONTH); int year = cal.get(Calendar.YEAR); day -= 10; if (day < 1) { month--; day = 30+day-10; } try { con = DriverManager.getConnection(url, user, password); st = con.createStatement(); // st.execute("SELECT * FROM Pending"); rs = st.executeQuery("SELECT * FROM Applications WHERE `Rating` >= 8.5 && `LastLogin` >= '" + year + "-" + month + "-" + day + "' ORDER BY `Applications`.`Timestamp` DESC;"); num = 1; while (rs.next()) { // pending.put(rs.getString(1), rs.getString(2)); addToPendingWall(rs.getString(1), rs.getString(2)); } st = con.createStatement(); rs = st.executeQuery("SELECT * FROM Applications WHERE `Rating` = 0.0 ORDER BY `Applications`.`Timestamp` DESC;"); num = 1; while (rs.next()) { addToUnreadWall(rs.getString(1), "NA"); } st = con.createStatement(); rs = st.executeQuery("SELECT * FROM Applications WHERE `Rating` < 8.5 ORDER BY `Applications`.`Timestamp` DESC;"); num = 1; while (rs.next()) { addToDeniedWall(rs.getString(1), rs.getString(2).replaceFirst("-", ChatColor.DARK_RED + "")); } } catch (SQLException ex) { log(ex.getMessage()); } finally { try { if (rs != null) { rs.close(); } if (st != null) { st.close(); } if (con != null) { con.close(); } } catch (SQLException ex) { log(ex.getMessage()); } } } public void addToPendingWall(String name, String rating) { if (p_nameSignLoc.getChunk() != null && p_rateSignLoc.getChunk() != null) { Sign sign; BlockState signBlock = Bukkit.getWorld("Survival").getBlockAt(p_nameSignLoc).getState(); BlockState rateBlock = Bukkit.getWorld("Survival").getBlockAt(p_rateSignLoc).getState(); int place = ((num - 1) % 4); if (signBlock instanceof Sign) { sign = (Sign) signBlock; sign.setLine(place, name); sign.update(); } if (rateBlock instanceof Sign) { sign = (Sign) rateBlock; sign.setLine(place, ChatColor.DARK_BLUE + "Rating: " + rating); sign.update(); } if (num % 4 == 0) { p_nameSignLoc.add(0, -1, 0); p_rateSignLoc.add(0, -1, 0); } num++; } } public void addToUnreadWall(String name, String rating) { if (u_nameSignLoc.getChunk() != null && u_rateSignLoc.getChunk() != null) { Sign sign; BlockState signBlock = Bukkit.getWorld("Survival").getBlockAt(u_nameSignLoc).getState(); BlockState rateBlock = Bukkit.getWorld("Survival").getBlockAt(u_rateSignLoc).getState(); int place = ((num - 1) % 4); if (signBlock instanceof Sign) { sign = (Sign) signBlock; sign.setLine(place, name); sign.update(); } if (rateBlock instanceof Sign) { sign = (Sign) rateBlock; sign.setLine(place, ChatColor.DARK_BLUE + "Rating: " + rating); sign.update(); } if (num % 4 == 0) { u_nameSignLoc.add(0, -1, 0); u_rateSignLoc.add(0, -1, 0); } num++; } } public void addToDeniedWall(String name, String rating) { if (u_nameSignLoc.getChunk() != null && u_rateSignLoc.getChunk() != null) { Sign sign; BlockState signBlock = Bukkit.getWorld("Survival").getBlockAt(d_nameSignLoc).getState(); BlockState rateBlock = Bukkit.getWorld("Survival").getBlockAt(d_rateSignLoc).getState(); int place = ((num - 1) % 4); if (signBlock instanceof Sign) { sign = (Sign) signBlock; sign.setLine(place, name); sign.update(); } if (rateBlock instanceof Sign) { sign = (Sign) rateBlock; sign.setLine(place, ChatColor.DARK_BLUE + "Rating: " + rating); sign.update(); } if (num % 4 == 0) { d_nameSignLoc.add(0, -1, 0); d_rateSignLoc.add(0, -1, 0); } num++; } } public void clearSigns() { try { for (int x = 25; x <= 30; x++) { for (int y = 74; y >= 72; y--) { BlockState signState = p_nameSignLoc.getWorld().getBlockAt(x, y, 195).getState(); if (signState instanceof Sign) { Sign sign = (Sign) signState; sign.setLine(0, ""); sign.setLine(1, ""); sign.setLine(2, ""); sign.setLine(3, ""); sign.update(); } } } } catch (Exception e) { e.printStackTrace(); } } public void log(String info) { plugin.getLogger().info("<ModAppWall> " + info); } }