summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/WrappedLazy.java2
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/WrappedOption.java2
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/IMap.java2
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java43
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java4
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/gui/SimpleFileChooser.java8
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/gui/SimpleInternalDialogs.java4
7 files changed, 54 insertions, 11 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/WrappedLazy.java b/BJC-Utils2/src/main/java/bjc/utils/data/WrappedLazy.java
index 8ca29bc..b894ac7 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/WrappedLazy.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/WrappedLazy.java
@@ -13,7 +13,7 @@ class WrappedLazy<ContainedType> implements IHolder<ContainedType> {
// This has an extra parameter, because otherwise it erases to the same
// as the public one
private WrappedLazy(IHolder<IHolder<ContainedType>> wrappedHolder,
- @SuppressWarnings("unused") boolean dummy) {
+ boolean dummy) {
held = wrappedHolder;
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/WrappedOption.java b/BJC-Utils2/src/main/java/bjc/utils/data/WrappedOption.java
index 5be55cc..fea4cb9 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/WrappedOption.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/WrappedOption.java
@@ -11,7 +11,7 @@ class WrappedOption<ContainedType> implements IHolder<ContainedType> {
}
private WrappedOption(IHolder<IHolder<ContainedType>> toHold,
- @SuppressWarnings("unused") boolean dummy) {
+ boolean dummy) {
held = toHold;
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/IMap.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/IMap.java
index f1616b2..4fb7c2b 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/IMap.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/IMap.java
@@ -141,7 +141,7 @@ public interface IMap<KeyType, ValueType> {
default ValueType getOrDefault(KeyType key, ValueType defaultValue) {
try {
return get(key);
- } catch (@SuppressWarnings("unused") IllegalArgumentException iaex) {
+ } catch (IllegalArgumentException iaex) {
// We don't care about this, because it indicates a key is
// missing
return defaultValue;
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java b/BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java
index f09a794..d65603b 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcutils/ListUtils.java
@@ -3,6 +3,7 @@ package bjc.utils.funcutils;
import java.util.ArrayList;
import java.util.Deque;
import java.util.function.Function;
+import java.util.function.Supplier;
import bjc.utils.data.IHolder;
import bjc.utils.data.IPair;
@@ -175,6 +176,7 @@ public class ListUtils {
* The function to determine the count for each element for
* @param numberPerPartition
* The number of elements to put in each partition
+ *
* @return A list partitioned according to the above rules
*/
public static <E> IList<IList<E>> groupPartition(IList<E> input,
@@ -294,4 +296,45 @@ public class ListUtils {
return returnedList.getValue();
}
+
+ public static <E> IList<E> padList(IList<E> list,
+ Function<E, Integer> counter, int size,
+ Supplier<E> padSource) {
+ IHolder<Integer> countHolder = new Identity<>(0);
+
+ IList<E> ret = list.map((elm) -> {
+ countHolder.map((val) -> val + counter.apply(elm));
+
+ return elm;
+ });
+
+ if (countHolder.unwrap((val) -> val % size != 0)) {
+ // We need to pad
+ int needed = countHolder.unwrap((val) -> val % size);
+ int threshold = 0;
+
+ while (needed > 0 && threshold <= MAX_NTRIESPART) {
+ E val = padSource.get();
+ int count = counter.apply(val);
+
+ if (count <= needed) {
+ ret.add(val);
+
+ threshold = 0;
+
+ needed -= count;
+ } else {
+ threshold += 1;
+ }
+ }
+
+ if (threshold > MAX_NTRIESPART) {
+ throw new IllegalArgumentException("Heuristic (more than "
+ + MAX_NTRIESPART
+ + " iterations of attempting to pad) detected unpaddable list ");
+ }
+ }
+
+ return ret;
+ }
} \ No newline at end of file
diff --git a/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java b/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java
index 51d9d5d..77e518e 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java
@@ -43,7 +43,7 @@ public class SimpleDialogs {
int value = Integer.parseInt(strang);
return (value < upperBound) && (value > lowerBound);
- } catch (@SuppressWarnings("unused") NumberFormatException nfex) {
+ } catch (NumberFormatException nfex) {
// We don't care about the specifics of the exception, just
// that this value isn't good
return false;
@@ -127,7 +127,7 @@ public class SimpleDialogs {
try {
Integer.parseInt(strang);
return true;
- } catch (@SuppressWarnings("unused") NumberFormatException nfex) {
+ } catch (NumberFormatException nfex) {
// We don't care about this exception, just mark the value
// as not good
return false;
diff --git a/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleFileChooser.java b/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleFileChooser.java
index b4c6d73..010de5f 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleFileChooser.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleFileChooser.java
@@ -31,7 +31,7 @@ public class SimpleFileChooser {
maybeDoOpenFile(parent, files);
success = true;
- } catch (@SuppressWarnings("unused") FileNotChosenException fncx) {
+ } catch (FileNotChosenException fncx) {
// We don't care about specifics
SimpleDialogs.showError(parent, "I/O Error",
"Please pick a file to open");
@@ -56,7 +56,7 @@ public class SimpleFileChooser {
maybeDoSaveFile(parent, files);
return files.getSelectedFile();
- } catch (@SuppressWarnings("unused") FileNotChosenException fncex) {
+ } catch (FileNotChosenException fncex) {
// We don't care about specifics
SimpleDialogs.showError(parent, "I/O Error",
"Please pick a file to save to");
@@ -189,7 +189,7 @@ public class SimpleFileChooser {
try {
maybeDoOpenFile(parent, files);
- } catch (@SuppressWarnings("unused") FileNotChosenException fncex) {
+ } catch (FileNotChosenException fncex) {
// We don't care about specifics
}
@@ -215,7 +215,7 @@ public class SimpleFileChooser {
try {
maybeDoSaveFile(parent, files);
- } catch (@SuppressWarnings("unused") FileNotChosenException fncex) {
+ } catch (FileNotChosenException fncex) {
// We don't care about specifics
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleInternalDialogs.java b/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleInternalDialogs.java
index 82946f0..8246822 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleInternalDialogs.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleInternalDialogs.java
@@ -36,7 +36,7 @@ public class SimpleInternalDialogs {
int value = Integer.parseInt(strang);
return (value < upperBound) && (value > lowerBound);
- } catch (@SuppressWarnings("unused") NumberFormatException nfex) {
+ } catch (NumberFormatException nfex) {
// We don't care about the specifics of the exception, just
// that this value isn't good
return false;
@@ -61,7 +61,7 @@ public class SimpleInternalDialogs {
try {
Integer.parseInt(strang);
return true;
- } catch (@SuppressWarnings("unused") NumberFormatException nfex) {
+ } catch (NumberFormatException nfex) {
// We don't care about this exception, just mark the value
// as not good
return false;