diff --git a/src/de/banananetwork/serialize/Serializable.java b/src/de/banananetwork/serialize/Serializable.java new file mode 100644 index 0000000..e8cd633 --- /dev/null +++ b/src/de/banananetwork/serialize/Serializable.java @@ -0,0 +1,7 @@ +package de.banananetwork.serialize; + +public interface Serializable { + + SerializedData serialize(); + +} \ No newline at end of file diff --git a/src/de/banananetwork/serialize/SerializedData.java b/src/de/banananetwork/serialize/SerializedData.java new file mode 100644 index 0000000..43ec862 --- /dev/null +++ b/src/de/banananetwork/serialize/SerializedData.java @@ -0,0 +1,59 @@ +package de.banananetwork.serialize; + +public interface SerializedData implements Serializable { + + @Override + default SerializedData serialize() { + return this; + } + + void put(String key, int value); + + void put(String key, String value); + + default void put(String key, Serializable value) { + put(key, value.serialize()); + } + + void put(String key, SerializedData value); + + void put(String key, int[] values); + + void put(String key, String[] values); + + default put(String key, Serializable[] values) { + put(key, Arrays.stream(values).map(Serializable::serialize).toArray(SerializedData[]::new)); + } + + void put(String key, SerializedData[] values); + + boolean exists(String key); + + Type getType(String key); + + boolean isType(String key, Type type); + + String[] getKeys(); + + int getInt(String key); + + String getString(String key); + + SerializedData getData(String key); + + int[] getIntArray(String key); + + String[] getStringArray(String key); + + SerializedData[] getDataArray(String key); + + public enum Type { + INT, + INT_ARRAY, + STRING, + STRING_ARRAY, + SERIALIZED_DATA, + SERIALIZED_DATA_ARRAY; + } + +} \ No newline at end of file