RequiredFieldsFilter

Package: MachII.filters
Inherits from: framework.BaseComponent  <  framework.EventFilter
An EventFilter for testing that an event's args contain a list of required fields.
Method Summary
public void configure()

This configure does nothing.

public boolean filterEvent(Event event, EventContext eventContext, [struct paramArgs="#StructNew()#"])

Runs the filter event.

private void throwUsageException()

Throws an usage exception.

Methods inherited from framework.EventFilter:   init
Methods inherited from framework.BaseComponent:   setParameters , hasParameter , buildUrlToModule , isParameterDefined , buildUrl , announceEventInModule , setAppManager , getParameter , getProperty , getParameters , setProperty , getPropertyManager , bindValue , getAppManager , setParameter , announceEvent
Method Detail
configure

public void configure( )

This configure does nothing.

Parameters:

Code:

	<cffunction name="configure" access="public" returntype="void" output="false"
		hint="This configure does nothing.">
		
	</cffunction> 

filterEvent

public boolean filterEvent( Event event, EventContext eventContext, [struct paramArgs="#StructNew()#"] )

Runs the filter event.

Parameters:
Event event
EventContext eventContext
[struct paramArgs="#StructNew()#"]

Code:

	<cffunction name="filterEvent" access="public" returntype="boolean"
		hint="Runs the filter event.">
		<cfargument name="event" type="MachII.framework.Event" required="true" />
		<cfargument name="eventContext" type="MachII.framework.EventContext" required="true" />
		<cfargument name="paramArgs" type="struct" required="false" default="#StructNew()#" />
		
		<cfset var isContinue = true />
		<cfset var missingFields = '' />
		<cfset var requiredFields = '' />
		<cfset var invalidEvent = '' />
		<cfset var field = 0 />
		<cfset var newEventArgs = 0 />
		
		<cfif StructKeyExists(arguments.paramArgs,this.REQUIRED_FIELDS_PARAM) 
				AND StructKeyExists(arguments.paramArgs,this.INVALID_EVENT_PARAM)>
			<cfset requiredFields = arguments.paramArgs[this.REQUIRED_FIELDS_PARAM] />
			<cfset invalidEvent = arguments.paramArgs[this.INVALID_EVENT_PARAM] />
			
			<cfloop index="field" list="#requiredFields#" delimiters=",">
				<cfif (NOT event.isArgDefined(field)) OR (event.getArg(field,'') EQ '')>
					<cfset missingFields = ListAppend(missingFields, field, ',') />
					<cfset isContinue = false />
				</cfif>
			</cfloop>
		<cfelse>
			<cfset throwUsageException() />
		</cfif>
		
		<cfif isContinue>
			<cfreturn true />
		<cfelse>
			<cfset newEventArgs = arguments.event.getArgs() />
			<cfset newEventArgs['message'] = "Please provide all required fields. Missing fields: " & ReplaceNoCase(missingFields,',',', ','all') & "." />
			<cfset newEventArgs['missingFields'] = missingFields />
			<cfset arguments.eventContext.announceEvent(invalidEvent, newEventArgs) />
			
			<cfreturn false />
		</cfif>
	</cffunction> 

throwUsageException

private void throwUsageException( )

Throws an usage exception.

Parameters:

Code:

	<cffunction name="throwUsageException" access="private" returntype="void" output="false"
		hint="Throws an usage exception.">
		<cfset var throwMsg = "RequiredFieldsFilter requires the following usage parameters: " & this.REQUIRED_FIELDS_PARAM & ", " & this.INVALID_EVENT_PARAM & "." />
		<cfthrow message="#throwMsg#" />
	</cffunction>