package foundation.handler;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import foundation.handler.envelop.ILetterWriter;
|
import foundation.json.IJSONProvider;
|
|
public class ResultPool implements IMessageReporter {
|
|
protected static ThreadLocal<ResultPool> localInstance;
|
private boolean success;
|
private Validation validation;
|
private MessageList messageList;
|
private List<ExistsError> existsErrors;
|
private ILetterWriter letterWriter;
|
private List<ResultItem> items;
|
private HttpServletResponse response;
|
private boolean fireReplay;
|
|
|
static {
|
localInstance = new ThreadLocal<ResultPool>();
|
}
|
|
public ResultPool(HttpServletResponse response) {
|
this.success = true;
|
this.items = new ArrayList<ResultItem>();
|
this.response = response;
|
this.fireReplay = true;
|
|
localInstance.set(this);
|
}
|
|
public static ResultPool getInstance() {
|
ResultPool instance = localInstance.get();
|
return instance;
|
}
|
|
public void success() {
|
success = true;
|
}
|
|
public void setSuccess(boolean value) {
|
success = value;
|
}
|
|
public synchronized void reportOneAlertValidation(String message) {
|
if (validation == null) {
|
validation = new Validation();
|
}
|
|
MessageLevel level = MessageLevel.Alert;
|
validation.addOneLine(level, message);
|
}
|
|
public synchronized void reportOneRejectValidation(String message) {
|
setSuccess(false);
|
|
if (validation == null) {
|
validation = new Validation();
|
}
|
|
MessageLevel level = MessageLevel.Reject;
|
validation.addOneLine(level, message);
|
}
|
|
public synchronized void reportOneMessage(String step, String message) {
|
if (messageList == null) {
|
messageList = new MessageList();
|
}
|
|
MessageLevel level = MessageLevel.Info;
|
messageList.addOneMessage(level, step, message);
|
}
|
|
public synchronized void reportOneAlert(String step, String alter) {
|
if (messageList == null) {
|
messageList = new MessageList();
|
}
|
|
MessageLevel level = MessageLevel.Alert;
|
messageList.addOneMessage(level, step, alter);
|
}
|
|
public synchronized void reportOneError(String step, String error) {
|
setSuccess(false);
|
|
if (messageList == null) {
|
messageList = new MessageList();
|
}
|
|
MessageLevel level = MessageLevel.Error;
|
|
if ("null".equals(error) || error == null) {
|
error = "服务器内部错误(空指针错误)";
|
}
|
|
messageList.addOneMessage(level, step, error);
|
}
|
|
public void reportExistsError(String step, String dataTitle, IJSONProvider errorSet) {
|
setSuccess(false);
|
|
if (existsErrors == null) {
|
existsErrors = new ArrayList<ExistsError>();
|
}
|
|
ExistsError error = new ExistsError(step, dataTitle, errorSet);
|
existsErrors.add(error);
|
}
|
|
public boolean isSuccess() {
|
return success;
|
}
|
|
public void addValue(Object value) {
|
addValue(null, value);
|
}
|
|
public void addValue(String name, Object value, String operator) {
|
addValueToItems(name, value, operator);
|
}
|
|
public void addValue(String name, Object value) {
|
addValueToItems(name, value, null);
|
}
|
|
private void addValueToItems(String name, Object value, String operator) {
|
ResultItem resultItem = null;
|
|
if (name != null) {
|
for (ResultItem item : items) {
|
if (name.equalsIgnoreCase(item.getName())) {
|
resultItem = item;
|
break;
|
}
|
}
|
}
|
|
if (resultItem == null) {
|
resultItem = new ResultItem();
|
resultItem.setName(name);
|
}
|
|
resultItem.setValue(value);
|
resultItem.setOperator(operator);
|
|
items.add(resultItem);
|
}
|
|
public List<ResultItem> getItemList() {
|
return items;
|
}
|
|
public HttpServletResponse getResponse() {
|
return response;
|
}
|
|
public boolean isFireReplay() {
|
return fireReplay;
|
}
|
|
public void setFireReplay(boolean fireReplay) {
|
this.fireReplay = fireReplay;
|
}
|
|
public void setLetterWriter(ILetterWriter letterWriter) {
|
this.letterWriter = letterWriter;
|
}
|
|
public ILetterWriter getLetterWriter() {
|
return letterWriter;
|
}
|
|
public Validation message() {
|
return validation;
|
}
|
|
public MessageList getMessageList() {
|
return messageList;
|
}
|
|
public List<ExistsError> getExistsErrors() {
|
return existsErrors;
|
}
|
|
public Validation getValidation() {
|
return validation;
|
}
|
|
public void free() {
|
localInstance.remove();
|
}
|
|
}
|