Html Lang implementations, Fixed LocaleFileWriter

This commit is contained in:
Rsl1122 2018-07-29 13:15:31 +03:00
parent c44ddac69d
commit d62d510bda
9 changed files with 247 additions and 13 deletions

View File

@ -39,6 +39,6 @@ public enum LangCode {
}
public String getFileName() {
return "locale_" + name + ".txt";
return "locale_" + name() + ".txt";
}
}

View File

@ -30,20 +30,30 @@ public class LocaleFileWriter {
public void writeToFile(File file) throws IOException {
// Find longest identifier
if (locale.isEmpty()) {
throw new IllegalStateException("Locale has no values");
}
Optional<String> key = locale.keySet().stream()
.map(Lang::getIdentifier)
Optional<String> key = LocaleSystem.getIdentifiers().keySet().stream()
.min(new StringLengthComparator());
if (!key.isPresent()) {
throw new IllegalStateException("Locale has not been loaded.");
throw new IllegalStateException("LocaleSystem defines no Identifiers.");
}
final int length = key.get().length() + 2;
for (Lang lang : LocaleSystem.getIdentifiers().values()) {
if (!locale.containsKey(lang)) {
locale.put(lang, new Message(lang.getDefault()));
}
}
int length = key.get().length() + 2;
List<String> lines = locale.entrySet().stream()
.sorted(new LocaleEntryComparator())
.map(entry -> getSpacedIdentifier(entry.getKey().getIdentifier(), length) + "|| " + entry.getValue().toString())
.map(entry -> {
String value = entry.getValue() != null ? entry.getValue().toString() : entry.getKey().getDefault();
return getSpacedIdentifier(entry.getKey().getIdentifier(), length) + "|| " + value;
})
.collect(Collectors.toList());
if (!file.exists()) {
Files.createFile(file.toPath());
}
Files.write(file.toPath(), lines, StandardCharsets.UTF_8);
Config config = ConfigSystem.getConfig();

View File

@ -34,7 +34,11 @@ public class LocaleSystem implements SubSystem {
DeepHelpLang.values(),
PluginLang.values(),
ManageLang.values(),
GenericLang.values()
GenericLang.values(),
CommonHtmlLang.values(),
PlayerPageLang.values(),
ServerPageLang.values(),
NetworkPageLang.values()
};
return Arrays.stream(lang)
@ -59,8 +63,8 @@ public class LocaleSystem implements SubSystem {
private void writeNewDefaultLocale(File localeFile) {
try {
new LocaleFileWriter(Locale.forLangCode(LangCode.EN)).writeToFile(localeFile);
} catch (IOException e) {
new LocaleFileWriter(new Locale()).writeToFile(localeFile);
} catch (IOException | IllegalStateException e) {
Log.error("Failed to write new Locale file at " + localeFile.getAbsolutePath());
Log.toLog(this.getClass().getName(), e);
}

View File

@ -0,0 +1,43 @@
package com.djrapitops.plan.system.locale.lang;
/**
* {@link Lang} implementation for commonly used .html replacement values.
*
* @author Rsl1122
*/
public enum CommonHtmlLang implements Lang {
PLEASE_WAIT("Please wait..."),
NAV_INFORMATION("Information"),
NAV_SESSIONS("Sessions"),
NAV_OVERVIEW("Overview"),
NAV_PLUGINS("Plugins"),
NAV_ONLINE_ACTIVITY("Online Activity"),
NAV_SEVER_HEALTH("Server Health"),
NAV_PERFORMANCE("Performance"),
NAV_PLAYERS("Players"),
NAV_GEOLOCATIONS("Geolocations"),
NAV_COMMAND_USAGE("Command Usage"),
NAV_NETWORK_PLAYERS("Network Players"),
AVERAGE_PING("Average Ping"),
BEST_PING("Best Ping"),
WORST_PING("Worst Ping"),
PLAYERS_ONLINE_TEXT("Players Online");
private final String defaultValue;
CommonHtmlLang(String defaultValue) {
this.defaultValue = defaultValue;
}
@Override
public String getIdentifier() {
return "HTML - " + name();
}
@Override
public String getDefault() {
return defaultValue;
}
}

View File

@ -0,0 +1,31 @@
package com.djrapitops.plan.system.locale.lang;
/**
* {@link Lang} implementation for player.html replacement values.
*
* @author Rsl1122
*/
public enum NetworkPageLang implements Lang {
NETWORK("Network"),
NETWORK_INFORMATION("NETWORK INFORMATION"),
PLAYERS_TEXT("Players"),
PLAYERS("PLAYERS"),
NEW_TEXT("New"),
HEALTH_ESTIMATE("Health Estimate");
private final String defaultValue;
NetworkPageLang(String defaultValue) {
this.defaultValue = defaultValue;
}
@Override
public String getIdentifier() {
return "HTML - " + name();
}
@Override
public String getDefault() {
return defaultValue;
}
}

View File

@ -0,0 +1,70 @@
package com.djrapitops.plan.system.locale.lang;
/**
* {@link Lang} implementation for player.html replacement values.
*
* @author Rsl1122
*/
public enum PlayerPageLang implements Lang {
PLAYER_KILLS("Player Kills"),
MOB_KILLS("Mob Kills"),
DEATHS("Deaths"),
SESSIONS("Sessions"),
TOTAL("Total"),
PLAYTIME("Playtime"),
ACTIVE("Active"),
MEDIAN("Median"),
LONGEST("Longest"),
SESSION("Session"),
ACTIVITY_INDEX("Activity Index"),
INDEX_ACTIVE("Active"),
INDEX_VERY_ACTIVE("Very Active"),
INDEX_REGULAR("Regular"),
INDEX_IRREGULAR("Irregular"),
INDEX_INACTIVE("Inactive"),
FAVORITE_SERVER("Favorite Server"),
REGISTERED("REGISTERED"),
LAST_SEEN("LAST SEEN"),
PUNCH_CARD("Punchcard"),
SEEN_NICKNAMES("Seen Nicknames"),
NICKNAME("Nickname"),
SERVER("Server"),
LAST_SEEN_TEXT("Last Seen"),
CONNECTION_INFORMATION("Connection Information"),
IP_ADDRESS("IP-address"),
GEOLOCATION("Geolocation"),
LAST_CONNECTED("Last Connected"),
LOCAL_MACHINE("Local Machine"),
CALENDAR_TEXT("Calendar"),
MOST_RECENT("Most Recent"),
WORLD(" World"),
PREFERENCE("Preference"),
LAST_30_DAYS("LAST 30 DAYS"),
LAST_7_DAYS("LAST 7 DAYS"),
LAST_24_HOURS("LAST 24 HOURS"),
SERVERS("Servers"),
OVERVIEW("OVERVIEW"),
PLAYER_CAUSED_DEATHS("Player caused Deaths"),
MOB_CAUSED_DEATHS("Mob caused Deaths"),
TIME("Time"),
KILLED("Killed"),
WITH("With"),
KILLED_BY("Killed by");
private final String defaultValue;
PlayerPageLang(String defaultValue) {
this.defaultValue = defaultValue;
}
@Override
public String getIdentifier() {
return "HTML - " + name();
}
@Override
public String getDefault() {
return defaultValue;
}
}

View File

@ -43,7 +43,7 @@ public enum PluginLang implements Lang {
DB_APPLY_PATCH("Database - Apply Patch", "Applying Patch: ${0}.."),
DB_APPLIED_PATCHES("Database - Patches Applied", "All database patches applied successfully."),
DB_APPLIED_PATCHES_ALREADY("Database - Patches Applied", "All database patches already applied."),
DB_APPLIED_PATCHES_ALREADY("Database - Patches Applied Already", "All database patches already applied."),
DB_NOTIFY_CLEAN("Database Notify - Clean", "Removed data of ${0} players."),
DB_NOTIFY_SQLITE_WAL("Database Notify - SQLite No WAL", "SQLite WAL mode not supported on this server version, using default. This may or may not affect performance."),
DB_MYSQL_LAUNCH_OPTIONS_FAIL("Database MySQL - Launch Options Error", "Launch Options were faulty, using default (${0})");

View File

@ -0,0 +1,64 @@
package com.djrapitops.plan.system.locale.lang;
/**
* {@link Lang} implementation for player.html replacement values.
*
* @author Rsl1122
*/
public enum ServerPageLang implements Lang {
SERVER_ANALYSIS("Server Analysis"),
PLAYERS_ONLINE("PLAYERS ONLINE"),
UNIQUE("UNIQUE"),
NEW("NEW"),
REGULAR("REGULAR"),
TOTAL_PLAYERS("Total Players"),
UNIQUE_PLAYERS_TEXT("Unique Players"),
NEW_PLAYERS("New Players"),
LAST_PEAK("Last Peak"),
ALL_TIME_PEAK("All Time Peak"),
SERVER_INFORMATION("SERVER INFORMATION"),
USER_INFORMATION("USER INFORMATION"),
RECENT_LOGINS("RECENT LOGINS"),
UNIQUE_PLAYERS("UNIQUE PLAYERS"),
CALENDAR("CALENDAR"),
UNIQUE_CALENDAR("Unique:"),
NEW_CALENDAR("New:"),
NEW_RETENTION("New Player Retention"),
PREDICETED_RETENTION("Predicted Retention"),
SERVER_HEALTH_ESTIMATE("Server Health Estimate"),
LAST_30_DAYS_TEXT("Last 30 Days"),
PLAYERBASE_DEVELOPMENT("Playerbase Development"),
CURRENT_PLAYERBASE("Current Playerbase"),
WORLD_PLAYTIME("World Playtime"),
WORLD_LOAD("WORLD LOAD"),
LOW_TPS_SPIKES("Low TPS Spikes"),
LOADED_ENTITIES("Loaded Entities"),
LOADED_CHUNKS("Loaded Chunks"),
ENTITIES("Entities"),
CHUNKS("Chunks"),
AVG("AVG"),
PLAYER_LIST("Player List"),
NAME("Name"),
REGISTERED_TEXT("Registered"),
GEOLOCATION_TEXT("Geolocation"),
COUNTRY("Country"),
COMMNAND_USAGE("Command Usage"),
USED_COMMANDS("Used Commands"),
UNIQUE_TEXT("Unique");
private final String defaultValue;
ServerPageLang(String defaultValue) {
this.defaultValue = defaultValue;
}
@Override
public String getIdentifier() {
return "HTML - " + name();
}
@Override
public String getDefault() {
return defaultValue;
}
}

View File

@ -0,0 +1,12 @@
package com.djrapitops.plan.system.locale;
import org.junit.Test;
public class LocaleSystemTest {
@Test
public void noIdentifierCollisions() {
// No Exception wanted
LocaleSystem.getIdentifiers();
}
}