mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-02 21:41:28 +01:00
Fixed some code smells in the new code:
- Moved ServerTable#getServerUUIDsByID to NicknameLastSeenPatch - Removed unused things in UserInfoTable, Setting & RawDataResponse - Refactored FileWatcher into smaller methods - Renamed 'locale' in DateFormatter (Hiding an instance variable)
This commit is contained in:
parent
05fc528e51
commit
09f51ee087
@ -20,7 +20,9 @@ import com.djrapitops.plan.data.store.objects.Nickname;
|
||||
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.ExecStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.processing.QueryAllStatement;
|
||||
import com.djrapitops.plan.system.database.databases.sql.statements.Select;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.NicknamesTable;
|
||||
import com.djrapitops.plan.system.database.databases.sql.tables.ServerTable;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
@ -53,7 +55,7 @@ public class NicknameLastSeenPatch extends Patch {
|
||||
db.executeUnsafe("CREATE TABLE IF NOT EXISTS plan_actions " +
|
||||
"(action_id integer, date bigint, server_id integer, user_id integer, additional_info varchar(1))");
|
||||
|
||||
Map<Integer, UUID> serverUUIDsByID = db.getServerTable().getServerUUIDsByID();
|
||||
Map<Integer, UUID> serverUUIDsByID = getServerUUIDsByID();
|
||||
Map<UUID, Integer> serverIDsByUUID = new HashMap<>();
|
||||
for (Map.Entry<Integer, UUID> entry : serverUUIDsByID.entrySet()) {
|
||||
serverIDsByUUID.put(entry.getValue(), entry.getKey());
|
||||
@ -65,6 +67,24 @@ public class NicknameLastSeenPatch extends Patch {
|
||||
db.executeUnsafe("DROP TABLE plan_actions");
|
||||
}
|
||||
|
||||
private Map<Integer, UUID> getServerUUIDsByID() {
|
||||
String sql = Select.from(ServerTable.TABLE_NAME,
|
||||
ServerTable.Col.SERVER_ID, ServerTable.Col.SERVER_UUID)
|
||||
.toString();
|
||||
|
||||
return query(new QueryAllStatement<Map<Integer, UUID>>(sql) {
|
||||
@Override
|
||||
public Map<Integer, UUID> processResults(ResultSet set) throws SQLException {
|
||||
Map<Integer, UUID> uuids = new HashMap<>();
|
||||
while (set.next()) {
|
||||
int id = set.getInt(ServerTable.Col.SERVER_ID.get());
|
||||
uuids.put(id, UUID.fromString(set.getString(ServerTable.Col.SERVER_UUID.get())));
|
||||
}
|
||||
return uuids;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Map<Integer, Set<Nickname>> getNicknamesByUserID(Map<Integer, UUID> serverUUIDsByID) {
|
||||
String fetchSQL = "SELECT * FROM plan_actions WHERE action_id=3 ORDER BY date DESC";
|
||||
return query(new QueryAllStatement<Map<Integer, Set<Nickname>>>(fetchSQL, 10000) {
|
||||
|
@ -205,25 +205,6 @@ public class ServerTable extends Table {
|
||||
});
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public Map<Integer, UUID> getServerUUIDsByID() {
|
||||
String sql = Select.from(tableName,
|
||||
Col.SERVER_ID, Col.SERVER_UUID)
|
||||
.toString();
|
||||
|
||||
return query(new QueryAllStatement<Map<Integer, UUID>>(sql) {
|
||||
@Override
|
||||
public Map<Integer, UUID> processResults(ResultSet set) throws SQLException {
|
||||
Map<Integer, UUID> uuids = new HashMap<>();
|
||||
while (set.next()) {
|
||||
int id = set.getInt(Col.SERVER_ID.get());
|
||||
uuids.put(id, UUID.fromString(set.getString(Col.SERVER_UUID.get())));
|
||||
}
|
||||
return uuids;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get BungeeCord WebServer info if present.
|
||||
*
|
||||
|
@ -48,12 +48,10 @@ public class UserInfoTable extends UserUUIDTable {
|
||||
|
||||
private final String insertStatement;
|
||||
|
||||
private final ServerTable serverTable;
|
||||
private final UsersTable usersTable;
|
||||
|
||||
public UserInfoTable(SQLDB db) {
|
||||
super(TABLE_NAME, db);
|
||||
serverTable = db.getServerTable();
|
||||
usersTable = db.getUsersTable();
|
||||
insertStatement = "INSERT INTO " + tableName + " (" +
|
||||
Col.UUID + ", " +
|
||||
|
@ -29,7 +29,6 @@ import java.util.function.Predicate;
|
||||
public abstract class Setting<T> {
|
||||
|
||||
protected final String path;
|
||||
private final Type<T> type;
|
||||
private final Predicate<T> validator;
|
||||
|
||||
public Setting(String path, Class<T> type) {
|
||||
@ -46,7 +45,6 @@ public abstract class Setting<T> {
|
||||
|
||||
public Setting(String path, Type<T> type, Predicate<T> validator) {
|
||||
this.path = path;
|
||||
this.type = type;
|
||||
this.validator = validator;
|
||||
}
|
||||
|
||||
|
@ -75,7 +75,7 @@ public class RawDataResponse extends Response {
|
||||
|
||||
private List handleList(List list) {
|
||||
if (list.stream().findAny().orElse(null) instanceof DataContainer) {
|
||||
return ((List<Object>) list.stream().map((obj) -> mapToNormalMap((DataContainer) obj)).collect(Collectors.toList()));
|
||||
return (List) list.stream().map((obj) -> mapToNormalMap((DataContainer) obj)).collect(Collectors.toList());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ public class FileWatcher extends Thread {
|
||||
this.running = false;
|
||||
this.watchedFiles = watchedFiles;
|
||||
|
||||
Verify.isTrue(Files.isDirectory(folder.toPath()), () -> new IllegalArgumentException("Given File " + folder.getAbsolutePath() + " was not a folder."));
|
||||
Verify.isTrue(folder.isDirectory(), () -> new IllegalArgumentException("Given File " + folder.getAbsolutePath() + " was not a folder."));
|
||||
|
||||
watchedPath = folder.toPath();
|
||||
}
|
||||
@ -69,31 +69,7 @@ public class FileWatcher extends Thread {
|
||||
this.running = true;
|
||||
try (WatchService watcher = FileSystems.getDefault().newWatchService()) {
|
||||
watchedPath.register(watcher, ENTRY_MODIFY);
|
||||
|
||||
while (running) {
|
||||
WatchKey key = watcher.take();
|
||||
|
||||
if (key == null) {
|
||||
Thread.yield();
|
||||
continue;
|
||||
}
|
||||
|
||||
for (WatchEvent<?> event : key.pollEvents()) {
|
||||
if (event.kind() != ENTRY_MODIFY) {
|
||||
Thread.yield();
|
||||
} else {
|
||||
@SuppressWarnings("unchecked")
|
||||
Path modifiedFile = ((WatchEvent<Path>) event).context();
|
||||
|
||||
for (WatchedFile watchedFile : watchedFiles) {
|
||||
watchedFile.modified(modifiedFile);
|
||||
}
|
||||
}
|
||||
if (!key.reset()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
runLoop(watcher);
|
||||
} catch (IOException e) {
|
||||
errorHandler.log(L.ERROR, this.getClass(), e);
|
||||
} catch (InterruptedException e) {
|
||||
@ -101,6 +77,45 @@ public class FileWatcher extends Thread {
|
||||
}
|
||||
}
|
||||
|
||||
private void runLoop(WatchService watcher) throws InterruptedException {
|
||||
while (running) {
|
||||
// Blocking operation
|
||||
WatchKey key = watcher.take();
|
||||
|
||||
if (key == null) {
|
||||
Thread.yield();
|
||||
continue;
|
||||
}
|
||||
|
||||
pollEvents(key);
|
||||
}
|
||||
}
|
||||
|
||||
private void pollEvents(WatchKey key) {
|
||||
for (WatchEvent<?> event : key.pollEvents()) {
|
||||
handleEvent(event);
|
||||
if (!key.reset()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleEvent(WatchEvent<?> event) {
|
||||
if (event.kind() != ENTRY_MODIFY) {
|
||||
Thread.yield();
|
||||
} else {
|
||||
@SuppressWarnings("unchecked")
|
||||
Path modifiedFile = ((WatchEvent<Path>) event).context();
|
||||
actOnModification(modifiedFile);
|
||||
}
|
||||
}
|
||||
|
||||
private void actOnModification(Path modifiedFile) {
|
||||
for (WatchedFile watchedFile : watchedFiles) {
|
||||
watchedFile.modified(modifiedFile);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void interrupt() {
|
||||
running = false;
|
||||
|
@ -48,10 +48,10 @@ public abstract class DateFormatter implements Formatter<Long> {
|
||||
|
||||
protected String format(long epochMs, String format) {
|
||||
boolean useServerTime = config.isTrue(TimeSettings.USE_SERVER_TIME);
|
||||
String locale = config.getString(PluginSettings.LOCALE);
|
||||
java.util.Locale usedLocale = locale.equalsIgnoreCase("default")
|
||||
String localeSetting = config.getString(PluginSettings.LOCALE);
|
||||
java.util.Locale usedLocale = localeSetting.equalsIgnoreCase("default")
|
||||
? java.util.Locale.ENGLISH
|
||||
: java.util.Locale.forLanguageTag(locale);
|
||||
: java.util.Locale.forLanguageTag(localeSetting);
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat(format, usedLocale);
|
||||
TimeZone timeZone = useServerTime ? TimeZone.getDefault() : TimeZone.getTimeZone("GMT");
|
||||
dateFormat.setTimeZone(timeZone);
|
||||
|
Loading…
Reference in New Issue
Block a user