PrimitiveArrayFinalizer.java
package io.github.pojotools.flat2pojo.core.engine;
import com.fasterxml.jackson.databind.node.ArrayNode;
import io.github.pojotools.flat2pojo.core.config.MappingConfig;
import java.util.Map;
/**
* Finalizes primitive array nodes by applying sorting. Single Responsibility: Primitive array
* finalization logic.
*/
final class PrimitiveArrayFinalizer {
private final Map<String, PrimitiveArrayBucket> buckets;
private final Map<String, ArrayNode> arrayNodes;
private final Map<String, MappingConfig.OrderDirection> directions;
PrimitiveArrayFinalizer(
final Map<String, PrimitiveArrayBucket> buckets,
final Map<String, ArrayNode> arrayNodes,
final Map<String, MappingConfig.OrderDirection> directions) {
this.buckets = buckets;
this.arrayNodes = arrayNodes;
this.directions = directions;
}
void finalizeAll() {
for (final var entry : buckets.entrySet()) {
finalizeOne(entry.getKey(), entry.getValue());
}
}
private void finalizeOne(final String cacheKey, final PrimitiveArrayBucket bucket) {
final ArrayNode array = arrayNodes.get(cacheKey);
final MappingConfig.OrderDirection direction = getDirection(cacheKey);
bucket.writeToArray(array, direction);
}
private MappingConfig.OrderDirection getDirection(final String cacheKey) {
return directions.getOrDefault(cacheKey, MappingConfig.OrderDirection.insertion);
}
}