From eab2f96f02ae26a8ede7002327e39bb9b5c3a428 Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Sat, 16 Aug 2025 10:20:52 +0100 Subject: [PATCH] remove duplicate colletors and Use collectors from new utility class --- .../vitorpamplona/quartz/utils/LargeCache.kt | 400 ++---------------- .../quartz/utils/LargeSoftCache.kt | 400 ++---------------- 2 files changed, 66 insertions(+), 734 deletions(-) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/utils/LargeCache.kt b/quartz/src/main/java/com/vitorpamplona/quartz/utils/LargeCache.kt index bd61c05d1..4254d94bf 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/utils/LargeCache.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/utils/LargeCache.kt @@ -80,116 +80,116 @@ class LargeCache { innerForEach(consumer) } - fun filter(consumer: BiFilter): List { - val runner = BiFilterCollector(consumer) + fun filter(consumer: CacheCollectors.BiFilter): List { + val runner = CacheCollectors.BiFilterCollector(consumer) innerForEach(runner) return runner.results } - fun filterIntoSet(consumer: BiFilter): Set { - val runner = BiFilterUniqueCollector(consumer) + fun filterIntoSet(consumer: CacheCollectors.BiFilter): Set { + val runner = CacheCollectors.BiFilterUniqueCollector(consumer) innerForEach(runner) return runner.results } - fun map(consumer: BiNotNullMapper): List { - val runner = BiNotNullMapCollector(consumer) + fun map(consumer: CacheCollectors.BiNotNullMapper): List { + val runner = CacheCollectors.BiNotNullMapCollector(consumer) innerForEach(runner) return runner.results } - fun mapNotNull(consumer: BiMapper): List { - val runner = BiMapCollector(consumer) + fun mapNotNull(consumer: CacheCollectors.BiMapper): List { + val runner = CacheCollectors.BiMapCollector(consumer) innerForEach(runner) return runner.results } - fun mapNotNullIntoSet(consumer: BiMapper): Set { - val runner = BiMapUniqueCollector(consumer) + fun mapNotNullIntoSet(consumer: CacheCollectors.BiMapper): Set { + val runner = CacheCollectors.BiMapUniqueCollector(consumer) innerForEach(runner) return runner.results } - fun mapFlatten(consumer: BiMapper?>): List { - val runner = BiMapFlattenCollector(consumer) + fun mapFlatten(consumer: CacheCollectors.BiMapper?>): List { + val runner = CacheCollectors.BiMapFlattenCollector(consumer) innerForEach(runner) return runner.results } - fun mapFlattenIntoSet(consumer: BiMapper?>): Set { - val runner = BiMapFlattenUniqueCollector(consumer) + fun mapFlattenIntoSet(consumer: CacheCollectors.BiMapper?>): Set { + val runner = CacheCollectors.BiMapFlattenUniqueCollector(consumer) innerForEach(runner) return runner.results } fun maxOrNullOf( - filter: BiFilter, + filter: CacheCollectors.BiFilter, comparator: Comparator, ): V? { - val runner = BiMaxOfCollector(filter, comparator) + val runner = CacheCollectors.BiMaxOfCollector(filter, comparator) innerForEach(runner) return runner.maxV } - fun sumOf(consumer: BiSumOf): Int { - val runner = BiSumOfCollector(consumer) + fun sumOf(consumer: CacheCollectors.BiSumOf): Int { + val runner = CacheCollectors.BiSumOfCollector(consumer) innerForEach(runner) return runner.sum } - fun sumOfLong(consumer: BiSumOfLong): Long { - val runner = BiSumOfLongCollector(consumer) + fun sumOfLong(consumer: CacheCollectors.BiSumOfLong): Long { + val runner = CacheCollectors.BiSumOfLongCollector(consumer) innerForEach(runner) return runner.sum } - fun groupBy(consumer: BiNotNullMapper): Map> { - val runner = BiGroupByCollector(consumer) + fun groupBy(consumer: CacheCollectors.BiNotNullMapper): Map> { + val runner = CacheCollectors.BiGroupByCollector(consumer) innerForEach(runner) return runner.results } - fun countByGroup(consumer: BiNotNullMapper): Map { - val runner = BiCountByGroupCollector(consumer) + fun countByGroup(consumer: CacheCollectors.BiNotNullMapper): Map { + val runner = CacheCollectors.BiCountByGroupCollector(consumer) innerForEach(runner) return runner.results } fun sumByGroup( - groupMap: BiNotNullMapper, - sumOf: BiNotNullMapper, + groupMap: CacheCollectors.BiNotNullMapper, + sumOf: CacheCollectors.BiNotNullMapper, ): Map { - val runner = BiSumByGroupCollector(groupMap, sumOf) + val runner = CacheCollectors.BiSumByGroupCollector(groupMap, sumOf) innerForEach(runner) return runner.results } - fun count(consumer: BiFilter): Int { - val runner = BiCountIfCollector(consumer) + fun count(consumer: CacheCollectors.BiFilter): Int { + val runner = CacheCollectors.BiCountIfCollector(consumer) innerForEach(runner) return runner.count } fun associate(transform: (K, V) -> Pair): Map { - val runner = BiAssociateCollector(size(), transform) + val runner = CacheCollectors.BiAssociateCollector(size(), transform) innerForEach(runner) return runner.results } fun associateNotNull(transform: (K, V) -> Pair?): Map { - val runner = BiAssociateNotNullCollector(size(), transform) + val runner = CacheCollectors.BiAssociateNotNullCollector(size(), transform) innerForEach(runner) return runner.results } fun associateWith(transform: (K, V) -> U?): Map { - val runner = BiAssociateWithCollector(size(), transform) + val runner = CacheCollectors.BiAssociateWithCollector(size(), transform) innerForEach(runner) return runner.results } fun associateNotNullWith(transform: (K, V) -> U): Map { - val runner = BiAssociateNotNullWithCollector(size(), transform) + val runner = CacheCollectors.BiAssociateNotNullWithCollector(size(), transform) innerForEach(runner) return runner.results } @@ -227,338 +227,4 @@ class LargeCache { buffer.append(postfix) return buffer.toString() } - - fun interface BiFilter { - fun filter( - k: K, - v: V, - ): Boolean - } - - class BiFilterCollector( - val filter: BiFilter, - ) : BiConsumer { - var results: ArrayList = ArrayList() - - override fun accept( - k: K, - v: V, - ) { - if (filter.filter(k, v)) { - results.add(v) - } - } - } - - class BiFilterUniqueCollector( - val filter: BiFilter, - ) : BiConsumer { - var results: HashSet = HashSet() - - override fun accept( - k: K, - v: V, - ) { - if (filter.filter(k, v)) { - results.add(v) - } - } - } - - fun interface BiMapper { - fun map( - k: K, - v: V, - ): R? - } - - fun interface BiMapperNotNull { - fun map( - k: K, - v: V, - ): R - } - - class BiMapCollector( - val mapper: BiMapper, - ) : BiConsumer { - var results: ArrayList = ArrayList() - - override fun accept( - k: K, - v: V, - ) { - val result = mapper.map(k, v) - if (result != null) { - results.add(result) - } - } - } - - class BiAssociateCollector( - val size: Int, - val mapper: BiMapperNotNull>, - ) : BiConsumer { - var results: LinkedHashMap = LinkedHashMap(size) - - override fun accept( - k: K, - v: V, - ) { - val pair = mapper.map(k, v) - results.put(pair.first, pair.second) - } - } - - class BiAssociateNotNullCollector( - val size: Int, - val mapper: BiMapper?>, - ) : BiConsumer { - var results: LinkedHashMap = LinkedHashMap(size) - - override fun accept( - k: K, - v: V, - ) { - val pair = mapper.map(k, v) - if (pair != null) { - results.put(pair.first, pair.second) - } - } - } - - class BiAssociateWithCollector( - val size: Int, - val mapper: BiMapper, - ) : BiConsumer { - var results: LinkedHashMap = LinkedHashMap(size) - - override fun accept( - k: K, - v: V, - ) { - results.put(k, mapper.map(k, v)) - } - } - - class BiAssociateNotNullWithCollector( - val size: Int, - val mapper: BiMapper, - ) : BiConsumer { - var results: LinkedHashMap = LinkedHashMap(size) - - override fun accept( - k: K, - v: V, - ) { - val newValue = mapper.map(k, v) - if (newValue != null) { - results.put(k, newValue) - } - } - } - - class BiMapUniqueCollector( - val mapper: BiMapper, - ) : BiConsumer { - var results: HashSet = HashSet() - - override fun accept( - k: K, - v: V, - ) { - val result = mapper.map(k, v) - if (result != null) { - results.add(result) - } - } - } - - class BiMapFlattenCollector( - val mapper: BiMapper?>, - ) : BiConsumer { - var results: ArrayList = ArrayList() - - override fun accept( - k: K, - v: V, - ) { - val result = mapper.map(k, v) - if (result != null) { - results.addAll(result) - } - } - } - - class BiMapFlattenUniqueCollector( - val mapper: BiMapper?>, - ) : BiConsumer { - var results: HashSet = HashSet() - - override fun accept( - k: K, - v: V, - ) { - val result = mapper.map(k, v) - if (result != null) { - results.addAll(result) - } - } - } - - fun interface BiNotNullMapper { - fun map( - k: K, - v: V, - ): R - } - - class BiNotNullMapCollector( - val mapper: BiNotNullMapper, - ) : BiConsumer { - var results: ArrayList = ArrayList() - - override fun accept( - k: K, - v: V, - ) { - results.add(mapper.map(k, v)) - } - } - - fun interface BiSumOf { - fun map( - k: K, - v: V, - ): Int - } - - class BiMaxOfCollector( - val filter: BiFilter, - val comparator: Comparator, - ) : BiConsumer { - var maxK: K? = null - var maxV: V? = null - - override fun accept( - k: K, - v: V, - ) { - if (filter.filter(k, v)) { - if (maxK == null || comparator.compare(v, maxV) > 0) { - maxK = k - maxV = v - } - } - } - } - - class BiSumOfCollector( - val mapper: BiSumOf, - ) : BiConsumer { - var sum = 0 - - override fun accept( - k: K, - v: V, - ) { - sum += mapper.map(k, v) - } - } - - fun interface BiSumOfLong { - fun map( - k: K, - v: V, - ): Long - } - - class BiSumOfLongCollector( - val mapper: BiSumOfLong, - ) : BiConsumer { - var sum = 0L - - override fun accept( - k: K, - v: V, - ) { - sum += mapper.map(k, v) - } - } - - class BiGroupByCollector( - val mapper: BiNotNullMapper, - ) : BiConsumer { - var results = HashMap>() - - override fun accept( - k: K, - v: V, - ) { - val group = mapper.map(k, v) - - val list = results[group] - if (list == null) { - val answer = ArrayList() - answer.add(v) - results[group] = answer - } else { - list.add(v) - } - } - } - - class BiCountByGroupCollector( - val mapper: BiNotNullMapper, - ) : BiConsumer { - var results = HashMap() - - override fun accept( - k: K, - v: V, - ) { - val group = mapper.map(k, v) - - val count = results[group] - if (count == null) { - results[group] = 1 - } else { - results[group] = count + 1 - } - } - } - - class BiSumByGroupCollector( - val mapper: BiNotNullMapper, - val sumOf: BiNotNullMapper, - ) : BiConsumer { - var results = HashMap() - - override fun accept( - k: K, - v: V, - ) { - val group = mapper.map(k, v) - - val sum = results[group] - if (sum == null) { - results[group] = sumOf.map(k, v) - } else { - results[group] = sum + sumOf.map(k, v) - } - } - } - - class BiCountIfCollector( - val filter: BiFilter, - ) : BiConsumer { - var count = 0 - - override fun accept( - k: K, - v: V, - ) { - if (filter.filter(k, v)) count++ - } - } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/utils/LargeSoftCache.kt b/quartz/src/main/java/com/vitorpamplona/quartz/utils/LargeSoftCache.kt index 50f539bd6..6f1c90c55 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/utils/LargeSoftCache.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/utils/LargeSoftCache.kt @@ -126,116 +126,116 @@ class LargeSoftCache { innerForEach(consumer) } - fun filter(consumer: BiFilter): List { - val runner = BiFilterCollector(consumer) + fun filter(consumer: CacheCollectors.BiFilter): List { + val runner = CacheCollectors.BiFilterCollector(consumer) innerForEach(runner) return runner.results } - fun filterIntoSet(consumer: BiFilter): Set { - val runner = BiFilterUniqueCollector(consumer) + fun filterIntoSet(consumer: CacheCollectors.BiFilter): Set { + val runner = CacheCollectors.BiFilterUniqueCollector(consumer) innerForEach(runner) return runner.results } - fun map(consumer: BiNotNullMapper): List { - val runner = BiNotNullMapCollector(consumer) + fun map(consumer: CacheCollectors.BiNotNullMapper): List { + val runner = CacheCollectors.BiNotNullMapCollector(consumer) innerForEach(runner) return runner.results } - fun mapNotNull(consumer: BiMapper): List { - val runner = BiMapCollector(consumer) + fun mapNotNull(consumer: CacheCollectors.BiMapper): List { + val runner = CacheCollectors.BiMapCollector(consumer) innerForEach(runner) return runner.results } - fun mapNotNullIntoSet(consumer: BiMapper): Set { - val runner = BiMapUniqueCollector(consumer) + fun mapNotNullIntoSet(consumer: CacheCollectors.BiMapper): Set { + val runner = CacheCollectors.BiMapUniqueCollector(consumer) innerForEach(runner) return runner.results } - fun mapFlatten(consumer: BiMapper?>): List { - val runner = BiMapFlattenCollector(consumer) + fun mapFlatten(consumer: CacheCollectors.BiMapper?>): List { + val runner = CacheCollectors.BiMapFlattenCollector(consumer) innerForEach(runner) return runner.results } - fun mapFlattenIntoSet(consumer: BiMapper?>): Set { - val runner = BiMapFlattenUniqueCollector(consumer) + fun mapFlattenIntoSet(consumer: CacheCollectors.BiMapper?>): Set { + val runner = CacheCollectors.BiMapFlattenUniqueCollector(consumer) innerForEach(runner) return runner.results } fun maxOrNullOf( - filter: BiFilter, + filter: CacheCollectors.BiFilter, comparator: Comparator, ): V? { - val runner = BiMaxOfCollector(filter, comparator) + val runner = CacheCollectors.BiMaxOfCollector(filter, comparator) innerForEach(runner) return runner.maxV } - fun sumOf(consumer: BiSumOf): Int { - val runner = BiSumOfCollector(consumer) + fun sumOf(consumer: CacheCollectors.BiSumOf): Int { + val runner = CacheCollectors.BiSumOfCollector(consumer) innerForEach(runner) return runner.sum } - fun sumOfLong(consumer: BiSumOfLong): Long { - val runner = BiSumOfLongCollector(consumer) + fun sumOfLong(consumer: CacheCollectors.BiSumOfLong): Long { + val runner = CacheCollectors.BiSumOfLongCollector(consumer) innerForEach(runner) return runner.sum } - fun groupBy(consumer: BiNotNullMapper): Map> { - val runner = BiGroupByCollector(consumer) + fun groupBy(consumer: CacheCollectors.BiNotNullMapper): Map> { + val runner = CacheCollectors.BiGroupByCollector(consumer) innerForEach(runner) return runner.results } - fun countByGroup(consumer: BiNotNullMapper): Map { - val runner = BiCountByGroupCollector(consumer) + fun countByGroup(consumer: CacheCollectors.BiNotNullMapper): Map { + val runner = CacheCollectors.BiCountByGroupCollector(consumer) innerForEach(runner) return runner.results } fun sumByGroup( - groupMap: BiNotNullMapper, - sumOf: BiNotNullMapper, + groupMap: CacheCollectors.BiNotNullMapper, + sumOf: CacheCollectors.BiNotNullMapper, ): Map { - val runner = BiSumByGroupCollector(groupMap, sumOf) + val runner = CacheCollectors.BiSumByGroupCollector(groupMap, sumOf) innerForEach(runner) return runner.results } - fun count(consumer: BiFilter): Int { - val runner = BiCountIfCollector(consumer) + fun count(consumer: CacheCollectors.BiFilter): Int { + val runner = CacheCollectors.BiCountIfCollector(consumer) innerForEach(runner) return runner.count } fun associate(transform: (K, V) -> Pair): Map { - val runner = BiAssociateCollector(size(), transform) + val runner = CacheCollectors.BiAssociateCollector(size(), transform) innerForEach(runner) return runner.results } fun associateNotNull(transform: (K, V) -> Pair?): Map { - val runner = BiAssociateNotNullCollector(size(), transform) + val runner = CacheCollectors.BiAssociateNotNullCollector(size(), transform) innerForEach(runner) return runner.results } fun associateWith(transform: (K, V) -> U?): Map { - val runner = BiAssociateWithCollector(size(), transform) + val runner = CacheCollectors.BiAssociateWithCollector(size(), transform) innerForEach(runner) return runner.results } fun associateNotNullWith(transform: (K, V) -> U): Map { - val runner = BiAssociateNotNullWithCollector(size(), transform) + val runner = CacheCollectors.BiAssociateNotNullWithCollector(size(), transform) innerForEach(runner) return runner.results } @@ -290,338 +290,4 @@ class LargeSoftCache { } } } - - fun interface BiFilter { - fun filter( - k: K, - v: V, - ): Boolean - } - - class BiFilterCollector( - val filter: BiFilter, - ) : BiConsumer { - var results: ArrayList = ArrayList() - - override fun accept( - k: K, - v: V, - ) { - if (filter.filter(k, v)) { - results.add(v) - } - } - } - - class BiFilterUniqueCollector( - val filter: BiFilter, - ) : BiConsumer { - var results: HashSet = HashSet() - - override fun accept( - k: K, - v: V, - ) { - if (filter.filter(k, v)) { - results.add(v) - } - } - } - - fun interface BiMapper { - fun map( - k: K, - v: V, - ): R? - } - - fun interface BiMapperNotNull { - fun map( - k: K, - v: V, - ): R - } - - class BiMapCollector( - val mapper: BiMapper, - ) : BiConsumer { - var results: ArrayList = ArrayList() - - override fun accept( - k: K, - v: V, - ) { - val result = mapper.map(k, v) - if (result != null) { - results.add(result) - } - } - } - - class BiAssociateCollector( - val size: Int, - val mapper: BiMapperNotNull>, - ) : BiConsumer { - var results: LinkedHashMap = LinkedHashMap(size) - - override fun accept( - k: K, - v: V, - ) { - val pair = mapper.map(k, v) - results.put(pair.first, pair.second) - } - } - - class BiAssociateNotNullCollector( - val size: Int, - val mapper: BiMapper?>, - ) : BiConsumer { - var results: LinkedHashMap = LinkedHashMap(size) - - override fun accept( - k: K, - v: V, - ) { - val pair = mapper.map(k, v) - if (pair != null) { - results.put(pair.first, pair.second) - } - } - } - - class BiAssociateWithCollector( - val size: Int, - val mapper: BiMapper, - ) : BiConsumer { - var results: LinkedHashMap = LinkedHashMap(size) - - override fun accept( - k: K, - v: V, - ) { - results.put(k, mapper.map(k, v)) - } - } - - class BiAssociateNotNullWithCollector( - val size: Int, - val mapper: BiMapper, - ) : BiConsumer { - var results: LinkedHashMap = LinkedHashMap(size) - - override fun accept( - k: K, - v: V, - ) { - val newValue = mapper.map(k, v) - if (newValue != null) { - results.put(k, newValue) - } - } - } - - class BiMapUniqueCollector( - val mapper: BiMapper, - ) : BiConsumer { - var results: HashSet = HashSet() - - override fun accept( - k: K, - v: V, - ) { - val result = mapper.map(k, v) - if (result != null) { - results.add(result) - } - } - } - - class BiMapFlattenCollector( - val mapper: BiMapper?>, - ) : BiConsumer { - var results: ArrayList = ArrayList() - - override fun accept( - k: K, - v: V, - ) { - val result = mapper.map(k, v) - if (result != null) { - results.addAll(result) - } - } - } - - class BiMapFlattenUniqueCollector( - val mapper: BiMapper?>, - ) : BiConsumer { - var results: HashSet = HashSet() - - override fun accept( - k: K, - v: V, - ) { - val result = mapper.map(k, v) - if (result != null) { - results.addAll(result) - } - } - } - - fun interface BiNotNullMapper { - fun map( - k: K, - v: V, - ): R - } - - class BiNotNullMapCollector( - val mapper: BiNotNullMapper, - ) : BiConsumer { - var results: ArrayList = ArrayList() - - override fun accept( - k: K, - v: V, - ) { - results.add(mapper.map(k, v)) - } - } - - fun interface BiSumOf { - fun map( - k: K, - v: V, - ): Int - } - - class BiMaxOfCollector( - val filter: BiFilter, - val comparator: Comparator, - ) : BiConsumer { - var maxK: K? = null - var maxV: V? = null - - override fun accept( - k: K, - v: V, - ) { - if (filter.filter(k, v)) { - if (maxK == null || comparator.compare(v, maxV) > 0) { - maxK = k - maxV = v - } - } - } - } - - class BiSumOfCollector( - val mapper: BiSumOf, - ) : BiConsumer { - var sum = 0 - - override fun accept( - k: K, - v: V, - ) { - sum += mapper.map(k, v) - } - } - - fun interface BiSumOfLong { - fun map( - k: K, - v: V, - ): Long - } - - class BiSumOfLongCollector( - val mapper: BiSumOfLong, - ) : BiConsumer { - var sum = 0L - - override fun accept( - k: K, - v: V, - ) { - sum += mapper.map(k, v) - } - } - - class BiGroupByCollector( - val mapper: BiNotNullMapper, - ) : BiConsumer { - var results = HashMap>() - - override fun accept( - k: K, - v: V, - ) { - val group = mapper.map(k, v) - - val list = results[group] - if (list == null) { - val answer = ArrayList() - answer.add(v) - results[group] = answer - } else { - list.add(v) - } - } - } - - class BiCountByGroupCollector( - val mapper: BiNotNullMapper, - ) : BiConsumer { - var results = HashMap() - - override fun accept( - k: K, - v: V, - ) { - val group = mapper.map(k, v) - - val count = results[group] - if (count == null) { - results[group] = 1 - } else { - results[group] = count + 1 - } - } - } - - class BiSumByGroupCollector( - val mapper: BiNotNullMapper, - val sumOf: BiNotNullMapper, - ) : BiConsumer { - var results = HashMap() - - override fun accept( - k: K, - v: V, - ) { - val group = mapper.map(k, v) - - val sum = results[group] - if (sum == null) { - results[group] = sumOf.map(k, v) - } else { - results[group] = sum + sumOf.map(k, v) - } - } - } - - class BiCountIfCollector( - val filter: BiFilter, - ) : BiConsumer { - var count = 0 - - override fun accept( - k: K, - v: V, - ) { - if (filter.filter(k, v)) count++ - } - } }