2014-10-22 08:08:55 +02:00
/ *
* Copyright ( c ) IntellectualCrafters - 2014 . You are not allowed to distribute
* and / or monetize any of our intellectual property . IntellectualCrafters is not
* affiliated with Mojang AB . Minecraft is a trademark of Mojang AB .
*
* > > File = DBFunc . java > > Generated by : Citymonstret at 2014 - 08 - 09 01 : 43
* /
package com.intellectualcrafters.plot.database ;
2014-10-27 15:32:15 +01:00
import com.intellectualcrafters.plot.* ;
import com.intellectualcrafters.plot.Logger.LogLevel ;
2014-10-25 02:16:15 +02:00
import org.apache.commons.lang.StringUtils ;
2014-10-22 08:08:55 +02:00
import org.bukkit.Bukkit ;
import org.bukkit.OfflinePlayer ;
import org.bukkit.block.Biome ;
2014-10-27 15:32:15 +01:00
import java.sql.* ;
import java.util.* ;
import static com.intellectualcrafters.plot.PlotMain.connection ;
import static com.intellectualcrafters.plot.Settings.DB.PREFIX ;
2014-10-22 08:08:55 +02:00
/ * *
* @author Citymonstret
* /
public class SQLManager extends AbstractDB {
// TODO MongoDB @Brandon
2014-10-27 15:32:15 +01:00
public static final String SET_OWNER = " UPDATE ` " + PREFIX + " plot` SET `owner` = ? WHERE `plot_id_x` = ? AND `plot_id_z` = ? " ;
public static final String GET_ALL_PLOTS = " SELECT `id`, `plot_id_x`, `plot_id_z`, `world` FROM ` " + PREFIX + " plot` " ;
public static final String CREATE_PLOTS = " INSERT INTO ` " + PREFIX + " plot`(`plot_id_x`, `plot_id_z`, `owner`, `world`) values " ;
public static final String CREATE_SETTINGS = " INSERT INTO ` " + PREFIX + " plot_settings` (`plot_plot_id`) values " ;
public static final String CREATE_HELPERS = " INSERT INTO ` " + PREFIX + " plot_helpers` (`plot_plot_id`, `user_uuid`) values " ;
public static final String CREATE_PLOT = " INSERT INTO ` " + PREFIX + " plot`(`plot_id_x`, `plot_id_z`, `owner`, `world`) VALUES(?, ?, ?, ?) " ;
2014-10-22 08:08:55 +02:00
/ * *
* Set Plot owner
*
* @param plot
* @param uuid
* /
public void setOwner ( final Plot plot , final UUID uuid ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement statement =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( SET_OWNER ) ;
2014-10-22 08:08:55 +02:00
statement . setString ( 1 , uuid . toString ( ) ) ;
statement . setInt ( 2 , plot . id . x ) ;
statement . setInt ( 3 , plot . id . y ) ;
statement . executeUpdate ( ) ;
statement . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . DANGER , " Could not set owner for plot " + plot . id ) ;
}
}
} ) ;
}
@Override
public void createAllSettingsAndHelpers ( ArrayList < Plot > plots ) {
2014-10-28 08:54:41 +01:00
// TODO SEVERE [ More than 5000 plots will fail in a single SQLite query.
2014-10-22 08:08:55 +02:00
HashMap < String , HashMap < PlotId , Integer > > stored = new HashMap < String , HashMap < PlotId , Integer > > ( ) ;
HashMap < Integer , ArrayList < UUID > > helpers = new HashMap < Integer , ArrayList < UUID > > ( ) ;
try {
PreparedStatement stmt =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( GET_ALL_PLOTS ) ;
2014-10-22 08:08:55 +02:00
ResultSet result = stmt . executeQuery ( ) ;
while ( result . next ( ) ) {
int id = result . getInt ( " id " ) ;
int idx = result . getInt ( " plot_id_x " ) ;
int idz = result . getInt ( " plot_id_z " ) ;
String world = result . getString ( " world " ) ;
if ( ! stored . containsKey ( world ) ) {
stored . put ( world , new HashMap < PlotId , Integer > ( ) ) ;
}
stored . get ( world ) . put ( new PlotId ( idx , idz ) , id ) ;
}
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
}
for ( Plot plot : plots ) {
String world = Bukkit . getWorld ( plot . world ) . getName ( ) ;
if ( stored . containsKey ( world ) ) {
Integer id = stored . get ( world ) . get ( plot . id ) ;
if ( id ! = null ) {
helpers . put ( id , plot . helpers ) ;
}
}
}
if ( helpers . size ( ) = = 0 ) {
return ;
}
// add plot settings
Integer [ ] ids = helpers . keySet ( ) . toArray ( new Integer [ 0 ] ) ;
2014-10-27 15:32:15 +01:00
StringBuilder statement = new StringBuilder ( CREATE_SETTINGS ) ;
2014-10-22 08:08:55 +02:00
for ( int i = 0 ; i < ( ids . length - 1 ) ; i + + ) {
statement . append ( " (?), " ) ;
}
statement . append ( " (?) " ) ;
PreparedStatement stmt = null ;
try {
stmt = connection . prepareStatement ( statement . toString ( ) ) ;
for ( int i = 0 ; i < ids . length ; i + + ) {
stmt . setInt ( i + 1 , ids [ i ] ) ;
}
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
}
// add plot helpers
String prefix = " " ;
2014-10-27 15:32:15 +01:00
statement = new StringBuilder ( CREATE_HELPERS ) ;
2014-10-22 08:08:55 +02:00
for ( Integer id : helpers . keySet ( ) ) {
for ( UUID helper : helpers . get ( id ) ) {
statement . append ( prefix + " (?, ?) " ) ;
prefix = " , " ;
}
}
if ( prefix . equals ( " " ) ) {
return ;
}
try {
stmt = connection . prepareStatement ( statement . toString ( ) ) ;
int counter = 0 ;
for ( Integer id : helpers . keySet ( ) ) {
for ( UUID helper : helpers . get ( id ) ) {
stmt . setInt ( ( counter * 2 ) + 1 , id ) ;
stmt . setString ( ( counter * 2 ) + 2 , helper . toString ( ) ) ;
counter + + ;
}
}
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to set helper for plots " ) ;
e . printStackTrace ( ) ;
}
}
/ * *
* Create a plot
*
* @param plots
* /
@Override
public void createPlots ( ArrayList < Plot > plots ) {
2014-10-28 08:54:41 +01:00
// TODO SEVERE [ More than 5000 plots will fail in a single SQLite query.
2014-10-22 08:08:55 +02:00
if ( plots . size ( ) = = 0 ) {
return ;
}
StringBuilder statement =
2014-10-27 15:32:15 +01:00
new StringBuilder ( CREATE_PLOTS ) ;
2014-10-22 08:08:55 +02:00
for ( int i = 0 ; i < ( plots . size ( ) - 1 ) ; i + + ) {
2014-10-28 08:54:41 +01:00
statement . append ( " (?,?,?,?), " ) ;
2014-10-22 08:08:55 +02:00
}
2014-10-28 08:54:41 +01:00
statement . append ( " (?,?,?,?) " ) ;
2014-10-22 08:08:55 +02:00
PreparedStatement stmt = null ;
try {
stmt = connection . prepareStatement ( statement . toString ( ) ) ;
for ( int i = 0 ; i < plots . size ( ) ; i + + ) {
Plot plot = plots . get ( i ) ;
stmt . setInt ( ( i * 4 ) + 1 , plot . id . x ) ;
stmt . setInt ( ( i * 4 ) + 2 , plot . id . y ) ;
stmt . setString ( ( i * 4 ) + 3 , plot . owner . toString ( ) ) ;
stmt . setString ( ( i * 4 ) + 4 , plot . world ) ;
}
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . DANGER , " Failed to save plots! " ) ;
}
}
/ * *
* Create a plot
*
* @param plot
* /
@Override
public void createPlot ( Plot plot ) {
PreparedStatement stmt = null ;
try {
stmt =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( CREATE_PLOT ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , plot . id . x ) ;
stmt . setInt ( 2 , plot . id . y ) ;
stmt . setString ( 3 , plot . owner . toString ( ) ) ;
stmt . setString ( 4 , plot . world ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . DANGER , " Failed to save plot " + plot . id ) ;
}
}
/ * *
* Create tables
*
* @throws SQLException
* /
@Override
public void createTables ( String database , boolean add_constraint ) throws SQLException {
boolean mysql = database . equals ( " mysql " ) ;
Statement stmt = connection . createStatement ( ) ;
if ( mysql ) {
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot` ( " + " `id` INT(11) NOT NULL AUTO_INCREMENT, "
2014-10-22 08:08:55 +02:00
+ " `plot_id_x` INT(11) NOT NULL, " + " `plot_id_z` INT(11) NOT NULL, "
+ " `owner` VARCHAR(45) NOT NULL, " + " `world` VARCHAR(45) NOT NULL, "
+ " `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, " + " PRIMARY KEY (`id`) "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_denied` ( " + " `plot_plot_id` INT(11) NOT NULL, "
2014-10-22 08:08:55 +02:00
+ " `user_uuid` VARCHAR(40) NOT NULL " + " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_helpers` ( " + " `plot_plot_id` INT(11) NOT NULL, "
2014-10-22 08:08:55 +02:00
+ " `user_uuid` VARCHAR(40) NOT NULL " + " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_trusted` ( " + " `plot_plot_id` INT(11) NOT NULL, "
2014-10-22 08:08:55 +02:00
+ " `user_uuid` VARCHAR(40) NOT NULL " + " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_settings` ( " + " `plot_plot_id` INT(11) NOT NULL, "
2014-10-22 08:08:55 +02:00
+ " `biome` VARCHAR(45) DEFAULT 'FOREST', " + " `rain` INT(1) DEFAULT 0, "
+ " `custom_time` TINYINT(1) DEFAULT '0', " + " `time` INT(11) DEFAULT '8000', "
+ " `deny_entry` TINYINT(1) DEFAULT '0', " + " `alias` VARCHAR(50) DEFAULT NULL, "
+ " `flags` VARCHAR(512) DEFAULT NULL, " + " `merged` INT(11) DEFAULT NULL, "
+ " `position` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT', " + " PRIMARY KEY (`plot_plot_id`), "
+ " UNIQUE KEY `unique_alias` (`alias`) " + " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_ratings` ( `plot_plot_id` INT(11) NOT NULL, `rating` INT(2) NOT NULL, `player` VARCHAR(40) NOT NULL, PRIMARY KEY(`plot_plot_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 " ) ;
2014-10-22 08:08:55 +02:00
if ( add_constraint ) {
2014-10-28 08:54:41 +01:00
stmt . addBatch ( " ALTER TABLE ` " + PREFIX + " plot_settings` ADD CONSTRAINT ` " + PREFIX + " plot_settings_ibfk_1` FOREIGN KEY (`plot_plot_id`) REFERENCES ` " + PREFIX + " plot` (`id`) ON DELETE CASCADE " ) ;
2014-10-22 08:08:55 +02:00
}
}
else {
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot` ( " + " `id` INTEGER PRIMARY KEY AUTOINCREMENT, "
2014-10-22 08:08:55 +02:00
+ " `plot_id_x` INT(11) NOT NULL, " + " `plot_id_z` INT(11) NOT NULL, "
+ " `owner` VARCHAR(45) NOT NULL, " + " `world` VARCHAR(45) NOT NULL, "
+ " `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP) " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_denied` ( " + " `plot_plot_id` INT(11) NOT NULL, "
2014-10-22 08:08:55 +02:00
+ " `user_uuid` VARCHAR(40) NOT NULL " + " ) " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_helpers` ( " + " `plot_plot_id` INT(11) NOT NULL, "
2014-10-22 08:08:55 +02:00
+ " `user_uuid` VARCHAR(40) NOT NULL " + " ) " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_trusted` ( " + " `plot_plot_id` INT(11) NOT NULL, "
2014-10-22 08:08:55 +02:00
+ " `user_uuid` VARCHAR(40) NOT NULL " + " ) " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_settings` ( " + " `plot_plot_id` INT(11) NOT NULL, "
2014-10-22 08:08:55 +02:00
+ " `biome` VARCHAR(45) DEFAULT 'FOREST', " + " `rain` INT(1) DEFAULT 0, "
+ " `custom_time` TINYINT(1) DEFAULT '0', " + " `time` INT(11) DEFAULT '8000', "
+ " `deny_entry` TINYINT(1) DEFAULT '0', " + " `alias` VARCHAR(50) DEFAULT NULL, "
+ " `flags` VARCHAR(512) DEFAULT NULL, " + " `merged` INT(11) DEFAULT NULL, "
+ " `position` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT', " + " PRIMARY KEY (`plot_plot_id`) " + " ) " ) ;
2014-10-27 15:32:15 +01:00
stmt . addBatch ( " CREATE TABLE IF NOT EXISTS ` " + PREFIX + " plot_ratings` (`plot_plot_id` INT(11) NOT NULL, `rating` INT(2) NOT NULL, `player` VARCHAR(40) NOT NULL, PRIMARY KEY(`plot_plot_id`)) " ) ;
2014-10-22 08:08:55 +02:00
}
stmt . executeBatch ( ) ;
stmt . clearBatch ( ) ;
stmt . close ( ) ;
}
/ * *
* Delete a plot
*
* @param plot
* /
@Override
public void delete ( final String world , final Plot plot ) {
PlotMain . removePlot ( world , plot . id , false ) ;
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
PreparedStatement stmt = null ;
int id = getId ( world , plot . id ) ;
try {
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_settings` WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , id ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_helpers` WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , id ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_trusted` WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , id ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot` WHERE `id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , id ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . DANGER , " Failed to delete plot " + plot . id ) ;
}
}
} ) ;
}
/ * *
* Create plot settings
*
* @param id
* @param plot
* /
@Override
public void createPlotSettings ( final int id , final Plot plot ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
PreparedStatement stmt = null ;
try {
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " INSERT INTO ` " + PREFIX + " plot_settings`(`plot_plot_id`) VALUES( " + " ?) " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , id ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
}
}
} ) ;
}
@Override
public int getId ( String world , PlotId id2 ) {
PreparedStatement stmt = null ;
try {
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " SELECT `id` FROM ` " + PREFIX + " plot` WHERE `plot_id_x` = ? AND `plot_id_z` = ? AND world = ? ORDER BY `timestamp` ASC " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , id2 . x ) ;
stmt . setInt ( 2 , id2 . y ) ;
stmt . setString ( 3 , world ) ;
ResultSet r = stmt . executeQuery ( ) ;
int id = Integer . MAX_VALUE ;
while ( r . next ( ) ) {
id = r . getInt ( " id " ) ;
}
stmt . close ( ) ;
return id ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
}
return Integer . MAX_VALUE ;
}
/ * *
* @return
* /
@Override
public HashMap < String , HashMap < PlotId , Plot > > getPlots ( ) {
2014-10-28 08:54:41 +01:00
HashMap < String , HashMap < PlotId , Plot > > newplots = new HashMap < String , HashMap < PlotId , Plot > > ( ) ;
2014-10-22 08:08:55 +02:00
try {
DatabaseMetaData data = connection . getMetaData ( ) ;
2014-10-28 08:54:41 +01:00
ResultSet rs = data . getColumns ( null , null , PREFIX + " plot " , " plot_id " ) ;
2014-10-22 08:08:55 +02:00
boolean execute = rs . next ( ) ;
if ( execute ) {
Statement statement = connection . createStatement ( ) ;
2014-10-27 15:32:15 +01:00
statement . addBatch ( " ALTER IGNORE TABLE ` " + PREFIX + " plot` ADD `plot_id_x` int(11) DEFAULT 0 " ) ;
statement . addBatch ( " ALTER IGNORE TABLE ` " + PREFIX + " plot` ADD `plot_id_z` int(11) DEFAULT 0 " ) ;
2014-10-28 08:54:41 +01:00
statement . addBatch ( " UPDATE ` " + PREFIX + " plot` SET \ n " + " `plot_id_x` = IF( "
2014-10-22 08:08:55 +02:00
+ " LOCATE(';', `plot_id`) > 0, "
+ " SUBSTRING(`plot_id`, 1, LOCATE(';', `plot_id`) - 1), " + " `plot_id` "
+ " ), " + " `plot_id_z` = IF( " + " LOCATE(';', `plot_id`) > 0, "
+ " SUBSTRING(`plot_id`, LOCATE(';', `plot_id`) + 1), " + " NULL " + " ) " ) ;
2014-10-27 15:32:15 +01:00
statement . addBatch ( " ALTER TABLE ` " + PREFIX + " plot` DROP `plot_id` " ) ;
statement . addBatch ( " ALTER IGNORE TABLE ` " + PREFIX + " plot_settings` ADD `flags` VARCHAR(512) DEFAULT NULL " ) ;
2014-10-22 08:08:55 +02:00
statement . executeBatch ( ) ;
statement . close ( ) ;
}
2014-10-28 08:54:41 +01:00
rs = data . getColumns ( null , null , PREFIX + " plot_settings " , " merged " ) ;
2014-10-22 08:08:55 +02:00
if ( ! rs . next ( ) ) {
Statement statement = connection . createStatement ( ) ;
2014-10-27 15:32:15 +01:00
statement . addBatch ( " ALTER TABLE ` " + PREFIX + " plot_settings` ADD `merged` int(11) DEFAULT NULL " ) ;
2014-10-22 08:08:55 +02:00
statement . executeBatch ( ) ;
statement . close ( ) ;
}
}
catch ( Exception e ) {
e . printStackTrace ( ) ;
}
2014-10-28 08:54:41 +01:00
HashMap < Integer , Plot > plots = new HashMap < Integer , Plot > ( ) ;
2014-10-22 08:08:55 +02:00
Statement stmt = null ;
try {
Set < String > worlds = new HashSet < String > ( ) ;
if ( PlotMain . config . contains ( " worlds " ) ) {
worlds = PlotMain . config . getConfigurationSection ( " worlds " ) . getKeys ( false ) ;
}
2014-10-28 08:54:41 +01:00
HashMap < String , UUID > uuids = new HashMap < String , UUID > ( ) ;
HashMap < String , Integer > noExist = new HashMap < String , Integer > ( ) ;
/ *
* Getting plots
* /
2014-10-22 08:08:55 +02:00
stmt = connection . createStatement ( ) ;
2014-10-27 15:32:15 +01:00
ResultSet r = stmt . executeQuery ( " SELECT `id`, `plot_id_x`, `plot_id_z`, `owner`, `world` FROM ` " + PREFIX + " plot` " ) ;
2014-10-22 08:08:55 +02:00
PlotId plot_id ;
int id ;
Plot p ;
2014-10-28 08:54:41 +01:00
String o ;
UUID user ;
2014-10-22 08:08:55 +02:00
while ( r . next ( ) ) {
plot_id = new PlotId ( r . getInt ( " plot_id_x " ) , r . getInt ( " plot_id_z " ) ) ;
id = r . getInt ( " id " ) ;
String worldname = r . getString ( " world " ) ;
2014-10-28 08:54:41 +01:00
if ( ! worlds . contains ( worldname ) ) {
if ( noExist . containsKey ( worldname ) ) {
noExist . put ( worldname , noExist . get ( worldname ) + 1 ) ;
}
else {
noExist . put ( worldname , 1 ) ;
}
2014-10-22 08:08:55 +02:00
}
2014-10-28 08:54:41 +01:00
o = r . getString ( " owner " ) ;
user = uuids . get ( o ) ;
if ( user = = null ) {
user = UUID . fromString ( o ) ;
uuids . put ( o , user ) ;
2014-10-22 08:08:55 +02:00
}
2014-10-31 23:29:08 +01:00
p = new Plot ( plot_id , user , Biome . FOREST , new ArrayList < UUID > ( ) , new ArrayList < UUID > ( ) , new ArrayList < UUID > ( ) , " " , PlotHomePosition . DEFAULT , null , worldname , new boolean [ ] { false , false , false , false } ) ;
2014-10-28 08:54:41 +01:00
plots . put ( id , p ) ;
2014-10-22 08:08:55 +02:00
}
2014-10-28 08:54:41 +01:00
stmt . close ( ) ;
/ *
* Getting helpers
* /
stmt = connection . createStatement ( ) ;
r = stmt . executeQuery ( " SELECT `user_uuid`, `plot_plot_id` FROM ` " + PREFIX + " plot_helpers` " ) ;
while ( r . next ( ) ) {
id = r . getInt ( " plot_plot_id " ) ;
o = r . getString ( " user_uuid " ) ;
user = uuids . get ( o ) ;
if ( user = = null ) {
user = UUID . fromString ( o ) ;
uuids . put ( o , user ) ;
}
Plot plot = plots . get ( id ) ;
if ( plot ! = null ) {
plot . addHelper ( user ) ;
}
else {
PlotMain . sendConsoleSenderMessage ( " &cPLOT " + id + " in plot_helpers does not exist. Please create the plot or remove this entry. " ) ;
}
}
stmt . close ( ) ;
/ *
* Getting trusted
* /
stmt = connection . createStatement ( ) ;
r = stmt . executeQuery ( " SELECT `user_uuid`, `plot_plot_id` FROM ` " + PREFIX + " plot_trusted` " ) ;
while ( r . next ( ) ) {
id = r . getInt ( " plot_plot_id " ) ;
o = r . getString ( " user_uuid " ) ;
user = uuids . get ( o ) ;
if ( user = = null ) {
user = UUID . fromString ( o ) ;
uuids . put ( o , user ) ;
}
Plot plot = plots . get ( id ) ;
if ( plot ! = null ) {
plot . addTrusted ( user ) ;
}
else {
PlotMain . sendConsoleSenderMessage ( " &cPLOT " + id + " in plot_trusted does not exist. Please create the plot or remove this entry. " ) ;
}
}
stmt . close ( ) ;
/ *
* Getting denied
* /
stmt = connection . createStatement ( ) ;
r = stmt . executeQuery ( " SELECT `user_uuid`, `plot_plot_id` FROM ` " + PREFIX + " plot_denied` " ) ;
while ( r . next ( ) ) {
id = r . getInt ( " plot_plot_id " ) ;
o = r . getString ( " user_uuid " ) ;
user = uuids . get ( o ) ;
if ( user = = null ) {
user = UUID . fromString ( o ) ;
uuids . put ( o , user ) ;
}
Plot plot = plots . get ( id ) ;
if ( plot ! = null ) {
plot . addDenied ( user ) ;
}
else {
PlotMain . sendConsoleSenderMessage ( " &cPLOT " + id + " in plot_denied does not exist. Please create the plot or remove this entry. " ) ;
}
}
stmt . close ( ) ;
stmt = connection . createStatement ( ) ;
r = stmt . executeQuery ( " SELECT * FROM ` " + PREFIX + " plot_settings` " ) ;
String var ;
Object val ;
while ( r . next ( ) ) {
id = r . getInt ( " plot_plot_id " ) ;
Plot plot = plots . get ( id ) ;
if ( plot ! = null ) {
String b = r . getString ( " biome " ) ;
Biome biome = null ;
if ( b ! = null ) {
for ( Biome mybiome : Biome . values ( ) ) {
if ( mybiome . toString ( ) . equalsIgnoreCase ( b ) ) {
biome = mybiome ;
break ;
}
}
}
if ( biome = = null ) {
biome = Biome . FOREST ;
}
plot . settings . setBiome ( biome ) ;
String alias = r . getString ( " alias " ) ;
if ( alias ! = null ) {
plot . settings . setAlias ( alias ) ;
}
PlotHomePosition position = null ;
String pos = r . getString ( " position " ) ;
if ( pos ! = null ) {
for ( PlotHomePosition plotHomePosition : PlotHomePosition . values ( ) ) {
if ( plotHomePosition . isMatching ( pos ) ) {
if ( plotHomePosition ! = PlotHomePosition . DEFAULT ) {
plot . settings . setPosition ( plotHomePosition ) ;
}
break ;
}
}
}
Integer m = r . getInt ( " merged " ) ;
if ( m ! = null ) {
boolean [ ] merged = new boolean [ 4 ] ;
for ( int i = 0 ; i < 4 ; i + + ) {
merged [ 3 - i ] = ( ( ( int ) m ) & ( 1 < < i ) ) ! = 0 ;
}
plot . settings . setMerged ( merged ) ;
}
else {
plot . settings . setMerged ( new boolean [ ] { false , false , false , false } ) ;
}
String [ ] flags_string ;
String myflags = r . getString ( " flags " ) ;
if ( myflags = = null ) {
flags_string = new String [ ] { } ;
}
else {
flags_string = myflags . split ( " , " ) ;
}
ArrayList < Flag > flags = new ArrayList < Flag > ( ) ;
boolean exception = false ;
for ( int i = 0 ; i < flags_string . length ; i + + ) {
if ( flags_string [ i ] . contains ( " : " ) ) {
String [ ] split = flags_string [ i ] . split ( " : " ) ;
try {
flags . add ( new Flag ( FlagManager . getFlag ( split [ 0 ] , true ) , split [ 1 ] ) ) ;
}
catch ( Exception e ) {
exception = true ;
}
}
else {
flags . add ( new Flag ( FlagManager . getFlag ( flags_string [ i ] , true ) , " " ) ) ;
}
}
if ( exception ) {
PlotMain . sendConsoleSenderMessage ( " &cPlot " + id + " had an invalid flag. A fix has been attempted. " ) ;
setFlags ( id , flags . toArray ( new Flag [ 0 ] ) ) ;
}
plot . settings . setFlags ( flags . toArray ( new Flag [ 0 ] ) ) ;
}
else {
PlotMain . sendConsoleSenderMessage ( " &cPLOT " + id + " in plot_settings does not exist. Please create the plot or remove this entry. " ) ;
}
}
stmt . close ( ) ;
for ( Plot plot : plots . values ( ) ) {
String world = plot . world ;
if ( ! newplots . containsKey ( world ) ) {
newplots . put ( world , new HashMap < PlotId , Plot > ( ) ) ;
}
newplots . get ( world ) . put ( plot . id , plot ) ;
}
2014-10-22 08:08:55 +02:00
for ( String worldname : noExist . keySet ( ) ) {
PlotMain . sendConsoleSenderMessage ( " &c[WARNING] Found " + noExist . get ( worldname ) + " plots in DB for non existant world; ' " + worldname + " '!!! \ n&c - Please create this world, or remove the plots from the DB using the purge command! " ) ;
}
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to load plots. " ) ;
e . printStackTrace ( ) ;
}
2014-10-28 08:54:41 +01:00
return newplots ;
2014-10-22 08:08:55 +02:00
}
@Override
public void setMerged ( final String world , final Plot plot , final boolean [ ] merged ) {
plot . settings . setMerged ( merged ) ;
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
int n = 0 ;
for ( int i = 0 ; i < 4 ; + + i ) {
n = ( n < < 1 ) + ( merged [ i ] ? 1 : 0 ) ;
}
PreparedStatement stmt =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " UPDATE ` " + PREFIX + " plot_settings` SET `merged` = ? WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , n ) ;
stmt . setInt ( 2 , getId ( world , plot . id ) ) ;
stmt . execute ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . WARNING , " Could not set merged for plot " + plot . id ) ;
}
}
} ) ;
}
@Override
public void setFlags ( final String world , final Plot plot , final Flag [ ] flags ) {
plot . settings . setFlags ( flags ) ;
final StringBuilder flag_string = new StringBuilder ( ) ;
int i = 0 ;
for ( Flag flag : flags ) {
if ( i ! = 0 ) {
flag_string . append ( " , " ) ;
}
flag_string . append ( flag . getKey ( ) + " : " + flag . getValue ( ) ) ;
i + + ;
}
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement stmt =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " UPDATE ` " + PREFIX + " plot_settings` SET `flags` = ? WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setString ( 1 , flag_string . toString ( ) ) ;
stmt . setInt ( 2 , getId ( world , plot . id ) ) ;
stmt . execute ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . WARNING , " Could not set flag for plot " + plot . id ) ;
}
}
} ) ;
}
2014-10-25 02:16:15 +02:00
2014-10-28 08:54:41 +01:00
public void setFlags ( final int id , final Flag [ ] flags ) {
2014-10-25 02:16:15 +02:00
ArrayList < Flag > newflags = new ArrayList < Flag > ( ) ;
for ( Flag flag : flags ) {
if ( flag ! = null & & flag . getKey ( ) ! = null & & ! flag . getKey ( ) . equals ( " " ) ) {
newflags . add ( flag ) ;
}
}
final String flag_string = StringUtils . join ( newflags , " , " ) ;
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement stmt =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " UPDATE ` " + PREFIX + " plot_settings` SET `flags` = ? WHERE `plot_plot_id` = ? " ) ;
2014-10-25 02:16:15 +02:00
stmt . setString ( 1 , flag_string ) ;
stmt . setInt ( 2 , id ) ;
stmt . execute ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . WARNING , " Could not set flag for plot " + id ) ;
}
}
} ) ;
}
2014-10-22 08:08:55 +02:00
/ * *
* @param plot
* @param alias
* /
@Override
public void setAlias ( final String world , final Plot plot , final String alias ) {
plot . settings . setAlias ( alias ) ;
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
PreparedStatement stmt = null ;
try {
stmt =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " UPDATE ` " + PREFIX + " plot_settings` SET `alias` = ? WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setString ( 1 , alias ) ;
stmt . setInt ( 2 , getId ( world , plot . id ) ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to set alias for plot " + plot . id ) ;
e . printStackTrace ( ) ;
}
}
} ) ;
}
/ * *
* @param r
* /
private void runTask ( Runnable r ) {
PlotMain . getMain ( ) . getServer ( ) . getScheduler ( ) . runTaskAsynchronously ( PlotMain . getMain ( ) , r ) ;
}
@Override
public void purge ( final String world , final PlotId id ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
ArrayList < Integer > ids = new ArrayList < Integer > ( ) ;
// Fetching a list of plot IDs for a world
try {
2014-10-27 15:32:15 +01:00
PreparedStatement stmt = connection . prepareStatement ( " SELECT `id` FROM ` " + PREFIX + " plot` WHERE `world` = ? AND `plot_id_x` = ? AND `plot_id_z` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setString ( 1 , world ) ;
stmt . setInt ( 2 , id . x ) ;
stmt . setInt ( 3 , id . y ) ;
ResultSet result = stmt . executeQuery ( ) ;
while ( result . next ( ) ) {
int id = result . getInt ( " id " ) ;
ids . add ( id ) ;
}
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . WARNING , " FAILED TO PURGE WORLD ' " + world + " '! " ) ;
return ;
}
if ( ids . size ( ) > 0 ) {
try {
String prefix = " " ;
StringBuilder idstr = new StringBuilder ( " " ) ;
for ( Integer id : ids ) {
idstr . append ( prefix + id ) ;
prefix = " OR `plot_plot_id` = " ;
}
2014-10-27 15:32:15 +01:00
PreparedStatement stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_helpers` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_denied` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_settings` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_trusted` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . setString ( 1 , world ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . DANGER , " FAILED TO PURGE PLOT FROM DB ' " + world + " ' , ' " + id + " ' ! " ) ;
return ;
}
}
Logger . add ( LogLevel . GENERAL , " SUCCESSFULLY PURGED PLOT FROM DB ' " + world + " ' , ' " + id + " '! " ) ;
}
} ) ;
}
@Override
public void purge ( final String world ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
ArrayList < Integer > ids = new ArrayList < Integer > ( ) ;
// Fetching a list of plot IDs for a world
try {
2014-10-27 15:32:15 +01:00
PreparedStatement stmt = connection . prepareStatement ( " SELECT `id` FROM ` " + PREFIX + " plot` WHERE `world` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setString ( 1 , world ) ;
ResultSet result = stmt . executeQuery ( ) ;
while ( result . next ( ) ) {
int id = result . getInt ( " id " ) ;
ids . add ( id ) ;
}
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . WARNING , " FAILED TO PURGE WORLD ' " + world + " '! " ) ;
return ;
}
if ( ids . size ( ) > 0 ) {
try {
String prefix = " " ;
StringBuilder idstr = new StringBuilder ( " " ) ;
for ( Integer id : ids ) {
idstr . append ( prefix + id ) ;
prefix = " OR `plot_plot_id` = " ;
}
2014-10-27 15:32:15 +01:00
PreparedStatement stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_helpers` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_denied` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_settings` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_trusted` WHERE `plot_plot_id` = " + idstr + " " ) ;
2014-10-22 08:08:55 +02:00
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot` WHERE `world` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setString ( 1 , world ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . DANGER , " FAILED TO PURGE WORLD ' " + world + " '! " ) ;
return ;
}
}
Logger . add ( LogLevel . GENERAL , " SUCCESSFULLY PURGED WORLD ' " + world + " '! " ) ;
}
} ) ;
}
/ * *
* @param plot
* @param position
* /
@Override
public void setPosition ( final String world , final Plot plot , final String position ) {
plot . settings . setPosition ( PlotHomePosition . valueOf ( position ) ) ;
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
PreparedStatement stmt = null ;
try {
stmt =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " UPDATE ` " + PREFIX + " plot_settings` SET `position` = ? WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setString ( 1 , position ) ;
stmt . setInt ( 2 , getId ( world , plot . id ) ) ;
stmt . executeUpdate ( ) ;
stmt . close ( ) ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to set position for plot " + plot . id ) ;
e . printStackTrace ( ) ;
}
}
} ) ;
}
/ * *
* @param id
* @return
* /
@Override
public HashMap < String , Object > getSettings ( int id ) {
HashMap < String , Object > h = new HashMap < String , Object > ( ) ;
PreparedStatement stmt = null ;
try {
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " SELECT * FROM ` " + PREFIX + " plot_settings` WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , id ) ;
ResultSet r = stmt . executeQuery ( ) ;
String var ;
Object val ;
while ( r . next ( ) ) {
var = " biome " ;
val = r . getObject ( var ) ;
h . put ( var , val ) ;
var = " rain " ;
val = r . getObject ( var ) ;
h . put ( var , val ) ;
var = " custom_time " ;
val = r . getObject ( var ) ;
h . put ( var , val ) ;
var = " time " ;
val = r . getObject ( var ) ;
h . put ( var , val ) ;
var = " deny_entry " ;
val = r . getObject ( var ) ;
h . put ( var , ( short ) 0 ) ;
var = " alias " ;
val = r . getObject ( var ) ;
h . put ( var , val ) ;
var = " position " ;
val = r . getObject ( var ) ;
h . put ( var , val ) ;
var = " flags " ;
val = r . getObject ( var ) ;
h . put ( var , val ) ;
var = " merged " ;
val = r . getObject ( var ) ;
h . put ( var , val ) ;
}
stmt . close ( ) ;
;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to load settings for plot: " + id ) ;
e . printStackTrace ( ) ;
}
return h ;
}
/ * *
* @param id
* @return
* /
private ArrayList < UUID > plotDenied ( int id ) {
ArrayList < UUID > l = new ArrayList < UUID > ( ) ;
PreparedStatement stmt = null ;
try {
2014-10-27 15:32:15 +01:00
stmt = connection . prepareStatement ( " SELECT `user_uuid` FROM ` " + PREFIX + " plot_denied` WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
stmt . setInt ( 1 , id ) ;
ResultSet r = stmt . executeQuery ( ) ;
UUID u ;
while ( r . next ( ) ) {
u = UUID . fromString ( r . getString ( " user_uuid " ) ) ;
l . add ( u ) ;
}
stmt . close ( ) ;
}
catch ( Exception e ) {
Logger . add ( LogLevel . DANGER , " Failed to load denied for plot: " + id ) ;
e . printStackTrace ( ) ;
}
return l ;
}
/ * *
* @param id
* @return
* /
private ArrayList < UUID > plotHelpers ( int id ) {
ArrayList < UUID > l = new ArrayList < UUID > ( ) ;
Statement stmt = null ;
try {
stmt = connection . createStatement ( ) ;
2014-10-27 15:32:15 +01:00
ResultSet r = stmt . executeQuery ( " SELECT `user_uuid` FROM ` " + PREFIX + " plot_helpers` WHERE `plot_plot_id` = " + id ) ;
2014-10-22 08:08:55 +02:00
UUID u ;
while ( r . next ( ) ) {
u = UUID . fromString ( r . getString ( " user_uuid " ) ) ;
l . add ( u ) ;
}
stmt . close ( ) ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to load helpers for plot: " + id ) ;
e . printStackTrace ( ) ;
}
return l ;
}
/ * *
* @param id
* @return
* /
private ArrayList < UUID > plotTrusted ( int id ) {
ArrayList < UUID > l = new ArrayList < UUID > ( ) ;
Statement stmt = null ;
try {
stmt = connection . createStatement ( ) ;
2014-10-27 15:32:15 +01:00
ResultSet r = stmt . executeQuery ( " SELECT `user_uuid` FROM ` " + PREFIX + " plot_trusted` WHERE `plot_plot_id` = " + id ) ;
2014-10-22 08:08:55 +02:00
UUID u ;
while ( r . next ( ) ) {
u = UUID . fromString ( r . getString ( " user_uuid " ) ) ;
l . add ( u ) ;
}
stmt . close ( ) ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to load trusted users for plot: " + id ) ;
e . printStackTrace ( ) ;
}
return l ;
}
/ * *
* @param plot
* @param player
* /
@Override
public void removeHelper ( final String world , final Plot plot , final OfflinePlayer player ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement statement =
2014-10-30 12:32:04 +01:00
connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_helpers` WHERE `plot_plot_id` = ? AND `user_uuid` = ? " ) ;
2014-10-22 08:08:55 +02:00
statement . setInt ( 1 , getId ( world , plot . id ) ) ;
statement . setString ( 2 , player . getUniqueId ( ) . toString ( ) ) ;
statement . executeUpdate ( ) ;
statement . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . WARNING , " Failed to remove helper for plot " + plot . id ) ;
}
}
} ) ;
}
/ * *
* @param plot
* @param player
* /
@Override
public void removeTrusted ( final String world , final Plot plot , final OfflinePlayer player ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement statement =
2014-10-28 08:54:41 +01:00
connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_trusted` WHERE `plot_plot_id` = ? AND `user_uuid` = ? " ) ;
2014-10-22 08:08:55 +02:00
statement . setInt ( 1 , getId ( world , plot . id ) ) ;
statement . setString ( 2 , player . getUniqueId ( ) . toString ( ) ) ;
statement . executeUpdate ( ) ;
statement . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . WARNING , " Failed to remove trusted user for plot " + plot . id ) ;
}
}
} ) ;
}
/ * *
* @param plot
* @param player
* /
@Override
public void setHelper ( final String world , final Plot plot , final OfflinePlayer player ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement statement =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " INSERT INTO ` " + PREFIX + " plot_helpers` (`plot_plot_id`, `user_uuid`) VALUES(?,?) " ) ;
2014-10-22 08:08:55 +02:00
statement . setInt ( 1 , getId ( world , plot . id ) ) ;
statement . setString ( 2 , player . getUniqueId ( ) . toString ( ) ) ;
statement . executeUpdate ( ) ;
statement . close ( ) ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to set helper for plot " + plot . id ) ;
e . printStackTrace ( ) ;
}
}
} ) ;
}
/ * *
* @param plot
* @param player
* /
@Override
public void setTrusted ( final String world , final Plot plot , final OfflinePlayer player ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement statement =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " INSERT INTO ` " + PREFIX + " plot_trusted` (`plot_plot_id`, `user_uuid`) VALUES(?,?) " ) ;
2014-10-22 08:08:55 +02:00
statement . setInt ( 1 , getId ( world , plot . id ) ) ;
statement . setString ( 2 , player . getUniqueId ( ) . toString ( ) ) ;
statement . executeUpdate ( ) ;
statement . close ( ) ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to set plot trusted for plot " + plot . id ) ;
e . printStackTrace ( ) ;
}
}
} ) ;
}
/ * *
* @param plot
* @param player
* /
@Override
public void removeDenied ( final String world , final Plot plot , final OfflinePlayer player ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement statement =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " DELETE FROM ` " + PREFIX + " plot_denied` WHERE `plot_plot_id` = ? AND `user_uuid` = ? " ) ;
2014-10-22 08:08:55 +02:00
statement . setInt ( 1 , getId ( world , plot . id ) ) ;
statement . setString ( 2 , player . getUniqueId ( ) . toString ( ) ) ;
statement . executeUpdate ( ) ;
statement . close ( ) ;
}
catch ( SQLException e ) {
e . printStackTrace ( ) ;
Logger . add ( LogLevel . WARNING , " Failed to remove denied for plot " + plot . id ) ;
}
}
} ) ;
}
/ * *
* @param plot
* @param player
* /
@Override
public void setDenied ( final String world , final Plot plot , final OfflinePlayer player ) {
runTask ( new Runnable ( ) {
@Override
public void run ( ) {
try {
PreparedStatement statement =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " INSERT INTO ` " + PREFIX + " plot_denied` (`plot_plot_id`, `user_uuid`) VALUES(?,?) " ) ;
2014-10-22 08:08:55 +02:00
statement . setInt ( 1 , getId ( world , plot . id ) ) ;
statement . setString ( 2 , player . getUniqueId ( ) . toString ( ) ) ;
statement . executeUpdate ( ) ;
statement . close ( ) ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to set denied for plot " + plot . id ) ;
e . printStackTrace ( ) ;
}
}
} ) ;
}
@Override
public double getRatings ( final Plot plot ) {
try {
PreparedStatement statement =
2014-10-27 15:32:15 +01:00
connection . prepareStatement ( " SELECT AVG(`rating`) AS `rating` FROM ` " + PREFIX + " plot_ratings` WHERE `plot_plot_id` = ? " ) ;
2014-10-22 08:08:55 +02:00
statement . setInt ( 1 , getId ( plot . getWorld ( ) . getName ( ) , plot . id ) ) ;
ResultSet set = statement . executeQuery ( ) ;
double rating = 0 ;
while ( set . next ( ) ) {
rating = set . getDouble ( " rating " ) ;
}
statement . close ( ) ;
return rating ;
}
catch ( SQLException e ) {
Logger . add ( LogLevel . WARNING , " Failed to fetch rating for plot " + plot . getId ( ) . toString ( ) ) ;
e . printStackTrace ( ) ;
}
return 0 . 0d ;
}
}