SubServers-2/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Config/YAMLValue.java

398 lines
8.5 KiB
Java
Raw Normal View History

2016-12-24 05:55:17 +01:00
package net.ME1312.SubServers.Bungee.Library.Config;
2016-12-05 04:21:04 +01:00
2016-12-24 05:55:17 +01:00
import net.ME1312.SubServers.Bungee.Library.Util;
2019-01-17 18:44:47 +01:00
import net.ME1312.SubServers.Bungee.Library.Version.Version;
2016-12-05 04:21:04 +01:00
import net.md_5.bungee.api.ChatColor;
import org.yaml.snakeyaml.Yaml;
import java.util.*;
2016-12-05 04:21:04 +01:00
2017-01-07 20:06:54 +01:00
/**
* YAML Value Class
*/
2016-12-05 04:21:04 +01:00
@SuppressWarnings({"unchecked", "unused"})
public class YAMLValue {
protected Object obj;
protected String label;
protected YAMLSection up;
private Yaml yaml;
2017-01-07 20:06:54 +01:00
protected YAMLValue(Object obj, YAMLSection up, String label, Yaml yaml) {
2016-12-05 04:21:04 +01:00
this.obj = obj;
this.label = label;
this.yaml = yaml;
this.up = up;
}
2017-01-07 20:06:54 +01:00
/**
* Get the YAML Section this Object was defined in
*
* @return YAML Section
*/
2016-12-05 04:21:04 +01:00
public YAMLSection getDefiningSection() {
return up;
}
2017-01-07 20:06:54 +01:00
/**
* Get Object
*
* @return Object
*/
2016-12-05 04:21:04 +01:00
public Object asObject() {
return obj;
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as List
*
* @return List
*/
2016-12-05 04:21:04 +01:00
public List<?> asObjectList() {
return (List<?>) obj;
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Boolean
*
* @return Boolean
*/
2017-12-22 00:37:39 +01:00
public Boolean asBoolean() {
return (Boolean) obj;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as List
*
* @return List
*/
2016-12-05 04:21:04 +01:00
public List<Boolean> asBooleanList() {
return (List<Boolean>) obj;
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as YAML Section
*
* @return YAML Section
*/
2016-12-05 04:21:04 +01:00
public YAMLSection asSection() {
2017-12-22 00:37:39 +01:00
if (obj != null) return new YAMLSection((Map<String, ?>) obj, up, label, yaml);
else return null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as YAML Section List
*
* @return YAML Section List
*/
2016-12-05 04:21:04 +01:00
public List<YAMLSection> asSectionList() {
2017-12-22 00:37:39 +01:00
if (obj != null) {
List<YAMLSection> values = new ArrayList<YAMLSection>();
for (Map<String, ?> value : (List<? extends Map<String, ?>>) obj) {
values.add(new YAMLSection(value, null, null, yaml));
}
return values;
} else return null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Double
*
* @return Double
*/
2017-12-22 00:37:39 +01:00
public Double asDouble() {
return ((Number) obj).doubleValue();
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Double List
*
* @return Double List
*/
2016-12-05 04:21:04 +01:00
public List<Double> asDoubleList() {
return (List<Double>) obj;
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Float
*
* @return Float
*/
2017-12-22 00:37:39 +01:00
public Float asFloat() {
return ((Number) obj).floatValue();
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Float List
*
* @return Float List
*/
2016-12-05 04:21:04 +01:00
public List<Float> asFloatList() {
return (List<Float>) obj;
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Integer
*
* @return Integer
*/
2017-12-22 00:37:39 +01:00
public Integer asInt() {
return ((Number) obj).intValue();
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Integer List
*
* @return Integer List
*/
2016-12-05 04:21:04 +01:00
public List<Integer> asIntList() {
return (List<Integer>) obj;
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Long
*
* @return Long
*/
2017-12-22 00:37:39 +01:00
public Long asLong() {
return ((Number) obj).longValue();
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Long List
*
* @return Long List
*/
2016-12-05 04:21:04 +01:00
public List<Long> asLongList() {
return (List<Long>) obj;
}
2017-12-22 00:37:39 +01:00
/**
* Get a Short by Handle
*
* @return Short
*/
public Short asShort() {
return ((Number) obj).shortValue();
2017-12-22 00:37:39 +01:00
}
/**
* Get a Short List by Handle
*
* @return Short List
*/
public List<Short> asShortList() {
return (List<Short>) obj;
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Unparsed String
*
* @return Unparsed String
*/
2016-12-05 04:21:04 +01:00
public String asRawString() {
2018-07-19 21:34:58 +02:00
if (obj != null) return obj.toString();
else return null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Unparsed String List
*
* @return Unparsed String List
*/
2016-12-05 04:21:04 +01:00
public List<String> asRawStringList() {
2018-07-19 21:34:58 +02:00
if (obj != null) {
List<String> values = new ArrayList<String>();
for (Object value : (List<?>) obj) {
values.add(value.toString());
}
return values;
} else return null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as String
*
* @return String
*/
2016-12-05 04:21:04 +01:00
public String asString() {
2018-07-19 21:34:58 +02:00
if (obj != null) return Util.unescapeJavaString(asRawString());
2017-12-22 00:37:39 +01:00
else return null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as String List
*
* @return String List
*/
2016-12-05 04:21:04 +01:00
public List<String> asStringList() {
2017-12-22 00:37:39 +01:00
if (obj != null) {
List<String> values = new ArrayList<String>();
2018-07-19 21:34:58 +02:00
for (String value : asRawStringList()) {
2017-12-22 00:37:39 +01:00
values.add(Util.unescapeJavaString(value));
}
return values;
} else return null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Colored String
*
* @param color Color Char to parse
* @return Colored String
*/
2016-12-05 04:21:04 +01:00
public String asColoredString(char color) {
if (Util.isNull(color)) throw new NullPointerException();
2018-07-19 21:34:58 +02:00
if (obj != null) return ChatColor.translateAlternateColorCodes(color, asString());
2017-12-22 00:37:39 +01:00
else return null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as Colored String List
*
* @param color Color Char to parse
* @return Colored String List
*/
2016-12-05 04:21:04 +01:00
public List<String> asColoredStringList(char color) {
2017-12-22 00:37:39 +01:00
if (obj != null) {
if (Util.isNull(color)) throw new NullPointerException();
List<String> values = new ArrayList<String>();
2018-07-19 21:34:58 +02:00
for (String value : asStringList()) {
values.add(ChatColor.translateAlternateColorCodes(color, value));
2017-12-22 00:37:39 +01:00
}
return values;
} else return null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Get Object as UUID
*
* @return UUID
*/
2016-12-24 05:55:17 +01:00
public UUID asUUID() {
2019-01-17 18:44:47 +01:00
if (obj != null) return UUID.fromString(asRawString());
2017-12-22 00:37:39 +01:00
else return null;
2016-12-24 05:55:17 +01:00
}
2017-01-07 20:06:54 +01:00
/**
2017-12-22 00:37:39 +01:00
* Get Object as UUID List
2017-01-07 20:06:54 +01:00
*
2017-12-22 00:37:39 +01:00
* @return UUID List
2017-01-07 20:06:54 +01:00
*/
2017-12-22 00:37:39 +01:00
public List<UUID> asUUIDList() {
if (obj != null) {
List<UUID> values = new ArrayList<UUID>();
for (String value : (List<String>) obj) {
values.add(UUID.fromString(value));
}
return values;
} else return null;
2016-12-05 04:21:04 +01:00
}
2019-01-17 18:44:47 +01:00
/**
* Get Object as Version
*
* @return Version
*/
public Version asVersion() {
if (obj != null) return Version.fromString(asRawString());
else return null;
}
/**
* Get Object as Version List
*
* @return Version List
*/
public List<Version> asVersionList() {
if (obj != null) {
List<Version> values = new ArrayList<Version>();
for (String value : (List<String>) obj) {
values.add(Version.fromString(value));
}
return values;
} else return null;
}
2016-12-05 04:21:04 +01:00
2017-01-07 20:06:54 +01:00
/**
2017-12-22 00:37:39 +01:00
* Check if object is Null
2017-01-07 20:06:54 +01:00
*
2017-12-22 00:37:39 +01:00
* @return Null Status
2017-01-07 20:06:54 +01:00
*/
2017-12-22 00:37:39 +01:00
public boolean isNull() {
return obj == null;
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
2017-12-22 00:37:39 +01:00
* Check if object is a Boolean
2017-01-07 20:06:54 +01:00
*
2017-12-22 00:37:39 +01:00
* @return Boolean Status
2017-01-07 20:06:54 +01:00
*/
2017-12-22 00:37:39 +01:00
public boolean isBoolean() {
return (obj instanceof Boolean);
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
2017-12-22 00:37:39 +01:00
* Check if object is a YAML Section
2017-01-07 20:06:54 +01:00
*
2017-12-22 00:37:39 +01:00
* @return YAML Section Status
2017-01-07 20:06:54 +01:00
*/
2017-12-22 00:37:39 +01:00
public boolean isSection() {
return (obj instanceof Map);
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Check if object is a List
*
* @return List Status
*/
2016-12-05 04:21:04 +01:00
public boolean isList() {
return (obj instanceof List);
}
2017-01-07 20:06:54 +01:00
/**
2017-12-22 00:37:39 +01:00
* Check if object is a Number
2017-01-07 20:06:54 +01:00
*
2017-12-22 00:37:39 +01:00
* @return Number Status
2017-01-07 20:06:54 +01:00
*/
2017-12-22 00:37:39 +01:00
public boolean isNumber() {
return (obj instanceof Number);
2016-12-05 04:21:04 +01:00
}
2017-01-07 20:06:54 +01:00
/**
* Check if object is a String
*
* @return String Status
*/
2016-12-05 04:21:04 +01:00
public boolean isString() {
return (obj instanceof String);
}
2017-01-07 20:06:54 +01:00
/**
* Check if object is a UUID
*
* @return UUID Status
*/
public boolean isUUID() {
2019-01-17 18:44:47 +01:00
return (obj instanceof String && !Util.isException(() -> UUID.fromString(asRawString())));
2017-01-07 20:06:54 +01:00
}
2018-01-05 23:30:01 +01:00
@Override
public boolean equals(Object object) {
if (obj == null) {
return object == null;
} else {
if (object instanceof YAMLValue) {
return obj.equals(((YAMLValue) object).obj);
} else {
return obj.equals(object);
}
}
}
2016-12-05 04:21:04 +01:00
@Override
public String toString() {
2017-12-22 00:37:39 +01:00
if (obj != null) return obj.toString();
else return "null";
2016-12-05 04:21:04 +01:00
}
}