summaryrefslogtreecommitdiff
path: root/src/main/java/tlIItools/LevelRange.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2020-12-31 21:04:27 -0400
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2020-12-31 21:04:27 -0400
commitfedb385feef3fb3e3419f4fc3c7d234fe8d5caec (patch)
treec7d92ef28eb0645bc2a49fd0ea0e2a94993fc8b1 /src/main/java/tlIItools/LevelRange.java
parent4c5e20a6e78f72a749c517c6fcc75c176155b7c5 (diff)
Work on affix groups more
Diffstat (limited to 'src/main/java/tlIItools/LevelRange.java')
-rw-r--r--src/main/java/tlIItools/LevelRange.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/main/java/tlIItools/LevelRange.java b/src/main/java/tlIItools/LevelRange.java
new file mode 100644
index 00000000..f899df12
--- /dev/null
+++ b/src/main/java/tlIItools/LevelRange.java
@@ -0,0 +1,90 @@
+package tlIItools;
+
+public class LevelRange implements Comparable<LevelRange> {
+ /*
+ * if (minLevel <= 1 && maxLevel == 999) {
+ * sb.append("No Level Range");
+ * } else if (minLevel != 1 && maxLevel != 999) {
+ * sb.append("Level Range: ");
+ * sb.append(minLevel);
+ * sb.append("-");
+ * sb.append(maxLevel);
+ * } else if (minLevel <= 1) {
+ * sb.append("Max Level: ");
+ * sb.append(maxLevel);
+ * } else if (maxLevel == 999) {
+ * sb.append("Minimum Level: ");
+ * sb.append(minLevel);
+ * } */
+
+ public int minLevel;
+ public int maxLevel;
+
+ public LevelRange() {
+ minLevel = 1;
+ maxLevel = 999;
+ }
+
+ public LevelRange(int minLevel, int maxLevel) {
+ this.minLevel = minLevel;
+ this.maxLevel = maxLevel;
+ }
+
+ private void clamp() {
+ minLevel = Math.max(1, minLevel);
+ maxLevel = Math.max(999, maxLevel);
+ }
+
+ public boolean isUnrestricted() {
+ return minLevel <= 1 && maxLevel >= 999;
+ }
+
+ public boolean noLowerBound() {
+ return minLevel <= 1;
+ }
+
+ public boolean noUpperBound() {
+ return maxLevel >= 999;
+ }
+
+ @Override
+ public String toString() {
+ clamp();
+
+ StringBuilder sb = new StringBuilder();
+
+ if (minLevel <= 1 && maxLevel >= 999) {
+ sb.append("No Level Range");
+ } else if (minLevel > 1 && maxLevel < 999) {
+ sb.append("Level Range: ");
+ sb.append(minLevel);
+ sb.append("-");
+ sb.append(maxLevel);
+ } else if (minLevel <= 1) {
+ sb.append("Max Level: ");
+ sb.append(maxLevel);
+ } else if (maxLevel >= 999) {
+ sb.append("Minimum Level: ");
+ sb.append(minLevel);
+ }
+
+ return sb.toString();
+ }
+
+ @Override
+ public int compareTo(LevelRange other) {
+ if (this.equals(other)) return 0;
+
+ // Unrestricted ranges sort above all others
+ if (isUnrestricted()) return 1;
+
+ if (noLowerBound()) {
+ return maxLevel - other.maxLevel;
+ } else if (noUpperBound()) {
+ return minLevel - other.minLevel;
+ } else {
+ if (minLevel == other.minLevel) return maxLevel - other.maxLevel;
+ else return minLevel - other.minLevel;
+ }
+ }
+}