import static java.lang.System.currentTimeMillis;
import static net.pterodactylus.sone.data.Album.NOT_EMPTY;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.nio.charset.Charset;
/** The Freenet interface. */
private final FreenetInterface freenetInterface;
+ private final SoneModificationDetector soneModificationDetector;
+
/** The Sone to insert. */
private volatile Sone sone;
- /** The fingerprint of the last insert. */
- private volatile String lastInsertFingerprint;
-
/**
* Creates a new Sone inserter.
*
this.eventBus = eventBus;
this.freenetInterface = freenetInterface;
this.sone = sone;
+ this.soneModificationDetector = new SoneModificationDetector(core, sone, insertionDelay);
}
//
* @return The fingerprint of the last insert
*/
public String getLastInsertFingerprint() {
- return lastInsertFingerprint;
+ return soneModificationDetector.getOriginalFingerprint();
}
/**
* The fingerprint of the last insert
*/
public void setLastInsertFingerprint(String lastInsertFingerprint) {
- this.lastInsertFingerprint = lastInsertFingerprint;
+ soneModificationDetector.setFingerprint(lastInsertFingerprint);
}
/**
* otherwise
*/
public boolean isModified() {
- return !lastInsertFingerprint.equals(sone.getFingerprint());
+ return soneModificationDetector.isModified();
}
//
*/
@Override
protected void serviceRun() {
- SoneModificationDetector soneModificationDetector = new SoneModificationDetector(core, sone, insertionDelay);
while (!shouldStop()) {
try {
/* check every second. */
if (insertInformation.getFingerprint().equals(sone.getFingerprint())) {
logger.log(Level.FINE, String.format("Sone “%s” was not modified further, resetting counter…", sone));
soneModificationDetector.setFingerprint(insertInformation.getFingerprint());
- lastInsertFingerprint = insertInformation.getFingerprint();
core.touchConfiguration();
}
}
@SuppressWarnings("synthetic-access")
private ManifestElement createManifestElement(String name, String contentType, String templateName) {
InputStreamReader templateInputStreamReader = null;
+ InputStream templateInputStream = null;
Template template;
try {
- templateInputStreamReader = new InputStreamReader(getClass().getResourceAsStream(templateName), utf8Charset);
+ templateInputStream = getClass().getResourceAsStream(templateName);
+ templateInputStreamReader = new InputStreamReader(templateInputStream, utf8Charset);
template = TemplateParser.parse(templateInputStreamReader);
} catch (TemplateException te1) {
logger.log(Level.SEVERE, String.format("Could not parse template “%s”!", templateName), te1);
return null;
} finally {
Closer.close(templateInputStreamReader);
+ Closer.close(templateInputStream);
}
TemplateContext templateContext = templateContextFactory.createTemplateContext();