package de.asideas.crowdsource.util.validation.financinground;
import de.asideas.crowdsource.domain.model.FinancingRoundEntity;
import de.asideas.crowdsource.presentation.FinancingRound;
import de.asideas.crowdsource.repository.FinancingRoundRepository;
import org.springframework.beans.factory.annotation.Autowired;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class FinancingRoundNotCollidingValidator implements ConstraintValidator<FinancingRoundNotColliding, FinancingRound> {
@Autowired
private FinancingRoundRepository financingRoundRepository;
@Override
public void initialize(FinancingRoundNotColliding constraintAnnotation) {
}
@Override
public boolean isValid(final FinancingRound financingRound, ConstraintValidatorContext context) {
for (FinancingRoundEntity financingRoundEntity : financingRoundRepository.findAll()) {
// if the other financing round is not starting after financingrounds end
// AND it is not ending before financingrounds start we have a collision
if (!financingRoundEntity.getStartDate().isAfter(financingRound.getEndDate())
&& !financingRoundEntity.getEndDate().isBefore(financingRound.getStartDate())) {
context.buildConstraintViolationWithTemplate("non-colliding").addConstraintViolation();
return false;
}
}
return true;
}
}