/* synchronize access on this on sones. */
private final Map<LocalSone, SoneRescuer> soneRescuers = new HashMap<LocalSone, SoneRescuer>();
- /** All known Sones. */
- private final Set<String> knownSones = new HashSet<String>();
-
/** The post database. */
private final Database database;
* The own identity to create a Sone from
* @return The added (or already existing) Sone
*/
- public Sone addLocalSone(OwnIdentity ownIdentity) {
+ public LocalSone addLocalSone(OwnIdentity ownIdentity) {
if (ownIdentity == null) {
logger.log(Level.WARNING, "Given OwnIdentity is null!");
return null;
logger.log(Level.SEVERE, String.format("Could not add “Sone” context to own identity: %s", ownIdentity));
return null;
}
- Sone sone = addLocalSone(ownIdentity);
+ LocalSone sone = addLocalSone(ownIdentity);
followSone(sone, "nwa8lHa271k2QvJ8aa0Ov7IHAV-DFOCFgmDt3X6BpCI");
touchConfiguration();
Sone sone = !newSone ? existingSone.get() : database.newSoneBuilder().from(identity).build();
sone.setLatestEdition(latestEdition);
if (newSone) {
- synchronized (knownSones) {
- newSone = !knownSones.contains(sone.getId());
- }
+ newSone = !database.isSoneKnown(sone);
sone.setKnown(!newSone);
if (newSone) {
eventBus.post(new NewSoneFoundEvent(sone));
- for (Sone localSone : getLocalSones()) {
+ for (LocalSone localSone : getLocalSones()) {
if (localSone.getOptions().isAutoFollow()) {
followSone(localSone, sone.getId());
}
* @param soneId
* The ID of the Sone to follow
*/
- public void followSone(Sone sone, String soneId) {
+ public void followSone(LocalSone sone, String soneId) {
checkNotNull(sone, "sone must not be null");
checkNotNull(soneId, "soneId must not be null");
database.addFriend(sone, soneId);
* @param soneId
* The ID of the Sone being unfollowed
*/
- public void unfollowSone(Sone sone, String soneId) {
+ public void unfollowSone(LocalSone sone, String soneId) {
checkNotNull(sone, "sone must not be null");
checkNotNull(soneId, "soneId must not be null");
database.removeFriend(sone, soneId);
public void markSoneKnown(Sone sone) {
if (!sone.isKnown()) {
sone.setKnown(true);
- synchronized (knownSones) {
- knownSones.add(sone.getId());
- }
+ database.setSoneKnown(sone);
eventBus.post(new MarkSoneKnownEvent(sone));
touchConfiguration();
}
try {
preferences.saveTo(configuration);
- /* save known Sones. */
- int soneCounter = 0;
- synchronized (knownSones) {
- for (String knownSoneId : knownSones) {
- configuration.getStringValue("KnownSone/" + soneCounter++ + "/ID").setValue(knownSoneId);
- }
- configuration.getStringValue("KnownSone/" + soneCounter + "/ID").setValue(null);
- }
-
/* save Sone following times. */
- soneCounter = 0;
+ int soneCounter = 0;
synchronized (soneFollowingTimes) {
for (Entry<String, Long> soneFollowingTime : soneFollowingTimes.entrySet()) {
configuration.getStringValue("SoneFollowingTimes/" + soneCounter + "/Sone").setValue(soneFollowingTime.getKey());
private void loadConfiguration() {
new PreferencesLoader(preferences).loadFrom(configuration);
- /* load known Sones. */
- int soneCounter = 0;
- while (true) {
- String knownSoneId = configuration.getStringValue("KnownSone/" + soneCounter++ + "/ID").getValue(null);
- if (knownSoneId == null) {
- break;
- }
- synchronized (knownSones) {
- knownSones.add(knownSoneId);
- }
- }
-
/* load Sone following times. */
- soneCounter = 0;
+ int soneCounter = 0;
while (true) {
String soneId = configuration.getStringValue("SoneFollowingTimes/" + soneCounter + "/Sone").getValue(null);
if (soneId == null) {