DefaultPublisher.as

Go to the documentation of this file.
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         //TODO: messy logic. should be cleared
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 }

Generated on Fri May 11 17:12:42 2007 for GuggaFramework by  doxygen 1.5.2