X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FOptions.java;h=94fbec1b41ed17d8b95259b421f8337e68fb5b55;hb=6023bbd61648c16270edb6c59b24f61d648bb982;hp=752c36c403fdc3fad96219e57f553e249f93f7be;hpb=bc11c5c7ea2d08b5cc3acd62a0af06459997454c;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Options.java b/src/main/java/net/pterodactylus/sone/core/Options.java index 752c36c..94fbec1 100644 --- a/src/main/java/net/pterodactylus/sone/core/Options.java +++ b/src/main/java/net/pterodactylus/sone/core/Options.java @@ -1,7 +1,25 @@ +/* + * Sone - Options.java - Copyright © 2010 David Roden + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + package net.pterodactylus.sone.core; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -93,7 +111,7 @@ public class Options { private final T defaultValue; /** The current value. */ - private T value; + private volatile T value; /** The option watcher. */ private final List> optionWatchers = new ArrayList>(); @@ -154,8 +172,40 @@ public class Options { } + /** Holds all {@link Boolean} {@link Option}s. */ + private final Map> booleanOptions = Collections.synchronizedMap(new HashMap>()); + /** Holds all {@link Integer} {@link Option}s. */ - private final Map> integerOptions = new HashMap>(); + private final Map> integerOptions = Collections.synchronizedMap(new HashMap>()); + + /** Holds all {@link String} {@link Option}s. */ + private final Map> stringOptions = Collections.synchronizedMap(new HashMap>()); + + /** + * Adds a boolean option. + * + * @param name + * The name of the option + * @param booleanOption + * The option + * @return The given option + */ + public Option addBooleanOption(String name, Option booleanOption) { + booleanOptions.put(name, booleanOption); + return booleanOption; + } + + /** + * Returns the boolean option with the given name. + * + * @param name + * The name of the option + * @return The option, or {@code null} if there is no option with the given + * name + */ + public Option getBooleanOption(String name) { + return booleanOptions.get(name); + } /** * Adds an {@link Integer} {@link Option}. @@ -183,4 +233,30 @@ public class Options { return integerOptions.get(name); } + /** + * Adds a {@link String} {@link Option}. + * + * @param name + * The name of the option + * @param stringOption + * The option + * @return The given option + */ + public Option addStringOption(String name, Option stringOption) { + stringOptions.put(name, stringOption); + return stringOption; + } + + /** + * Returns a {@link String} {@link Option}. + * + * @param name + * The name of the string option to get + * @return The string option, or {@code null} if there is no option with the + * given name + */ + public Option getStringOption(String name) { + return stringOptions.get(name); + } + }