Skip to content

Commit

Permalink
Implement import with timesAutoWhitelisted
Browse files Browse the repository at this point in the history
  • Loading branch information
voidpointer0x00 committed Apr 15, 2023
1 parent a72b349 commit 5d7ea41
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
import voidpointer.spigot.framework.di.Autowired;
import voidpointer.spigot.framework.localemodule.Locale;
import voidpointer.spigot.framework.localemodule.annotation.AutowiredLocale;
import voidpointer.spigot.voidwhitelist.TimesAutoWhitelistedNumber;
import voidpointer.spigot.voidwhitelist.Whitelistable;
import voidpointer.spigot.voidwhitelist.command.arg.Args;
import voidpointer.spigot.voidwhitelist.command.arg.ImportOptions;
import voidpointer.spigot.voidwhitelist.event.EventManager;
Expand All @@ -26,7 +28,9 @@
import voidpointer.spigot.voidwhitelist.storage.db.OrmliteWhitelistService;
import voidpointer.spigot.voidwhitelist.storage.json.JsonWhitelistService;

import java.util.Collection;
import java.util.List;
import java.util.Set;

import static java.lang.System.currentTimeMillis;
import static java.util.Collections.emptyList;
Expand Down Expand Up @@ -68,16 +72,21 @@ private void importJson(final Args args) {
.set("loaded", json.getWhitelist().size())
.set("storage", WHITELIST_FILE_NAME)
.send(args.getSender());
OrmliteWhitelistService database = (OrmliteWhitelistService) whitelistService;
final int importedInTotal;
if (args.hasOption(REPLACE))
importedInTotal = database.addAllReplacing(json.getWhitelist()).join();
else
importedInTotal = database.addAllIfNotExists(json.getWhitelist()).join();
final OrmliteWhitelistService database = (OrmliteWhitelistService) whitelistService;
final Set<Whitelistable> whitelist = json.getWhitelist();
final Collection<TimesAutoWhitelistedNumber> autoWhitelist = json.getAutoWhitelist().values();
final int whitelistImportedInTotal, autoWhitelistImportedInTotal;
if (args.hasOption(REPLACE)) {
whitelistImportedInTotal = database.addAllReplacing(whitelist).join();
autoWhitelistImportedInTotal = database.addAllAutoReplacing(autoWhitelist).join();
} else {
whitelistImportedInTotal = database.addAllIfNotExists(whitelist).join();
autoWhitelistImportedInTotal = database.addAllAutoIfNotExists(autoWhitelist).join();
}
final long end = currentTimeMillis();
locale.localize(IMPORT_RESULT)
.set("imported", importedInTotal)
.set("loaded", json.getWhitelist().size())
locale.localize(WHITELIST_IMPORT_RESULT)
.set("imported", whitelistImportedInTotal).set("loaded", whitelist.size())
.set("auto-imported", autoWhitelistImportedInTotal).set("auto-loaded", autoWhitelist.size())
.set("ms-spent", end - start)
.send(args.getSender());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,13 @@ public enum WhitelistMessage implements Message {
GUI_LOCALE_DOESNT_SUPPORT_RELOAD("&cТекущая GUI локаль не поддерживает перезагрузку."),
GUI_LOCALE_RELOADED("&aGUI локаль перезагружена."),
GUI_NOT_SUPPORTED("&cGUI не поддерживается на вашей версии MC. (минимально необходимая major версия: {major})"),

IMPORT_LOADED("&eЗагружено &6{loaded}&e записей из &6{storage}&e, импорт начат."),
IMPORT_ONLY_TO_DATABASE("&eИмпорт работает только из JSON в базу данных."),
IMPORT_RESULT("&eИмпортировано &6{imported}&e из &6{loaded}&e за &d{ms-spent}ms&e."),
WHITELIST_IMPORT_RESULT("&eИмпортировано игроков: &6{imported}&e из &6{loaded}&e;\n" +
"&eДанных об автоматическом добавлении в белый список: &6{auto-imported}&e из &6{auto-loaded}&e.\n" +
"&eОбщее время импорта: &d{ms-spent}ms&e."),

INFO_NOT_WHITELISTED("&eИгрок &6«&c{player-details}&6» &cотсутствует &eв whitelist."),
INFO_WHITELISTED("&eИгрок &6«&c{player-details}&6» &aесть &eв whitelist."),
INFO_WHITELISTED_TEMP("&eИгрок &6«{player-details}&6» &aесть &eв whitelist, истекает &d{date}&e."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@
* {@link #saveWhitelist()} methods. It will be invoked upon any modification
* ({@link #add(UUID, String, Date)}, {@link #remove(Whitelistable)} to the cached whitelist.
*/
@Getter(AccessLevel.PROTECTED)
@Getter(AccessLevel.PUBLIC)
@Setter(AccessLevel.PROTECTED)
public abstract class MemoryWhitelistService implements AutoWhitelistService {
@Getter private Set<Whitelistable> whitelist = ConcurrentHashMap.newKeySet();
private Set<Whitelistable> whitelist = ConcurrentHashMap.newKeySet();
/* possibly we could join the two structures, but I prefer keeping things simple KISS */
private Map<UUID, TimesAutoWhitelistedNumber> autoWhitelist = new ConcurrentHashMap<>();

Expand Down
9 changes: 7 additions & 2 deletions src/main/resources/locale-en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,14 @@ messages:
gui-locale-doesnt-support-reload: '&cCurrent GUI locale does not support reload.'
gui-locale-reloaded: '&aGUI locale reloaded.'
gui-not-supported: '&cGUI is not supported on your MC version. (required major version: {major})'
import-loaded: '&eLoaded &6{loaded}&e entries from &6{storage}&gui-e, importing...'

import-loaded: '&eLoaded &6{loaded}&e entries from &6{storage}&e, importing...'
import-only-to-database: '&eImport is only available from JSON to database.'
import-result: '&eImported &6{imported}&e of &6{loaded}&e entries in &d{ms-spent}ms&e.'
whitelist-import-result: |-
&eImported players: &6{imported}&e из &6{loaded}&e;
&eData on automatic whitelisting: &6{auto-imported}&e из &6{auto-loaded}&e.
&eTime spent importing &8(async)&e: &d{ms-spent}ms&e.
info-not-whitelisted: '&6«{player-details}&6» &eis &cnot whitelisted&e.'
info-whitelisted: '&6«{player-details}&6» &eis &awhitelisted&e.'
info-whitelisted-temp: '&e&6«{player-details}&6» &eis &awhitelisted&e, expires on &d{date}&e.'
Expand Down
7 changes: 6 additions & 1 deletion src/main/resources/locale-ru.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,14 @@ messages:
gui-locale-doesnt-support-reload: '&cТекущая GUI локаль не поддерживает перезагрузку.'
gui-locale-reloaded: '&aGUI локаль перезагружена.'
gui-not-supported: '&cGUI не поддерживается на вашей версии MC. (минимально необходимая major версия: {major})'

import-loaded: '&eЗагружено &e{loaded} записей из &6{storage}&e, импорт начат.'
import-only-to-database: '&eИмпорт работает только из JSON в базу данных.'
import-result: '&eИмпортировано &6{imported}&e из &6{loaded}&e за &d{ms-spent}ms&e.'
whitelist-import-result: |-
&eИмпортировано игроков: &6{imported}&e из &6{loaded}&e;
&eДанных об автоматическом добавлении в белый список: &6{auto-imported}&e из &6{auto-loaded}&e.
&eОбщее время импорта &8(асинхронно)&e: &d{ms-spent}ms&e.
info-not-whitelisted: '&eИгрок &6«&c{player-details}&6» &cотсутствует &eв whitelist.'
info-whitelisted: '&eИгрок &6«&c{player-details}&6» &aесть &eв whitelist.'
info-whitelisted-temp: '&eИгрок &6«&c{player-details}&6» &aесть &eв whitelist, истекает
Expand Down

0 comments on commit 5d7ea41

Please sign in to comment.