X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;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); + } + } }