Listing 1

<cfcomponent extends="basecomponent">
<cfscript>
 variables.instance.CategoryID = "";
 variables.instance.Category = "";
</cfscript>

<cffunction name="Init" access="public" returntype="Boolean">
 <cfargument name="CategoryID" type="string" required="true">
 <cfargument name="dsn" type="string" required="true">
 <cfset var qGetCat = "">
  <cfquery name="qGetCat" datasource="#arguments.dsn#">
   select *
   from RSSCategories
  where RSSCategories.CategoryID = <cfqueryparam value="#arguments.CategoryID#" cfsqltype="cf_sql_varchar">
</cfquery>
  <cfif qGetCat.recordcount is 0>
  <cfreturn false>
 </cfif>
<cfscript>
   variables.instance.CategoryID = qGetCat.CategoryID;
   variables.instance.Category = qGetCat.Category;
 </cfscript>
 
 <cfreturn true>
 
</cffunction>

<cffunction name="Commit" access="public" returntype="void">
  <cfargument name="dsn" type="string" required="true">
  <cfset var qUpdateCat = "">
 
  <cfif variables.instance.CategoryID is "">
   <cfset variables.instance.CategoryID = createuuid()>
   <cfquery name="qUpdateCat" datasource="#arguments.dsn#">
    insert into RSSCategories(CategoryID, Category)
    values (
     '#variables.instance.CategoryID#', 
     <cfqueryparam value="#variables.instance.Category#" cfsqltype="cf_sql_varchar"> )
   </cfquery>
  <cfelse>
   <cfquery name="qUpdateCat" datasource="#arguments.dsn#">
    update RSSCategories 
    set Cate = <cfqueryparam value="#variables.instance.Cate#" cfsqltype="cf_sql_varchar">
    where CategoryID = <cfqueryparam value="#variables.instance.CategoryID#" cfsqltype="cf_sql_varchar">
   </cfquery>
  </cfif>
</cffunction>

</cfcomponent>

Listing 2:

<cfcomponent extends="basecomponent">

<cfscript>
 variables.instance.RSSFeedID = "";
 variables.instance.Category = createObject('component','RSSCategory');
 variables.instance.Title = "";
 variables.instance.link = "";
 variables.instance.description = "";
</cfscript>

<cffunction name="Init" access="public" returntype="Boolean">
 <cfargument name="RSSFeedID" type="string" required="true">
 <cfargument name="dsn" type="string" required="true">
 <cfset var qGetRSSFeed = "">
 <cfquery name="qGetRSSFeed" datasource="#arguments.dsn#">
  select RSSFeeds.*, RSSCategories.*
  from RSSFeeds left outer join RSSCategories on (RSSFeeds.CategoryID = RSSCategories.categoryID)
  where RSSFeeds.RSSFeedID = <cfqueryparam value="#arguments.RSSFeedID#" cfsqltype="cf_sql_varchar">
 </cfquery>
 <cfif qGetRSSFeed.recordcount is 0>
  <cfreturn false>
 </cfif>
 <cfscript>
  variables.instance.RSSFeedID = qGetRSSFeed.RSSFeedID;
  variables.instance.Category.Set('categoryID',qGetRSSFeed.CategoryID);
  variables.instance.Category.Set('category',qGetRSSFeed.Category);
  variables.instance.Title = qGetRSSFeed.Title;
  variables.instance.link = qGetRSSFeed.link;
  variables.instance.description = qGetRSSFeed.description;
 </cfscript>
 <cfreturn true>
</cffunction>

 <cffunction name="Commit" access="public" returntype="void">
  <cfargument name="dsn" type="string" required="true">
  <cfset var qUpdateItem = "">
  <cfif variables.instance.RSSFeedID is "">
   <cfset variables.instance.RSSFeedID = createuuid()>
   <cfquery name="qUpdateItem" datasource="#arguments.dsn#">
   insert into RSSFeeds (RSSFeedID, CategoryID, Title, Link, Description)
    values (
    '#variables.instance.RSSFeedID#', 
    <cfqueryparam value="#variables.instance.Category.get('categoryID')#" cfsqltype="cf_sql_varchar">,
     <cfqueryparam value="#variables.instance.Title#" cfsqltype="cf_sql_varchar">,
    <cfqueryparam value="#variables.instance.Link#" cfsqltype="cf_sql_varchar">,
    <cfqueryparam value="#variables.instance.Description#" cfsqltype="cf_sql_varchar"> )
  </cfquery>
  <cfelse>
  <cfquery name="qUpdateItem" datasource="#arguments.dsn#">
   update RSSFeeds 
   set CategoryID = <cfqueryparam value="#variables.instance.Category.get('categoryID')#"
    cfsqltype="cf_sql_varchar">,
    Title = <cfqueryparam value="#variables.instance.Title#" cfsqltype="cf_sql_varchar">, 
	Link = <cfqueryparam value="#variables.instance.Link#" cfsqltype="cf_sql_varchar">,
   Description = <cfqueryparam value="#variables.instance.Description#" cfsqltype="cf_sql_varchar">
   where RSSFeedID = <cfqueryparam value="#variables.instance.RSSFeedID#" cfsqltype="cf_sql_varchar">
  </cfquery>
 </cfif>
</cffunction>
</cfcomponent>

Listing 3

<cfinclude template="#request.cflibs#/syslib.cfm">

<cfscript>
 variables.myFeed = CreateObject("component","#request.ComponentLoc#.RSSFeed");
 if (IsDefined("RSSFeedID")){
  variables.myFeed.init(RSSFeedID, request.dsn);
 }
</cfscript>

<cfoutput>
<form action="Feedip.cfm" method="post">
 <input type="hidden" name="RSSFeedID" value="#variables.myFeed.get('RSSFeedID')#">
 <strong>Category</strong>:
 #CreateSelectList(getCategories(request.dsn),"CategoryID","Category","CategoryID",
 variables.myFeed.Get('Category').get('CategoryID'),"Select a Category",
     "","")#	<br>
 <strong>Link</strong>: <input type="text" name="link" value="#variables.myFeed.get('link')#"><Br>
 <strong>Title</strong>: <cfif variables.myFeed.get('title') is "">Unknown, will be pulled out of
  Feed<cfelse>#variables.myFeed.get('title')#</cfif><br>
 <strong>Description</strong>: <cfif variables.myFeed.get('Description') is "">Unknown, will be pulled out of
  Feed<cfelse>#variables.myFeed.get('Description')#</cfif><br>
 <input type="Submit">
</form>
</cfoutput>

Listing 4

<cfscript>
 variables.myFeed = CreateObject("component","#request.ComponentLoc#.RSSFeed");
 if (form.RSSFeedID NEQ ""){
  variables.myFeed.initbyID(RSSFeedID, request.dsn);
 }
</cfscript>

<cftry>
 <cfhttp url="#form.link#" timeout="30">
 </cfhttp>

<cfcatch type="any">
 Warning, the link timed out.
<cfabort>
 </cfcatch>

</cftry>

<cfscript>
 MyXMLVar = xmlparse(cfhttp.filecontent);
 variables.myFeed.set('link',form.link);
 variables.myFeed.set('title',MyXMLVar.rss.channel.description.xmltext);
 variables.myFeed.set('description',MyXMLVar.rss.channel.title.xmltext);
 variables.myFeed.get('category').set('categoryID',form.categoryID);
 variables.myfeed.commit(request.dsn);
</cfscript>