package de.rwth.idsg.bikeman.ixsi;
import xjc.schema.ixsi.ErrorCodeType;
import xjc.schema.ixsi.ErrorType;
/**
* Error generation should be handled by a central component for better control over the codes and messages.
* This class just does that.
*
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>
* @since 23.10.2014
*/
public final class ErrorFactory {
private ErrorFactory() {}
public static class Auth {
public static ErrorType unknownProvider(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.AUTH_PROVIDER_UNKNOWN, systemMsg, userMsg);
}
public static ErrorType invalidPass(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.AUTH_INVALID_PASSWORD, systemMsg, userMsg);
}
public static ErrorType invalidToken(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.AUTH_INVALID_TOKEN, systemMsg, userMsg);
}
public static ErrorType invalidSession(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.AUTH_SESSION_INVALID, systemMsg, userMsg);
}
public static ErrorType notAnonym(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.AUTH_ANON_NOT_ALLOWED, systemMsg, userMsg);
}
public static ErrorType notAuthorized(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.AUTH_NOT_AUTHORIZED, systemMsg, userMsg);
}
}
public static class Sys {
public static ErrorType idUknown() {
return new ErrorType()
.withCode(ErrorCodeType.SYS_REQUEST_NOT_PLAUSIBLE)
.withNonFatal(false)
.withSystemMessage("System ID is unknown");
}
public static ErrorType backendFailed(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.SYS_BACKEND_FAILED, systemMsg, userMsg);
}
public static ErrorType unknownFailure(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.SYS_UNKNOWN_FAILURE, systemMsg, userMsg);
}
public static ErrorType notImplemented(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.SYS_NOT_IMPLEMENTED, systemMsg, userMsg);
}
public static ErrorType invalidRequest(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.SYS_REQUEST_NOT_PLAUSIBLE, systemMsg, userMsg);
}
}
public static class Booking {
public static ErrorType targetUnknown(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.BOOKING_TARGET_UNKNOWN, systemMsg, userMsg);
}
public static ErrorType tooShort(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.BOOKING_TOO_SHORT, systemMsg, userMsg);
}
public static ErrorType tooLong(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.BOOKING_TOO_LONG, systemMsg, userMsg);
}
public static ErrorType targetNotAvail(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.BOOKING_TARGET_NOT_AVAILABLE, systemMsg, userMsg);
}
public static ErrorType changeNotPossible(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.BOOKING_CHANGE_NOT_POSSIBLE, systemMsg, userMsg);
}
public static ErrorType idUnknown(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.BOOKING_ID_UNKNOWN, systemMsg, userMsg);
}
}
public static ErrorType noPriceInfo(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.PRICE_INFO_NOT_AVAILABLE, systemMsg, userMsg);
}
public static ErrorType unknownLang(String systemMsg, String userMsg) {
return setFields(ErrorCodeType.LANGUAGE_NOT_SUPPORTED, systemMsg, userMsg);
}
public static ErrorType buildFromException(IxsiCodeException e) {
return setFields(e.getErrorCode(), e.getMessage(), e.getMessage());
}
private static ErrorType setFields(ErrorCodeType c, String systemMsg, String userMsg) {
return new ErrorType()
.withCode(c)
.withNonFatal(true)
.withSystemMessage(systemMsg)
.withUserMessage(userMsg);
}
}