2022-04-30 09:41:17 -04:00
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.db.handlers ;
import engine.gameManager.DbManager ;
2024-04-05 07:59:44 -04:00
import engine.mbEnums ;
import engine.mbEnums.GuildHistoryType ;
2022-04-30 09:41:17 -04:00
import engine.objects.* ;
2023-06-07 13:37:43 -04:00
import engine.server.world.WorldServer ;
2022-04-30 09:41:17 -04:00
import org.joda.time.DateTime ;
import org.pmw.tinylog.Logger ;
2023-05-21 20:13:00 -04:00
import java.sql.* ;
2022-04-30 09:41:17 -04:00
import java.util.ArrayList ;
public class dbGuildHandler extends dbHandlerBase {
2023-05-23 10:27:03 -04:00
public dbGuildHandler ( ) {
this . localClass = Guild . class ;
2024-04-05 07:59:44 -04:00
this . localObjectType = mbEnums . GameObjectType . valueOf ( this . localClass . getSimpleName ( ) ) ;
2023-05-23 10:27:03 -04:00
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public static ArrayList < PlayerCharacter > GET_GUILD_BANISHED ( final int id ) {
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
return new ArrayList < > ( ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
// Bugfix
// prepareCallable("SELECT * FROM `obj_character`, `dyn_guild_banishlist` WHERE `obj_character.char_isActive` = 1 AND `dyn_guild_banishlist.CharacterID` = `obj_character.UID` AND `obj_character.GuildID`=?");
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
//prepareCallable("SELECT * FROM `obj_character` `,` `dyn_guild_banishlist` WHERE obj_character.char_isActive = 1 AND dyn_guild_banishlist.CharacterID = obj_character.UID AND dyn_guild_banishlist.GuildID = ?");
//setLong(1, (long) id);
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
//return getObjectList();
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public static void LOAD_GUILD_HISTORY_FOR_PLAYER ( PlayerCharacter playerCharacter ) {
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
if ( playerCharacter = = null )
return ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
ArrayList < GuildHistory > guildList = new ArrayList < > ( ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT * FROM `dyn_guild_allianceenemylist` WHERE `GuildID` = ? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setInt ( 1 , playerCharacter . getObjectUUID ( ) ) ;
ResultSet rs = preparedStatement . executeQuery ( ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
while ( rs . next ( ) ) {
GuildHistory guildEntry = new GuildHistory ( rs ) ;
guildList . add ( guildEntry ) ;
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
playerCharacter . setGuildHistory ( guildList ) ;
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
public int BANISH_FROM_GUILD_OFFLINE ( final int target , boolean sourceIsGuildLeader ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
String queryString ;
int rowCount ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
// Only a Guild Leader can remove inner council
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
if ( sourceIsGuildLeader )
queryString = " UPDATE `obj_character` SET `guildUID`=NULL, `guild_isInnerCouncil`=0, `guild_isTaxCollector`=0, "
+ " `guild_isRecruiter`=0, `guild_isFullMember`=0, `guild_title`=0 WHERE `UID`=? " ;
else
queryString = " UPDATE `obj_character` SET `guildUID`=NULL, `guild_isInnerCouncil`=0, `guild_isTaxCollector`=0, "
+ " `guild_isRecruiter`=0, `guild_isFullMember`=0, `guild_title`=0 WHERE `UID`=? && `guild_isInnerCouncil`=0 " ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( queryString ) ) {
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , target ) ;
rowCount = preparedStatement . executeUpdate ( ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
return 0 ;
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
return rowCount ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public boolean ADD_TO_BANISHED_FROM_GUILDLIST ( int target , long characterID ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " INSERT INTO `dyn_guild_banishlist` (`GuildID`, `CharacterID`) VALUES (?,?) " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , target ) ;
preparedStatement . setLong ( 2 , characterID ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public boolean REMOVE_FROM_BANISH_LIST ( int target , long characterID ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " DELETE FROM `dyn_guild_banishlist` (`GuildID`, `CharacterID`) VALUES (?,?) " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , target ) ;
preparedStatement . setLong ( 2 , characterID ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public boolean ADD_TO_GUILDHISTORY ( int target , PlayerCharacter playerCharacter , DateTime historyDate , GuildHistoryType historyType ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " INSERT INTO `dyn_character_guildhistory` (`GuildID`, `CharacterID`, `historyDate`, `historyType`) VALUES (?,?,?,?) " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , target ) ;
preparedStatement . setLong ( 2 , playerCharacter . getObjectUUID ( ) ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
if ( historyDate = = null )
preparedStatement . setNull ( 3 , java . sql . Types . DATE ) ;
else
preparedStatement . setTimestamp ( 3 , new Timestamp ( historyDate . getMillis ( ) ) ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setString ( 4 , historyType . name ( ) ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
//TODO Need to get this working.
public ArrayList < Guild > GET_GUILD_HISTORY_OF_PLAYER ( final int id ) {
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
ArrayList < Guild > guildList = null ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT g.* FROM `obj_guild` g, `dyn_character_guildhistory` l WHERE g.`UID` = l.`GuildID` && l.`CharacterID` = ? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , id ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
guildList = getObjectsFromRs ( rs , 20 ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
return guildList ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public ArrayList < Guild > GET_GUILD_ALLIES ( final int id ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
ArrayList < Guild > guildList = null ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT g.* FROM `obj_guild` g, `dyn_guild_allianceenemylist` l "
+ " WHERE l.isAlliance = 1 && l.OtherGuildID = g.UID && l.GuildID=? " ) ) {
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , id ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
guildList = getObjectsFromRs ( rs , 20 ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
return guildList ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
public ArrayList < Guild > GET_GUILD_ENEMIES ( final int id ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
ArrayList < Guild > guildList = null ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT g.* FROM `obj_guild` g, `dyn_guild_allianceenemylist` l "
+ " WHERE l.isAlliance = 0 && l.OtherGuildID = g.UID && l.GuildID=? " ) ) {
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , id ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
guildList = getObjectsFromRs ( rs , 20 ) ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
return guildList ;
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
}
2023-05-21 20:13:00 -04:00
2023-05-23 10:27:03 -04:00
public ArrayList < PlayerCharacter > GET_GUILD_KOS_CHARACTER ( final int id ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
ArrayList < PlayerCharacter > kosList = null ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT c.* FROM `obj_character` c, `dyn_guild_characterkoslist` l WHERE c.`char_isActive` = 1 && l.`KOSCharacterID` = c.`UID` && l.`GuildID`=? " ) ) {
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , id ) ;
ResultSet rs = preparedStatement . executeQuery ( ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
while ( rs . next ( ) ) {
int playerUUID = rs . getInt ( 1 ) ;
PlayerCharacter kosPlayer = PlayerCharacter . getPlayerCharacter ( playerUUID ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
if ( kosPlayer ! = null )
kosList . add ( kosPlayer ) ;
}
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
return kosList ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public ArrayList < Guild > GET_GUILD_KOS_GUILD ( final int id ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
ArrayList < Guild > guildList = null ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT g.* FROM `obj_guild` g, `dyn_guild_guildkoslist` l "
+ " WHERE l.KOSGuildID = g.UID && l.GuildID = ? " ) ) {
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , id ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
guildList = getObjectsFromRs ( rs , 20 ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
return guildList ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public ArrayList < Guild > GET_SUB_GUILDS ( final int guildID ) {
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
ArrayList < Guild > guildList = null ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT `obj_guild`.*, `object`.`parent` FROM `object` INNER JOIN `obj_guild` ON `obj_guild`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?; " ) ) {
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setInt ( 1 , guildID ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
guildList = getObjectsFromRs ( rs , 20 ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
return guildList ;
}
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
public Guild GET_GUILD ( int id ) {
2023-05-21 20:26:53 -04:00
2024-04-05 07:59:44 -04:00
Guild guild = ( Guild ) DbManager . getFromCache ( mbEnums . GameObjectType . Guild , id ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
if ( guild ! = null )
return guild ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
if ( id = = 0 )
return Guild . getErrantGuild ( ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT `obj_guild`.*, `object`.`parent` FROM `obj_guild` INNER JOIN `object` ON `object`.`UID` = `obj_guild`.`UID` WHERE `object`.`UID`=? " ) ) {
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , id ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
guild = ( Guild ) getObjectFromRs ( rs ) ;
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return guild ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public ArrayList < Guild > GET_ALL_GUILDS ( ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
ArrayList < Guild > guildList = null ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT `obj_guild`.*, `object`.`parent` FROM `obj_guild` INNER JOIN `object` ON `object`.`UID` = `obj_guild`.`UID` " ) ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
2023-05-23 12:53:04 -04:00
guildList = getObjectsFromRs ( rs , 100 ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return guildList ;
}
2023-05-21 20:26:53 -04:00
2023-05-23 10:27:03 -04:00
public boolean IS_CREST_UNIQUE ( final GuildTag gt ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
boolean valid = false ;
String queryString ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
// Ignore bg symbol if bg color is the same as fg color.
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
if ( gt . backgroundColor01 = = gt . backgroundColor02 )
queryString = " SELECT `name` FROM `obj_guild` WHERE `backgroundColor01`=? && `backgroundColor02`=? && `symbolColor`=? && `symbol`=?; " ;
else
queryString = " SELECT `name` FROM `obj_guild` WHERE `backgroundColor01`=? && `backgroundColor02`=? && `symbolColor`=? && `backgroundDesign`=? && `symbol`=?; " ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( queryString ) ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
if ( gt . backgroundColor01 = = gt . backgroundColor02 ) {
preparedStatement . setInt ( 1 , gt . backgroundColor01 ) ;
preparedStatement . setInt ( 2 , gt . backgroundColor02 ) ;
preparedStatement . setInt ( 3 , gt . symbolColor ) ;
preparedStatement . setInt ( 4 , gt . symbol ) ;
} else {
preparedStatement . setInt ( 1 , gt . backgroundColor01 ) ;
preparedStatement . setInt ( 2 , gt . backgroundColor02 ) ;
preparedStatement . setInt ( 3 , gt . symbolColor ) ;
preparedStatement . setInt ( 4 , gt . backgroundDesign ) ;
preparedStatement . setInt ( 5 , gt . symbol ) ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
if ( ! rs . next ( ) )
valid = true ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
return valid ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public boolean SET_GUILD_OWNED_CITY ( int guildID , int cityID ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `obj_guild` SET `ownedCity`=? WHERE `UID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , cityID ) ;
preparedStatement . setLong ( 2 , guildID ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public boolean SET_GUILD_LEADER ( int objectUUID , int guildID ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `obj_guild` SET `leaderUID`=? WHERE `UID`=? " ) ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , objectUUID ) ;
preparedStatement . setLong ( 2 , guildID ) ;
2023-05-23 09:17:06 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public boolean IS_NAME_UNIQUE ( final String name ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
boolean valid = false ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT `name` FROM `obj_guild` WHERE `name`=?; " ) ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setString ( 1 , name ) ;
ResultSet rs = preparedStatement . executeQuery ( ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
if ( ! rs . next ( ) )
valid = true ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
return valid ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public Guild SAVE_TO_DATABASE ( Guild g ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
Guild guild = null ;
GuildTag guildTag = g . getGuildTag ( ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
if ( guildTag = = null )
return null ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " CALL `guild_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) " ) ) {
2023-05-22 05:11:55 -04:00
2023-06-07 13:37:43 -04:00
preparedStatement . setLong ( 1 , WorldServer . worldUUID ) ;
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 2 , g . getGuildLeaderUUID ( ) ) ;
preparedStatement . setString ( 3 , g . getName ( ) ) ;
preparedStatement . setInt ( 4 , guildTag . backgroundColor01 ) ;
preparedStatement . setInt ( 5 , guildTag . backgroundColor02 ) ;
preparedStatement . setInt ( 6 , guildTag . symbolColor ) ;
preparedStatement . setInt ( 7 , guildTag . backgroundDesign ) ;
preparedStatement . setInt ( 8 , guildTag . symbol ) ;
2024-04-28 14:18:13 -04:00
preparedStatement . setInt ( 9 , g . charter . templateID ) ;
2023-05-23 10:27:03 -04:00
preparedStatement . setString ( 10 , g . getLeadershipType ( ) ) ;
preparedStatement . setString ( 11 , g . getMotto ( ) ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 12:24:11 -04:00
if ( rs . next ( ) ) {
int objectUUID = ( int ) rs . getLong ( " UID " ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 12:24:11 -04:00
if ( objectUUID > 0 )
guild = GET_GUILD ( objectUUID ) ;
}
2023-05-23 14:29:08 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return guild ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public boolean UPDATE_GUILD_RANK_OFFLINE ( int target , int newRank , int guildId ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `obj_character` SET `guild_title`=? WHERE `UID`=? && `guildUID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setInt ( 1 , newRank ) ;
preparedStatement . setInt ( 2 , target ) ;
preparedStatement . setInt ( 3 , guildId ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public boolean UPDATE_PARENT ( int guildUID , int parentUID ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `object` SET `parent`=? WHERE `UID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setInt ( 1 , parentUID ) ;
preparedStatement . setInt ( 2 , guildUID ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public int DELETE_GUILD ( final Guild guild ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
int row_count = 0 ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " DELETE FROM `object` WHERE `UID` = ? " ) ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , guild . getObjectUUID ( ) ) ;
row_count = preparedStatement . executeUpdate ( ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return row_count ;
}
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public boolean UPDATE_MINETIME ( int guildUID , int mineTime ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `obj_guild` SET `mineTime`=? WHERE `UID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setInt ( 1 , mineTime ) ;
preparedStatement . setInt ( 2 , guildUID ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2022-04-30 09:41:17 -04:00
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
// *** Refactor: Why are we saving tags/charter in update?
// It's not like this shit ever changes.
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
public int UPDATE_GUILD_STATUS_OFFLINE ( int target , boolean isInnerCouncil , boolean isRecruiter , boolean isTaxCollector , int guildId ) {
2023-05-22 05:11:55 -04:00
2023-05-23 10:27:03 -04:00
int updateMask = 0 ;
int row_count = 0 ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT `guild_isInnerCouncil`, `guild_isTaxCollector`, `guild_isRecruiter` FROM `obj_character` WHERE `UID`=? && `guildUID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , target ) ;
preparedStatement . setLong ( 2 , guildId ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
ResultSet rs = preparedStatement . executeQuery ( ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
//If the first query had no results, neither will the second
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
//Determine what is different
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
if ( rs . first ( ) ) {
if ( rs . getBoolean ( " guild_isInnerCouncil " ) ! = isInnerCouncil )
updateMask | = 4 ;
if ( rs . getBoolean ( " guild_isRecruiter " ) ! = isRecruiter )
updateMask | = 2 ;
if ( rs . getBoolean ( " guild_isTaxCollector " ) ! = isTaxCollector )
updateMask | = 1 ;
}
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `obj_character` SET `guild_isInnerCouncil`=?, `guild_isTaxCollector`=?, `guild_isRecruiter`=?, `guild_isFullMember`=? WHERE `UID`=? && `guildUID`=? " ) ) {
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setBoolean ( 1 , isInnerCouncil ) ;
preparedStatement . setBoolean ( 2 , isRecruiter ) ;
preparedStatement . setBoolean ( 3 , isTaxCollector ) ;
preparedStatement . setBoolean ( 4 , ( ( updateMask > 0 ) ) ) ; //If you are becoming an officer, or where an officer, your a full member...
preparedStatement . setLong ( 5 , target ) ;
preparedStatement . setLong ( 6 , guildId ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
row_count = preparedStatement . executeUpdate ( ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return row_count ;
}
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
public boolean updateDatabase ( final Guild g ) {
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `obj_guild` SET `name`=?, `backgroundColor01`=?, `backgroundColor02`=?, `symbolColor`=?, `backgroundDesign`=?, `symbol`=?, `charter`=?, `motd`=?, `icMotd`=?, `nationMotd`=?, `leaderUID`=? WHERE `UID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setString ( 1 , g . getName ( ) ) ;
preparedStatement . setInt ( 2 , g . getGuildTag ( ) . backgroundColor01 ) ;
preparedStatement . setInt ( 3 , g . getGuildTag ( ) . backgroundColor02 ) ;
preparedStatement . setInt ( 4 , g . getGuildTag ( ) . symbolColor ) ;
preparedStatement . setInt ( 5 , g . getGuildTag ( ) . backgroundDesign ) ;
preparedStatement . setInt ( 6 , g . getGuildTag ( ) . symbol ) ;
2024-04-28 14:18:13 -04:00
preparedStatement . setInt ( 7 , g . charter . templateID ) ;
2023-05-23 10:27:03 -04:00
preparedStatement . setString ( 8 , g . getMOTD ( ) ) ;
preparedStatement . setString ( 9 , g . getICMOTD ( ) ) ;
preparedStatement . setString ( 10 , " " ) ;
preparedStatement . setInt ( 11 , g . getGuildLeaderUUID ( ) ) ;
preparedStatement . setLong ( 12 , g . getObjectUUID ( ) ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
public boolean ADD_TO_ALLIANCE_LIST ( final long sourceGuildID , final long targetGuildID , boolean isRecommended , boolean isAlly , String recommender ) {
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " INSERT INTO `dyn_guild_allianceenemylist` (`GuildID`, `OtherGuildID`,`isRecommended`, `isAlliance`, `recommender`) VALUES (?,?,?,?,?) " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , sourceGuildID ) ;
preparedStatement . setLong ( 2 , targetGuildID ) ;
preparedStatement . setBoolean ( 3 , isRecommended ) ;
preparedStatement . setBoolean ( 4 , isAlly ) ;
preparedStatement . setString ( 5 , recommender ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
public boolean REMOVE_FROM_ALLIANCE_LIST ( final long sourceGuildID , long targetGuildID ) {
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " DELETE FROM `dyn_guild_allianceenemylist` WHERE `GuildID`=? AND `OtherGuildID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , sourceGuildID ) ;
preparedStatement . setLong ( 2 , targetGuildID ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
return false ;
}
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
public boolean UPDATE_RECOMMENDED ( final long sourceGuildID , long targetGuildID ) {
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `dyn_guild_allianceenemylist` SET `isRecommended` = ? WHERE `GuildID`=? AND `OtherGuildID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , sourceGuildID ) ;
preparedStatement . setLong ( 2 , targetGuildID ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
return false ;
}
}
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
public boolean UPDATE_ALLIANCE ( final long sourceGuildID , long targetGuildID , boolean isAlly ) {
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `dyn_guild_allianceenemylist` SET `isAlliance` = ? WHERE `GuildID`=? AND `OtherGuildID`=? " ) ) {
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setLong ( 1 , sourceGuildID ) ;
preparedStatement . setLong ( 2 , targetGuildID ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
return false ;
}
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public boolean UPDATE_ALLIANCE_AND_RECOMMENDED ( final long sourceGuildID , long targetGuildID , boolean isAlly ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " UPDATE `dyn_guild_allianceenemylist` SET `isRecommended` = ?, `isAlliance` = ? WHERE `GuildID`=? AND `OtherGuildID`=? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setByte ( 1 , ( byte ) 0 ) ;
preparedStatement . setBoolean ( 2 , isAlly ) ;
preparedStatement . setLong ( 3 , sourceGuildID ) ;
preparedStatement . setLong ( 4 , targetGuildID ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
return ( preparedStatement . executeUpdate ( ) > 0 ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
return false ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
public void LOAD_ALL_ALLIANCES_FOR_GUILD ( Guild guild ) {
2023-05-22 05:55:33 -04:00
2023-05-23 10:27:03 -04:00
if ( guild = = null )
return ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
try ( Connection connection = DbManager . getConnection ( ) ;
PreparedStatement preparedStatement = connection . prepareStatement ( " SELECT * FROM `dyn_guild_allianceenemylist` WHERE `GuildID` = ? " ) ) {
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
preparedStatement . setInt ( 1 , guild . getObjectUUID ( ) ) ;
ResultSet rs = preparedStatement . executeQuery ( ) ;
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
while ( rs . next ( ) ) {
GuildAlliances guildAlliance = new GuildAlliances ( rs ) ;
guild . guildAlliances . put ( guildAlliance . getAllianceGuild ( ) , guildAlliance ) ;
}
2022-04-30 09:41:17 -04:00
2023-05-23 10:27:03 -04:00
} catch ( SQLException e ) {
Logger . error ( e ) ;
}
}
2022-04-30 09:41:17 -04:00
}