Implement system to run code when an SQL error occurs, and ensure that duplicate key errors on community creation inform the community creator
This commit is contained in:
parent
ac8d8aa69c
commit
7a482c3386
@ -262,7 +262,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
||||
}
|
||||
setting.parseValueInto(newValue, community);
|
||||
//community.message(F.main(getName(), F.name(sender) + " has changed settings in " + F.name(community.getName()) + "!"));
|
||||
UtilServer.CallEvent(new CommunitySettingUpdateEvent(community));
|
||||
runSync(() -> UtilServer.CallEvent(new CommunitySettingUpdateEvent(community)));
|
||||
}
|
||||
|
||||
public void handleCommunityNameUpdate(Integer id, String sender, String name)
|
||||
@ -275,7 +275,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
||||
String oldName = community.getName();
|
||||
community.setName(name);
|
||||
community.message(F.main(getName(), F.name(sender) + " has changed the name of " + F.name(oldName) + " to " + F.name(community.getName()) + "!"));
|
||||
UtilServer.CallEvent(new CommunityNameUpdateEvent(community));
|
||||
runSync(() -> UtilServer.CallEvent(new CommunityNameUpdateEvent(community)));
|
||||
}
|
||||
|
||||
public void handleCommunityMembershipRoleUpdate(Integer id, String sender, UUID uuid, CommunityRole role)
|
||||
@ -297,7 +297,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
||||
}
|
||||
String name = member.Name;
|
||||
community.message(F.main(getName(), F.name(sender) + " has changed " + F.name(name + "'s") + " role to " + F.elem(role.getDisplay()) + " in " + F.name(community.getName()) + "!"), CommunityRole.COLEADER);
|
||||
UtilServer.CallEvent(new CommunityMembershipUpdateEvent(community));
|
||||
runSync(() -> UtilServer.CallEvent(new CommunityMembershipUpdateEvent(community)));
|
||||
}
|
||||
|
||||
public void handleCommunityMembershipUpdate(Integer id, String sender, String playerName, UUID playerUUID, Integer accountId, boolean kick, boolean leave)
|
||||
@ -337,12 +337,15 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
||||
|
||||
community.message(F.main(getName(), F.name(playerName) + " has joined " + F.name(community.getName()) + "!"));
|
||||
}
|
||||
|
||||
UtilServer.CallEvent(new CommunityMembershipUpdateEvent(community));
|
||||
if (Bukkit.getPlayer(playerUUID) != null)
|
||||
|
||||
runSync(() ->
|
||||
{
|
||||
UtilServer.CallEvent(new CommunityMemberDataUpdateEvent(Bukkit.getPlayer(playerUUID)));
|
||||
}
|
||||
UtilServer.CallEvent(new CommunityMembershipUpdateEvent(community));
|
||||
if (Bukkit.getPlayer(playerUUID) != null)
|
||||
{
|
||||
UtilServer.CallEvent(new CommunityMemberDataUpdateEvent(Bukkit.getPlayer(playerUUID)));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void handleCommunityInvite(Integer id, String sender, String targetName, UUID targetUUID)
|
||||
@ -410,7 +413,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
||||
community.getJoinRequests().put(playerUUID, new CommunityJoinRequestInfo(playerName, playerUUID, accountId));
|
||||
community.message(F.main(getName(), F.name(playerName) + " has requested to join " + F.name(community.getName()) + "!"), CommunityRole.COLEADER);
|
||||
|
||||
UtilServer.CallEvent(new CommunityJoinRequestsUpdateEvent(community));
|
||||
runSync(() -> UtilServer.CallEvent(new CommunityJoinRequestsUpdateEvent(community)));
|
||||
}
|
||||
|
||||
public void handleCommunityCloseJoinRequest(Integer id, String sender, String playerName, UUID playerUUID, Integer accountId, boolean announce)
|
||||
@ -430,7 +433,7 @@ public class CommunityManager extends MiniDbClientPlugin<CommunityMemberData>
|
||||
community.message(F.main(getName(), F.name(playerName) + "'s request to join " + F.name(community.getName()) + " has been denied by " + F.name(sender) + "!"), CommunityRole.COLEADER);
|
||||
}
|
||||
|
||||
UtilServer.CallEvent(new CommunityJoinRequestsUpdateEvent(community));
|
||||
runSync(() -> UtilServer.CallEvent(new CommunityJoinRequestsUpdateEvent(community)));
|
||||
}
|
||||
|
||||
public void handleCommunityCreation(Integer id, String name, Integer leaderId, UUID leaderUUID, String leaderName)
|
||||
|
@ -301,18 +301,19 @@ public class CommunityRepository extends MinecraftRepository
|
||||
if (resultSet.next())
|
||||
{
|
||||
int id = resultSet.getInt(1);
|
||||
executeUpdate(connection, ADD_TO_COMMUNITY, new ColumnInt("accountId", leaderAccount), new ColumnInt("communityId", id), new ColumnVarChar("communityRole", 20, CommunityRole.LEADER.toString()));
|
||||
executeUpdate(connection, ADD_TO_COMMUNITY, null, new ColumnInt("accountId", leaderAccount), new ColumnInt("communityId", id), new ColumnVarChar("communityRole", 20, CommunityRole.LEADER.toString()));
|
||||
idCallback.run(id);
|
||||
}
|
||||
else
|
||||
{
|
||||
idCallback.run(-1);
|
||||
}
|
||||
}, new ColumnVarChar("name", 15, name), new ColumnVarChar("region", 5, _us ? "US" : "EU"));
|
||||
}, () -> idCallback.run(-1), new ColumnVarChar("name", 15, name), new ColumnVarChar("region", 5, _us ? "US" : "EU"));
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
idCallback.run(-1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -320,11 +321,11 @@ public class CommunityRepository extends MinecraftRepository
|
||||
{
|
||||
try (Connection connection = getConnection())
|
||||
{
|
||||
executeUpdate(connection, "DELETE FROM communities WHERE id=?;", new ColumnInt("id", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communitySettings WHERE communityId=?;", new ColumnInt("communityId", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communityMembers WHERE communityId=?;", new ColumnInt("communityId", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communityInvites WHERE communityId=?;", new ColumnInt("communityId", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communityJoinRequests WHERE communityId=?", new ColumnInt("communityId", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communities WHERE id=?;", null, new ColumnInt("id", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communitySettings WHERE communityId=?;", null, new ColumnInt("communityId", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communityMembers WHERE communityId=?;", null, new ColumnInt("communityId", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communityInvites WHERE communityId=?;", null, new ColumnInt("communityId", communityId));
|
||||
executeUpdate(connection, "DELETE FROM communityJoinRequests WHERE communityId=?", null, new ColumnInt("communityId", communityId));
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
|
@ -76,9 +76,14 @@ public abstract class RepositoryBase
|
||||
}
|
||||
}
|
||||
|
||||
protected int executeUpdate(Connection connection, String query, Column<?>...columns)
|
||||
protected int executeUpdate(Connection connection, String query, Runnable onSQLError, Column<?>...columns)
|
||||
{
|
||||
return executeInsert(connection, query, null, columns);
|
||||
return executeInsert(connection, query, null, onSQLError, columns);
|
||||
}
|
||||
|
||||
protected int executeUpdate(String query, Runnable onSQLError, Column<?>...columns)
|
||||
{
|
||||
return executeInsert(query, null, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -92,7 +97,7 @@ public abstract class RepositoryBase
|
||||
return executeInsert(query, null, columns);
|
||||
}
|
||||
|
||||
protected int executeInsert(Connection connection, String query, ResultSetCallable callable, Column<?>...columns)
|
||||
protected int executeInsert(Connection connection, String query, ResultSetCallable callable, Runnable onSQLError, Column<?>...columns)
|
||||
{
|
||||
int affectedRows = 0;
|
||||
|
||||
@ -114,6 +119,33 @@ public abstract class RepositoryBase
|
||||
}
|
||||
}
|
||||
catch (SQLException exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
if (onSQLError != null)
|
||||
{
|
||||
onSQLError.run();
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
|
||||
return affectedRows;
|
||||
}
|
||||
|
||||
protected int executeInsert(String query, ResultSetCallable callable, Runnable onSQLError, Column<?>...columns)
|
||||
{
|
||||
int affectedRows = 0;
|
||||
|
||||
// Automatic resource management for handling/closing objects.
|
||||
try (
|
||||
Connection connection = getConnection();
|
||||
)
|
||||
{
|
||||
affectedRows = executeInsert(connection, query, callable, onSQLError, columns);
|
||||
}
|
||||
catch (SQLException exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
@ -134,7 +166,7 @@ public abstract class RepositoryBase
|
||||
Connection connection = getConnection();
|
||||
)
|
||||
{
|
||||
affectedRows = executeInsert(connection, query, callable, columns);
|
||||
affectedRows = executeInsert(connection, query, callable, null, columns);
|
||||
}
|
||||
catch (SQLException exception)
|
||||
{
|
||||
@ -148,7 +180,7 @@ public abstract class RepositoryBase
|
||||
return affectedRows;
|
||||
}
|
||||
|
||||
protected void executeQuery(PreparedStatement statement, ResultSetCallable callable, Column<?>...columns)
|
||||
protected void executeQuery(PreparedStatement statement, ResultSetCallable callable, Runnable onSQLError, Column<?>...columns)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -166,6 +198,34 @@ public abstract class RepositoryBase
|
||||
}
|
||||
}
|
||||
catch (SQLException exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
if (onSQLError != null)
|
||||
{
|
||||
onSQLError.run();
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
protected void executeQuery(PreparedStatement statement, ResultSetCallable callable, Column<?>...columns)
|
||||
{
|
||||
executeQuery(statement, callable, null, columns);
|
||||
}
|
||||
|
||||
protected void executeQuery(Connection connection, String query, ResultSetCallable callable, Runnable onSQLError, Column<?>...columns)
|
||||
{
|
||||
// Automatic resource management for handling/closing objects.
|
||||
try (
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(query)
|
||||
)
|
||||
{
|
||||
executeQuery(preparedStatement, callable, onSQLError, columns);
|
||||
}
|
||||
catch (SQLException exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
@ -194,6 +254,25 @@ public abstract class RepositoryBase
|
||||
}
|
||||
}
|
||||
|
||||
protected void executeQuery(String query, ResultSetCallable callable, Runnable onSQLError, Column<?>...columns)
|
||||
{
|
||||
// Automatic resource management for handling/closing objects.
|
||||
try (
|
||||
Connection connection = getConnection();
|
||||
)
|
||||
{
|
||||
executeQuery(connection, query, callable, onSQLError, columns);
|
||||
}
|
||||
catch (SQLException exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
protected void executeQuery(String query, ResultSetCallable callable, Column<?>...columns)
|
||||
{
|
||||
// Automatic resource management for handling/closing objects.
|
||||
|
Loading…
Reference in New Issue
Block a user