package eu.bibl.cfide.io.config;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public final class ConfigUtils {
public static final Gson GSON_INSTANCE = new GsonBuilder().setPrettyPrinting().enableComplexMapKeySerialization().create();
public static final CFIDEConfig newConfig(String jarLocation) {
return new CFIDEConfig(jarLocation);
}
public static final CFIDEConfig fromFile(File configFile) {
if (!configFile.exists())
return new CFIDEConfig(configFile.getAbsolutePath());
try (BufferedReader reader = new BufferedReader(new FileReader(configFile))) {
String line;
String total = "";
while ((line = reader.readLine()) != null) {
total += line;
}
CFIDEConfig config = GSON_INSTANCE.fromJson(total, CFIDEConfig.class);
config.file = configFile;
return config;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static final boolean save(CFIDEConfig config, File configFile, boolean fixName) {
if (fixName) {
String name = configFile.getName();
if (!name.endsWith(".cfide")) {
if (name.contains(".")) {
String nameOfFile = name.substring(0, name.lastIndexOf("."));
name = nameOfFile + ".cfide";
} else {
name += ".cfide";
}
configFile = new File(configFile.getParentFile(), name);
}
}
config.file = configFile;
try (BufferedWriter writer = new BufferedWriter(new FileWriter(configFile))) {
String gsonString = GSON_INSTANCE.toJson(config);
writer.write(gsonString);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}