* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/**
* It would be nice if Java Enums were extensible, but they're not.
- *
+ *
* @author Jonathan
*
*/
public class Result<RV> {
private static final String SUCCESS = "Success";
- public static final String[] EMPTY_VARS = new String[0];
+ public static final Object[] EMPTY_VARS = new Object[0];
public final static int OK=0,
ERR_Security = 1,
ERR_ActionNotCompleted = 8,
ERR_Backend = 9,
ERR_General = 20;
-
+
public RV value;
public final int status;
public final String details;
- public final String[] variables;
-
- public Result(RV value, int status, String details, String[] variables) {
+ public final Object[] variables;
+
+ public Result(RV value, int status, String details, Object ... variables) {
this.value = value;
if (value==null) {
specialCondition|=EMPTY_LIST;
this.variables=variables;
}
}
-
+
/**
* Create a Result class with "OK" status and "Success" for details
- *
+ *
* This is the easiest to use
- *
+ *
* @param value
* @param status
* @return
*/
public static<R> Result<R> ok(R value) {
- return new Result<R>(value,OK,SUCCESS,null);
+ return new Result<R>(value,OK,SUCCESS,EMPTY_VARS);
}
/**
* @return
*/
public static<R> Result<R[]> ok(R value[]) {
- return new Result<R[]>(value,OK,SUCCESS,null).emptyList(value.length==0);
+ return new Result<R[]>(value,OK,SUCCESS,EMPTY_VARS).emptyList(value.length==0);
}
/**
* @return
*/
public static<R> Result<Set<R>> ok(Set<R> value) {
- return new Result<Set<R>>(value,OK,SUCCESS,null).emptyList(value.size()==0);
+ return new Result<Set<R>>(value,OK,SUCCESS,EMPTY_VARS).emptyList(value.size()==0);
}
/**
* @return
*/
public static<R> Result<List<R>> ok(List<R> value) {
- return new Result<List<R>>(value,OK,SUCCESS,null).emptyList(value.size()==0);
+ return new Result<List<R>>(value,OK,SUCCESS,EMPTY_VARS).emptyList(value.size()==0);
}
/**
* @return
*/
public static<R> Result<Collection<R>> ok(Collection<R> value) {
- return new Result<Collection<R>>(value,OK,SUCCESS,null).emptyList(value.size()==0);
+ return new Result<Collection<R>>(value,OK,SUCCESS,EMPTY_VARS).emptyList(value.size()==0);
}
* @return
*/
public static Result<Void> ok() {
- return new Result<Void>(null,OK,SUCCESS,null);
+ return new Result<Void>(null,OK,SUCCESS,EMPTY_VARS);
}
/**
- * Create a Status (usually non OK, with a details statement
+ * Create a Status (usually non OK, with a details statement
* @param value
* @param status
* @param details
// public static<R> Result<R> err(int status, String details) {
// return new Result<R>(null,status,details,null);
// }
-
+
/**
* Create a Status (usually non OK, with a details statement and variables supported
* @param status
* @param variables
* @return
*/
- public static<R> Result<R> err(int status, String details, String ... variables) {
+ public static<R> Result<R> err(int status, String details, Object ... variables) {
return new Result<R>(null,status,details,variables);
}
}
/**
- * Create a Status (usually non OK, with a details statement
+ * Create a Status (usually non OK, with a details statement
* @param value
* @param status
* @param details
* @return
*/
- public static<R> Result<R> create(R value, int status, String details, String ... vars) {
+ public static<R> Result<R> create(R value, int status, String details, Object ... vars) {
return new Result<R>(value,status,details,vars);
}
/**
- * Create a Status from a previous status' result/details
+ * Create a Status from a previous status' result/details
* @param value
* @param status
* @param details
private static final int PARTIAL_CONTENT = 0x001;
private static final int EMPTY_LIST = 0x002;
-
+
/**
- * AAF Specific problems, etc
- *
+ * AAF Specific problems, etc
+ *
* @author Jonathan
*
*/
/**
* When Result is a List, you can check here to see if it's empty instead of looping
- *
+ *
* @return
*/
public boolean isEmpty() {
/**
* A common occurrence is that data comes back, but list is empty. If set, you can skip looking
* at list at the outset.
- *
+ *
* @param emptyList
* @return
*/
return this;
}
-
- /**
+
+ /**
* Convenience function. Checks OK, and also if List is not Empty
* Not valid if Data is not a List
* @return
return status == OK;
}
- /**
+ /**
* Convenience function. Checks OK, and also if List is not Empty
* Not valid if Data is not a List
* @return
return status != OK;
}
- /**
+ /**
* Convenience function. Checks OK, and also if List is not Empty
* Not valid if Data is not a List
* @return
*/
public boolean isOKhasData() {
- System.out.println("specialCondition:"+specialCondition);
- System.out.println("specialCondition:"+(specialCondition & EMPTY_LIST));
return status == OK && (specialCondition & EMPTY_LIST) != EMPTY_LIST;
}
- /**
+ /**
* Convenience function. Checks OK, and also if List is not Empty
* Not valid if Data is not a List
* @return
return sb.toString();
}
}
-
+
public String errorString() {
StringBuilder sb = new StringBuilder();
switch(status) {
default: sb.append("Error");
}
sb.append(" - ");
- sb.append(String.format(details, (Object[])variables));
+ sb.append(String.format(details, variables));
return sb.toString();
}
}