X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=8815abc5c21cd35632f7eb8ce9667a97a22c09d5;hb=f8672b1385173a103d7f085d8e9cd43bc5762d71;hp=7ad40e0e36799f943975a610efc5ce5e51fb8700;hpb=3049b7e396ce20b5b6600ae2791334a6babb414e;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 7ad40e0..8815abc 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -132,6 +132,7 @@ public class MemoryDatabase extends AbstractService implements Database { private final Map allImages = new HashMap(); private final Multimap soneImages = HashMultimap.create(); + private final MemorySoneDatabase soneDatabase; private final MemoryPostDatabase postDatabase; private final MemoryBookmarkDatabase memoryBookmarkDatabase; private final MemoryFriendDatabase memoryFriendDatabase; @@ -149,6 +150,7 @@ public class MemoryDatabase extends AbstractService implements Database { this.soneProvider = soneProvider; this.configuration = configuration; this.configurationLoader = new ConfigurationLoader(configuration); + soneDatabase = new MemorySoneDatabase(configurationLoader); postDatabase = new MemoryPostDatabase(this, configurationLoader); memoryBookmarkDatabase = new MemoryBookmarkDatabase(this, configurationLoader); @@ -180,19 +182,19 @@ public class MemoryDatabase extends AbstractService implements Database { } private LocalSone loadLocalSone(OwnIdentity ownIdentity) { - LocalSone localSone = (LocalSone) newSoneBuilder().local().from(ownIdentity).build(); + LocalSone localSone = newSoneBuilder().from(ownIdentity).using( + new Client("Sone", SonePlugin.VERSION.toString())).buildLocal(); localSone.setLatestEdition( Optional.fromNullable( Longs.tryParse(ownIdentity.getProperty(LATEST_EDITION_PROPERTY))) .or(0L)); - localSone.setClient(new Client("Sone", SonePlugin.VERSION.toString())); localSone.setKnown(true); loadSone(localSone); return localSone; } - public void loadSone(LocalSone sone) { + private void loadSone(LocalSone sone) { long soneTime = configurationLoader.getLocalSoneTime(sone.getId()); if (soneTime == -1) { return; @@ -273,7 +275,7 @@ public class MemoryDatabase extends AbstractService implements Database { /* if we’re still here, Sone was loaded successfully. */ lock.writeLock().lock(); try { - sone.setTime(soneTime); + updateSoneTime(sone, soneTime); sone.setProfile(profile); sone.setLikePostIds(likedPostIds); sone.setLikeReplyIds(likedReplyIds); @@ -461,6 +463,8 @@ public class MemoryDatabase extends AbstractService implements Database { /** {@inheritDocs} */ @Override protected void doStart() { + soneDatabase.start(); + memoryFriendDatabase.start(); postDatabase.start(); memoryBookmarkDatabase.start(); loadKnownPostReplies(); @@ -471,6 +475,8 @@ public class MemoryDatabase extends AbstractService implements Database { @Override protected void doStop() { try { + soneDatabase.stop(); + memoryFriendDatabase.stop(); postDatabase.stop(); memoryBookmarkDatabase.stop(); save(); @@ -501,6 +507,21 @@ public class MemoryDatabase extends AbstractService implements Database { } } + @Override + public boolean isSoneKnown(Sone sone) { + return soneDatabase.isKnownSone(sone.getId()); + } + + @Override + public void setSoneKnown(Sone sone) { + soneDatabase.setSoneKnown(sone.getId()); + } + + @Override + public void updateSoneTime(Sone sone, long soneTime) { + soneDatabase.updateSoneTime(sone.getId(), soneTime); + } + private void storePosts(String soneId, Collection posts) { postDatabase.storePosts(soneId, posts); } @@ -610,7 +631,7 @@ public class MemoryDatabase extends AbstractService implements Database { } @Override - public Collection getFriends(Sone localSone) { + public Collection getFriends(LocalSone localSone) { if (!localSone.isLocal()) { return Collections.emptySet(); } @@ -618,7 +639,12 @@ public class MemoryDatabase extends AbstractService implements Database { } @Override - public boolean isFriend(Sone localSone, String friendSoneId) { + public Optional getSoneFollowingTime(String remoteSoneId) { + return memoryFriendDatabase.getSoneFollowingTime(remoteSoneId); + } + + @Override + public boolean isFriend(LocalSone localSone, String friendSoneId) { if (!localSone.isLocal()) { return false; } @@ -626,18 +652,12 @@ public class MemoryDatabase extends AbstractService implements Database { } @Override - public void addFriend(Sone localSone, String friendSoneId) { - if (!localSone.isLocal()) { - return; - } + public void addFriend(LocalSone localSone, String friendSoneId) { memoryFriendDatabase.addFriend(localSone.getId(), friendSoneId); } @Override - public void removeFriend(Sone localSone, String friendSoneId) { - if (!localSone.isLocal()) { - return; - } + public void removeFriend(LocalSone localSone, String friendSoneId) { memoryFriendDatabase.removeFriend(localSone.getId(), friendSoneId); }