*/
public void addLocalSone(Sone sone) {
if (localSones.add(sone)) {
- SoneInserter soneInserter = new SoneInserter(freenetInterface, sone);
+ SoneInserter soneInserter = new SoneInserter(this, freenetInterface, sone);
soneInserter.start();
soneInserters.put(sone, soneInserter);
}
break;
}
String name = configuration.getStringValue(sonePrefix + "/Name").getValue(null);
+ long time = configuration.getLongValue(sonePrefix + "/Time").getValue((long) 0);
String insertUri = configuration.getStringValue(sonePrefix + "/InsertURI").getValue(null);
String requestUri = configuration.getStringValue(sonePrefix + "/RequestURI").getValue(null);
long modificationCounter = configuration.getLongValue(sonePrefix + "/ModificationCounter").getValue((long) 0);
profile.setFirstName(firstName);
profile.setMiddleName(middleName);
profile.setLastName(lastName);
- Sone sone = getSone(id).setName(name).setRequestUri(new FreenetURI(requestUri)).setInsertUri(new FreenetURI(insertUri));
+ Sone sone = getSone(id).setName(name).setTime(time).setRequestUri(new FreenetURI(requestUri)).setInsertUri(new FreenetURI(insertUri));
sone.setProfile(profile);
int postId = 0;
do {
if (id == null) {
break;
}
- long time = configuration.getLongValue(postPrefix + "/Time").getValue(null);
+ time = configuration.getLongValue(postPrefix + "/Time").getValue((long) 0);
String text = configuration.getStringValue(postPrefix + "/Text").getValue(null);
Post post = getPost(id).setSone(sone).setTime(time).setText(text);
sone.addPost(post);
sone.addFriend(friendSone);
}
+ /* load blocked Sone IDs. */
+ int blockedSoneCounter = 0;
+ while (true) {
+ String blockedSonePrefix = sonePrefix + "/BlockedSone." + blockedSoneCounter++;
+ String blockedSoneId = configuration.getStringValue(blockedSonePrefix + "/ID").getValue(null);
+ if (blockedSoneId == null) {
+ break;
+ }
+ sone.addBlockedSoneId(blockedSoneId);
+ }
+
sone.setModificationCounter(modificationCounter);
addLocalSone(sone);
} catch (MalformedURLException mue1) {
} while (true);
logger.log(Level.INFO, "Loaded %d Sones.", getSones().size());
+ /* load all known Sones. */
+ int knownSonesCounter = 0;
+ while (true) {
+ String knownSonePrefix = "KnownSone." + knownSonesCounter++;
+ String knownSoneId = configuration.getStringValue(knownSonePrefix + "/ID").getValue(null);
+ if (knownSoneId == null) {
+ break;
+ }
+ String knownSoneName = configuration.getStringValue(knownSonePrefix + "/Name").getValue(null);
+ String knownSoneKey = configuration.getStringValue(knownSonePrefix + "/Key").getValue(null);
+ try {
+ getSone(knownSoneId).setName(knownSoneName).setRequestUri(new FreenetURI(knownSoneKey));
+ } catch (MalformedURLException mue1) {
+ logger.log(Level.WARNING, "Could not create Sone from requestUri (“" + knownSoneKey + "”)!", mue1);
+ }
+ }
+
/* load all remote Sones. */
for (Sone remoteSone : getRemoteSones()) {
loadSone(remoteSone);
String sonePrefix = "Sone/Sone." + soneId++;
configuration.getStringValue(sonePrefix + "/ID").setValue(sone.getId());
configuration.getStringValue(sonePrefix + "/Name").setValue(sone.getName());
+ configuration.getLongValue(sonePrefix + "/Time").setValue(sone.getTime());
configuration.getStringValue(sonePrefix + "/RequestURI").setValue(sone.getRequestUri().toString());
configuration.getStringValue(sonePrefix + "/InsertURI").setValue(sone.getInsertUri().toString());
configuration.getLongValue(sonePrefix + "/ModificationCounter").setValue(sone.getModificationCounter());
/* write null ID as terminator. */
configuration.getStringValue(sonePrefix + "/Friend." + friendId + "/ID").setValue(null);
+ /* write all blocked Sones. */
+ int blockedSoneCounter = 0;
+ for (String blockedSoneId : sone.getBlockedSoneIds()) {
+ String blockedSonePrefix = sonePrefix + "/BlockedSone." + blockedSoneCounter++;
+ configuration.getStringValue(blockedSonePrefix + "/ID").setValue(blockedSoneId);
+ }
+ configuration.getStringValue(sonePrefix + "/BlockedSone." + blockedSoneCounter + "/ID").setValue(null);
+
}
/* write null ID as terminator. */
configuration.getStringValue("Sone/Sone." + soneId + "/ID").setValue(null);
+ /* write all known Sones. */
+ int knownSonesCounter = 0;
+ for (Sone knownSone : getRemoteSones()) {
+ String knownSonePrefix = "KnownSone." + knownSonesCounter++;
+ configuration.getStringValue(knownSonePrefix + "/ID").setValue(knownSone.getId());
+ configuration.getStringValue(knownSonePrefix + "/Name").setValue(knownSone.getName());
+ configuration.getStringValue(knownSonePrefix + "/Key").setValue(knownSone.getRequestUri().toString());
+ /* TODO - store all known stuff? */
+ }
+ configuration.getStringValue("KnownSone." + knownSonesCounter + "/ID").setValue(null);
+
} catch (ConfigurationException ce1) {
logger.log(Level.WARNING, "Could not store configuration!", ce1);
}