ApplicationValidator.java
/*
* Copyright (C) 2024 B3Partners B.V.
*
* SPDX-License-Identifier: MIT
*/
package org.tailormap.api.repository.validation;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import org.tailormap.api.persistence.Application;
import org.tailormap.api.repository.ApplicationRepository;
@Component
public class ApplicationValidator implements Validator {
private final ApplicationRepository applicationRepository;
public ApplicationValidator(ApplicationRepository applicationRepository) {
this.applicationRepository = applicationRepository;
}
@Override
public boolean supports(@NonNull Class<?> clazz) {
return Application.class.isAssignableFrom(clazz);
}
@Override
public void validate(@NonNull Object target, @NonNull Errors errors) {
Application app = (Application) target;
Application existing = applicationRepository.findByName(app.getName());
if (existing != null && !existing.getId().equals(app.getId())) {
errors.rejectValue(
"name", "duplicate", "Application with name \"%s\" already exists.".formatted(app.getName()));
}
}
}