renamed Configurator to ConfigManager
This commit is contained in:
@@ -0,0 +1,311 @@
|
||||
package io.github.jack1424.realtimeweather;
|
||||
|
||||
import io.github.jack1424.realtimeweather.requests.WeatherRequestObject;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import javax.naming.ConfigurationException;
|
||||
import java.io.IOException;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.time.zone.ZoneRulesException;
|
||||
import java.util.Objects;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class ConfigManager {
|
||||
private final RealTimeWeather rtw;
|
||||
private final FileConfiguration configFile;
|
||||
private TimeZone timeZone;
|
||||
private boolean debug, timeEnabled, weatherEnabled, blockTimeSetCommand, blockWeatherCommand, disableBedsAtNight, disableBedsDuringThunder;
|
||||
private long timeSyncInterval, weatherSyncInterval;
|
||||
private String sunriseSunset, sunriseSunsetLatitude, sunriseSunsetLongitude, apiKey, weatherLatitude, weatherLongitude, disableBedsAtNightMessage, disableBedsDuringThunderMessage, sunriseCustomTime, sunsetCustomTime;
|
||||
|
||||
public ConfigManager(RealTimeWeather rtw) {
|
||||
this.rtw = rtw;
|
||||
configFile = rtw.getConfig();
|
||||
}
|
||||
|
||||
public void refreshValues() {
|
||||
setDebugEnabled(configFile.getBoolean("Debug"));
|
||||
|
||||
setTimeEnabled(configFile.getBoolean("SyncTime"));
|
||||
if (isTimeEnabled())
|
||||
try {
|
||||
setBlockTimeSetCommand(configFile.getBoolean("BlockTimeSetCommand"));
|
||||
setDisableBedsAtNight(configFile.getBoolean("DisableBedsAtNight"));
|
||||
setDisableBedsAtNightMessage(configFile.getString("DisableBedsAtNightMessage"));
|
||||
setTimeSyncInterval(configFile.getLong("TimeSyncInterval"));
|
||||
setTimeZone(configFile.getString("Timezone"));
|
||||
setSunriseSunset(configFile.getString("SunriseSunset"));
|
||||
if (getSunriseSunset().equals("real")) {
|
||||
setSunriseSunsetLatitude(configFile.getString("SunriseSunsetLatitude"));
|
||||
setSunriseSunsetLongitude(configFile.getString("SunriseSunsetLongitude"));
|
||||
} else if (getSunriseSunset().equals("custom")) {
|
||||
setSunriseCustomTime(configFile.getString("SunriseCustomTime"));
|
||||
setSunsetCustomTime(configFile.getString("SunsetCustomTime"));
|
||||
}
|
||||
} catch (ConfigurationException e) {
|
||||
rtw.getLogger().severe((e.getMessage()));
|
||||
rtw.getLogger().severe("Error loading time configuration. Check that the values in your configuration file are valid.");
|
||||
rtw.getLogger().severe("Disabling time sync...");
|
||||
|
||||
setTimeEnabled(false);
|
||||
}
|
||||
|
||||
setWeatherEnabled(configFile.getBoolean("SyncWeather"));
|
||||
if (isWeatherEnabled())
|
||||
try {
|
||||
setBlockWeatherCommand(configFile.getBoolean("BlockWeatherCommand"));
|
||||
setDisableBedsDuringThunder(configFile.getBoolean("DisableBedsDuringThunder"));
|
||||
setDisableBedsDuringThunderMessage(configFile.getString("DisableBedsDuringThunderMessage"));
|
||||
setWeatherSyncInterval(configFile.getLong("WeatherSyncInterval"));
|
||||
setAPIKey(configFile.getString("APIKey"));
|
||||
setWeatherLatitude(configFile.getString("WeatherLatitude"));
|
||||
setWeatherLongitude(configFile.getString("WeatherLongitude"));
|
||||
} catch (ConfigurationException e) {
|
||||
rtw.getLogger().severe(e.getMessage());
|
||||
rtw.getLogger().severe("Error loading weather configuration. Check that the values in your configuration file are valid.");
|
||||
rtw.getLogger().severe("Disabling weather sync...");
|
||||
|
||||
setWeatherEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean debugEnabled() {
|
||||
return debug;
|
||||
}
|
||||
|
||||
public void setDebugEnabled(boolean value) {
|
||||
debug = value;
|
||||
rtw.getLogger().warning("Debug set to " + value);
|
||||
}
|
||||
|
||||
public boolean isTimeEnabled() {
|
||||
return timeEnabled;
|
||||
}
|
||||
|
||||
public void setTimeEnabled(boolean value) {
|
||||
timeEnabled = value;
|
||||
rtw.debug("SyncTime set to " + value);
|
||||
}
|
||||
|
||||
public boolean getBlockTimeSetCommand() {
|
||||
return blockTimeSetCommand;
|
||||
}
|
||||
|
||||
public void setBlockTimeSetCommand(boolean value) {
|
||||
blockTimeSetCommand = value;
|
||||
rtw.debug("BlockTimeSetCommand set to " + value);
|
||||
}
|
||||
|
||||
public boolean getDisableBedsAtNight() {
|
||||
return disableBedsAtNight;
|
||||
}
|
||||
|
||||
public void setDisableBedsAtNight(boolean value) {
|
||||
disableBedsAtNight = value;
|
||||
rtw.debug("DisableBedsAtNight set to " + value);
|
||||
}
|
||||
|
||||
public String getDisableBedsAtNightMessage() {
|
||||
return disableBedsAtNightMessage;
|
||||
}
|
||||
|
||||
public void setDisableBedsAtNightMessage(String value) {
|
||||
disableBedsAtNightMessage = value;
|
||||
rtw.debug("NightDisabledBedMessage set to " + value);
|
||||
}
|
||||
|
||||
public long getTimeSyncInterval() {
|
||||
return timeSyncInterval;
|
||||
}
|
||||
|
||||
public void setTimeSyncInterval(long value) throws ConfigurationException {
|
||||
if (value < 0)
|
||||
throw new ConfigurationException("Time sync interval cannot be less than 0");
|
||||
|
||||
timeSyncInterval = value;
|
||||
rtw.debug("TimeSyncInterval set to " + value);
|
||||
}
|
||||
|
||||
public TimeZone getTimeZone() {
|
||||
return timeZone;
|
||||
}
|
||||
|
||||
public void setTimeZone(String value) throws ConfigurationException {
|
||||
try {
|
||||
timeZone = TimeZone.getTimeZone(ZoneId.of(Objects.requireNonNull(value)));
|
||||
} catch (ZoneRulesException | NullPointerException e) {
|
||||
throw new ConfigurationException("Timezone not valid");
|
||||
}
|
||||
|
||||
rtw.debug("TimeZone set to " + value);
|
||||
}
|
||||
|
||||
public String getSunriseSunset() {
|
||||
return sunriseSunset;
|
||||
}
|
||||
|
||||
public void setSunriseSunset(String value) throws ConfigurationException {
|
||||
value = value.toLowerCase();
|
||||
if (value.equals("default") || value.equals("real") || value.equals("custom")) {
|
||||
sunriseSunset = value;
|
||||
rtw.debug("SunriseSunset set to " + value);
|
||||
} else {
|
||||
throw new ConfigurationException("SunriseSunset value invalid (must be default or real or custom)");
|
||||
}
|
||||
}
|
||||
|
||||
public String getSunriseSunsetLatitude() {
|
||||
return sunriseSunsetLatitude;
|
||||
}
|
||||
|
||||
public void setSunriseSunsetLatitude(String value) {
|
||||
sunriseSunsetLatitude = value;
|
||||
rtw.debug("SunriseSunsetLatitude set to " + value);
|
||||
}
|
||||
|
||||
public String getSunriseSunsetLongitude() {
|
||||
return sunriseSunsetLongitude;
|
||||
}
|
||||
|
||||
public void setSunriseSunsetLongitude(String value) {
|
||||
sunriseSunsetLongitude = value;
|
||||
rtw.debug("SunriseSunsetLongitude set to " + value);
|
||||
}
|
||||
|
||||
public String getSunriseCustomTime() {
|
||||
return sunriseCustomTime;
|
||||
}
|
||||
|
||||
public void setSunriseCustomTime(String value) throws ConfigurationException {
|
||||
try {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm:ss a");
|
||||
sunriseCustomTime = LocalTime.parse(value, formatter).format(formatter);
|
||||
rtw.debug("SunriseCustomTime set to " + value);
|
||||
} catch (DateTimeParseException e) {
|
||||
throw new ConfigurationException("SunriseCustomTime value invalid (check format)");
|
||||
}
|
||||
}
|
||||
|
||||
public String getSunsetCustomTime() {
|
||||
return sunsetCustomTime;
|
||||
}
|
||||
|
||||
public void setSunsetCustomTime(String value) throws ConfigurationException {
|
||||
try {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm:ss a");
|
||||
sunsetCustomTime = LocalTime.parse(value, formatter).format(formatter);
|
||||
rtw.debug("SunsetCustomTime set to " + value);
|
||||
} catch (DateTimeParseException e) {
|
||||
throw new ConfigurationException("SunsetCustomTime value invalid (check format)");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isWeatherEnabled() {
|
||||
return weatherEnabled;
|
||||
}
|
||||
|
||||
public void setWeatherEnabled(boolean value) {
|
||||
weatherEnabled = value;
|
||||
rtw.debug("SyncWeather set to " + value);
|
||||
}
|
||||
|
||||
public boolean getBlockWeatherCommand() {
|
||||
return blockWeatherCommand;
|
||||
}
|
||||
|
||||
public void setBlockWeatherCommand(boolean value) {
|
||||
blockWeatherCommand = value;
|
||||
rtw.debug("BlockWeatherCommand set to " + value);
|
||||
}
|
||||
|
||||
public boolean getDisableBedsDuringThunder() {
|
||||
return disableBedsDuringThunder;
|
||||
}
|
||||
|
||||
public void setDisableBedsDuringThunder(boolean value) {
|
||||
disableBedsDuringThunder = value;
|
||||
rtw.debug("DisableBedsDuringThunder set to " + value);
|
||||
}
|
||||
|
||||
public String getDisableBedsDuringThunderMessage() {
|
||||
return disableBedsDuringThunderMessage;
|
||||
}
|
||||
|
||||
public void setDisableBedsDuringThunderMessage(String value) {
|
||||
disableBedsDuringThunderMessage = value;
|
||||
rtw.debug("ThunderDisabledBedMessage set to " + value);
|
||||
}
|
||||
|
||||
public long getWeatherSyncInterval() {
|
||||
return weatherSyncInterval;
|
||||
}
|
||||
|
||||
public void setWeatherSyncInterval(long value) throws ConfigurationException {
|
||||
if (value < 0)
|
||||
throw new ConfigurationException("WeatherSyncInterval cannot be less than 0");
|
||||
|
||||
weatherSyncInterval = value;
|
||||
rtw.debug("WeatherSyncInterval set to " + value);
|
||||
}
|
||||
|
||||
public String getAPIKey() {
|
||||
return apiKey;
|
||||
}
|
||||
|
||||
public void setAPIKey(String value) throws ConfigurationException {
|
||||
try {
|
||||
new WeatherRequestObject(Objects.requireNonNull(value), "0", "0");
|
||||
} catch (NullPointerException e) {
|
||||
throw new ConfigurationException("The APIKey cannot be blank");
|
||||
}
|
||||
catch (IOException | ParseException e) {
|
||||
rtw.getLogger().severe(e.getMessage());
|
||||
throw new ConfigurationException("There was an error when validating this APIKey (this does not mean that the API key is invalid)");
|
||||
}
|
||||
|
||||
apiKey = value;
|
||||
rtw.debug("APIKey set to " + value);
|
||||
}
|
||||
|
||||
public String getWeatherLatitude() {
|
||||
return weatherLatitude;
|
||||
}
|
||||
|
||||
public void setWeatherLatitude(String value) throws ConfigurationException {
|
||||
try {
|
||||
double doubleValue = Double.parseDouble(Objects.requireNonNull(value));
|
||||
if (doubleValue < -90 || doubleValue > 90)
|
||||
throw new ConfigurationException("The entered latitude cannot be less than -90 or greater than 90");
|
||||
} catch (NullPointerException e) {
|
||||
throw new ConfigurationException("The latitude cannot be blank");
|
||||
} catch (NumberFormatException e) {
|
||||
throw new ConfigurationException("The entered latitude might not be a number (or is too long)");
|
||||
}
|
||||
|
||||
weatherLatitude = value;
|
||||
rtw.debug("Latitude set to " + value);
|
||||
}
|
||||
|
||||
public String getWeatherLongitude() {
|
||||
return weatherLongitude;
|
||||
}
|
||||
|
||||
public void setWeatherLongitude(String value) throws ConfigurationException {
|
||||
try {
|
||||
double doubleValue = Double.parseDouble(Objects.requireNonNull(value));
|
||||
if (doubleValue < -180 || doubleValue > 180)
|
||||
throw new ConfigurationException("The entered longitude cannot be less than -180 or greater than 180");
|
||||
} catch (NullPointerException e) {
|
||||
throw new ConfigurationException("The longitude cannot be blank");
|
||||
} catch (NumberFormatException e) {
|
||||
throw new ConfigurationException("The entered longitude might not be a number (or is too long)");
|
||||
}
|
||||
|
||||
weatherLongitude = value;
|
||||
rtw.debug("Longitude set to " + value);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user