00001
00005 import gugga.tracking.formatters.DefaultFormatter;
00006 import gugga.tracking.IFilter;
00007 import gugga.tracking.IFormatter;
00008 import gugga.tracking.IPublisher;
00009 import gugga.tracking.TrackRecord;
00010 import gugga.logging.Logger;
00011 import gugga.utils.DebugUtils;
00012 import gugga.debug.Debugger;
00013
00014 class gugga.tracking.publishers.DefaultPublisher implements IPublisher
00015 {
00016 private var mFilter:IFilter;
00017 private var mFormatter:IFormatter;
00018 private var mTrackableActions:String;
00019 private var mTrackableActionsInternal:String;
00020
00021 public function DefaultPublisher()
00022 {
00023 this.setFormatter(new DefaultFormatter());
00024 }
00025
00026 public function publish(aTrackRecord:TrackRecord):Void
00027 {
00028 if (this.isLoggable(aTrackRecord))
00029 {
00030 var trackString : String;
00031
00032 trackString = this.getFormatter().formatOriginator(aTrackRecord);
00033 trackString += ", " + aTrackRecord.Action.toString();
00034 trackString += ", " + DebugUtils.objectToString(aTrackRecord.Arguments);
00035
00036 Logger.logInfo(trackString, this);
00037 }
00038 }
00039
00040 public function setFilter(mFilter:IFilter):Void
00041 {
00042 this.mFilter = mFilter;
00043 }
00044
00045 public function getFilter():IFilter
00046 {
00047 return this.mFilter;
00048 }
00049
00050 public function setFormatter(mFormatter:IFormatter):Void
00051 {
00052 this.mFormatter = mFormatter;
00053 }
00054
00055 public function getFormatter():IFormatter
00056 {
00057 return this.mFormatter;
00058 }
00059
00060 public function setTrackableActions(trackableActions : String) : Void
00061 {
00062 mTrackableActions = trackableActions;
00063 mTrackableActionsInternal = "," + mTrackableActions.split(" ").join("") + ",";
00064 }
00065
00066 public function getTrackableActions() : String
00067 {
00068 return mTrackableActions;
00069 }
00070
00071
00072 public function isLoggable(aTrackRecord:TrackRecord):Boolean
00073 {
00074 if(mTrackableActions == "ALL")
00075 {
00076 return true;
00077 }
00078
00079 if(mTrackableActions == "NONE")
00080 {
00081 return false;
00082 }
00083
00084 if (mTrackableActionsInternal.indexOf(aTrackRecord.Action.toString(), 0) < 0)
00085 {
00086 return false;
00087 }
00088
00089 if (this.getFilter() == undefined || this.getFilter() == null)
00090 {
00091 return true;
00092 }
00093
00094 if (this.getFilter().isLoggable(aTrackRecord))
00095 {
00096 return true;
00097 }
00098
00099 return false;
00100 }
00101 }