All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.softicar.platform.common.io.resource.supplier.container.validator.ResourceSupplierContainerResourceKeyUniquenessValidator Maven / Gradle / Ivy

Go to download

The SoftiCAR Platform is a lightweight, Java-based library to create interactive business web applications.

There is a newer version: 50.0.0
Show newest version
package com.softicar.platform.common.io.resource.supplier.container.validator;

import com.softicar.platform.common.core.constant.container.field.IConstantContainerField;
import com.softicar.platform.common.core.constant.container.validator.IConstantContainerValidator;
import com.softicar.platform.common.core.constant.container.validator.result.ConstantContainerValidatorResult;
import com.softicar.platform.common.io.resource.supplier.IResourceSupplier;
import com.softicar.platform.common.io.resource.supplier.container.validator.error.ResourceSupplierContainerResourceKeyAmbiguousError;
import java.util.Collection;
import java.util.Objects;
import java.util.function.Supplier;
import java.util.stream.Collectors;

class ResourceSupplierContainerResourceKeyUniquenessValidator implements IConstantContainerValidator {

	private final Supplier>> fieldsSupplier;

	public ResourceSupplierContainerResourceKeyUniquenessValidator(Supplier>> fieldsSupplier) {

		this.fieldsSupplier = Objects.requireNonNull(fieldsSupplier);
	}

	@Override
	public void validate(ConstantContainerValidatorResult result) {

		var resourceKeyToFields = fieldsSupplier//
			.get()
			.stream()
			.filter(field -> field.getValue() != null)
			.collect(Collectors.groupingBy(field -> field.getValue().getResourceKey()));

		var ambiguousEntries = resourceKeyToFields//
			.entrySet()
			.stream()
			.filter(entry -> entry.getValue().size() > 1)
			.collect(Collectors.toList());

		for (var entry: ambiguousEntries) {
			for (var field: entry.getValue()) {
				result.addError(new ResourceSupplierContainerResourceKeyAmbiguousError(field, entry.getKey()));
			}
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy