package org.ovirt.engine.ui.uicommonweb.validation;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
public class LongValidation implements IValidation {
private long maximum;
private long minimum;
public long getMaximum() {
return maximum;
}
public void setMaximum(long maximum) {
this.maximum = maximum;
}
public long getMinimum() {
return minimum;
}
public void setMinimum(long minimum) {
this.minimum = minimum;
}
public LongValidation() {
setMaximum(Long.MAX_VALUE);
setMinimum(Long.MIN_VALUE);
}
public LongValidation(long min, long max) {
setMinimum(min);
setMaximum(max);
}
@Override
public ValidationResult validate(Object value) {
ValidationResult result = new ValidationResult();
if (value != null && ((value instanceof String && !"".equals(value)) || value instanceof Long)) { //$NON-NLS-1$
// Do not use org.apache.commons.lang.math.NumberUtils. Null is expected if conversion fails.
Long longValue = value instanceof String ? tryParseLong((String) value) : (Long) value;
String msg = ""; //$NON-NLS-1$
String prefixMsg =
ConstantsManager.getInstance().getConstants().thisFieldMustContainNumberInvalidReason();
if (longValue == null) {
result.setSuccess(false);
msg =
ConstantsManager.getInstance()
.getMessages()
.longValidationNumberBetweenInvalidReason(prefixMsg, getMinimum(), getMaximum());
result.getReasons().add(msg);
} else if (longValue < getMinimum() || longValue > getMaximum()) {
if (getMinimum() != Long.MIN_VALUE && getMaximum() != Long.MAX_VALUE) {
msg =
ConstantsManager.getInstance()
.getMessages()
.longValidationNumberBetweenInvalidReason(prefixMsg, getMinimum(), getMaximum());
} else if (getMinimum() != Long.MIN_VALUE) {
msg =
ConstantsManager.getInstance()
.getMessages()
.longValidationNumberGreaterInvalidReason(prefixMsg, getMinimum());
} else if (getMaximum() != Long.MAX_VALUE) {
msg =
ConstantsManager.getInstance()
.getMessages()
.longValidationNumberLessInvalidReason(prefixMsg, getMaximum());
}
result.setSuccess(false);
result.getReasons().add(msg);
}
}
return result;
}
private Long tryParseLong(final String value) {
try {
return Long.valueOf(value);
} catch (NumberFormatException e) {
return null;
}
}
}