X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=c49f9780f58c420f9dad9ce6a736b63b18461dd2;hb=af417cd58d0d99061ed484e981c7be20adf066d6;hp=8d60e0f4b548f4f0c579ad7aca52cda000d76911;hpb=4d62892729cbce31c4fb2171ad2c2174db1d44b4;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java index 8d60e0f..c49f978 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -57,11 +57,9 @@ import com.google.common.base.Optional; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.HashMultimap; import com.google.common.collect.ListMultimap; -import com.google.common.collect.Maps; import com.google.common.collect.SetMultimap; import com.google.common.collect.SortedSetMultimap; import com.google.common.collect.TreeMultimap; -import com.google.common.util.concurrent.AbstractService; import com.google.inject.Inject; /** @@ -69,7 +67,7 @@ import com.google.inject.Inject; * * @author David ‘Bombe’ Roden */ -public class MemoryDatabase extends AbstractService implements Database { +public class MemoryDatabase implements Database { private static final Logger logger = getLogger(MemoryDatabase.class.getName()); @@ -79,8 +77,8 @@ public class MemoryDatabase extends AbstractService implements Database { /** The configuration. */ private final Configuration configuration; - private final Map identities = Maps.newHashMap(); private final Map sones = new HashMap(); + private final MemoryIdentityDatabase memoryIdentityDatabase; private final MemoryPostDatabase memoryPostDatabase; /** All post replies by their ID. */ @@ -125,6 +123,7 @@ public class MemoryDatabase extends AbstractService implements Database { public MemoryDatabase(Configuration configuration) { this.configuration = configuration; memoryPostDatabase = new MemoryPostDatabase(this, lock, configuration); + memoryIdentityDatabase = new MemoryIdentityDatabase(lock); } // @@ -132,40 +131,33 @@ public class MemoryDatabase extends AbstractService implements Database { // @Override - protected void doStart() { + public void start() { memoryPostDatabase.start(); loadKnownPostReplies(); notifyStarted(); } @Override - protected void doStop() { + public void stop() { try { memoryPostDatabase.stop(); + configuration.save(); } catch (DatabaseException de1) { logger.log(Level.WARNING, "Could not stop post database!", de1); + } catch (ConfigurationException ce1) { + logger.log(Level.WARNING, "Could not save configuration!", ce1); } notifyStopped(); } @Override public Optional getIdentity(String identityId) { - lock.readLock().lock(); - try { - return fromNullable(identities.get(identityId)); - } finally { - lock.readLock().unlock(); - } + return memoryIdentityDatabase.getIdentity(identityId); } @Override public void storeIdentity(Identity identitiy) { - lock.writeLock().lock(); - try { - identities.put(identitiy.getId(), identitiy); - } finally { - lock.writeLock().unlock(); - } + memoryIdentityDatabase.storeIdentity(identitiy); } @Override