001 package org.kuali.rice.krms.framework.engine.result;
002
003 import java.util.Collections;
004 import java.util.EventObject;
005 import java.util.Map;
006
007 import org.apache.commons.lang.StringUtils;
008 import org.joda.time.DateTime;
009 import org.joda.time.format.DateTimeFormat;
010 import org.joda.time.format.DateTimeFormatter;
011 import org.kuali.rice.krms.api.engine.ExecutionEnvironment;
012 import org.kuali.rice.krms.api.engine.ResultEvent;
013
014 public class BasicResult extends EventObject implements ResultEvent {
015 private static final long serialVersionUID = -4124200802034785921L;
016
017 private static final DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH.mm.ss.SSS");
018
019 protected String type;
020 protected DateTime timestamp;
021 protected ExecutionEnvironment environment;
022 protected Boolean result = null;
023 protected String description;
024 protected Map<String, ?> resultDetails;
025
026 public BasicResult(Map<String, ?> resultDetails, String eventType, Object source, ExecutionEnvironment environment, boolean result) {
027 this(resultDetails, null, eventType, source, environment, result);
028 }
029
030 public BasicResult(Map<String, ?> resultDetails, String description, String eventType, Object source, ExecutionEnvironment environment, boolean result) {
031 this(eventType, source, environment);
032 this.resultDetails = resultDetails;
033 this.result = new Boolean(result);
034 this.description = (description == null) ? StringUtils.EMPTY : description;
035 }
036
037 public BasicResult(String description, String eventType, Object source, ExecutionEnvironment environment, boolean result) {
038 this(eventType, source, environment);
039 this.result = new Boolean(result);
040 this.description = description;
041 }
042
043 public BasicResult(String eventType, Object source, ExecutionEnvironment environment, boolean result) {
044 this(eventType, source, environment);
045 this.result = new Boolean(result);
046 }
047
048 public BasicResult(String eventType, Object source, ExecutionEnvironment environment) {
049 super(source);
050 this.type = eventType;
051 this.timestamp = new DateTime();
052 this.environment = environment;
053 }
054
055 @Override
056 public String getType() {
057 return type;
058 }
059
060 @Override
061 public DateTime getTimestamp() {
062 return timestamp;
063 }
064
065 @Override
066 public ExecutionEnvironment getEnvironment(){
067 return environment;
068 }
069
070 @Override
071 public Boolean getResult(){
072 return result;
073 }
074
075 @Override
076 public String getDescription() {
077 return description;
078 }
079
080 @Override
081 public Map<String, ?> getResultDetails() {
082 if (resultDetails == null) {
083 return Collections.emptyMap();
084 } else {
085 return Collections.unmodifiableMap(resultDetails);
086 }
087 }
088
089 public String toString(){
090 StringBuffer sb = new StringBuffer();
091 sb.append(fmt.print(this.getTimestamp()));
092 sb.append(" EventType: "+ getType());
093 sb.append(" ( "+ this.getSource().toString());
094 if (this.getResult() != null){
095 sb.append(" evaluated to: "+ this.getResult().toString());
096 }
097 sb.append(" )");
098 return sb.toString();
099 }
100 }