argos/dmp-backend/src/main/java/eu/eudat/validators/DataManagementPlanNewVersio...

54 lines
2.0 KiB
Java

package eu.eudat.validators;
import eu.eudat.entities.DMP;
import eu.eudat.models.criteria.DataManagementPlanCriteria;
import eu.eudat.models.dmp.DataManagementPlanNewVersionModel;
import eu.eudat.services.ApiContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
/**
* Created by ikalyvas on 3/7/2018.
*/
@Component("dataManagementPlanNewVersionValidator")
public class DataManagementPlanNewVersionValidator implements Validator {
private ApiContext apiContext;
@Autowired
public DataManagementPlanNewVersionValidator(ApiContext apiContext) {
this.apiContext = apiContext;
}
@Override
public boolean supports(Class<?> aClass) {
return DataManagementPlanNewVersionModel.class.equals(aClass);
}
@Override
public void validate(Object obj, Errors errors) {
DataManagementPlanNewVersionModel dataManagementPlanNewVersionModel = (DataManagementPlanNewVersionModel) obj;
DataManagementPlanCriteria criteria = new DataManagementPlanCriteria();
List<UUID> groupIds = Arrays.asList(dataManagementPlanNewVersionModel.getGroupId());
criteria.setGroupIds(groupIds);
DMP latestDmp = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(criteria).getSingleOrDefault();
if (latestDmp.getVersion() >= dataManagementPlanNewVersionModel.getVersion()) {
errors.rejectValue("version", "datamanagementplannewversion.version.notacceptable");
}
else if (latestDmp.getVersion() + 1 != dataManagementPlanNewVersionModel.getVersion()) {
errors.rejectValue("version", "datamanagementplannewversion.version.notnext");
}
}
public static boolean supportsType(Class<?> aClass) {
return DataManagementPlanNewVersionModel.class.equals(aClass);
}
}