<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Development Technobabble</title>
	<atom:link href="http://nwoolls.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nwoolls.wordpress.com</link>
	<description>Nathanial Woolls&#039; Blog</description>
	<lastBuildDate>Sat, 17 Dec 2011 17:30:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nwoolls.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Development Technobabble</title>
		<link>http://nwoolls.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nwoolls.wordpress.com/osd.xml" title="Development Technobabble" />
	<atom:link rel='hub' href='http://nwoolls.wordpress.com/?pushpress=hub'/>
		<item>
		<title>DX WinForms Skins without Requiring Skin Assemblies</title>
		<link>http://nwoolls.wordpress.com/2011/11/17/dx-winforms-skins-without-requiring-skin-assemblies/</link>
		<comments>http://nwoolls.wordpress.com/2011/11/17/dx-winforms-skins-without-requiring-skin-assemblies/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 18:17:07 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Developer Express]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Microsoft .NET]]></category>

		<guid isPermaLink="false">http://nwoolls.wordpress.com/?p=412</guid>
		<description><![CDATA[For some time I&#8217;d wanted to find a way to make use of the skins provided with the DevExpress WinForms controls without deploying and loading the optional skin assemblies. If you just want to use one of the custom skins DevExpress provides, it may be overkill to ship and load 7MB of assemblies for this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=412&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For some time I&#8217;d wanted to find a way to make use of the <a href="http://www.devexpress.com/Products/NET/Controls/WinForms/Skins/">skins</a> provided with the <a href="http://www.devexpress.com/Products/NET/Controls/WinForms/">DevExpress WinForms</a> controls without deploying and loading the optional skin assemblies. If you just want to use one of the custom skins DevExpress provides, it may be overkill to ship and load 7MB of assemblies for this purpose.</p>
<p>Recently I was lucky enough to hang out with much of the team from DevExpress, as well as fellow members of the <a href="http://www.dxsquad.com/">DX-Squad</a>, at DevConnections in Las Vegas. <a href="https://twitter.com/#!/aussiealf">Michael Proctor</a> (who was interested in accomplishing something similar) and I spoke with <a href="https://twitter.com/#!/Ba3e64">Azret Botash</a>, who works on the .NET controls at DevExpress. Azret indicated that it was already possible to load the WinForms skins without the optional skin assemblies. He then proceeded to download and install <a href="http://www.reflector.net/">Reflector</a> on a conference PC before disassembling one of the DX WinForms samples and highlighting a few of the key classes involved, such as SkinXmlCreator and SkinXmlLoader.</p>
<p>After returning home, I started digging through the samples that ship with <a href="http://devexpress.com/Subscriptions/DXperience/">DXperience</a> and was able to assemble various pieces of the puzzle to make my own SkinBlobXmlFileCreator class. It descends from SkinXmlCreator and then uses some very basic code to load a skin directly from its .XML and .BLOB files rather than from an assembly. These .XML and .BLOB files ship with DXperience and are located here:</p>
<p>C:\Program Files\DevExpress 201X.Y\Components\Sources\DevExpress.BonusSkins\SkinData<br />
C:\Program Files\DevExpress 201X.Y\Components\Sources\DevExpress.OfficeSkins\SkinData<br />
C:\Program Files\DevExpress 201X.Y\Components\Sources\DevExpress.Utils\SkinData</p>
<p>Using this new class, you can load a skin with the following lines:</p>
<p><pre class="brush: csharp;">
            SkinBlobXmlFileCreator creator = new SkinBlobXmlFileCreator(&quot;VS2010&quot;, Application.StartupPath + &quot;\\&quot;, &quot;VS2010.skin.xml&quot;);
            SkinManager.Default.RegisterSkin(creator);

            UserLookAndFeel.Default.SetSkinStyle(&quot;VS2010&quot;);
</pre></p>
<p>This works without deploying or referencing the BonusSkins assembly. Only the &#8220;VS2010.skin.xml&#8221; and &#8220;VS2010.blob&#8221; files are required.</p>
<p>You can download the source for the SkinBlobXmlFileCreator <a href="http://www.nwoolls.com/download/SkinBlobXmlFileCreator.zip">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/412/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=412&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2011/11/17/dx-winforms-skins-without-requiring-skin-assemblies/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
		<item>
		<title>Delay Applying Updates in Data Abstract iOS Apps</title>
		<link>http://nwoolls.wordpress.com/2011/09/15/delay-applying-updates-in-data-abstract-ios-apps/</link>
		<comments>http://nwoolls.wordpress.com/2011/09/15/delay-applying-updates-in-data-abstract-ios-apps/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 12:57:05 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[RemObjects]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://nwoolls.wordpress.com/?p=402</guid>
		<description><![CDATA[Even though the code generated by the Data Abstract for Xcode template for iOS apps is mostly asynchronous, you may notice delays in the UI when applying updates to your server. If you check out the asyncRequest:didFinishApplyingChangesForTables:withErrors: method in DataAccess.m, you&#8217;ll see that, once an asynchronous request finishes, your data will be saved to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=402&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Even though the code generated by the <a href="http://www.remobjects.com/da/xcode.aspx">Data Abstract for Xcode</a> template for iOS apps is mostly asynchronous, you may notice delays in the UI when applying updates to your server. If you check out the <a href="http://wiki.remobjects.com/wiki/DAAsyncRequestDelegate_Protocol">asyncRequest:didFinishApplyingChangesForTables:withErrors:</a> method in DataAccess.m, you&#8217;ll see that, once an asynchronous request finishes, your data will be saved to the <a href="http://wiki.remobjects.com/wiki/DABriefcase_Class">local briefcase</a> file:</p>
<p><pre class="brush: objc;">
- (void)asyncRequest:(DAAsyncRequest *)request didFinishApplyingChangesForTables:(NSArray *)tables withErrors:(NSArray *)errors
{
	[self saveData];
	[self setBusy:NO];
...
</pre></p>
<p>This happens on the main thread and, given a large enough set of data, will cause your app to stutter.</p>
<p>Luckily this is pretty straight forward to address. Cocoa makes it easy enough to <a href="http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/performSelectorInBackground:withObject:">run code in a background thread</a>, and that&#8217;s exactly what Alexander from <a href="http://www.remobjects.com/">RemObjects</a> suggests:</p>
<p><pre class="brush: objc;">
-(void)saveDataInBackground {&lt;/pre&gt;
    [self performSelectorInBackground:@selector(saveData) withObject:nil];
}

- (void)asyncRequest:(DAAsyncRequest *)request didFinishApplyingChangesForTables:(NSArray *)tables withErrors:(NSArray *)errors
{
    [self saveDataInBackground];
    [self setBusy:NO];
...
</pre></p>
<p>I&#8217;ve been using a form of the above solution for a while now and can confirm that things are running smoothly, even with a larger set of data. Alexander let me know that this would be addressed in the Xcode templates for a future DA update.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/402/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=402&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2011/09/15/delay-applying-updates-in-data-abstract-ios-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
		<item>
		<title>Offline Mode with Data Abstract for Xcode</title>
		<link>http://nwoolls.wordpress.com/2011/07/11/offline-mode-with-data-abstract-for-xcode/</link>
		<comments>http://nwoolls.wordpress.com/2011/07/11/offline-mode-with-data-abstract-for-xcode/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 01:58:50 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[RemObjects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://nwoolls.wordpress.com/?p=369</guid>
		<description><![CDATA[Data Abstract for Xcode makes it simple to support disconnected n-tier iPhone applications. The briefcase support is a snap, requiring only a few extra lines to be uncommented from the templates installed into Xcode by the Data Abstract installer. I recently looked into adding support for an &#8220;offline&#8221; mode to a Data Abstract application I&#8217;ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=369&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">
<dl class="wp-caption alignright">
<dt class="wp-caption-dt"><a href="http://nwoolls.files.wordpress.com/2011/07/screen-shot-2011-07-10-at-10-05-49-pm.png?w=159"><img class="size-medium wp-image-390 " title="Offline Mode Sample App" src="http://nwoolls.files.wordpress.com/2011/07/screen-shot-2011-07-10-at-10-05-49-pm.png?w=159&#038;h=300" alt="Offline Mode Sample App" width="159" height="300" /></a></dt>
<dd class="wp-caption-dd"></dd>
</dl>
</div>
<p><a href="http://www.remobjects.com/da/xcode.aspx">Data Abstract for Xcode</a> makes it simple to support disconnected n-tier iPhone applications. The <a href="http://wiki.remobjects.com/wiki/Briefcase_Sample_%28Xcode%29">briefcase support</a> is a snap, requiring only a few extra lines to be uncommented from the templates installed into Xcode by the Data Abstract installer.</p>
<p>I recently looked into adding support for an &#8220;offline&#8221; mode to a Data Abstract application I&#8217;ve been developing for the iPhone. Basically, the application should function whether the iOS device has an active network connection or not. If there is no connection, any changes to data should be cached until a network connection becomes available.</p>
<p>This ended up being pretty easy to do. I started by adding <a href="http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html">Reachability</a> support to the application. You can read detailed instructions about how to do that on <a href="http://stackoverflow.com/questions/1083701/how-to-check-for-an-active-internet-connection-on-iphone-sdk">Stack Overflow</a>.</p>
<p>Once Reachability support has been added, it&#8217;s trivial to alter the beginApplyUpdates code in DataAccess.m to only apply updates when a network connection is available:</p>
<p><pre class="brush: objc;">
- (DAAsyncRequest *)beginApplyUpdates
{
	if (!internetActive) {
		return nil;
	}
        ...
}
</pre></p>
<p>Then, modify the Reachability usage to apply any unsaved updates when a connection becomes available:</p>
<p><pre class="brush: objc;">
		case ReachableViaWiFi:
		case ReachableViaWWAN: {
			NSLog(@&quot;The internet is working via WIFI.&quot;);
			internetActive = YES;
			//have we received data before?
			if (self.daTestTable) {
				//setup data adapter (to get a new connection)
				[self setupDataAdapter];
				//commit any pending changes to the server
				[self beginApplyUpdates];
			}

			break;
		}
</pre></p>
<p>The only tricky bit I found was the need to re-create the <a href="http://wiki.remobjects.com/wiki/DARemoteDataAdapter_Class">DARemoteDataAdapter</a> after a network connection becomes available. This is because you may have an old connection that will cause an error if you try to reuse it.</p>
<p>You can download a sample application <a href="http://nwoolls.com/download/DA%20Offline%20Mode.zip">here</a>. The archive includes a SQL script for generating the sample DB table.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/369/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=369&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2011/07/11/offline-mode-with-data-abstract-for-xcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>

		<media:content url="http://nwoolls.files.wordpress.com/2011/07/screen-shot-2011-07-10-at-10-05-49-pm.png?w=159" medium="image">
			<media:title type="html">Offline Mode Sample App</media:title>
		</media:content>
	</item>
		<item>
		<title>Using RemObjects Olympia Server with a Custom Session Class</title>
		<link>http://nwoolls.wordpress.com/2011/05/05/using-remobjects-olympia-server-with-a-custom-session-class/</link>
		<comments>http://nwoolls.wordpress.com/2011/05/05/using-remobjects-olympia-server-with-a-custom-session-class/#comments</comments>
		<pubDate>Thu, 05 May 2011 01:12:26 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[CodeGear Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[RemObjects]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nwoolls.wordpress.com/?p=363</guid>
		<description><![CDATA[Today I started playing with Olympia Server for out-of-process session management. We have a RemObjects SDK service that can currently use either in-memory or in-database session state. The in-memory option is faster, but limits our pooling options. The various session managers in RemObjects SDK are pluggable and swappable, so adding support for Olympia Server to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=363&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I started playing with <a href="http://wiki.remobjects.com/wiki/Olympia_Server">Olympia Server</a> for out-of-process session management. We have a <a href="http://www.remobjects.com/">RemObjects SDK</a> service that can currently use either in-memory or in-database session state. The in-memory option is faster, but limits our pooling options.</p>
<p>The various <a href="http://wiki.remobjects.com/wiki/Session_Management">session managers in RemObjects SDK</a> are pluggable and swappable, so adding support for Olympia Server to our service was pretty straight forward. However, I quickly ran into a limitation when using Olympia Server for session management: if you make use of a custom TROSession descendant by handling CustomCreateSession (discussed <a href="http://wiki.remobjects.com/wiki/Simplifying_Permissions_%28Delphi%29">here</a>), your custom properties will not be available after they make the trip to Olympia Server and back.</p>
<p>After looking into the source for TROSession and TROOlympiaSessionManager, I was able to come up with a fairly simple solution that allows you to continue using a custom TROSession descendant while also making use of Olympia for out-of-process session management.</p>
<p>The key is to override both SaveToStream and LoadFromStream in your custom TROSession descendant. There, serialize and deserialize your custom property values using the Values name-value pair property found on TROSession.</p>
<p><pre class="brush: delphi;">
procedure LoadFromStream(aStream: TStream; OnlyValues: Boolean = False); override;
procedure SaveToStream(aStream: TStream; OnlyValues: Boolean = False); override;

...

procedure TMySession.LoadFromStream(aStream: TStream; OnlyValues: Boolean);
begin
  inherited;
  MyProperty := Values['MyProperty'];
  MyStrings.CommaText := Values['MyStrings'];
end;

procedure TMySession.SaveToStream(aStream: TStream; OnlyValues: Boolean);
begin
  Values['MyProperty'] := MyProperty;
  Values['MyStrings'] := MyStrings.CommaText;
  inherited;
end;
</pre></p>
<p>That Values property is one of the properties that will be persisted round trip with Olympia, and will allow your service to continue working as-is while making use of both a custom session class and Olympia Server.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/363/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=363&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2011/05/05/using-remobjects-olympia-server-with-a-custom-session-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
		<item>
		<title>Password Tote for iOS 1.1 Available</title>
		<link>http://nwoolls.wordpress.com/2011/04/26/password-tote-for-ios-1-1-available/</link>
		<comments>http://nwoolls.wordpress.com/2011/04/26/password-tote-for-ios-1-1-available/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 00:57:41 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nwoolls.wordpress.com/?p=354</guid>
		<description><![CDATA[Version 1.1 of Password Tote for iOS is now available on the App Store. The update has some nice new features, such as the ability to add and edit security questions and general password notes. This version also makes the usage of a PIN for unlocking optional, and does a better job of explaining the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=354&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Version 1.1 of <a href="http://itunes.apple.com/us/app/password-tote/id393647482?mt=8">Password Tote for iOS</a> is now available on the App Store.</p>
<p>The update has some nice new features, such as the ability to add and edit security questions and general password notes. This version also makes the usage of a PIN for unlocking optional, and does a better job of explaining the importance of remembering your master username and password, as well as explaining that the PIN is solely for unlocking the application on the device &#8211; not for logging into the service. Version 1.1 also includes a handful of bug fixes and minor changes. </p>
<p>The <a href="https://www.passwordtote.com/">Password Tote</a> website and service are completely free, and access from native applications for Windows, OS X, Android, and iOS is free for 60 days. You can find the iOS and OS X versions on their respective App Stores, the <a href="https://market.android.com/details?id=com.controldev.passwordtote&amp;feature=search_result">Android version</a> is available on the Android Market, and the Windows version is available <a href="https://www.passwordtote.com/downloads.aspx">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/354/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=354&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2011/04/26/password-tote-for-ios-1-1-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
		<item>
		<title>Password Tote on the Mac App Store</title>
		<link>http://nwoolls.wordpress.com/2011/04/08/password-tote-on-the-mac-app-store/</link>
		<comments>http://nwoolls.wordpress.com/2011/04/08/password-tote-on-the-mac-app-store/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 23:06:28 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nwoolls.wordpress.com/?p=351</guid>
		<description><![CDATA[Password Tote is now available on the Mac App Store. This has provided a great influx of users which is very exciting! We had a few hiccups initially due to some private API usage, but that&#8217;s all sorted out now with both 32-bit and 64-bit versions now available. There are some nice changes in the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=351&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.passwordtote.com/">Password Tote</a> is now available on the <a href="http://itunes.apple.com/us/app/password-tote-for-mac-os-x/id409175379?mt=12">Mac App Store</a>. This has provided a great influx of users which is very exciting! We had a few hiccups initially due to some private API usage, but that&#8217;s all sorted out now with both 32-bit and 64-bit versions now available.</p>
<p>There are some nice changes in the works for the <a href="http://itunes.apple.com/us/app/password-tote/id393647482?mt=8">iOS Password Tote app</a> including the ability to manage security questions and notes, as well as making PIN usage to unlock the app optional.</p>
<p>There are also excellent versions available for <a href="https://www.passwordtote.com/downloads.aspx">Windows and Android</a>, as well as a Firefox plugin on the way.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/351/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=351&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2011/04/08/password-tote-on-the-mac-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
		<item>
		<title>Domain Business Processors with Data Abstract for .NET</title>
		<link>http://nwoolls.wordpress.com/2011/02/22/domain-business-processors-with-data-abstract-for-net/</link>
		<comments>http://nwoolls.wordpress.com/2011/02/22/domain-business-processors-with-data-abstract-for-net/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 18:55:14 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[RemObjects]]></category>

		<guid isPermaLink="false">https://nwoolls.wordpress.com/?p=335</guid>
		<description><![CDATA[One of the nice things you can do out-of-the-box with Data Abstract for Delphi is have your server-side business logic segmented into separate classes for each logical data table. This technique is described here: Strongly Typed DataTables and Business Helper Classes I’ve recently started using Data Abstract for .NET, and love the new features it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=335&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the nice things you can do out-of-the-box with <a href="http://www.dataabstract.com/delphi.aspx">Data Abstract for Delphi</a> is have your server-side business logic segmented into separate classes for each logical data table. This technique is described here:</p>
<p><a href="http://wiki.remobjects.com/wiki/Strongly_Typed_DataTables_and_Business_Helper_Classes">Strongly Typed DataTables and Business Helper Classes</a></p>
<p>I’ve recently started using <a href="http://www.dataabstract.com/net.aspx">Data Abstract for .NET</a>, and love the new features it brings, such as <a href="http://www.dataabstract.com/page.aspx?id={FBCD0F71-D2F9-4E15-BAAA-CF115CE6ED1C}">DA Linq</a> and <a href="http://www.dataabstract.com/page.aspx?id={E8783443-1A0A-42CA-8A76-92D2EF0181C5}">DA SQL</a>. While this per-data table business logic isn’t to be found, it’s pretty straight forward to cook up.</p>
<p><a href="http://www.nwoolls.com/download/BPClasses/DomainBusinessProcessor.pas.txt">Here</a> is an example base class that encapsulates the standard Data Abstract <a href="http://wiki.remobjects.com/w/index.php?title=BusinessProcessor_Class&amp;oldid=43666">BusinessProcessor</a>, and <a href="http://www.nwoolls.com/download/BPClasses/CustomerBusinessProcessor.pas.txt">here’s</a> a sample CustomerBusinessProcessor that ensures a name is specified.</p>
<p>Using this class, you can write your own descendants, and then new them up in your service&#8217;s implementation unit like so:</p>
<p><pre class="brush: delphi;">
FProcessors := new List&lt;DomainBusinessProcessor&gt;;
FProcessors.Add(new CustomerBusinessProcessor(self.components));
</pre></p>
<p>The essential bit here is passing in the components collection to the constructor, which is passed on to the constructing call for the internal BusinessProcessor. This is necessary as it is how Data Abstract finds BusinessProcessors for a given service.</p>
<p>You can download a sample <a href="http://www.nwoolls.com/download/BPClasses/BPClasses.zip">here</a>, which uses the <a href="http://www.sqlite.org/">SQLite</a> PCTrade DB that ships with Data Abstract.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/335/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=335&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2011/02/22/domain-business-processors-with-data-abstract-for-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
		<item>
		<title>Password Tote for Mac OS X Updated</title>
		<link>http://nwoolls.wordpress.com/2010/12/05/password-tote-for-mac-os-x-updated/</link>
		<comments>http://nwoolls.wordpress.com/2010/12/05/password-tote-for-mac-os-x-updated/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 18:32:22 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://nwoolls.wordpress.com/2010/12/05/password-tote-for-mac-os-x-updated/</guid>
		<description><![CDATA[Password Tote for Mac OS X 1.0.3 is now available for download. This update includes: Importing from LastPass Growl integration with notifications when the user should backup and when an account will expire User interface enhancements, including a new icon A new PKG installer The Password Tote website is free and allows you to manage [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=330&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Password Tote for Mac OS X 1.0.3 is now available for <a href="https://www.passwordtote.com/downloads.aspx">download</a>. This update includes:</p>
<ul>
<li>Importing from LastPass</li>
<li><a href="http://growl.info/">Growl</a> integration with notifications when the user <a href="http://dl.dropbox.com/u/320481/pt_osx_backup_notice.png">should backup</a> and when an account will expire</li>
<li>User interface enhancements, including a <a href="http://dl.dropbox.com/u/320481/ptoteios512.png">new icon</a></li>
<li>A new <a href="http://en.wikipedia.org/wiki/Installer_(Mac_OS_X)">PKG</a> installer</li>
</ul>
<p>The Password Tote <a href="https://www.passwordtote.com/">website</a> is free and allows you to manage your passwords securely from any location. The desktop and mobile applications require a <a href="https://www.passwordtote.com/online/details.aspx">$2.99/mo</a> subscription. Start your free two month trial <a href="https://www.passwordtote.com/online/newuser.aspx">here</a>.</p>
<p>The iOS and Mac OS X versions of Password Tote use the outstanding <a href="http://www.remobjectssdk.com/osx">communication libraries</a> from <a href="http://www.remobjects.com/">RemObjects</a>, and the Windows version&#8217;s slick <a href="http://www.passwordtote.com/images/software/dx2010-2.jpg">visual styling</a> comes from DevExpress&#8217;s <a href="http://www.devexpress.com/Products/NET/Controls/WinForms/">WinForms controls</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/330/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=330&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2010/12/05/password-tote-for-mac-os-x-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
		<item>
		<title>User Owned Objects in XAF</title>
		<link>http://nwoolls.wordpress.com/2010/11/21/user-owned-objects-in-xaf/</link>
		<comments>http://nwoolls.wordpress.com/2010/11/21/user-owned-objects-in-xaf/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 21:37:46 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Developer Express]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://nwoolls.wordpress.com/?p=318</guid>
		<description><![CDATA[Working on a little XAF project, I recently had the need (a common one) to support the concept of objects being owned by certain users. When a user logs in, he or she should only see the objects owned by that user. This needed to apply to both the list views and the data available [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=318&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Working on a little <a href="http://www.devexpress.com/products/net/application_framework/">XAF</a> project, I recently had the need (a common one) to support the concept of objects being owned by certain users. When a user logs in, he or she should only see the objects owned by that user. This needed to apply to both the list views and the data available in reports.</p>
<p>In the end, this was fairly easy to do. I thought I’d share some notes about how I accomplished this, as some of the resources online are a bit outdated, or don’t lay all of these aspects out together.</p>
<p>Note that there is currently a request to support this sort of scenario directly in XAF&#8217;s security system. You can track the issue <a href="http://devexpress.com/Support/Center/p/S90775.aspx">here</a>.</p>
<p>The first thing to do is define the business object itself (we’ll called it OwnedObject). The only thing particularly interesting here is defining a property to reference the object’s owner, and initializing that value:</p>
<p><pre class="brush: csharp;">
public class OwnedObject : BaseObject
{
    public OwnedObject(Session session) : base(session) { }

    public override void AfterConstruction()
    {
        base.AfterConstruction();
        if (Session.IsNewObject(this))
        {
            _ObjectOwner = Session.GetObjectByKey&lt;SimpleUser&gt;((Guid)SecuritySystem.CurrentUserId);
        }
    }

    private SimpleUser _ObjectOwner;
    public SimpleUser ObjectOwner
    {
        get
        {
            return _ObjectOwner;
        }
        set
        {
            SetPropertyValue(&quot;ObjectOwner&quot;, ref _ObjectOwner, value);
        }
    }
}
</pre></p>
<p>One way to filter list views by this ObjectOwner property is discussed <a href="http://www.devexpress.com/Support/Center/p/Q201908.aspx">here</a>. Open up the XAFML file for the platform agnostic Module project. Navigate to the OwnedObject_ListView node under Views. Set the Criteria to <code>ObjectOwner.Oid = '@CurrentUserID'</code>. Here, ObjectOwner is the property defined on the OwnedObject class, and @CurrentUserID is expanded at runtime to contain the current user’s ID.</p>
<p>Set the same Criteria property on the OwnedObject_LookupListView node as well, and run your application. Both the WinForms and ASP.NET applications should now only show the objects created by the current user, which is automatically set when the object is created. Note that you can also accomplish the same thing with a <a href="http://devexpress.com/Support/Center/e/E2039.aspx">View Controller</a>.</p>
<p>You can hide the ObjectOwner property at runtime by deleting its respective items under the DetailView, ListView, and LookupListView nodes in the model editor. Also note that this can easily be applied to reports as well, so that a user only sees his or her reports. Simply descend a new object from ReportData, and use your OwnedReport as the data type for the report views.</p>
<p>This is all pretty cool with minimal code, but one issue that needs to be addressed is the data shown in reports. If a user were to create and run a report on OwnedObjects, they’d see all objects regardless of owner. This is also fairly easy to fix, but requires two solutions, one for the WinForms project and one for the ASP.NET project.</p>
<p>The solution for the WinForms project is discussed <a href="http://devexpress.com/Support/Center/p/Q238149.aspx">here</a>. To the WinForms module, add a new <a href="http://documentation.devexpress.com/#Xaf/clsDevExpressExpressAppViewControllertopic">View Controller</a>. You’ll also need to add references to ExpressApp.Reports, ExpressApp.Reports.Win, XtraReports, and XtraReports.Design. Add the following code to your controller:</p>
<p><pre class="brush: csharp;">
protected override void OnActivated()
{
    base.OnActivated();
    XtraReport.FilterControlProperties += XtraReport_FilterControlProperties;
    Frame.GetController&lt;WinReportServiceController&gt;().CustomShowPreview += ViewController1_CustomShowPreview;
    Frame.GetController&lt;WinReportServiceController&gt;().CustomShowDesignForm += ViewController1_CustomShowDesignForm;
}

void XtraReport_FilterControlProperties(object sender, FilterControlPropertiesEventArgs e)
{
    if (e.Control is XtraReport)
    {
        e.Properties.Remove(&quot;FilterString&quot;);
    }
}

void ViewController1_CustomShowDesignForm(object sender, CustomShowDesignFormEventArgs e)
{
    e.Report.FilterString = CriteriaOperator.Parse(&quot;ObjectOwner.Oid=?&quot;, SecuritySystem.CurrentUserId).ToString();
}

void ViewController1_CustomShowPreview(object sender, CustomShowPreviewEventArgs e)
{
    e.Report.FilterString = CriteriaOperator.Parse(&quot;ObjectOwner.Oid=?&quot;, SecuritySystem.CurrentUserId).ToString();
}

protected override void OnDeactivating()
{
    base.OnDeactivating();
    Frame.GetController&lt;WinReportServiceController&gt;().CustomShowPreview -= ViewController1_CustomShowPreview;
    Frame.GetController&lt;WinReportServiceController&gt;().CustomShowDesignForm -= ViewController1_CustomShowDesignForm;
}
</pre></p>
<p>Basically, when the controller is activated, it will add two event handlers to the report service controller for WinForms applications – one for when a preview is shown, and one for when the report is designed. These events force a criteria that only shows objects owned by the current user. The FilterControlProperties event hides the FilterString property.</p>
<p>I had to figure out the ASP.NET portion on my own, but it wasn&#8217;t hard. Based on the WinForms solution above, I knew to look at the <a href="http://documentation.devexpress.com/#Xaf/CustomDocument3142">WebReportServiceController</a>. Turns out you can simply descend from that class and override ShowPreviewCore to filter the data.</p>
<p>For the ASP.NET module, add a new class. Descend the class from WebReportServiceController and add the following code:</p>
<p><pre class="brush: csharp;">
protected override void ShowPreviewCore(IReportData reportData, CriteriaOperator criteria)
{
    criteria = new BinaryOperator(&quot;ObjectOwner.Oid&quot;, SecuritySystem.CurrentUserId);

    base.ShowPreviewCore(reportData, criteria);
}
</pre></p>
<p>You’ll also need to add references to ExpressApp.Reports, ExpressApp.Reports.Web, XtraReports, and XtraReports.Web. This does essentially the same thing as the WinForms solution, overriding the preview of the report to force a filter on the object’s owner.</p>
<p>With those two changes made, you can now run both the WinForms and ASP.NET XAF applications, create and run reports, and you will only be able to see your own objects.</p>
<p>You can download a sample that demonstrates all this <a href="http://www.nwoolls.com/download/Owned%20Objects.zip">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/318/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=318&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2010/11/21/user-owned-objects-in-xaf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
		<item>
		<title>An Update on Password Tote</title>
		<link>http://nwoolls.wordpress.com/2010/11/19/an-update-on-password-tote/</link>
		<comments>http://nwoolls.wordpress.com/2010/11/19/an-update-on-password-tote/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 06:31:00 +0000</pubDate>
		<dc:creator>nwoolls</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">https://nwoolls.wordpress.com/2010/11/19/an-update-on-password-tote/</guid>
		<description><![CDATA[Password Tote for iOS version 1.0.2 is now available for download on the Apple App Store. This update introduces backing up to Dropbox, offline access to passwords, color-coded passwords, password generation, and also fixes a couple of issues. Version 1.0.3 for iOS is already under way. Planned features include importing from popular password systems and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=317&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.passwordtote.com/">Password Tote</a> for iOS version 1.0.2 is now available for <a href="http://itunes.apple.com/us/app/password-tote/id393647482?mt=8">download</a> on the Apple App Store. This update introduces backing up to <a href="https://www.dropbox.com">Dropbox</a>, offline access to passwords, color-coded passwords, password generation, and also fixes a couple of issues.</p>
<p>Version 1.0.3 for iOS is already under way. Planned features include importing from popular password systems and restoring backups, both via Dropbox.</p>
<p>Version 1.0.3 of the <a href="http://www.dropbox.com/gallery/320481/1/Password%20Tote%20for%20OS%20X?h=c1b321">Mac OS X client</a> is also already in the works. Changes include user interface improvements, <a href="http://growl.info/">Growl</a> notifications, and importing from LastPass.</p>
<p>Finally I wanted to thank <a href="http://blogs.remobjects.com/blogs/jim">Jim</a> and <a href="http://blogs.remobjects.com/blogs/mh">Marc</a> at <a href="http://www.remobjects.com/">RemObjects</a> for working with me on a nice <a href="http://www.remobjects.com/casestudies.aspx?id={247bc9e8-996e-4e57-aa93-212b64172bcd}">case study</a> and for having me on their <a href="http://www.remobjects.com/radio.aspx?episode=06-passwordtote">podcast</a>. Their support really has made focusing on the features (instead of the communication) for these Password Tote clients possible.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nwoolls.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nwoolls.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nwoolls.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nwoolls.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nwoolls.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nwoolls.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nwoolls.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nwoolls.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nwoolls.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nwoolls.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nwoolls.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nwoolls.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nwoolls.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nwoolls.wordpress.com/317/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nwoolls.wordpress.com&amp;blog=8237634&amp;post=317&amp;subd=nwoolls&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nwoolls.wordpress.com/2010/11/19/an-update-on-password-tote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9117f232721d6e894d9169da788e127d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nwoolls</media:title>
		</media:content>
	</item>
	</channel>
</rss>
