package org.gcube.accounting.datamodel.validators; import java.io.Serializable; import java.util.Map; import org.gcube.accounting.datamodel.annotations.NotEmpty; import org.gcube.accounting.exception.InvalidValueException; public class NotEmptyValidator implements FieldValidator{ public Class annotation() { return NotEmpty.class; } public boolean isValid(Serializable toValidate) { if (toValidate == null) return false; if (toValidate.getClass().isArray() ){ return ((Object[])toValidate).length>0; }else if ( toValidate instanceof Iterable){ return ((Iterable) toValidate).iterator().hasNext(); } else if (toValidate instanceof Map){ return ((Map) toValidate).size()>0; } else if (toValidate instanceof String ){ return !((String)toValidate).isEmpty(); } else return true; } public Serializable validate(Serializable toValidate) throws InvalidValueException { try{ if(isValid(toValidate)){ return toValidate; } }catch(Exception e){ throw new InvalidValueException(getErrorSuffix(), e.getCause()); } throw new InvalidValueException(getErrorSuffix()); } public String getErrorSuffix() { return "is empty"; } }