mirror of https://github.com/tasks/tasks
Remove Java DbUtils
parent
1b891f2d7e
commit
2b8b16e72a
@ -1,54 +0,0 @@
|
|||||||
package org.tasks.db;
|
|
||||||
|
|
||||||
import static com.google.common.collect.Lists.partition;
|
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
|
||||||
import com.google.common.collect.Iterables;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import org.tasks.Callback;
|
|
||||||
|
|
||||||
public class DbUtils {
|
|
||||||
|
|
||||||
public static final int MAX_SQLITE_ARGS = 990;
|
|
||||||
|
|
||||||
public static <F, T> List<T> collect(Collection<F> items, Function<List<F>, List<T>> func) {
|
|
||||||
if (items.size() < MAX_SQLITE_ARGS) {
|
|
||||||
return func.apply(items instanceof List ? (List<F>) items : new ArrayList<>(items));
|
|
||||||
}
|
|
||||||
List<T> result = new ArrayList<>();
|
|
||||||
batch(items, b -> result.addAll(func.apply(b)));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <T> void batch(List<T> items, Callback<List<T>> callback) {
|
|
||||||
batch(items, MAX_SQLITE_ARGS, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <T> void batch(Iterable<T> items, Callback<List<T>> callback) {
|
|
||||||
batch(items, MAX_SQLITE_ARGS, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static <T> void batch(List<T> items, int size, Callback<List<T>> callback) {
|
|
||||||
if (items.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (items.size() <= size) {
|
|
||||||
callback.call(items);
|
|
||||||
} else {
|
|
||||||
for (List<T> sublist : partition(items, size)) {
|
|
||||||
callback.call(sublist);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <T> void batch(Iterable<T> items, int size, Callback<List<T>> callback) {
|
|
||||||
if (!items.iterator().hasNext()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (List<T> sublist : Iterables.partition(items, size)) {
|
|
||||||
callback.call(sublist);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +1,9 @@
|
|||||||
package org.tasks.db
|
package org.tasks.db
|
||||||
|
|
||||||
object DbUtilsKt {
|
object DbUtils {
|
||||||
fun <T> Iterable<T>.dbchunk(): List<List<T>> = chunked(DbUtils.MAX_SQLITE_ARGS)
|
const val MAX_SQLITE_ARGS = 990
|
||||||
|
|
||||||
|
fun <T> Iterable<T>.dbchunk(): List<List<T>> = chunked(MAX_SQLITE_ARGS)
|
||||||
|
|
||||||
fun <T> Iterable<T>.eachChunk(action: (List<T>) -> Unit) = dbchunk().forEach(action)
|
fun <T> Iterable<T>.eachChunk(action: (List<T>) -> Unit) = dbchunk().forEach(action)
|
||||||
|
|
Loading…
Reference in New Issue