package foundation.io.engine; import java.util.Date; import java.util.List; import foundation.data.entity.EntitySet; import foundation.io.object.Titles; import foundation.json.IJSONProvider; import foundation.json.IJSONWriter; import foundation.monitor.MessageLine; import foundation.monitor.Progressor; import foundation.token.IUser; import foundation.translator.Translator; public class IOResult implements IJSONProvider { private Progressor progressor; private IOState state; private Date beginTime; private Date endTime; private String fileURL; private String remark; private Titles titles; private EntitySet entitySet; public IOResult(Progressor progressor) { beginTime = new Date(); state = IOState.NotKnown; this.progressor = progressor; } public void setSkip(IOState currentState) throws Exception { state = currentState; remark = "系统忙,请稍后再试"; } public void setSkip(IOState currentState, IUser user, Date date) throws Exception { state = currentState; remark = user.getName() + "在【" + Translator.toString(date) + "】已经运行..."; } public IOState getState() { return state; } public void setState(IOState state) { this.state = state; if (IOState.Finish == state) { endTime = new Date(); } } public void writeBegin() { beginTime = new Date(); } public Progressor getProgressor() { return progressor; } public Date getBeginTime() { return beginTime; } public Date getEndTime() { return endTime; } public void setFileURL(String fileURL) { this.fileURL = fileURL; } public void setTitles(Titles titles) { this.titles = titles; } public void setEntitySet(EntitySet entitySet) { this.entitySet = entitySet; } @Override public void writeJSON(IJSONWriter writer) { writer.beginObject(); //1.1 write property writer.writeJSON("state", Translator.toJSONString(state.name(), "null")); // writer.writeJSON("fileURL", Translator.toJSONString(fileURL, "null")); writer.writeJSON("begintime", Translator.toJSONString(beginTime, "null")); writer.writeJSON("endTime", Translator.toJSONString(endTime, "null")); writer.writeJSON("remark", Translator.toJSONString(remark, "null")); //1.2 write messages writer.beginArray("messagelist"); if (progressor != null) { List messageList = progressor.getMessageList(); int max = messageList.size(); for (int i = 0; i < max; i++) { MessageLine message = messageList.get(i); writer.write(message.getValue()); } } writer.endArray(); writer.endObject(); } public EntitySet getEntitySet() { return entitySet; } public Titles getTitles() { return titles; } }