package com.jdroid.android.exception; import com.jdroid.android.R; import com.jdroid.java.exception.ErrorCode; import com.jdroid.java.exception.ErrorCodeException; import com.jdroid.java.utils.StringUtils; import com.jdroid.java.utils.ValidationUtils; import java.util.Collection; public enum CommonErrorCode implements ErrorCode { INVALID_CREDENTIALS(R.string.jdroid_invalidCredentials, 401), INVALID_USER_TOKEN(null, 402), // The app is not compatible with the API anymore and needs to be upgraded. INVALID_API_VERSION(null, 403), FACEBOOK_SESSION_EXPIRED_ERROR(null); private Integer resourceId; private Integer statusCode; CommonErrorCode(Integer resourceId, Integer statusCode) { this.resourceId = resourceId; this.statusCode = statusCode; } CommonErrorCode(Integer resourceId) { this.resourceId = resourceId; } public static ErrorCode findByStatusCode(String statusCode) { ErrorCode errorCode = null; for (CommonErrorCode each : values()) { if ((each.statusCode != null) && each.statusCode.toString().equals(statusCode)) { errorCode = each; break; } } return errorCode; } /** * @see com.jdroid.java.exception.ErrorCode#newErrorCodeException(java.lang.Object[]) */ @Override public ErrorCodeException newErrorCodeException(Object... errorCodeParameters) { return new ErrorCodeException(this, errorCodeParameters); } /** * @see com.jdroid.java.exception.ErrorCode#newErrorCodeException() */ @Override public ErrorCodeException newErrorCodeException() { return new ErrorCodeException(this); } /** * @see com.jdroid.java.exception.ErrorCode#newErrorCodeException(java.lang.Throwable) */ @Override public ErrorCodeException newErrorCodeException(Throwable throwable) { return new ErrorCodeException(this, throwable); } /** * @see com.jdroid.java.exception.ErrorCode#newErrorCodeException(java.lang.String) */ @Override public ErrorCodeException newErrorCodeException(String message) { return new ErrorCodeException(this, message); } /** * @see com.jdroid.java.exception.ErrorCode#getStatusCode() */ @Override public String getStatusCode() { return statusCode.toString(); } /** * @see com.jdroid.java.exception.ErrorCode#getTitleResId() */ @Override public Integer getTitleResId() { return null; } /** * @see com.jdroid.java.exception.ErrorCode#getDescriptionResId() */ @Override public Integer getDescriptionResId() { return resourceId; } public void validateRequired(String value) { if (StringUtils.isEmpty(value)) { throw newErrorCodeException(); } } public void validateRequired(Object value) { if (value == null) { throw newErrorCodeException(); } } public void validateRequired(Collection<?> value) { if ((value == null) || value.isEmpty()) { throw newErrorCodeException(); } } public void validatePositive(Integer value) { if (value <= 0) { throw newErrorCodeException(); } } public void validatePositive(Float value) { if (value <= 0) { throw newErrorCodeException(); } } public void validateMaximum(Integer value, Integer maximum) { if (value > maximum) { throw newErrorCodeException(maximum); } } public void validateMinimum(int value, int minimum) { if (value < minimum) { throw newErrorCodeException(minimum); } } public void validateMinimumLength(String value, int minimum) { if (value.length() < minimum) { throw newErrorCodeException(minimum); } } public void validateMaximumLength(String value, int maximum) { if (value.length() > maximum) { throw newErrorCodeException(maximum); } } /** * Validates that the two values are equals. Assumes that no value is null. * * @param value * @param otherValue */ public void validateEquals(Object value, Object otherValue) { if ((value != null) && !value.equals(otherValue)) { throw newErrorCodeException(); } } /** * Validate that the value is an email address * * @param value */ public void validateEmail(String value) { if (!ValidationUtils.isValidEmail(value)) { throw newErrorCodeException(); } } }