/* 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;
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));
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) {