RedirectCommand

Package: MachII.framework.commands
Inherits from: framework.Command
An Command for redirecting.
Method Summary
public RedirectCommand init(string eventName, string eventParameter, string redirectPersistParameter, [string moduleName=""], [string url=""], [string args=""], [boolean persist="false"], [string persistArgs=""], [string statusType="temporary"])

Used by the framework for initialization.

public boolean execute(Event event, EventContext eventContext)

Executes the command.

private string getArgs()
private string getEventName()
private string getEventParameter()
private string getModuleName()
private boolean getPersist()
private string getPersistArgs()
private string getRedirectPersistParameter()
private string getStatusType()
private string getUrl()
private string makeRedirectUrl(Event event, EventContext eventContext)

Assembles the redirect url.

private void savePersistEventData(Event event, EventContext eventContext)

Saves persisted event data and returns the persistId.

private void setArgs(string args)
private void setEventName(string eventName)
private void setEventParameter(string eventParameter)
private void setModuleName(string moduleName)
private void setPersist(boolean persist)
private void setPersistArgs(string persistArgs)
private void setRedirectPersistParameter(string redirectPersistParameter)
private void setStatusType(string statusType)
private void setUrl(string url)
Methods inherited from framework.Command:   setParameter , getParameter , setParameters
Method Detail
execute

public boolean execute( Event event, EventContext eventContext )

Executes the command.

Parameters:
Event event
EventContext eventContext

Code:

	<cffunction name="execute" access="public" returntype="boolean"
		hint="Executes the command.">
		<cfargument name="event" type="MachII.framework.Event" required="true" />
		<cfargument name="eventContext" type="MachII.framework.EventContext" required="true" />

		<cfset var redirectUrl = "" />
		<cfset var statusType = getStatusType() />

		
		<cfif getPersist()>
			<cfset savePersistEventData(arguments.event, arguments.eventContext) />
		</cfif>
		
		
		<cfset redirectUrl = makeRedirectUrl(arguments.event, arguments.eventContext) />
		
		
		<cfset arguments.eventContext.clearEventQueue() />
		
		
		<cfif statusType EQ "permanent">
			<cfheader statuscode="301" statustext="Moved Permanently" />
			<cfheader name="Location" value="#redirectUrl#" />
			<cfexit />
		<cfelseif statusType EQ "prg">
			<cfheader statuscode="303" statustext="See Other" />
			<cfheader name="Location" value="#redirectUrl#" />
			<cfexit />
		<cfelse>
			
			<cflocation url="#redirectUrl#" addtoken="no" />
		</cfif>
		
		
		<cfreturn false />
	</cffunction> 

getArgs

private string getArgs( )

Parameters:

Code:

	<cffunction name="getArgs" access="private" returntype="string" output="false">
		<cfreturn variables.args />
	</cffunction> 

getEventName

private string getEventName( )

Parameters:

Code:

	<cffunction name="getEventName" access="private" returntype="string" output="false">
		<cfreturn variables.eventName />
	</cffunction> 

getEventParameter

private string getEventParameter( )

Parameters:

Code:

	<cffunction name="getEventParameter" access="private" returntype="string" output="false">
		<cfreturn variables.eventParameter />
	</cffunction> 

getModuleName

private string getModuleName( )

Parameters:

Code:

	<cffunction name="getModuleName" access="private" returntype="string" output="false">
		<cfreturn variables.moduleName />
	</cffunction> 

getPersist

private boolean getPersist( )

Parameters:

Code:

	<cffunction name="getPersist" access="private" returntype="boolean" output="false">
		<cfreturn variables.persist />
	</cffunction> 

getPersistArgs

private string getPersistArgs( )

Parameters:

Code:

	<cffunction name="getPersistArgs" access="private" returntype="string" output="false">
		<cfreturn variables.persistArgs />
	</cffunction> 

getRedirectPersistParameter

private string getRedirectPersistParameter( )

Parameters:

Code:

	<cffunction name="getRedirectPersistParameter" access="private" returntype="string" output="false">
		<cfreturn variables.redirectPersistParameter />
	</cffunction> 

getStatusType

private string getStatusType( )

Parameters:

Code:

	<cffunction name="getStatusType" access="private" returntype="string" output="false">
		<cfreturn variables.statusType />
	</cffunction> 

getUrl

private string getUrl( )

Parameters:

Code:

	<cffunction name="getUrl" access="private" returntype="string" output="false">
		<cfreturn variables.url />
	</cffunction> 

init

public RedirectCommand init( string eventName, string eventParameter, string redirectPersistParameter, [string moduleName=""], [string url=""], [string args=""], [boolean persist="false"], [string persistArgs=""], [string statusType="temporary"] )

Used by the framework for initialization.

Parameters:
string eventName
string eventParameter
string redirectPersistParameter
[string moduleName=""]
[string url=""]
[string args=""]
[boolean persist="false"]
[string persistArgs=""]
[string statusType="temporary"]

Code:

	<cffunction name="init" access="public" returntype="RedirectCommand" output="false"
		hint="Used by the framework for initialization.">
		<cfargument name="eventName" type="string" required="true" />
		<cfargument name="eventParameter" type="string" required="true" />
		<cfargument name="redirectPersistParameter" type="string" required="true" />
		<cfargument name="moduleName" type="string" required="false" default="" />
		<cfargument name="url" type="string" required="false" default="" />
		<cfargument name="args" type="string" required="false" default="" />
		<cfargument name="persist" type="boolean" required="false" default="false" />
		<cfargument name="persistArgs" type="string" required="false" default="" />
		<cfargument name="statusType" type="string" required="false" default="temporary" />
		
		<cfset setEventName(arguments.eventName) />
		<cfset setEventParameter(arguments.eventParameter) />
		<cfset setRedirectPersistParameter(arguments.redirectPersistParameter) />
		<cfset setModuleName(arguments.moduleName) />
		<cfset setUrl(arguments.url) />
		<cfset setArgs(arguments.args) />
		<cfset setPersist(arguments.persist) />
		<cfset setPersistArgs(arguments.persistArgs) />
		<cfset setStatusType(arguments.statusType) />
		
		
		<cfif getPersist()>
			<cfset setArgs(ListAppend(getArgs(), getRedirectPersistParameter())) />
		</cfif>
		
		<cfreturn this />
	</cffunction> 

makeRedirectUrl

private string makeRedirectUrl( Event event, EventContext eventContext )

Assembles the redirect url.

Parameters:
Event event
EventContext eventContext

Code:

	<cffunction name="makeRedirectUrl" access="private" returntype="string" output="false"
		hint="Assembles the redirect url.">
		<cfargument name="event" type="MachII.framework.Event" required="true" />
		<cfargument name="eventContext" type="MachII.framework.EventContext" required="true" />
		
		<cfset var redirectUrl = "" />
		<cfset var params = StructNew() />
		<cfset var args = getArgs() />
		<cfset var i = "" />
		
		
		<cfloop list="#args#" index="i" delimiters=",">
			<cfif arguments.event.isArgDefined(i) AND IsSimpleValue(arguments.event.getArg(i))>
				<cfset params[i] = arguments.event.getArg(i) />
			</cfif>
		</cfloop>
		
		<cfset redirectUrl = arguments.eventContext.getAppManager().getRequestManager().buildUrl(getModuleName(), getEventName(), params, getUrl()) />
		
		<cfreturn redirectUrl />
	</cffunction> 

savePersistEventData

private void savePersistEventData( Event event, EventContext eventContext )

Saves persisted event data and returns the persistId.

Parameters:
Event event
EventContext eventContext

Code:

	<cffunction name="savePersistEventData" access="private" returntype="void" output="false"
		hint="Saves persisted event data and returns the persistId.">
		<cfargument name="event" type="MachII.framework.Event" required="true" />
		<cfargument name="eventContext" type="MachII.framework.EventContext" required="true" />
		
		<cfset var args = StructNew() />
		<cfset var persistArgs = getPersistArgs() />
		<cfset var persistId = "" />
		<cfset var i = "" />
		
		
		<cfif NOT ListLen(persistArgs)>
			<cfset args = arguments.event.getArgs() />
			
			<cfif StructKeyExists(args, getEventParameter())>
				<cfset StructDelete(args, getEventParameter(), FALSE) />
			</cfif>
		<cfelse>
			<cfloop list="#persistArgs#" index="i" delimiters=",">
				<cfif arguments.event.isArgDefined(i)>
					<cfset args[i] = arguments.event.getArg(i) />
				</cfif>
			</cfloop>
		</cfif>
		
		
		<cfset persistId = arguments.eventContext.getAppManager().getRequestManager().savePersistEventData(args) />
		<cfset arguments.event.setArg(getRedirectPersistParameter(), persistId) />
	</cffunction> 

setArgs

private void setArgs( string args )

Parameters:
string args

Code:

	<cffunction name="setArgs" access="private" returntype="void" output="false">
		<cfargument name="args" type="string" required="true" />
		<cfset variables.args = arguments.args />
	</cffunction> 

setEventName

private void setEventName( string eventName )

Parameters:
string eventName

Code:

	<cffunction name="setEventName" access="private" returntype="void" output="false">
		<cfargument name="eventName" type="string" required="true" />
		<cfset variables.eventName = arguments.eventName />
	</cffunction> 

setEventParameter

private void setEventParameter( string eventParameter )

Parameters:
string eventParameter

Code:

	<cffunction name="setEventParameter" access="private" returntype="void" output="false">
		<cfargument name="eventParameter" type="string" required="true" />
		<cfset variables.eventParameter = arguments.eventParameter />
	</cffunction> 

setModuleName

private void setModuleName( string moduleName )

Parameters:
string moduleName

Code:

	<cffunction name="setModuleName" access="private" returntype="void" output="false">
		<cfargument name="moduleName" type="string" required="true" />
		<cfset variables.moduleName = arguments.moduleName />
	</cffunction> 

setPersist

private void setPersist( boolean persist )

Parameters:
boolean persist

Code:

	<cffunction name="setPersist" access="private" returntype="void" output="false">
		<cfargument name="persist" type="boolean" required="true" />
		<cfset variables.persist = arguments.persist />
	</cffunction> 

setPersistArgs

private void setPersistArgs( string persistArgs )

Parameters:
string persistArgs

Code:

	<cffunction name="setPersistArgs" access="private" returntype="void" output="false">
		<cfargument name="persistArgs" type="string" required="true" />
		<cfset variables.persistArgs = arguments.persistArgs />
	</cffunction> 

setRedirectPersistParameter

private void setRedirectPersistParameter( string redirectPersistParameter )

Parameters:
string redirectPersistParameter

Code:

	<cffunction name="setRedirectPersistParameter" access="private" returntype="void" output="false">
		<cfargument name="redirectPersistParameter" type="string" required="true" />
		<cfset variables.redirectPersistParameter = arguments.redirectPersistParameter />
	</cffunction> 

setStatusType

private void setStatusType( string statusType )

Parameters:
string statusType

Code:

	<cffunction name="setStatusType" access="private" returntype="void" output="false">
		<cfargument name="statusType" type="string" required="true" />
		<cfset variables.statusType = arguments.statusType />
	</cffunction> 

setUrl

private void setUrl( string url )

Parameters:
string url

Code:

	<cffunction name="setUrl" access="private" returntype="void" output="false">
		<cfargument name="url" type="string" required="true" />
		<cfset variables.url = arguments.url />
	</cffunction>