package no.met.metadataeditor.dataTypes;
import java.net.URISyntaxException;
import java.util.Locale;
import org.apache.commons.validator.routines.BigDecimalValidator;
import org.apache.commons.validator.routines.BigIntegerValidator;
import org.apache.commons.validator.routines.DateValidator;
import org.apache.commons.validator.routines.EmailValidator;
import org.apache.commons.validator.routines.UrlValidator;
public enum DataType {
INTEGER {
@Override
public DataAttributeValidationResult validate(String value) {
BigIntegerValidator v = BigIntegerValidator.getInstance();
if( v.validate(value) == null ){
return new DataAttributeValidationResult(false, "'" + value + "' is not a valid integer.");
} else {
return new DataAttributeValidationResult(true, null);
}
}
},
FLOAT {
@Override
public DataAttributeValidationResult validate(String value) {
BigDecimalValidator v = BigDecimalValidator.getInstance();
if( v.validate(value, Locale.US) == null ){
return new DataAttributeValidationResult(false, "'" + value + "' is not a valid number.");
} else {
return new DataAttributeValidationResult(true, null);
}
}
},
DATE {
@Override
public DataAttributeValidationResult validate(String value) {
DateValidator v = DateValidator.getInstance();
String dateformat = "yyyy-MM-dd";
if( v.validate(value, dateformat) == null ){
return new DataAttributeValidationResult(false, "'" + value + "' is not a valid date .");
} else {
return new DataAttributeValidationResult(true, null);
}
}
},
DATETIME {
@Override
public DataAttributeValidationResult validate(String value) {
DateValidator v = DateValidator.getInstance();
String dateformatUTCNoSec = "yyyy-MM-dd'T'HH:mm'Z'";
String dateformatUTCSec = "yyyy-MM-dd'T'HH:mm:ss'Z'";
if( v.validate(value, dateformatUTCNoSec) != null ){
return new DataAttributeValidationResult(true, null);
} if( v.validate(value, dateformatUTCSec) != null ){
return new DataAttributeValidationResult(true, null);
} else {
return new DataAttributeValidationResult(false, "'" + value + "' is not a valid date time.");
}
}
},
STRING {
@Override
public DataAttributeValidationResult validate(String value) {
if( "".equals(value)){
return new DataAttributeValidationResult(false, "You should input a value");
}
return new DataAttributeValidationResult(true, null);
}
},
URI {
@Override
public DataAttributeValidationResult validate(String value) {
if( "".equals(value)){
return new DataAttributeValidationResult(false, "You must input a value");
}
try {
new java.net.URI(value);
return new DataAttributeValidationResult(true, null);
} catch (URISyntaxException e) {
return new DataAttributeValidationResult(false, "'" + value + "' is not a valid URI.");
}
}
},
URL {
@Override
public DataAttributeValidationResult validate(String value) {
UrlValidator v = new UrlValidator(UrlValidator.ALLOW_ALL_SCHEMES);
if( !v.isValid(value)){
return new DataAttributeValidationResult(false, "'" + value + "' is not a valid URL");
} else {
return new DataAttributeValidationResult(true, null);
}
}
},
EMAIL {
@Override
public DataAttributeValidationResult validate(String value) {
EmailValidator v = EmailValidator.getInstance();
if( !v.isValid(value)){
return new DataAttributeValidationResult(false, "'" + value + "' is not a valid email.");
} else {
return new DataAttributeValidationResult(true, null);
}
}
};
public abstract DataAttributeValidationResult validate(String value);
}