Listing 1

<cfcomponent extends="BaseComponent">

<cfscript>
 variables.instance.dsn = "";
 variables.instance.columnlist = "*";
 variables.instance.maxrows = -1
 variables.instance.orderlist = "";
</cfscript>

<cffunction name="Init" access="Public" returntype="void" hint="I init the component">
 <cfargument name="columnlist" type="string" required="false">
 <cfargument name="orderlist" type="string" required="false">
 <cfargument name="maxrows" type="numeric" required="false">
 <cfargument name="dsn" type="string" required="false">
 
 <cfif IsDefined("arguments.columnlist")>
  <cfset variables.instance.columnlist = arguments.columnlist>
 </cfif>
 <cfif IsDefined("arguments.orderlist")>
  <cfset variables.instance.orderlist = arguments.orderlist>
 </cfif>
 <cfif IsDefined("arguments.maxrows")>
  <cfset variables.instance.maxrows = arguments.maxrows>
 </cfif>
 <cfif IsDefined("arguments.dsn")>
  <cfset variables.instance.dsn = arguments.dsn>
 </cfif>

</cffunction>

</cfcomponent>


Listing 2

<cfcomponent extends="GenericGateway">

<cfscript>
 variables.instance.CategoryID = 0;
 variables.instance.Category = "";
</cfscript>


<cffunction name="execute" access="public" returntype="query">

 <cfset var getCategories = "">
 <cfquery name="getCategories" datasource="#variables.instance.dsn#">
  select #variables.instance.columnlist#
  from RSSCAtegories
  where 0=0
  <cfif variables.instance.CategoryID NEQ 0>and RSSCAtegories.CategoryID = #variables.instance.CategoryID#
   </cfif>
  <cfif variables.instance.Category NEQ "">and RSSCAtegories.Category like '#variables.instance.Category#%'
   </cfif>
  </cfquery>

 <cfreturn getCategories>

</cffunction>

</cfcomponent>