package ch.qos.cal10n.verifier;
import java.util.Locale;
import static ch.qos.cal10n.CAL10NConstants.MISSING_LOCALE_DATA_ANNOTATION_URL;
public class Cal10nError {
enum ErrorType {
MISSING_BN_ANNOTATION, MISSING_LOCALE_DATA_ANNOTATION,
FAILED_TO_FIND_RB, EMPTY_RB, EMPTY_ENUM, ABSENT_IN_RB, ABSENT_IN_ENUM;
}
final ErrorType errorType;
final String key;
final Locale locale;
final String enumClassName;
final String baseName;
Cal10nError(ErrorType errorType, String key, String enumClassName,
Locale locale, String baseName) {
this.errorType = errorType;
this.key = key;
this.enumClassName = enumClassName;
this.locale = locale;
this.baseName = baseName;
}
public ErrorType getErrorType() {
return errorType;
}
public String getKey() {
return key;
}
public Locale getLocale() {
return locale;
}
@Override
public String toString() {
switch (errorType) {
case MISSING_BN_ANNOTATION:
return "Missing @BaseName annotation in enum type ["
+ enumClassName + "]";
case MISSING_LOCALE_DATA_ANNOTATION:
return "Missing or empty @LocaleData annotation in enum type ["
+ enumClassName + "]. See "+MISSING_LOCALE_DATA_ANNOTATION_URL;
case FAILED_TO_FIND_RB:
return "Failed to locate resource bundle [" + baseName
+ "] for locale [" + locale + "] for enum type [" + enumClassName
+ "]";
case EMPTY_RB:
return "Empty resource bundle named [" + baseName
+ "] for locale [" + locale + "]";
case EMPTY_ENUM:
return "Empty enum type [" + enumClassName + "]";
case ABSENT_IN_ENUM:
return "Key [" + key + "] present in resource bundle named ["
+ baseName + "] for locale [" + locale
+ "] but absent in enum type [" + enumClassName + "]";
case ABSENT_IN_RB:
return "Key [" + key + "] present in enum type [" + enumClassName
+ "] but absent in resource bundle named [" + baseName
+ "] for locale [" + locale + "]";
default:
throw new IllegalStateException("Impossible to reach here");
}
}
}