2017-01-30 21:22:36 +01:00
|
|
|
package net.ME1312.SubServers.Host.Library.Config;
|
|
|
|
|
2017-08-22 15:02:23 +02:00
|
|
|
import net.ME1312.SubServers.Host.Library.TextColor;
|
2017-01-30 21:22:36 +01:00
|
|
|
import net.ME1312.SubServers.Host.Library.Util;
|
|
|
|
import org.yaml.snakeyaml.Yaml;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* YAML Value Class
|
|
|
|
*/
|
|
|
|
@SuppressWarnings({"unchecked", "unused"})
|
|
|
|
public class YAMLValue {
|
|
|
|
protected Object obj;
|
|
|
|
protected String label;
|
|
|
|
protected YAMLSection up;
|
|
|
|
private Yaml yaml;
|
|
|
|
|
|
|
|
protected YAMLValue(Object obj, YAMLSection up, String label, Yaml yaml) {
|
|
|
|
this.obj = obj;
|
|
|
|
this.label = label;
|
|
|
|
this.yaml = yaml;
|
|
|
|
this.up = up;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the YAML Section this Object was defined in
|
|
|
|
*
|
|
|
|
* @return YAML Section
|
|
|
|
*/
|
|
|
|
public YAMLSection getDefiningSection() {
|
|
|
|
return up;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object
|
|
|
|
*
|
|
|
|
* @return Object
|
|
|
|
*/
|
|
|
|
public Object asObject() {
|
|
|
|
return obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as List
|
|
|
|
*
|
|
|
|
* @return List
|
|
|
|
*/
|
|
|
|
public List<?> asObjectList() {
|
|
|
|
return (List<?>) obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Boolean
|
|
|
|
*
|
|
|
|
* @return Boolean
|
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public Boolean asBoolean() {
|
|
|
|
return (Boolean) obj;
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as List
|
|
|
|
*
|
|
|
|
* @return List
|
|
|
|
*/
|
|
|
|
public List<Boolean> asBooleanList() {
|
|
|
|
return (List<Boolean>) obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as YAML Section
|
|
|
|
*
|
|
|
|
* @return YAML Section
|
|
|
|
*/
|
|
|
|
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;
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as YAML Section List
|
|
|
|
*
|
|
|
|
* @return YAML Section List
|
|
|
|
*/
|
|
|
|
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;
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Double
|
|
|
|
*
|
|
|
|
* @return Double
|
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public Double asDouble() {
|
2018-04-15 03:53:51 +02:00
|
|
|
return ((Number) obj).doubleValue();
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Double List
|
|
|
|
*
|
|
|
|
* @return Double List
|
|
|
|
*/
|
|
|
|
public List<Double> asDoubleList() {
|
|
|
|
return (List<Double>) obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Float
|
|
|
|
*
|
|
|
|
* @return Float
|
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public Float asFloat() {
|
2018-04-15 03:53:51 +02:00
|
|
|
return ((Number) obj).floatValue();
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Float List
|
|
|
|
*
|
|
|
|
* @return Float List
|
|
|
|
*/
|
|
|
|
public List<Float> asFloatList() {
|
|
|
|
return (List<Float>) obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Integer
|
|
|
|
*
|
|
|
|
* @return Integer
|
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public Integer asInt() {
|
2018-04-15 03:53:51 +02:00
|
|
|
return ((Number) obj).intValue();
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Integer List
|
|
|
|
*
|
|
|
|
* @return Integer List
|
|
|
|
*/
|
|
|
|
public List<Integer> asIntList() {
|
|
|
|
return (List<Integer>) obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Long
|
|
|
|
*
|
|
|
|
* @return Long
|
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public Long asLong() {
|
2018-04-15 03:53:51 +02:00
|
|
|
return ((Number) obj).longValue();
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Long List
|
|
|
|
*
|
|
|
|
* @return Long List
|
|
|
|
*/
|
|
|
|
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() {
|
2018-04-15 03:53:51 +02:00
|
|
|
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-30 21:22:36 +01:00
|
|
|
/**
|
|
|
|
* Get Object as Unparsed String
|
|
|
|
*
|
|
|
|
* @return Unparsed String
|
|
|
|
*/
|
|
|
|
public String asRawString() {
|
|
|
|
return (String) obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Unparsed String List
|
|
|
|
*
|
|
|
|
* @return Unparsed String List
|
|
|
|
*/
|
|
|
|
public List<String> asRawStringList() {
|
|
|
|
return (List<String>) obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as String
|
|
|
|
*
|
|
|
|
* @return String
|
|
|
|
*/
|
|
|
|
public String asString() {
|
2017-12-22 00:37:39 +01:00
|
|
|
if (obj != null) return Util.unescapeJavaString((String) obj);
|
|
|
|
else return null;
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as String List
|
|
|
|
*
|
|
|
|
* @return String List
|
|
|
|
*/
|
|
|
|
public List<String> asStringList() {
|
2017-12-22 00:37:39 +01:00
|
|
|
if (obj != null) {
|
|
|
|
List<String> values = new ArrayList<String>();
|
|
|
|
for (String value : (List<String>) obj) {
|
|
|
|
values.add(Util.unescapeJavaString(value));
|
|
|
|
}
|
|
|
|
return values;
|
|
|
|
} else return null;
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
2017-08-22 15:02:23 +02:00
|
|
|
/**
|
|
|
|
* Get Object as Colored String
|
|
|
|
*
|
|
|
|
* @param color Color Char to parse
|
|
|
|
* @return Colored String
|
|
|
|
*/
|
|
|
|
public String asColoredString(char color) {
|
|
|
|
if (Util.isNull(color)) throw new NullPointerException();
|
2017-12-22 00:37:39 +01:00
|
|
|
if (obj != null) return TextColor.parseColor(color, Util.unescapeJavaString((String) obj));
|
|
|
|
else return null;
|
2017-08-22 15:02:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Object as Colored String List
|
|
|
|
*
|
|
|
|
* @param color Color Char to parse
|
|
|
|
* @return Colored String List
|
|
|
|
*/
|
|
|
|
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>();
|
|
|
|
for (String value : (List<String>) obj) {
|
|
|
|
values.add(TextColor.parseColor(color, Util.unescapeJavaString(value)));
|
|
|
|
}
|
|
|
|
return values;
|
|
|
|
} else return null;
|
2017-08-22 15:02:23 +02:00
|
|
|
}
|
|
|
|
|
2017-01-30 21:22:36 +01:00
|
|
|
/**
|
|
|
|
* Get Object as UUID
|
|
|
|
*
|
|
|
|
* @return UUID
|
|
|
|
*/
|
|
|
|
public UUID asUUID() {
|
2017-12-22 00:37:39 +01:00
|
|
|
if (obj != null) return UUID.fromString((String) obj);
|
|
|
|
else return null;
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-12-22 00:37:39 +01:00
|
|
|
* Get Object as UUID List
|
2017-01-30 21:22:36 +01:00
|
|
|
*
|
2017-12-22 00:37:39 +01:00
|
|
|
* @return UUID List
|
2017-01-30 21:22:36 +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;
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2017-12-22 00:37:39 +01:00
|
|
|
* Check if object is Null
|
2017-01-30 21:22:36 +01:00
|
|
|
*
|
2017-12-22 00:37:39 +01:00
|
|
|
* @return Null Status
|
2017-01-30 21:22:36 +01:00
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public boolean isNull() {
|
|
|
|
return obj == null;
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-12-22 00:37:39 +01:00
|
|
|
* Check if object is a Boolean
|
2017-01-30 21:22:36 +01:00
|
|
|
*
|
2017-12-22 00:37:39 +01:00
|
|
|
* @return Boolean Status
|
2017-01-30 21:22:36 +01:00
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public boolean isBoolean() {
|
|
|
|
return (obj instanceof Boolean);
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-12-22 00:37:39 +01:00
|
|
|
* Check if object is a YAML Section
|
2017-01-30 21:22:36 +01:00
|
|
|
*
|
2017-12-22 00:37:39 +01:00
|
|
|
* @return YAML Section Status
|
2017-01-30 21:22:36 +01:00
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public boolean isSection() {
|
|
|
|
return (obj instanceof Map);
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if object is a List
|
|
|
|
*
|
|
|
|
* @return List Status
|
|
|
|
*/
|
|
|
|
public boolean isList() {
|
|
|
|
return (obj instanceof List);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-12-22 00:37:39 +01:00
|
|
|
* Check if object is a Number
|
2017-01-30 21:22:36 +01:00
|
|
|
*
|
2017-12-22 00:37:39 +01:00
|
|
|
* @return Number Status
|
2017-01-30 21:22:36 +01:00
|
|
|
*/
|
2017-12-22 00:37:39 +01:00
|
|
|
public boolean isNumber() {
|
|
|
|
return (obj instanceof Number);
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if object is a String
|
|
|
|
*
|
|
|
|
* @return String Status
|
|
|
|
*/
|
|
|
|
public boolean isString() {
|
|
|
|
return (obj instanceof String);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if object is a UUID
|
|
|
|
*
|
|
|
|
* @return UUID Status
|
|
|
|
*/
|
|
|
|
public boolean isUUID() {
|
|
|
|
return (obj instanceof String && !Util.isException(() -> UUID.fromString((String) obj)));
|
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-01-30 21:22:36 +01:00
|
|
|
@Override
|
|
|
|
public String toString() {
|
2017-12-22 00:37:39 +01:00
|
|
|
if (obj != null) return obj.toString();
|
|
|
|
else return "null";
|
2017-01-30 21:22:36 +01:00
|
|
|
}
|
|
|
|
}
|