Workaround for Guild dependence on NoteDao

This commit is contained in:
P0nk
2022-12-27 11:05:00 +01:00
parent af14da987e
commit 387437cada
4 changed files with 8 additions and 19 deletions

View File

@@ -96,6 +96,7 @@ public class Server {
private static final Set<Integer> activeFly = new HashSet<>();
private static final Map<Integer, Integer> couponRates = new HashMap<>(30);
private static final List<Integer> activeCoupons = new LinkedList<>();
private static ChannelDependencies channelDependencies;
private LoginServer loginServer;
private final List<Map<Integer, String>> channels = new LinkedList<>();
@@ -843,7 +844,7 @@ public class Server {
throw new IllegalStateException("Failed to initiate a connection to the database");
}
ChannelDependencies channelDependencies = registerChannelDependencies();
channelDependencies = registerChannelDependencies();
final ExecutorService initExecutor = Executors.newFixedThreadPool(10);
// Run slow operations asynchronously to make startup faster
@@ -1181,7 +1182,7 @@ public class Server {
public void expelMember(GuildCharacter initiator, String name, int cid) {
Guild g = guilds.get(initiator.getGuildId());
if (g != null) {
g.expelMember(initiator, name, cid);
g.expelMember(initiator, name, cid, channelDependencies.noteService());
}
}

View File

@@ -24,9 +24,6 @@ package net.server.guild;
import client.Character;
import client.Client;
import config.YamlConfig;
import database.DaoException;
import database.note.NoteDao;
import model.Note;
import net.packet.Packet;
import net.server.PlayerStorage;
import net.server.Server;
@@ -37,6 +34,7 @@ import net.server.coordinator.world.InviteCoordinator.InviteResult;
import net.server.coordinator.world.InviteCoordinator.InviteType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import service.NoteService;
import tools.DatabaseConnection;
import tools.PacketCreator;
@@ -500,7 +498,7 @@ public class Guild {
}
}
public void expelMember(GuildCharacter initiator, String name, int cid) {
public void expelMember(GuildCharacter initiator, String name, int cid, NoteService noteService) {
membersLock.lock();
try {
java.util.Iterator<GuildCharacter> itr = members.iterator();
@@ -515,7 +513,7 @@ public class Guild {
if (mgc.isOnline()) {
Server.getInstance().getWorld(mgc.getWorld()).setGuildAndRank(cid, 0, 5);
} else {
sendExpelledNote(initiator.getName(), mgc.getName());
noteService.sendNormal("You have been expelled from the guild.", initiator.getName(), mgc.getName());
Server.getInstance().getWorld(mgc.getWorld()).setOfflineGuildStatus((short) 0, (byte) 5, cid);
}
} catch (Exception re) {
@@ -531,16 +529,6 @@ public class Guild {
}
}
private void sendExpelledNote(String expelledBy, String expelledChr) {
Note expelledNote = Note.createNormal("You have been expelled from the guild.", expelledBy, expelledChr,
System.currentTimeMillis());
try {
NoteDao.save(expelledNote);
} catch (DaoException e) {
log.error("Failed to save guild expel note - {} expelled from {} by {}", expelledChr, name, expelledBy, e);
}
}
public void changeRank(int cid, int newRank) {
membersLock.lock();
try {