package org.dcache.srm.request;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMap.Builder;
import org.dcache.srm.v2_2.TStatusCode;
public enum StatusCode {
SUCCESS (TStatusCode.SRM_SUCCESS),
SRM_FAILURE (TStatusCode.SRM_FAILURE),
SRM_AUTHENTICATION_FAILURE (TStatusCode.SRM_AUTHENTICATION_FAILURE),
SRM_AUTHORIZATION_FAILURE (TStatusCode.SRM_AUTHORIZATION_FAILURE),
SRM_INVALID_REQUEST (TStatusCode.SRM_INVALID_REQUEST),
SRM_INVALID_PATH (TStatusCode.SRM_INVALID_PATH),
SRM_FILE_LIFETIME_EXPIRED (TStatusCode.SRM_FILE_LIFETIME_EXPIRED),
SRM_SPACE_LIFETIME_EXPIRED (TStatusCode.SRM_SPACE_LIFETIME_EXPIRED),
SRM_EXCEED_ALLOCATION (TStatusCode.SRM_EXCEED_ALLOCATION),
SRM_NO_USER_SPACE (TStatusCode.SRM_NO_USER_SPACE),
SRM_NO_FREE_SPACE (TStatusCode.SRM_NO_FREE_SPACE),
SRM_DUPLICATION_ERROR (TStatusCode.SRM_DUPLICATION_ERROR),
SRM_NON_EMPTY_DIRECTORY (TStatusCode.SRM_NON_EMPTY_DIRECTORY),
SRM_TOO_MANY_RESULTS (TStatusCode.SRM_TOO_MANY_RESULTS),
SRM_INTERNAL_ERROR (TStatusCode.SRM_INTERNAL_ERROR),
SRM_FATAL_INTERNAL_ERROR (TStatusCode.SRM_FATAL_INTERNAL_ERROR),
SRM_NOT_SUPPORTED (TStatusCode.SRM_NOT_SUPPORTED),
SRM_REQUEST_QUEUED (TStatusCode.SRM_REQUEST_QUEUED),
SRM_REQUEST_INPROGRESS (TStatusCode.SRM_REQUEST_INPROGRESS),
SRM_REQUEST_SUSPENDED (TStatusCode.SRM_REQUEST_SUSPENDED),
SRM_ABORTED (TStatusCode.SRM_ABORTED),
SRM_RELEASED (TStatusCode.SRM_RELEASED),
SRM_FILE_PINNED (TStatusCode.SRM_FILE_PINNED),
SRM_FILE_IN_CACHE (TStatusCode.SRM_FILE_IN_CACHE),
SRM_SPACE_AVAILABLE (TStatusCode.SRM_SPACE_AVAILABLE),
SRM_LOWER_SPACE_GRANTED (TStatusCode.SRM_LOWER_SPACE_GRANTED),
SRM_DONE (TStatusCode.SRM_DONE),
SRM_PARTIAL_SUCCESS (TStatusCode.SRM_PARTIAL_SUCCESS),
SRM_REQUEST_TIMED_OUT (TStatusCode.SRM_REQUEST_TIMED_OUT),
SRM_LAST_COPY (TStatusCode.SRM_LAST_COPY),
SRM_FILE_BUSY (TStatusCode.SRM_FILE_BUSY),
SRM_FILE_LOST (TStatusCode.SRM_FILE_LOST),
SRM_FILE_UNAVAILABLE (TStatusCode.SRM_FILE_UNAVAILABLE),
SRM_CUSTOM_STATUS (TStatusCode.SRM_CUSTOM_STATUS);
private final TStatusCode _status;
private static final ImmutableMap<TStatusCode,StatusCode> MAP;
private static final String ERROR_MESSAGE;
StatusCode(TStatusCode status) {
_status = status;
}
static {
StringBuilder sb = new StringBuilder();
sb.append("Unknown StatusCode: \"%s\".");
sb.append(" Supported values:");
Builder<TStatusCode,StatusCode> builder = new Builder<>();
for (StatusCode value : values()) {
builder.put(value._status,value);
sb.append(" \"").append(value._status).append("\"");
}
MAP = builder.build();
ERROR_MESSAGE = sb.toString();
}
public TStatusCode toTStatusCode() {
return _status;
}
public static StatusCode fromTStatusCode(TStatusCode status) {
if ( status == null ) {
return null;
}
else {
return MAP.get(status);
}
}
/**
* this function provides wrapper of TStatusCode.fromString
* so that user gets better error handling
*/
public static StatusCode fromString(String txt)
throws IllegalArgumentException {
try {
TStatusCode type = TStatusCode.fromString(txt);
return fromTStatusCode(type);
}
catch (IllegalArgumentException e) {
throw new IllegalArgumentException(String.format(ERROR_MESSAGE,
txt));
}
}
}