Added module for TimeCraftersConfigurationTool to support adding server to FtcRobotController activity

This commit is contained in:
2020-09-25 09:25:22 -05:00
parent 70f315a35a
commit 86bfa02e6e
41 changed files with 1750 additions and 1 deletions

View File

@@ -1,150 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.timecrafters.TimeCraftersConfigurationTool.backend.Config;
import org.timecrafters.TimeCraftersConfigurationTool.backend.Settings;
import org.timecrafters.TimeCraftersConfigurationTool.backend.TAC;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Configuration;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Group;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Presets;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Variable;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.ActionDeserializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.ActionSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.ConfigDeserializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.ConfigSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.ConfigurationDeserializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.ConfigurationSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.GroupDeserializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.GroupSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.PresetsDeserializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.PresetsSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.SettingsDeserializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.SettingsSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.VariableDeserializer;
import org.timecrafters.TimeCraftersConfigurationTool.serializers.VariableSerializer;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class TimeCraftersConfiguration {
private static final String TAG = "TCT|TCConfig";
private Config config;
public TimeCraftersConfiguration() {
Settings settings = loadSettings();
this.config = loadConfig(settings.config);
}
public TimeCraftersConfiguration(String configName) {
this.config = loadConfig(configName);
}
public Config getConfig() {
return config;
}
public Group group(String groupName) {
for (final Group group : config.getGroups()) {
if (group.name.trim().equals(groupName.trim())) {
return group;
}
}
throw(new RuntimeException("Failed to find a group named:\"" + groupName.trim() + "\" in config \"" + config.getName() + "\""));
}
public Action action(String groupName, String actionName) {
final Group group = group(groupName);
for (Action action : group.getActions()) {
if (action.name.trim().equals(actionName.trim())) {
return action;
}
}
throw(new RuntimeException("Failed to find an action named:\"" + actionName.trim() + "\" in group \"" + groupName.trim() + "\" in config \"" + config.getName() + "\""));
}
public Variable variable(String groupName, String actionName, String variableName) {
final Action action = action(groupName, groupName);
for (Variable variable : action.getVariables()) {
if (variable.name.trim().equals(variableName.trim())) {
return variable;
}
}
throw(new RuntimeException("Failed to find a variable named \"" + variableName.trim() + "\" in action:\"" + actionName.trim() +
"\" in group \"" + groupName.trim() + "\" in config \"" + config.getName() + "\""));
}
private Settings loadSettings() {
File settingsFile = new File(TAC.SETTINGS_PATH);
if (!settingsFile.exists()) {
throw( new RuntimeException("Unable to load settings.json, file does not exist!") );
}
try {
return gsonForSettings().fromJson(new FileReader(settingsFile), Settings.class);
} catch (FileNotFoundException e) {
throw( new RuntimeException("Unable to load settings.json") );
}
}
private Config loadConfig(String name) {
if (name.equals("")) {
throw(new RuntimeException("Cannot load a config with an empty name!"));
}
String path = TAC.CONFIGS_PATH + File.separator + name + ".json";
File configFile = new File(path);
if (configFile.exists() && configFile.isFile()) {
try {
Config config = gsonForConfig().fromJson(new FileReader(configFile), Config.class);
config.setName(name);
return config;
} catch (FileNotFoundException e) {
e.printStackTrace();
throw(new RuntimeException("Unable to find a config file named \"" + name + "\""));
}
} else {
throw(new RuntimeException("Unable to find a config file named \"" + name + "\""));
}
}
private Gson gsonForSettings() {
return new GsonBuilder()
.registerTypeAdapter(Settings.class, new SettingsSerializer())
.registerTypeAdapter(Settings.class, new SettingsDeserializer())
.create();
}
public Gson gsonForConfig() {
return new GsonBuilder()
.registerTypeAdapter(Config.class, new ConfigSerializer())
.registerTypeAdapter(Config.class, new ConfigDeserializer())
.registerTypeAdapter(Configuration.class, new ConfigurationSerializer())
.registerTypeAdapter(Configuration.class, new ConfigurationDeserializer())
.registerTypeAdapter(Group.class, new GroupSerializer())
.registerTypeAdapter(Group.class, new GroupDeserializer())
.registerTypeAdapter(Action.class, new ActionSerializer())
.registerTypeAdapter(Action.class, new ActionDeserializer())
.registerTypeAdapter(Variable.class, new VariableSerializer())
.registerTypeAdapter(Variable.class, new VariableDeserializer())
.registerTypeAdapter(Presets.class, new PresetsSerializer())
.registerTypeAdapter(Presets.class, new PresetsDeserializer())
.create();
}
}

View File

@@ -1,44 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.backend;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Configuration;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Group;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Presets;
import java.util.ArrayList;
import java.util.Date;
public class Config {
private String name;
private Configuration configuration;
private ArrayList<Group> groups;
private Presets presets;
public Config(String name) {
this.name = name;
this.configuration = new Configuration(new Date(), new Date(), TAC.CONFIG_SPEC_VERSION, 0);
groups = new ArrayList<>();
presets = new Presets(new ArrayList<Group>(), new ArrayList<Action>());
}
public Config(Configuration configuration, ArrayList<Group> groups, Presets presets) {
this.configuration = configuration;
this.groups = groups;
this.presets = presets;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Configuration getConfiguration() {
return configuration;
}
public Presets getPresets() {
return presets;
}
public ArrayList<Group> getGroups() {
return groups;
}
}

View File

@@ -1,12 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.backend;
public class Settings {
public String hostname, config;
public int port;
public Settings(String hostname, int port, String config) {
this.hostname = hostname;
this.port = port;
this.config = config;
}
}

View File

@@ -1,14 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.backend;
import android.os.Environment;
import java.io.File;
public class TAC {
// TODO: Update filesystem handling
public static final String ROOT_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "TimeCrafters_Configuration_Tool",
CONFIGS_PATH = ROOT_PATH + File.separator + "/configs",
SETTINGS_PATH = ROOT_PATH + File.separator + "settings.json";
public static final int CONFIG_SPEC_VERSION = 2;
}

View File

@@ -1,18 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.backend.config;
import java.util.ArrayList;
public class Action {
public String name, comment;
public boolean enabled;
private ArrayList<Variable> variables;
public Action(String name, String comment, boolean enabled, ArrayList<Variable> variables) {
this.name = name;
this.comment = comment;
this.enabled = enabled;
this.variables = variables;
}
public ArrayList<Variable> getVariables() { return variables; }
}

View File

@@ -1,20 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.backend.config;
import java.util.Date;
public class Configuration {
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss Z";
public Date createdAt, updatedAt;
private int specVersion;
public int revision;
public Configuration(Date createdAt, Date updatedAt, int specVersion, int revision) {
this.createdAt = createdAt;
this.updatedAt = updatedAt;
this.specVersion = specVersion;
this.revision = revision;
}
public int getSpecVersion() { return specVersion; }
}

View File

@@ -1,27 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.backend.config;
import java.util.ArrayList;
public class Group {
public String name;
private ArrayList<Action> actions;
public Group(String name, ArrayList<Action> actions) {
this.name = name;
this.actions = actions;
}
public static boolean nameIsUnique(ArrayList<Group> groups, String name) {
for (Group group: groups) {
if (group.name.equals(name)) {
return false;
}
}
return true;
}
public ArrayList<Action> getActions() {
return actions;
}
}

View File

@@ -1,22 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.backend.config;
import java.util.ArrayList;
public class Presets {
private ArrayList<Group> groups;
private ArrayList<Action> actions;
public Presets(ArrayList<Group> groups, ArrayList<Action> actions) {
this.groups = groups;
this.actions = actions;
}
public ArrayList<Group> getGroups() {
return groups;
}
public ArrayList<Action> getActions() {
return actions;
}
}

View File

@@ -1,88 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.backend.config;
public class Variable {
public String name;
private String value;
public Variable(String name, String value) {
this.name = name;
this.value = value;
}
public String rawValue() {
return value;
}
public <T> T value() {
return valueOf(value);
}
public void setValue(String value) {
this.value = value;
}
@SuppressWarnings("unchecked")
static public <T> T valueOf(String value) {
String[] split = value.split("x", 2);
// Log.d("Variable", "valueOf split: " + Arrays.toString(split));
switch (split[0]) {
case "B": {
return (T) Boolean.valueOf(split[(split.length-1)]);
}
case "D": {
return (T) Double.valueOf(split[(split.length-1)]);
}
case "F": {
return (T) Float.valueOf(split[(split.length-1)]);
}
case "I": {
return (T) Integer.valueOf(split[(split.length-1)]);
}
case "L": {
return (T) Long.valueOf(split[(split.length-1)]);
}
case "S": {
String string = "";
int i = 0;
for(String str : split) {
if (i == 0) { i++; continue; }
string += str;
}
return (T) string;
}
default: {
return null;
}
}
}
static public String typeOf(String value) {
String[] split = value.split("x");
switch (split[0]) {
case "B": {
return "Boolean";
}
case "D": {
return "Double";
}
case "F": {
return "Float";
}
case "I": {
return "Integer";
}
case "L": {
return "Long";
}
case "S": {
return "String";
}
default: {
return "=!UNKNOWN!=";
}
}
}
}

View File

@@ -1,32 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Variable;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ActionDeserializer implements JsonDeserializer<Action> {
@Override
public Action deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
final String name = jsonObject.get("name").getAsString();
final String comment = jsonObject.get("comment").getAsString();
final boolean enabled = jsonObject.get("enabled").getAsBoolean();
Variable[] variablesArray = context.deserialize(jsonObject.get("variables"), Variable[].class);
List<Variable> variablesList = Arrays.asList(variablesArray);
ArrayList<Variable> variables = new ArrayList<>(variablesList);
return new Action(name, comment, enabled, variables);
}
}

View File

@@ -1,26 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Variable;
import java.lang.reflect.Type;
public class ActionSerializer implements JsonSerializer<Action> {
@Override
public JsonElement serialize(Action action, Type type, JsonSerializationContext context) {
JsonObject container = new JsonObject();
container.add("name", new JsonPrimitive(action.name));
container.add("comment", new JsonPrimitive(action.comment));
container.add("enabled", new JsonPrimitive(action.enabled));
container.add("variables", context.serialize(action.getVariables().toArray(), Variable[].class));
return container;
}
}

View File

@@ -1,34 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import org.timecrafters.TimeCraftersConfigurationTool.backend.Config;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Configuration;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Group;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Presets;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ConfigDeserializer implements JsonDeserializer<Config> {
@Override
public Config deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
JsonObject data = jsonObject.get("data").getAsJsonObject();
Configuration configuration = context.deserialize(jsonObject.get("config"), Configuration.class);
Group[] groupsArray = context.deserialize(data.get("groups"), Group[].class);
List<Group> groupsList = Arrays.asList(groupsArray);
ArrayList<Group> groups = new ArrayList<>(groupsList);
Presets presets = context.deserialize(data.get("presets"), Presets.class);
return new Config(configuration, groups, presets);
}
}

View File

@@ -1,32 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.backend.Config;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Configuration;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Group;
import java.lang.reflect.Type;
public class ConfigSerializer implements JsonSerializer<Config> {
@Override
public JsonElement serialize(Config config, Type type, JsonSerializationContext context) {
JsonObject container = new JsonObject();
JsonObject result = new JsonObject();
JsonObject presets = new JsonObject();
container.add("config", context.serialize(config.getConfiguration(), Configuration.class));
result.add("groups", context.serialize(config.getGroups().toArray(), Group[].class));
presets.add("groups", context.serialize(config.getPresets().getGroups().toArray(), Group[].class));
presets.add("actions", context.serialize(config.getPresets().getActions().toArray(), Action[].class));
result.add("presets", presets);
container.add("data", result);
return container;
}
}

View File

@@ -1,36 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Configuration;
import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ConfigurationDeserializer implements JsonDeserializer<Configuration> {
@Override
public Configuration deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject config = json.getAsJsonObject();
SimpleDateFormat dateFormat = new SimpleDateFormat(Configuration.DATE_FORMAT);
Date createdAt = new Date();
Date updatedAt = new Date();
try {
createdAt = dateFormat.parse(config.get("created_at").getAsString());
updatedAt = dateFormat.parse(config.get("updated_at").getAsString());
} catch (ParseException e) {
e.printStackTrace();
}
final int spec_version = config.get("spec_version").getAsInt();
final int revision = config.get("revision").getAsInt();
return new Configuration(createdAt, updatedAt, spec_version, revision);
}
}

View File

@@ -1,28 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Configuration;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
public class ConfigurationSerializer implements JsonSerializer<Configuration> {
@Override
public JsonElement serialize(Configuration configuration, Type type, JsonSerializationContext context) {
JsonObject container = new JsonObject();
SimpleDateFormat dateFormat = new SimpleDateFormat(Configuration.DATE_FORMAT);
container.add("created_at", new JsonPrimitive(dateFormat.format(configuration.createdAt)));
container.add("updated_at", new JsonPrimitive(dateFormat.format(configuration.updatedAt)));
container.add("spec_version", new JsonPrimitive(configuration.getSpecVersion()));
container.add("revision", new JsonPrimitive(configuration.revision));
return container;
}
}

View File

@@ -1,30 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Group;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class GroupDeserializer implements JsonDeserializer<Group> {
@Override
public Group deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
final String name = jsonObject.get("name").getAsString();
Action[] actionsArray = context.deserialize(jsonObject.get("actions"), Action[].class);
List<Action> actionsList = Arrays.asList(actionsArray);
ArrayList<Action> actions = new ArrayList<>(actionsList);
return new Group(name, actions);
}
}

View File

@@ -1,24 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Group;
import java.lang.reflect.Type;
public class GroupSerializer implements JsonSerializer<Group> {
@Override
public JsonElement serialize(Group group, Type type, JsonSerializationContext context) {
JsonObject container = new JsonObject();
container.add("name", new JsonPrimitive(group.name));
container.add("actions", context.serialize(group.getActions().toArray(), Action[].class));
return container;
}
}

View File

@@ -1,33 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Group;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Presets;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class PresetsDeserializer implements JsonDeserializer<Presets> {
@Override
public Presets deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
Group[] GroupsArray = context.deserialize(jsonObject.get("groups"), Group[].class);
Action[] actionsArray = context.deserialize(jsonObject.get("actions"), Action[].class);
List<Group> groupsList = Arrays.asList(GroupsArray);
ArrayList<Group> groups = new ArrayList<>(groupsList);
List<Action> actionsList = Arrays.asList(actionsArray);
ArrayList<Action> actions = new ArrayList<>(actionsList);
return new Presets(groups, actions);
}
}

View File

@@ -1,24 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Action;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Group;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Presets;
import java.lang.reflect.Type;
public class PresetsSerializer implements JsonSerializer<Presets> {
@Override
public JsonElement serialize(Presets presets, Type type, JsonSerializationContext context) {
JsonObject container = new JsonObject();
container.add("groups", context.serialize(presets.getGroups().toArray(), Group[].class));
container.add("actions", context.serialize(presets.getActions().toArray(), Action[].class));
return container;
}
}

View File

@@ -1,25 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import org.timecrafters.TimeCraftersConfigurationTool.backend.Settings;
import java.lang.reflect.Type;
public class SettingsDeserializer implements JsonDeserializer<Settings> {
@Override
public Settings deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
JsonObject data = jsonObject.get("data").getAsJsonObject();
return new Settings(
data.get("hostname").getAsString(),
data.get("port").getAsInt(),
data.get("config").getAsString()
);
}
}

View File

@@ -1,27 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.backend.Settings;
import java.lang.reflect.Type;
public class SettingsSerializer implements JsonSerializer<Settings> {
@Override
public JsonElement serialize(Settings settings, Type type, JsonSerializationContext context) {
JsonObject container = new JsonObject();
JsonObject result = new JsonObject();
result.add("hostname", new JsonPrimitive(settings.hostname));
result.add("port", new JsonPrimitive(settings.port));
result.add("config", new JsonPrimitive(settings.config));
container.add("data", result);
return container;
}
}

View File

@@ -1,23 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Variable;
import java.lang.reflect.Type;
public class VariableDeserializer implements JsonDeserializer<Variable> {
@Override
public Variable deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
final String name = jsonObject.get("name").getAsString();
final String value = jsonObject.get("value").getAsString();
return new Variable(name, value);
}
}

View File

@@ -1,23 +0,0 @@
package org.timecrafters.TimeCraftersConfigurationTool.serializers;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.timecrafters.TimeCraftersConfigurationTool.backend.config.Variable;
import java.lang.reflect.Type;
public class VariableSerializer implements JsonSerializer<Variable> {
@Override
public JsonElement serialize(Variable variable, Type type, JsonSerializationContext context) {
JsonObject container = new JsonObject();
container.add("name", new JsonPrimitive(variable.name));
container.add("value", new JsonPrimitive(variable.rawValue()));
return container;
}
}