JSON schema update, probably
This commit is contained in:
parent
dfaca9285e
commit
9fdb09fc79
|
@ -1,5 +1,6 @@
|
|||
package org.appledash.saneeconomy.economy.backend.type;
|
||||
|
||||
import com.avaje.ebeaninternal.server.cluster.DataHolder;
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
@ -38,18 +39,25 @@ public class EconomyStorageBackendJSON extends EconomyStorageBackendCaching {
|
|||
|
||||
try {
|
||||
// try to load the old format and convert it
|
||||
balances = new ConcurrentHashMap<>((Map)gson.fromJson(new FileReader(file), new TypeToken<Map<String, Double>>(){}.getType()));
|
||||
// if that fails, load the new format
|
||||
DataHolderOld dataHolder = gson.fromJson(new FileReader(file), DataHolderOld.class);
|
||||
this.balances = new ConcurrentHashMap<>();
|
||||
this.uuidToName = new ConcurrentHashMap<>(dataHolder.uuidToName);
|
||||
|
||||
dataHolder.balances.forEach((s, bal) -> {
|
||||
this.balances.put(s, new BigDecimal(bal));
|
||||
});
|
||||
|
||||
this.saveDatabase();
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new RuntimeException("Failed to load database!", e);
|
||||
} catch (Exception e) {
|
||||
// if that fails, load the new format
|
||||
try {
|
||||
DataHolder dataHolder = gson.fromJson(new FileReader(file), DataHolder.class);
|
||||
//FIXME this.balances = new ConcurrentHashMap<>(dataHolder.balances);
|
||||
this.balances = new ConcurrentHashMap<>(dataHolder.balances);
|
||||
this.uuidToName = new ConcurrentHashMap<>(dataHolder.uuidToName);
|
||||
} catch (FileNotFoundException e1) {
|
||||
throw new RuntimeException("Failed to load database!", e1);
|
||||
} catch (FileNotFoundException ex) {
|
||||
throw new RuntimeException("Failed to load database!", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -61,20 +69,32 @@ public class EconomyStorageBackendJSON extends EconomyStorageBackendCaching {
|
|||
|
||||
private synchronized void saveDatabase() {
|
||||
try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, false))) {
|
||||
//FIXME DataHolder dataHolder = new DataHolder(this.balances, this.uuidToName);
|
||||
//FIXMEbufferedWriter.write(gson.toJson(dataHolder));
|
||||
DataHolder dataHolder = new DataHolder(this.balances, this.uuidToName);
|
||||
bufferedWriter.write(gson.toJson(dataHolder));
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Failed to save database", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static class DataHolder {
|
||||
private static class DataHolderOld {
|
||||
@SerializedName("balances")
|
||||
private Map<String, Double> balances;
|
||||
@SerializedName("uuidToName")
|
||||
private Map<String, String> uuidToName;
|
||||
|
||||
public DataHolder(Map<String, Double> balances, Map<String, String> uuidToName) {
|
||||
public DataHolderOld(Map<String, Double> balances, Map<String, String> uuidToName) {
|
||||
this.balances = balances;
|
||||
this.uuidToName = uuidToName;
|
||||
}
|
||||
}
|
||||
|
||||
private static class DataHolder {
|
||||
@SerializedName("balances")
|
||||
private Map<String, BigDecimal> balances;
|
||||
@SerializedName("uuidToName")
|
||||
private Map<String, String> uuidToName;
|
||||
|
||||
public DataHolder(Map<String, BigDecimal> balances, Map<String, String> uuidToName) {
|
||||
this.balances = balances;
|
||||
this.uuidToName = uuidToName;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue