summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/PropertyDB.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-08 22:39:59 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-08 22:39:59 -0300
commitc82e3b3b2de0633317ec8fc85925e91422820597 (patch)
tree96567416ce23c5ce85601f9cedc3a94bb1c55cba /BJC-Utils2/src/main/java/bjc/utils/PropertyDB.java
parentb3ac1c8690c3e14c879913e5dcc03a5f5e14876e (diff)
Start splitting into maven modules
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/PropertyDB.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/PropertyDB.java160
1 files changed, 0 insertions, 160 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/PropertyDB.java b/BJC-Utils2/src/main/java/bjc/utils/PropertyDB.java
deleted file mode 100644
index 713e1e0..0000000
--- a/BJC-Utils2/src/main/java/bjc/utils/PropertyDB.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package bjc.utils;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.regex.Pattern;
-
-import bjc.utils.funcutils.LambdaLock;
-import bjc.utils.ioutils.SimpleProperties;
-
-/**
- * Database for storage of properties from external files.
- *
- * @author EVE
- *
- */
-public class PropertyDB {
- private static SimpleProperties regexes;
- private static Map<String, Pattern> compiledRegexes;
-
- private static SimpleProperties formats;
-
- /*
- * Whether or not to log during the loading.
- */
- private static final boolean LOGLOAD = false;
-
- /*
- * The lock to use to ensure a read can't happen during a reload
- */
- private static LambdaLock loadLock = new LambdaLock();
-
- static {
- reloadProperties();
- }
-
- /**
- * Reload all the properties from their files.
- *
- * NOTE: Any attempts to read from the property DB while properties are
- * being loaded will block, to prevent reads from partial states.
- */
- public static void reloadProperties() {
- /*
- * Do the load with the write lock taken.
- */
- loadLock.write(() -> {
- if (LOGLOAD) {
- System.out.println("Reading regex properties:");
- }
-
- /*
- * Load regexes.
- */
- regexes = new SimpleProperties();
- regexes.loadFrom(PropertyDB.class.getResourceAsStream("/regexes.sprop"), false);
- if (LOGLOAD) {
- regexes.outputProperties();
- System.out.println();
- }
- compiledRegexes = new HashMap<>();
-
- if (LOGLOAD) {
- System.out.println("Reading format properties:");
- }
-
- /*
- * Load formats.
- */
- formats = new SimpleProperties();
- formats.loadFrom(PropertyDB.class.getResourceAsStream("/formats.sprop"), false);
- if (LOGLOAD) {
- formats.outputProperties();
- System.out.println();
- }
- });
- }
-
- /**
- * Retrieve a persisted regular expression.
- *
- * @param key
- * The name of the regular expression.
- *
- * @return The regular expression with that name.
- */
- public static String getRegex(final String key) {
- return loadLock.read(() -> {
- if (!regexes.containsKey(key)) {
- final String msg = String.format("No regular expression named '%s' found", key);
-
- throw new NoSuchElementException(msg);
- }
-
- return regexes.get(key);
- });
- }
-
- /**
- * Retrieve a persisted regular expression, compiled into a regular
- * expression.
- *
- * @param key
- * The name of the regular expression.
- *
- * @return The regular expression with that name.
- */
- public static Pattern getCompiledRegex(final String key) {
- return loadLock.read(() -> {
- if (!regexes.containsKey(key)) {
- final String msg = String.format("No regular expression named '%s' found", key);
-
- throw new NoSuchElementException(msg);
- }
-
- /*
- * Get the regex, and cache a compiled version.
- */
- return compiledRegexes.computeIfAbsent(key, strang -> {
- return Pattern.compile(regexes.get(strang));
- });
- });
- }
-
- /**
- * Retrieve a persisted format string.
- *
- * @param key
- * The name of the format string.
- *
- * @return The format string with that name.
- */
- public static String getFormat(final String key) {
- return loadLock.read(() -> {
- if (!formats.containsKey(key)) {
- final String msg = String.format("No format string named '%s' found", key);
-
- throw new NoSuchElementException(msg);
- }
-
- return formats.get(key);
- });
- }
-
- /**
- * Retrieve a persisted format string, and apply it to a set of
- * arguments.
- *
- * @param key
- * The name of the format string.
- *
- * @param objects
- * The parameters to the format string.
- *
- * @return The format string with that name.
- */
- public static String applyFormat(final String key, final Object... objects) {
- return String.format(getFormat(key), objects);
- }
-}