From 44f7dcbfa2d6bfd3bdc646e46ff1c092f237d3b1 Mon Sep 17 00:00:00 2001 From: Pingex Date: Sat, 10 Sep 2016 20:38:39 +0200 Subject: [PATCH] Catch DB problems --- .../DefaultPermissionsProvider.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/pingex/dcf/permissions/DefaultPermissionsProvider.java b/src/main/java/net/pingex/dcf/permissions/DefaultPermissionsProvider.java index 1e549f0..fedbefa 100644 --- a/src/main/java/net/pingex/dcf/permissions/DefaultPermissionsProvider.java +++ b/src/main/java/net/pingex/dcf/permissions/DefaultPermissionsProvider.java @@ -6,12 +6,15 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.mapdb.DB; +import org.mapdb.DBException; import org.mapdb.DBMaker; import org.mapdb.Serializer; import sx.blah.discord.handle.obj.IGuild; import sx.blah.discord.handle.obj.IRole; import sx.blah.discord.handle.obj.IUser; import java.io.File; +import java.io.IOException; +import java.util.HashMap; import java.util.Map; /** @@ -40,12 +43,22 @@ public class DefaultPermissionsProvider implements ICommandPermissionsProvider { LOGGER.info("Building datastore."); - datastore = DBMaker.fileDB(new File(Configuration.DATA_DIR + "/permissions.db")) - .closeOnJvmShutdown() - .make(); + try + { + datastore = DBMaker.fileDB(new File(Configuration.DATA_DIR + "/permissions.db")) + .closeOnJvmShutdown() + .make(); - userStore = datastore.hashMap("user", Serializer.STRING, Serializer.BOOLEAN).createOrOpen(); - groupStore = datastore.hashMap("group", Serializer.STRING, Serializer.BOOLEAN).createOrOpen(); + userStore = datastore.hashMap("user", Serializer.STRING, Serializer.BOOLEAN).createOrOpen(); + groupStore = datastore.hashMap("group", Serializer.STRING, Serializer.BOOLEAN).createOrOpen(); + } + catch(DBException e) + { + LOGGER.error("Error setting up the datastore.", e); + LOGGER.error("Switching to local memory storage. PERMISSIONS ARE NOT LOADED AND CHANGES WON'T BE SAVED."); + userStore = new HashMap<>(); + groupStore = new HashMap<>(); + } } @Override