package base.pattern;
import org.slf4j.Logger;
import javax.annotation.Nullable;
// LATER wipe this leaky solution due to following drawbacks:
// there should be no non-localized messages in the sources
// results from various places are cross-assignable
// success/failure is easily discernable from the enum value name by a simple convention
public class Result {
private final boolean success;
private final String message;
public Result(String message, boolean success) {
this.message = message;
this.success = success;
}
public static void success(Result[] resultRef, final String message) {
if (resultRef == null || resultRef.length < 1) {
return;
}
resultRef[0] = new Result(message, true);
}
private static void failure(@Nullable Result[] resultRef, final String message) {
if (resultRef == null || resultRef.length < 1) {
return;
}
resultRef[0] = new Result(message, false);
}
public static void success(@Nullable final Logger log, Result[] resultRef, final String message) {
if (log != null) {
log.info(message);
}
success(resultRef, message);
}
public static void failure(@Nullable final Logger log, @Nullable Result[] resultRef, final String message) {
if (log != null) {
log.warn(message);
}
failure(resultRef, message);
}
public String getMessage() {
return message;
}
public boolean isSuccess() {
return success;
}
}