X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fstates%2FStateManager.java;h=8e0c72eb1177efb568744ddd2aa587116aa99a61;hb=c849f7f04df084252db87a2389f50f55d4b9a775;hp=a52e74d4bcc63a3d84dd6283e3940f8b4ef4f640;hpb=c52aa3cb7bd06a5be45bf9e771c01c1be593dc07;p=rhynodge.git
diff --git a/src/main/java/net/pterodactylus/rhynodge/states/StateManager.java b/src/main/java/net/pterodactylus/rhynodge/states/StateManager.java
index a52e74d..8e0c72e 100644
--- a/src/main/java/net/pterodactylus/rhynodge/states/StateManager.java
+++ b/src/main/java/net/pterodactylus/rhynodge/states/StateManager.java
@@ -17,15 +17,18 @@
package net.pterodactylus.rhynodge.states;
-import static com.google.common.base.Optional.absent;
-import static com.google.common.base.Optional.fromNullable;
+import static java.util.Optional.empty;
+import static java.util.Optional.ofNullable;
import java.io.File;
import java.io.IOException;
+import java.util.Optional;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
import net.pterodactylus.rhynodge.State;
-import com.google.common.base.Optional;
import org.apache.log4j.Logger;
import com.fasterxml.jackson.core.JsonGenerationException;
@@ -38,6 +41,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
*
* @author David âBombeâ Roden
*/
+@Singleton
public class StateManager {
/** The logger. */
@@ -52,11 +56,12 @@ public class StateManager {
/**
* Creates a new state manager. The given directory is assumed to exist.
*
- * @param directory
+ * @param stateDirectory
* The directory to store states in
*/
- public StateManager(String directory) {
- this.directory = directory;
+ @Inject
+ public StateManager(StateDirectory stateDirectory) {
+ this.directory = stateDirectory.getDirectory();
}
//
@@ -68,7 +73,7 @@ public class StateManager {
*
* @param reactionName
* The name of the reaction
- * @return The loaded state, or {@link Optional#absent()} if the state could not be
+ * @return The loaded state, or {@link Optional#empty()} if the state could not be
* loaded
*/
public Optional loadLastState(String reactionName) {
@@ -80,7 +85,7 @@ public class StateManager {
*
* @param reactionName
* The name of the reaction
- * @return The loaded state, or {@link Optional#absent()} if the state could not be
+ * @return The loaded state, or {@link Optional#empty()} if the state could not be
* loaded
*/
public Optional loadLastSuccessfulState(String reactionName) {
@@ -141,14 +146,14 @@ public class StateManager {
* @param successful
* {@code true} to load the last successful state, {@code false}
* to load the last state
- * @return The loaded state, or {@link Optional#absent()} if the state could not be
+ * @return The loaded state, or {@link Optional#empty()} if the state could not be
* loaded
*/
private Optional loadLastState(String reactionName, boolean successful) {
File stateFile = stateFile(reactionName, successful ? "success" : "last");
try {
State state = objectMapper.readValue(stateFile, AbstractState.class);
- return fromNullable(state);
+ return ofNullable(state);
} catch (JsonParseException jpe1) {
logger.warn(String.format("State for Reaction â%sâ could not be parsed.", reactionName), jpe1);
} catch (JsonMappingException jme1) {
@@ -156,7 +161,25 @@ public class StateManager {
} catch (IOException ioe1) {
logger.info(String.format("State for Reaction â%sâ could not be found.", reactionName));
}
- return absent();
+ return empty();
+ }
+
+ public static class StateDirectory {
+
+ private final String directory;
+
+ private StateDirectory(String directory) {
+ this.directory = directory;
+ }
+
+ public String getDirectory() {
+ return directory;
+ }
+
+ public static StateDirectory of(String directory) {
+ return new StateDirectory(directory);
+ }
+
}
}