package bot;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.HashSet;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
public class Config {
private static File jsonfile;
private static JsonObject json;
public static void load(File file) throws FileNotFoundException{
jsonfile = file;
Scanner scan;
scan = new Scanner(new FileInputStream(file));
String jsonstring = "";
while(scan.hasNext()){
jsonstring += scan.next() + " ";
}
scan.close();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
json = gson.fromJson(jsonstring, JsonElement.class).getAsJsonObject();
}
public static String getNick(){
return json.get("nickname").getAsString();
}
public static void setNick(String s){
json.addProperty("nickname", s);
save();
}
public static String getUsername(){
return json.get("username").getAsString();
}
public static String getRealname(){
return json.get("realname").getAsString();
}
public static String getServer(){
return json.get("server").getAsString();
}
public static int getPort(){
return json.get("port").getAsInt();
}
public static String getIdentification(){
return json.get("identification").getAsString();
}
public static boolean useSSL(){
return json.get("usessl").getAsBoolean();
}
public static String getPathToKeystore(){
return json.get("keystorepath").getAsString();
}
public static String getWolframAPIKey(){
return json.get("wolframapikey").getAsString();
}
public static HashSet<String> getRooms(){
JsonArray jsonarray = json.get("rooms").getAsJsonArray();
HashSet<String> set = new HashSet<String>();
for(int i = 0; i < jsonarray.size(); i++){
set.add("#" + jsonarray.get(i).getAsString());
}
return set;
}
public static void addRoom(String s){
if(s.startsWith("#")){
s = s.substring(1);
}
String toadd = "\"" + s + "\"";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonArray jsonarray = json.get("rooms").getAsJsonArray();
for(JsonElement je : jsonarray){
if(je.getAsString().equals(s)) return;
}
jsonarray.add(gson.fromJson(toadd, JsonElement.class));
save();
}
public static boolean removeRoom(String s){
JsonArray jsonarray = json.get("rooms").getAsJsonArray();
if(s.startsWith("#")){
s = s.substring(1);
}
boolean found = true;
for(int i = 0; i < jsonarray.size(); i++){
if(jsonarray.get(i).getAsString().equals(s)){
jsonarray.remove(i);
found = true;
}
}
save();
return found;
}
public static HashSet<String> getAdmins(){
JsonArray jsonarray = json.get("admins").getAsJsonArray();
HashSet<String> set = new HashSet<String>();
for(int i = 0; i < jsonarray.size(); i++){
set.add(jsonarray.get(i).getAsString());
}
return set;
}
public static void addAdmin(String s){
String toadd = "\"" + s + "\"";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonArray jsonarray = json.get("admins").getAsJsonArray();
for(JsonElement je : jsonarray){
if(je.getAsString().equals(s)) return;
}
jsonarray.add(gson.fromJson(toadd, JsonElement.class));
save();
}
public static boolean removeAdmin(String s){
JsonArray jsonarray = json.get("admins").getAsJsonArray();
boolean found = true;
for(int i = 0; i < jsonarray.size(); i++){
if(jsonarray.get(i).getAsString().equals(s)){
jsonarray.remove(i);
found = true;
}
}
save();
return found;
}
public static HashSet<String> getIgnores(){
JsonArray jsonarray = json.get("ignores").getAsJsonArray();
HashSet<String> set = new HashSet<String>();
for(int i = 0; i < jsonarray.size(); i++){
set.add(jsonarray.get(i).getAsString());
}
return set;
}
public static void addIgnore(String s){
String toadd = "\"" + s + "\"";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonArray jsonarray = json.get("ignores").getAsJsonArray();
for(JsonElement je : jsonarray){
if(je.getAsString().equals(s)) return;
}
jsonarray.add(gson.fromJson(toadd, JsonElement.class));
save();
}
public static boolean removeIgnore(String s){
JsonArray jsonarray = json.get("ignores").getAsJsonArray();
boolean found = false;
for(int i = 0; i < jsonarray.size(); i++){
if(jsonarray.get(i).getAsString().equals(s)){
jsonarray.remove(i);
found = true;
}
}
save();
return found;
}
public static String getChar(){
return json.get("commandchar").getAsString();
}
public static void setChar(String s){
json.addProperty("commandchar", s);
save();
}
public static String getGoogleApiKey(){
return json.get("googleapikey").getAsString();
}
public static String getSteamApiKey(){
return json.get("steamapikey").getAsString();
}
public static String getUploadApiKey(){
return json.get("uploadapikey").getAsString();
}
public static String getWeatherApiKey(){
return json.get("weatherapikey").getAsString();
}
private static void save(){
Gson gson = new GsonBuilder().create();
try {
Writer writer = new FileWriter(jsonfile);
gson.toJson(json,writer);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String get(String key){
if(!json.has(key)){
return null;
}
return json.get(key).getAsString();
}
public static void set(String key, String value){
String toadd = "\"" + value + "\"";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
json.add(key, gson.fromJson(toadd, JsonElement.class));
}
}