package org.opennaas.core.resources.validation;
import java.util.ArrayList;
import java.util.List;
import org.opennaas.core.resources.descriptor.CapabilityDescriptor;
import org.opennaas.core.resources.descriptor.Information;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
/**
* Basic validation on the CapabilityDescriptor
*
* @author Scott Campbell (CRC)
*
*/
public class CapabilityDescriptorValidator implements Validator
{
Errors informationErrors = null;
Errors descriptorErrors = null;
public boolean supports(Class<?> clazz) {
return CapabilityDescriptor.class.isAssignableFrom(clazz);
}
/**
* validate the object. This is a conveinence method to calling the validate(Obj, Errors) method of the Validator interface so the calling class
* doesn't have to supply it's own Errors object
*
* @param obj
*/
public void validate(Object obj) {
descriptorErrors = new BindException(obj, obj.getClass().getName());
validate(obj, descriptorErrors);
}
public void validate(Object obj, Errors e) {
descriptorErrors = e;
ValidationUtils.rejectIfEmpty(descriptorErrors, "capabilityInformation", "field.empty",
"moduleInformation field cannot be empty");
// Make sure the Information Object is filled out correctly
Information information = ((CapabilityDescriptor) obj).getCapabilityInformation();
if (information != null) {
informationErrors = new BindException(information, information.getClass().getName());
ValidationUtils.invokeValidator(new InformationValidator(), information,
informationErrors);
}
}
/**
* @return the informationErrors
*/
public Errors getInformationErrors() {
return informationErrors;
}
/**
* @return the descriptorErrors
*/
public Errors getDescriptorErrors() {
return descriptorErrors;
}
public boolean hasErrors() {
if (descriptorErrors.hasErrors() || informationErrors.hasErrors()) {
return true;
}
else {
return false;
}
}
public List<Errors> getErrors() {
List<Errors> list = new ArrayList<Errors>();
list.add(descriptorErrors);
if (informationErrors != null) {
list.add(informationErrors);
}
return list;
}
}