1 package net.pterodactylus.sone.database.memory;
3 import java.util.HashSet;
5 import java.util.concurrent.locks.ReadWriteLock;
6 import java.util.concurrent.locks.ReentrantReadWriteLock;
8 import net.pterodactylus.sone.data.Sone;
11 * Groups {@link Sone}-related database functionality.
13 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
15 public class MemorySoneDatabase {
17 private final ReadWriteLock lock = new ReentrantReadWriteLock();
18 private final Set<String> knownSones = new HashSet<String>();
19 private final ConfigurationLoader configurationLoader;
21 public MemorySoneDatabase(ConfigurationLoader configurationLoader) {
22 this.configurationLoader = configurationLoader;
29 private void loadKnownSones() {
30 lock.writeLock().lock();
33 knownSones.addAll(configurationLoader.loadKnownSones());
35 lock.writeLock().unlock();
43 boolean isKnownSone(String soneId) {
44 lock.readLock().lock();
46 return knownSones.contains(soneId);
48 lock.readLock().unlock();
52 void setSoneKnown(String soneId) {
53 lock.writeLock().lock();
55 knownSones.add(soneId);
58 lock.writeLock().unlock();
62 private void saveKnownSones() {
63 lock.readLock().lock();
65 configurationLoader.saveKnownSones(knownSones);
67 lock.readLock().unlock();