<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
    <title>Bill Osuch - Random geek notes</title>
    <link rel="self" type="application/xml" href="http://geekswithblogs.net/bosuch/Atom.aspx" />
    <subtitle type="html"> </subtitle>
    <id>http://geekswithblogs.net/bosuch/Default.aspx</id>
    <author>
        <name>Bill Osuch</name>
        <uri>http://geekswithblogs.net/bosuch/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 0.0.0.0">Subtext</generator>
    <updated>2012-04-20T14:50:46Z</updated>
    <entry>
        <title>BizTalk&amp;ndash;Mapping a NACHA file using the Flat File Mapping Wizard and preserving header information</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/04/20/biztalkndashmapping-a-nacha-file-using-the-flat-file-mapping-wizard.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/04/20/biztalkndashmapping-a-nacha-file-using-the-flat-file-mapping-wizard.aspx</id>
        <published>2012-04-20T14:50:46-06:00:00</published>
        <updated>2012-04-20T14:50:46Z</updated>
        <content type="html">&lt;p&gt;In a previous post I demonstrated &lt;a href="http://geekswithblogs.net/bosuch/archive/2011/04/21/biztalk-using-the-flat-file-mapping-wizard-to-map-a.aspx" target="_blank"&gt;how to use the Flat File Mapping Wizard to map a NACHA financial file&lt;/a&gt;, and at the end I said I’d follow up with a post on setting up the pipeline and preserving the header information. Well, I totally forgot about that until someone asked where the post was, so here it is…&lt;/p&gt;  &lt;p&gt;Begin by creating the three schemas as shown in the previous post. Add a pipeline to the project, and drag the Flat file disassembler component from the toolbox to the Disassemble stage. Right-click on the component and display the Properties, and configure them as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Document schema&lt;/strong&gt;: NACHA_Body &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Header schema&lt;/strong&gt;: NACHA_Header &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Preserve header&lt;/strong&gt;: True &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Trailer schema&lt;/strong&gt;: NACHA_Trailer &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now, you’d think that setting Preserve header to True means you’d get the header added to each file, right? Nope! It’s merely added to the context collection of each message. You can see this for yourself by deploying the solution, creating a send a receive port (making sure your send port has the proper filter on it, since we’re not using an orchestration yet), stopping the send port, and dropping the test file in. The messages will be suspended, so you can view the FlatFileHeaderDocument context property:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/f168bf280f04_B592/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/f168bf280f04_B592/image_thumb.png" width="660" height="70" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So we need to figure out a way to create a message that has the header attached. The first step will be to create a new schema. Remember, we don’t have a single schema that includes both the header and the body. Create a new schema that has all the elements in both the header and the body schemas. This is just going to be used for regular old xml, so you don’t need to worry about delimiter, positions, etc. Call it NACHA_Full.xsd; it should look something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/f168bf280f04_B592/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/f168bf280f04_B592/image_thumb_1.png" width="256" height="497" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next we’ll create an orchestration that receives the body message, constructs a new header message by extracting the header from the context properties, and maps both of those to our new schema. Create the schema, add the send and receive ports and shapes, then add a Construct Message shape with a Message Assignment shape inside of it, and finally add another Construct Message shape with a Transform inside of it, so you have something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/f168bf280f04_B592/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/f168bf280f04_B592/image_thumb_2.png" width="606" height="560" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now let’s create the messages and variables:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Message: &lt;strong&gt;Body_Input&lt;/strong&gt; – NACHA_Body message type &lt;/li&gt;    &lt;li&gt;Message: &lt;strong&gt;Full_Output&lt;/strong&gt; – NACHA_Full message type &lt;/li&gt;    &lt;li&gt;Message: &lt;strong&gt;Header_Input&lt;/strong&gt; – NACHA_Header message type &lt;/li&gt;    &lt;li&gt;Variable: &lt;strong&gt;HeaderString&lt;/strong&gt; – System.String &lt;/li&gt;    &lt;li&gt;Variable: &lt;strong&gt;HeaderXML&lt;/strong&gt; – System.Xml.XmlDocument &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now we’ll add the code to generate the Header_Input message. Paste this into the Message Assignment shape:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;//Grab the flat file header into a string variable      &lt;br /&gt;HeaderString = Body_Input(XMLNORM.FlatFileHeaderDocument);&lt;/p&gt;    &lt;p&gt;//Load HeaderString into the XML document      &lt;br /&gt;HeaderXML = new System.Xml.XmlDocument();       &lt;br /&gt;HeaderXML.LoadXml(HeaderString);&lt;/p&gt;    &lt;p&gt;//Assign the XML to the Header message      &lt;br /&gt;Header_Input = HeaderXML;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The last step in the orchestration is to configure the map. Double click the Transform shape and create a new map. This map will have two inputs, so select both Header_Input and Body_Input as the Source, and Full_Output as the destination. Click OK, and the new map should open. Use a Mass Copy to join each record, as shown:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/f168bf280f04_B592/image_10.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/f168bf280f04_B592/image_thumb_4.png" width="747" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Build and Deploy, configure the Orchestration and test it. If everything works correctly, you should again have two messages, just as in the previous post, but this time they will have the header information included.&lt;/p&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/BizTalk" rel="tag"&gt;BizTalk&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/149381.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/149381.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/149381.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/149381.aspx</trackback:ping>
    </entry>
    <entry>
        <title>BizTalk&amp;ndash;Mapping repeating EDI segments using a Table Looping functoid</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/03/29/biztalkndashmapping-repeating-edi-segments-using-a-table-looping-functoid.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/03/29/biztalkndashmapping-repeating-edi-segments-using-a-table-looping-functoid.aspx</id>
        <published>2012-03-29T08:07:56-06:00:00</published>
        <updated>2012-03-29T08:07:56Z</updated>
        <content type="html">&lt;p&gt;BizTalk’s HIPAA X12 schemas have several repeating date/time segments in them, where the XML winds up looking something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;DTM_StatementDate&amp;gt;      &lt;br /&gt;&amp;lt;DTM01_DateTimeQualifier&amp;gt;232&amp;lt;/DTM01_DateTimeQualifier&amp;gt;       &lt;br /&gt;&amp;lt;DTM02_ClaimDate&amp;gt;20120301&amp;lt;/DTM02_ClaimDate&amp;gt;       &lt;br /&gt;&amp;lt;/DTM_StatementDate&amp;gt;       &lt;br /&gt;&amp;lt;DTM_StatementDate&amp;gt;       &lt;br /&gt;&amp;lt;DTM01_DateTimeQualifier&amp;gt;233&amp;lt;/DTM01_DateTimeQualifier&amp;gt;       &lt;br /&gt;&amp;lt;DTM02_ClaimDate&amp;gt;20120302&amp;lt;/DTM02_ClaimDate&amp;gt;       &lt;br /&gt;&amp;lt;/DTM_StatementDate&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The corresponding EDI segments would look like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;DTM*232*20120301~      &lt;br /&gt;DTM*233*20120302~&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The DateTimeQualifier element indicates whether it’s the start date or end date – 232 for start, 233 for end. So in this example (an X12 835) we’re saying the statement starts on 3/1/2012 and ends on 3/2/2012.&lt;/p&gt;  &lt;p&gt;When you’re mapping from some other data format, many times your start and end dates will be within the same node, like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;StatementDates&amp;gt;      &lt;br /&gt;&amp;lt;Begin&amp;gt;20120301&amp;lt;/Begin&amp;gt;       &lt;br /&gt;&amp;lt;End&amp;gt;20120302&amp;lt;/End&amp;gt;       &lt;br /&gt;&amp;lt;/StatementDates&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So how do you map from that and create two repeating segments in your destination map? You could connect both the &amp;lt;Begin&amp;gt; and &amp;lt;End&amp;gt; nodes to a looping functoid, and connect its output to &amp;lt;DTM_StatementDate&amp;gt;, then connect both &amp;lt;Begin&amp;gt; and &amp;lt;End&amp;gt; to &amp;lt;DTM_StatementDate&amp;gt; … this would give you two repeating segments, each with the correct date, but how to add the correct qualifier? The answer is the Table Looping Functoid!&lt;/p&gt;  &lt;p&gt;To test this, let’s create a simplified schema that just contains the date fields we’re mapping. First, create your input schema:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/InputSchema_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="InputSchema" border="0" alt="InputSchema" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/InputSchema_thumb.jpg" width="224" height="111" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And your output schema:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/OutputSchema_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="OutputSchema" border="0" alt="OutputSchema" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/OutputSchema_thumb.jpg" width="240" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now create a map that uses these two schemas, and drag a Table Looping functoid onto it. The first input parameter configures the scope (or how many times the records will loop), so drag a link from the StatementDates node over to the functoid. Yes, StatementDates only appears once, so this would make it seem like it would only loop once, but you’ll see in just a minute.&lt;/p&gt;  &lt;p&gt;The second parameter in the functoid is the number of columns in the output table. We want to fill two fields, so just set this to 2.&lt;/p&gt;  &lt;p&gt;Now drag the Begin and End nodes over to the functoid.&lt;/p&gt;  &lt;p&gt;Finally, we want to add the constant values for DateTimeQualifier, so add a value of 232 and another of 233. When all your inputs are configured, it should look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/TableLooping_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="TableLooping" border="0" alt="TableLooping" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/TableLooping_thumb.jpg" width="413" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we’ll configure the output table. Click on the Table Looping Grid, and configure it to look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/TableLoopingGrid_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="TableLoopingGrid" border="0" alt="TableLoopingGrid" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/TableLoopingGrid_thumb.jpg" width="398" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Microsoft’s description of this functoid says “The Table Looping functoid repeats with the looping record it is connected to. Within each iteration, it loops once per row in the table looping grid, producing multiple output loops.” So here we will loop (# of &amp;lt;StatementDates&amp;gt; nodes) * (Rows in the table), or 2 times.&lt;/p&gt;  &lt;p&gt;Drag two Table Extractor functoids onto the map; these are what are going to pull the data we want out of the table. The first input to each of these will be the output of the TableLooping functoid, and the second input will be the row number to pull from. So the functoid connected to &amp;lt;DTM01_DateTimeQualifier&amp;gt; will look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/TableExtractor_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="TableExtractor" border="0" alt="TableExtractor" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/TableExtractor_thumb.jpg" width="413" height="89" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Connect these two functoids to the two nodes we want to populate, and connect another output from the Table Looping functoid to the &amp;lt;DTM_StatementDate&amp;gt; record. You should have a map that looks something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/Map_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Map" border="0" alt="Map" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/474cd5739fe7_800C/Map_thumb.jpg" width="744" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Create some sample xml, use it as the TestMap Input Instance, and you should get a result like the XML at the top of this post.&lt;/p&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/BizTalk" rel="tag"&gt;BizTalk&lt;/a&gt;, &lt;a href="http://technorati.com/tags/EDI" rel="tag"&gt;EDI&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Mapping" rel="tag"&gt;Mapping&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/149139.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/149139.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/149139.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/149139.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Android&amp;ndash;Setting up a Kindle Fire emulator</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/03/13/androidndashsetting-up-a-kindle-fire-emulator.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/03/13/androidndashsetting-up-a-kindle-fire-emulator.aspx</id>
        <published>2012-03-13T14:08:00-06:00:00</published>
        <updated>2012-03-13T14:08:00Z</updated>
        <content type="html">&lt;p&gt;Developing for the Kindle Fire is pretty much the same as developing for any other Android device (aside from Amazon’s long review process…). Amazon’s developer FAQ lists most everything you need to know, but I’ve &lt;strike&gt;stolen&lt;/strike&gt; summarized it here:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Will my app work on Kindle Fire?&lt;/b&gt;     &lt;br /&gt;For your app to work on Kindle Fire, it needs to be compatible with the device's specifications. At a high level, it must be optimized for non-Google Mobile Services (GMS) Android 2.3.4 (Gingerbread) and a 7" screen with a resolution of 1024 x 600. Your manifest should specify support for large screens. Your app cannot require a gyroscope, camera, WAN module, Bluetooth, microphone, GPS, or micro-SD to function. In addition, your app must not be a theme or wallpaper that manipulates the user interface of the device or customize the lockscreen. &lt;/p&gt;  &lt;p&gt;We also recommend that you test your app on your own and submit an update if you discover any problems. It is possible to configure a standard Android emulator to simulate the Kindle Fire device platform. You should configure your emulator with the following characteristics:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;*Width:&lt;/b&gt; 600px &lt;/li&gt;    &lt;li&gt;&lt;b&gt;*Height:&lt;/b&gt; 1024px &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Abstracted LCD Density:&lt;/b&gt; 169 &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Target:&lt;/b&gt; Android 2.3.4 - API Level 10 &lt;/li&gt;    &lt;li&gt;&lt;b&gt;RAM:&lt;/b&gt; 512 MB &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;*Note: The device will reserve 20px to display a soft key menu, making the effective portrait resolution 1004px high x 600px wide and the effective landscape resolution 580px high x 1024px wide.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What are the dimensions of the status bar (time, battery, signal strength, etc.) on Kindle Fire?&lt;/b&gt;     &lt;br /&gt;The status bar is 40px high.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;My app requires access to Google Mobile Services. Will it work on Kindle Fire?&lt;/b&gt;     &lt;br /&gt;Apps that run on Kindle Fire do not currently have access to Google Mobile Services (GMS). If your app currently requires access to GMS apps or services, we recommend that you either remove the features that require these services or modify them to degrade gracefully when invoked (e.g. with an error message such as "This feature is not currently available on this device").&lt;/p&gt;  &lt;p&gt;&lt;b&gt;My app uses Google's in-app purchasing technology. How can I make it work on Kindle Fire?&lt;/b&gt;     &lt;br /&gt;Because Google's in-app purchasing technology requires access to Google Mobile Services, it will not work on Kindle Fire. We are working on a solution that will let you sell digital content in your apps using Amazon's merchandising and payments technology. Our solution is currently in Beta and available by invitation only. If you would like to join the waiting list for the Beta, please complete and submit &lt;a href="http://www.amazon.com/gp/html-forms-controller/AmazonAppstore-IAPrequest"&gt;this form&lt;/a&gt;, and we will follow up with more information as soon as possible.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Can I write to the internal SD card on Kindle Fire?&lt;/b&gt;     &lt;br /&gt;Using getExternalStorageDirectory() will enable you to write to the internal SD card on Kindle Fire.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What specific features does Kindle Fire support?&lt;/b&gt;     &lt;br /&gt;Kindle Fire supports the features in the following list. To ensure your app is compatible with Kindle Fire, it should only use features found in this list.&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2"&gt;&lt;thead&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;strong&gt;Descriptor&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;strong&gt;Comment&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/thead&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;Sensors&lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.sensor.accelerometer&lt;/td&gt;        &lt;td valign="top"&gt;Your app requires an accelerometer.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Sensors &lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.sensor.light &lt;/td&gt;        &lt;td valign="top"&gt;Your app requires a light sensor.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Screen &lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.screen.landscape &lt;/td&gt;        &lt;td valign="top"&gt;Your app requires landscape mode.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Screen &lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.screen.portrait &lt;/td&gt;        &lt;td valign="top"&gt;Your app requires portrait mode.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Touchscreen &lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.touchscreen &lt;/td&gt;        &lt;td valign="top"&gt;Your app requires touchscreen capabilities that are more interactive than basic touch events.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Touchscreen &lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.touchscreen.multitouch &lt;/td&gt;        &lt;td valign="top"&gt;Your app requires basic two-point multi-touch capabilities.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Touchscreen &lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.touchscreen.multitouch.distinct &lt;/td&gt;        &lt;td valign="top"&gt;Your app requires the ability to track two points fully independently.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;USB &lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.usb.accessory &lt;/td&gt;        &lt;td valign="top"&gt;Your app requires that the device or the app itself behave as a USB device (and connects to USB hosts).&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Wi-Fi &lt;/td&gt;        &lt;td valign="top"&gt;android.hardware.wifi &lt;/td&gt;        &lt;td valign="top"&gt;Your app requires 802.11b/g networking.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;b&gt;How should I configure the supports-screens element for compatibility with Kindle Fire?&lt;/b&gt;     &lt;br /&gt;To ensure your app is compatible with Kindle Fire, specify &amp;lt;supports-screen android:largeScreens="true"/&amp;gt; in your manifest file.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Is it possible to make the soft key menu on Kindle Fire visible at all times instead of partially hidden?&lt;/b&gt;     &lt;br /&gt;To keep the menu bar present at all times, remove any code in the activities that enables full screen mode. The soft key bar at the bottom will then be visible at all times. Sample code to remove: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Is the disable_keyguard permission supported on Kindle Fire? If my app customizes the lockscreen/attempts to disable the keyguard during use, will it be compatible with Kindle Fire?&lt;/b&gt;     &lt;br /&gt;Kindle Fire does not support apps that contain disable_keyguard permissions or customize the lockscreen.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;I have set up an emulator per the specification in the Kindle Fire FAQ, but the screen is being recognized as an x-large screen instead of a large screen, and loading assets accordingly. How can I fix this?&lt;/b&gt;     &lt;br /&gt;The Android emulator seems to be misreporting the screen size as x-large instead of large with our standard emulator configuration. To override the configuration, complete the following on your activity &lt;i&gt;onCreate&lt;/i&gt; method (before loading layouts or anything else):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;final Configuration config = new Configuration(context.getResources().getConfiguration());      &lt;br /&gt;config.screenLayout = (config.screenLayout &amp;amp; Configuration.SCREENLAYOUT_LONG_MASK) + Configuration.SCREENLAYOUT_SIZE_LARGE;       &lt;br /&gt;context.getResources().updateConfiguration(context.getResources().getConfiguration(), context.getResources().getDisplayMetrics());&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This will ensure the emulator configuration properly uses the large screen size and loads the appropriate assets.&lt;/p&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/Android" rel="tag"&gt;Android&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Kindle" rel="tag"&gt;Kindle&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/148989.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/148989.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/148989.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/148989.aspx</trackback:ping>
    </entry>
    <entry>
        <title>BizTalk 2010 EDI batching&amp;ndash;using an external release trigger</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/02/27/biztalk-2010-edi-batchingndashusing-an-external-release-trigger.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/02/27/biztalk-2010-edi-batchingndashusing-an-external-release-trigger.aspx</id>
        <published>2012-02-27T15:04:35-06:00:00</published>
        <updated>2012-02-27T15:04:35Z</updated>
        <content type="html">&lt;p&gt;In an &lt;a href="http://geekswithblogs.net/bosuch/archive/2012/02/16/biztalk-2010-edi-batching-tutorial.aspx" target="_blank"&gt;earlier post&lt;/a&gt; I showed you how to implement basic EDI batching, releasing the batch every time 3 messages were waiting. In the real world, you’re probably going to have some other criteria for releasing the batch; in our case a back-end system notifies BizTalk when all HIPAA 837 claims in a single file are ready to be sent.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/bb246108.aspx" target="_blank"&gt;MSDN page&lt;/a&gt; for this process is actually very easy to follow, but I’ll summarize it here.&lt;/p&gt;  &lt;p&gt;First, you’ll set up a new receive port and location to receive the trigger file. For this example, create a new folder (in the same location as the Input, Fabrikam and Contoso folders) called Trigger. Configure the receive port with a transport type of FILE, select &lt;strong&gt;BatchControlMessageRecvPipeline&lt;/strong&gt; for the Receive pipeline.&lt;/p&gt;  &lt;p&gt;Create a new .xml file and paste the xml information from the MSDN page above. You’ll need to modify it for your specific party, batch and agreement names; mine looks like this when finished:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;      &lt;br /&gt;&amp;lt;ControlMessage xmlns="&lt;a href="http://SQLControlMessage.IssueSelect&amp;quot;"&gt;http://SQLControlMessage.IssueSelect"&lt;/a&gt;&amp;gt;       &lt;br /&gt;  &amp;lt;PAM_Control xmlns="&lt;a href="http://SQLControlMessage.IssueSelect&amp;quot;"&gt;http://SQLControlMessage.IssueSelect"&lt;/a&gt;&amp;gt;       &lt;br /&gt;    &amp;lt;DestinationParty&amp;gt;&amp;lt;/DestinationParty&amp;gt;       &lt;br /&gt;    &amp;lt;EdiMessageType&amp;gt;0&amp;lt;/EdiMessageType&amp;gt;       &lt;br /&gt;    &amp;lt;ActionType&amp;gt;EdiBatchOverride&amp;lt;/ActionType&amp;gt;       &lt;br /&gt;    &amp;lt;ActionDateTime&amp;gt;2012-02-02T14:30:00.000&amp;lt;/ActionDateTime&amp;gt;       &lt;br /&gt;    &amp;lt;UsedOnce&amp;gt;0&amp;lt;/UsedOnce&amp;gt;       &lt;br /&gt;    &amp;lt;BatchId&amp;gt;4&amp;lt;/BatchId&amp;gt;       &lt;br /&gt;    &amp;lt;BatchName&amp;gt;Invoices for Contoso&amp;lt;/BatchName&amp;gt;       &lt;br /&gt;    &amp;lt;DestinationPartyName&amp;gt;Contoso&amp;lt;/DestinationPartyName&amp;gt;       &lt;br /&gt;    &amp;lt;SenderPartyName&amp;gt;ANCILLARY CARE SERVICES, INC.&amp;lt;/SenderPartyName&amp;gt;       &lt;br /&gt;    &amp;lt;AgreementName&amp;gt;Contoso Purchase Order&amp;lt;/AgreementName&amp;gt;       &lt;br /&gt;    &amp;lt;ReceiverPartyNameType&amp;gt;Contoso&amp;lt;/ReceiverPartyNameType&amp;gt;       &lt;br /&gt;    &amp;lt;ToBeBatched&amp;gt;1&amp;lt;/ToBeBatched&amp;gt;       &lt;br /&gt;  &amp;lt;/PAM_Control&amp;gt;       &lt;br /&gt;&amp;lt;/ControlMessage&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;(Note that the DestinationParty node can be empty.)&lt;/p&gt;  &lt;p&gt;Finally, open up the party agreement, go to the &lt;em&gt;&amp;lt;your party&amp;gt;&lt;/em&gt; –&amp;gt; Contoso tab, and click Batch Configuration. Stop the batch if necessary, and in the release section, switch from &lt;strong&gt;Maximum number of transaction sets&lt;/strong&gt; to &lt;strong&gt;External release trigger&lt;/strong&gt;. Click Apply, then start the batch. Restart the host instance.&lt;/p&gt;  &lt;p&gt;To test, drop 4 copies of Contoso’s xml purchase order file to the input directory. Switch over to the Contoso folder (or wherever you have their send port pointed to) and you shouldn’t see any output yet. Remember, you had originally configured it to batch after only 3 messages. Now, drop the trigger xml file to the Trigger directory you just created, and you should see a new batch message dropped. Open it and it should have 4 individual ST/SE sections, each with the appropriate data.&lt;/p&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/BizTalk" rel="tag"&gt;BizTalk&lt;/a&gt;, &lt;a href="http://technorati.com/tags/EDI" rel="tag"&gt;EDI&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/148824.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/148824.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/148824.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/148824.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Android tutorial&amp;ndash;Adding images to your custom multi-line ListView</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/02/24/android-tutorialndashadding-images-to-your-custom-multi-line-listview.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/02/24/android-tutorialndashadding-images-to-your-custom-multi-line-listview.aspx</id>
        <published>2012-02-24T15:45:47-06:00:00</published>
        <updated>2012-02-24T15:45:47Z</updated>
        <content type="html">&lt;p&gt;In a &lt;a href="http://geekswithblogs.net/bosuch/archive/2011/01/31/android---create-a-custom-multi-line-listview-bound-to-an.aspx" target="_blank"&gt;previous post&lt;/a&gt; I showed how to create a custom Android ListView that was bound to an ArrayList. I've had a few people ask how to include images in the ListView, so here it is. We’ll do this by adding an ImageView to the repeating layout (each row of data) and populating it at the same time the name and other information are populated.&lt;/p&gt;  &lt;p&gt;First, start with a working version of the previous tutorial. You can download the full Eclipse file here: &lt;a href="http://dl.dropbox.com/u/22528394/ListViewBlogPost.zip" target="_blank"&gt;ListViewBlogPost.zip&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The first thing we're going to do is change the layout file. This isn't mandatory, but I want the picture to be to the left of the text, which wouldn't be possible in a linear layout. Replace the xml in custom_row_view.xml with this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;RelativeLayout      &lt;br /&gt;   xmlns:android="http://schemas.android.com/apk/res/android"       &lt;br /&gt;   android:layout_width="fill_parent"       &lt;br /&gt;   android:layout_height="fill_parent"&amp;gt;       &lt;br /&gt;   &amp;lt;ImageView       &lt;br /&gt;      android:id="@+id/photo"       &lt;br /&gt;      android:layout_width="wrap_content"       &lt;br /&gt;      android:layout_height="wrap_content"       &lt;br /&gt;      android:paddingRight="15dp"       &lt;br /&gt;      android:paddingTop="10dp" /&amp;gt;       &lt;br /&gt;   &amp;lt;TextView android:id="@+id/name"       &lt;br /&gt;      android:textSize="14sp"       &lt;br /&gt;      android:textStyle="bold"       &lt;br /&gt;      android:textColor="#FFFF00"       &lt;br /&gt;      android:layout_width="wrap_content"       &lt;br /&gt;      android:layout_height="wrap_content"       &lt;br /&gt;      android:layout_toRightOf="@id/photo"/&amp;gt;       &lt;br /&gt;   &amp;lt;TextView android:id="@+id/cityState"       &lt;br /&gt;      android:layout_width="wrap_content"       &lt;br /&gt;      android:layout_height="wrap_content"       &lt;br /&gt;      android:layout_below="@id/name"       &lt;br /&gt;      android:layout_toRightOf="@id/photo" /&amp;gt;       &lt;br /&gt;   &amp;lt;TextView android:id="@+id/phone"       &lt;br /&gt;      android:layout_width="wrap_content"       &lt;br /&gt;      android:layout_height="wrap_content"       &lt;br /&gt;      android:layout_below="@id/cityState"       &lt;br /&gt;      android:layout_toRightOf="@id/photo" /&amp;gt;       &lt;br /&gt;&amp;lt;/RelativeLayout&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Next you'll need to drop your images into the res/drawable directory. In real life you'd want to drop different size images into drawable-hdpi, drawable-ldpi and drawable-mdpi, but just putting them in the one directory is good enough for this example.&lt;/p&gt;  &lt;p&gt;Now, add a get and set to the SearchResults class to allow you to set the image number for each item:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;private int imageNumber = 0;&lt;/p&gt;    &lt;p&gt;public void setImageNumber(int imageNumber) {      &lt;br /&gt;    this.imageNumber = imageNumber;       &lt;br /&gt;}       &lt;br /&gt;public int getImageNumber() {       &lt;br /&gt;    return imageNumber;       &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Next you'll modify the MyCustomBaseAdapter.java file. First add an Integer array with a list of your image names:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;private Integer[] imgid = {      &lt;br /&gt;    R.drawable.smiley1a,       &lt;br /&gt;    R.drawable.smiley2a,       &lt;br /&gt;    R.drawable.smiley3a       &lt;br /&gt;};&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then change the ViewHolder class (the new code is in &lt;strong&gt;bold&lt;/strong&gt;):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;static class ViewHolder {      &lt;br /&gt;    TextView txtName;       &lt;br /&gt;    TextView txtCityState;       &lt;br /&gt;    TextView txtPhone;       &lt;br /&gt;    &lt;strong&gt;ImageView imgPhoto;        &lt;br /&gt;&lt;/strong&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And finally the getView method:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public View getView(int position, View convertView, ViewGroup parent) {      &lt;br /&gt;    ViewHolder holder;       &lt;br /&gt;    if (convertView == null) {       &lt;br /&gt;        convertView = mInflater.inflate(R.layout.custom_row_view, null);       &lt;br /&gt;        holder = new ViewHolder();       &lt;br /&gt;        holder.txtName = (TextView) convertView.findViewById(R.id.name);       &lt;br /&gt;        holder.txtCityState = (TextView) convertView.findViewById(R.id.cityState);       &lt;br /&gt;        holder.txtPhone = (TextView) convertView.findViewById(R.id.phone);       &lt;br /&gt;        &lt;strong&gt;holder.imgPhoto = (ImageView) convertView.findViewById(R.id.photo);&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;        convertView.setTag(holder);      &lt;br /&gt;    } else {       &lt;br /&gt;        holder = (ViewHolder) convertView.getTag();       &lt;br /&gt;    }       &lt;br /&gt;        holder.txtName.setText(searchArrayList.get(position).getName());       &lt;br /&gt;        holder.txtCityState.setText(searchArrayList.get(position).getCityState());       &lt;br /&gt;        holder.txtPhone.setText(searchArrayList.get(position).getPhone());       &lt;br /&gt;        &lt;strong&gt;holder.imgPhoto.setImageResource(imgid[searchArrayList.get(position).getImageNumber() - 1]);&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;        return convertView;      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notice that all we’re doing there is setting the image resource to one of the items in the imgid array.&lt;/p&gt;  &lt;p&gt;Finally, set the image number for each row in the ListView in the GetSearchResults method of your main activity:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;private ArrayList&amp;lt;SearchResults&amp;gt; GetSearchResults(){      &lt;br /&gt;    ArrayList&amp;lt;SearchResults&amp;gt; results = new ArrayList&amp;lt;SearchResults&amp;gt;();       &lt;br /&gt;        &lt;br /&gt;    SearchResults sr1 = new SearchResults();       &lt;br /&gt;    sr1.setName("John Smith");       &lt;br /&gt;    sr1.setCityState("Dallas, TX");       &lt;br /&gt;    sr1.setPhone("214-555-1234");       &lt;br /&gt;    &lt;strong&gt;sr1.setImageNumber(1);        &lt;br /&gt;&lt;/strong&gt;    results.add(sr1);       &lt;br /&gt;        &lt;br /&gt;    sr1 = new SearchResults();       &lt;br /&gt;    sr1.setName("Jane Doe");       &lt;br /&gt;    sr1.setCityState("Atlanta, GA");       &lt;br /&gt;    sr1.setPhone("469-555-2587");       &lt;br /&gt;    &lt;strong&gt;sr1.setImageNumber(2);        &lt;br /&gt;&lt;/strong&gt;    results.add(sr1);       &lt;br /&gt;        &lt;br /&gt;    sr1 = new SearchResults();       &lt;br /&gt;    sr1.setName("Steve Young");       &lt;br /&gt;    sr1.setCityState("Miami, FL");       &lt;br /&gt;    sr1.setPhone("305-555-7895");       &lt;br /&gt;    &lt;strong&gt;sr1.setImageNumber(3);        &lt;br /&gt;&lt;/strong&gt;    results.add(sr1);       &lt;br /&gt;        &lt;br /&gt;    return results;       &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Fire up the emulator, and it should look something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/Android-tutorialAdding-images-to-your-cu_D980/ListViewImages_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ListViewImages" border="0" alt="ListViewImages" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/Android-tutorialAdding-images-to-your-cu_D980/ListViewImages_thumb.jpg" width="488" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Of course, there are lots of other ways of populating the ImageView in each row, but once you understand the basics it should be easy to change.&lt;/p&gt;  &lt;p&gt;You can download the full Eclipse project at: &lt;a href="http://dl.dropbox.com/u/22528394/ListViewImagesBlogPost.zip" target="_blank"&gt;ListViewImagesBlogPost.zip&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/Android" rel="tag"&gt;Android&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/148805.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/148805.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/148805.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/148805.aspx</trackback:ping>
    </entry>
    <entry>
        <title>BizTalk 2006 &amp;amp; 2009 hotfix for EDI leap year date errors</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/02/23/biztalk-2006-amp-2009-hotfix-for-edi-leap-year-date.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/02/23/biztalk-2006-amp-2009-hotfix-for-edi-leap-year-date.aspx</id>
        <published>2012-02-23T13:10:43-06:00:00</published>
        <updated>2012-02-23T13:10:43Z</updated>
        <content type="html">&lt;p&gt;Microsoft has released a hotfix to fix a date problem in BizTalk Server 2006 R2 &amp;amp; 2009 when processing EDI files where a data element contains a leap date. BizTalk Server 2006 and 2010 are not affected. This issue occurs because the EDI interchange cannot validate a data element that contains a leap date value, such as "20120229".&lt;/p&gt;  &lt;p&gt;This issue can be resolved by either installing the BizTalk Server 2009 cumulative update package 1 (if you’re running 2009…) or the hotfix at the top of KB article &lt;a href="http://support.microsoft.com/kb/2435900" target="_blank"&gt;2435900&lt;/a&gt; (if you’re running 2006 R2).&lt;/p&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/BizTalk" rel="tag"&gt;BizTalk&lt;/a&gt;, &lt;a href="http://technorati.com/tags/EDI" rel="tag"&gt;EDI&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/148796.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/148796.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/148796.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/148796.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Book Review: Kindle Fire: Out Of The Box (O&amp;rsquo;Reilly)</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/02/21/book-review-kindle-fire-out-of-the-box-orsquoreilly.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/02/21/book-review-kindle-fire-out-of-the-box-orsquoreilly.aspx</id>
        <published>2012-02-21T12:15:19-06:00:00</published>
        <updated>2012-02-21T12:15:19Z</updated>
        <content type="html">&lt;p&gt;The Kindle Fire, like a lot of devices these days, does not come with a user manual. Kindle Fire: Out Of The Box covers the basics of setting up and using your Fire.&lt;/p&gt;  &lt;p&gt;This 76-page book is divided into 6 chapters:    &lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Get to Know Your Kindle Fire &lt;/li&gt;    &lt;li&gt;Set Up Your Fire &lt;/li&gt;    &lt;li&gt;Books, Newsstand, and Docs &lt;/li&gt;    &lt;li&gt;Music and Video &lt;/li&gt;    &lt;li&gt;Apps &lt;/li&gt;    &lt;li&gt;Web and Email &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The book is loaded with detailed, annotated screen shots, which makes it easy to figure out exactly what you should be seeing on your Kindle's screen. However, this comes at a price - the pdf file is 21 megs in size, which might make it difficult if you're wanting to email it to your Kindle.&lt;/p&gt;  &lt;p&gt;The chapters on books, music/video and apps are very Amazon-centric, but that's because the Fire is designed primarily as a device for consuming Amazon's media rather than as a generic Android tablet. However, there are instructions for loading media via USB or Amazon's Cloud Drive. Also, there are some good instructions on some of the available options you have while reading a book - changing the font and typeface, highlighting and adding notes, and using the built-in dictionary features.&lt;/p&gt;  &lt;p&gt;The Apps chapter is by far the smallest; take out the screen shots and there's only a single page of text. This is where I have my only real gripe with the book - I would have liked to have seen something about how to determine how much of the Fire's storage space your apps (and music, videos, etc., for that matter) are taking up.&lt;/p&gt;  &lt;p&gt;The Web and Email chapter covers the basics of browsing and setting up your email client, but if you use an email provider other than one of the four included presets (Gmail, Yahoo, Hotmail, and AOL) the setup instructions are pretty much "contact your administrator".&lt;/p&gt;  &lt;p&gt;This book will save the average user many Google searches looking for answers to basic questions. While you're not going to find any in-depth technical information, I wouldn't hesitate to give it to my parents if they got a new Kindle Fire. O'Reilly has what appears to be a more detailed book coming up called "Kindle Fire: The Missing Manual"; I'll be curious to see what additional information it contains.&lt;/p&gt;  &lt;p&gt;Disclaimer: I received a free copy of this e-book as part of O’Reilly’s Blogger Review Program.&lt;/p&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Review" rel="tag"&gt;Review&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Kindle" rel="tag"&gt;Kindle&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Android" rel="tag"&gt;Android&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/148773.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/148773.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/148773.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/148773.aspx</trackback:ping>
    </entry>
    <entry>
        <title>BizTalk 2010 EDI Batching Tutorial</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/02/16/biztalk-2010-edi-batching-tutorial.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/02/16/biztalk-2010-edi-batching-tutorial.aspx</id>
        <published>2012-02-16T15:04:56-06:00:00</published>
        <updated>2012-02-27T14:41:02Z</updated>
        <content type="html">&lt;p&gt;In two previous posts I talked about party configuration and routing of EDI messages:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/bosuch/archive/2011/10/17/basic-party-resolution-in-biztalk-2010.aspx" target="_blank"&gt;Basic Party Resolution in BizTalk 2010&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://geekswithblogs.net/bosuch/archive/2011/10/26/edi-party-resolution--trading-partners-in-biztalk-2010.aspx" target="_blank"&gt;EDI Party Resolution (&amp;amp; trading partners) in BizTalk 2010&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this post I’ll build off of those examples and set up EDI batching so that we can deliver more than one EDI 810 invoice per file. You’ll need to have worked through the previous two posts to have your BizTalk application ready to follow along with these steps.&lt;/p&gt;  &lt;p&gt;First, change the &lt;strong&gt;File name:&lt;/strong&gt; of the Contoso Send Port to “Unbatched - %MessageID%.txt” (no quotes, of course).&lt;/p&gt;  &lt;p&gt;Next, we’ll create a new Receive Location to pick up the unbatched messages and mark them for batching. (For more information on how this works, read up on the BatchMarker pipeline component at &lt;a href="http://msdn.microsoft.com/en-us/library/bb245984.aspx" target="_blank"&gt;this MSDN link&lt;/a&gt;) Create a Receive Port called InvoicesToBatch, and a Receive Location called InvoicesToBatch_FILE. The receive folder should be the same as the folder used by the Contoso Send Port. Set the &lt;strong&gt;File mask:&lt;/strong&gt; to “Unbatched*.txt”, and choose EdiReceive for the &lt;strong&gt;Receive pipeline:&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Now let’s configure the batching properties of the Contoso Purchase Order agreement. Click on the My Company –&amp;gt; Contoso tab, then Batch Configuration.  For the &lt;strong&gt;Batch name:&lt;/strong&gt; enter “Invoices for Contoso”. Move to the Filter section and add the following filter:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;BTS.ReceivePortName == InvoicesToBatch And      &lt;br /&gt;BTS.MessageType == http://schemas.microsoft.com/BizTalk/EDI/X12/2006#X12_00401_810&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In the Release section, choose &lt;strong&gt;Maximum number of transaction sets in&lt;/strong&gt;, set the drop-down to Interchange: and enter 3. Finally, click &lt;strong&gt;Start immediately&lt;/strong&gt; in the Activation section&lt;/p&gt;  &lt;p&gt;Now we need a Send Port where we can drop the batched file. Create a new Send Port called BatchedInvoicesForContoso_FILE, pointing at the same directory as the Contoso Send Port, and set the &lt;strong&gt;File name:&lt;/strong&gt; to “Batched - %MessageID%.txt”. Choose EdiSend for the &lt;strong&gt;Send pipeline:&lt;/strong&gt; then move to the Filters tab. Create a filter that looks like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;EDI.ToBeBatched == False And      &lt;br /&gt;EDI.BatchName == Invoices for Contoso And       &lt;br /&gt;EDI.SenderPartyName == My Company And       &lt;br /&gt;EDI.DestinationPartyName == Contoso&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Click OK to save the Send Port.&lt;/p&gt;  &lt;p&gt;So what all have we done here? As in the previous post, when we drop a Contoso XML file to the Input directory, it will have the Destination party set in the orchestration and an EDI 810 file will be dropped to the Send Port. The new Receive Port will grab the file, and the BatchMarker pipeline component will promote the appropriate context properties to allow the file to be batched. When 3 interchanges (ST/SE segments in this case) have gone through the batch process, the file will be written out. We’ve given it a different prefix (“Unbatched” vs. “Batched”) so it won’t be grabbed again and enter an infinite loop.&lt;/p&gt;  &lt;p&gt;Time to test. Stop and restart the application, and restart the Host Instance. Drop a Contoso XML file to the Input directory, and switch over to the Contoso output directory. You should see a file created (starting with “Unbatched…”), and then it will disappear very quickly. Drop a second file in and the process repeats. Now go to the BizTalk Group Hub, and run a query for Running Service Instances. You should have a record for the BatchingService; double-click it to open and click on the Messages tab. In the Message Type column you should see two messages of type &lt;a href="http://schemas.microsoft.com/BizTalk/EDI/X12/2006#X12_00401_810"&gt;http://schemas.microsoft.com/BizTalk/EDI/X12/2006#X12_00401_810&lt;/a&gt;. Drop a third XML file into the Input directory and the batch should be released – you should see a Batched – &amp;lt;something&amp;gt;.txt file. Open it up and you should have a single ISA and GS segment, and three ST/SE groups.&lt;/p&gt;  &lt;p&gt;Let’s say you want BizTalk to go ahead and batch the files it is currently holding, before the actual maximum number of transaction sets is released. Drop two instances of the XML file to the Input directory, then open the Contoso Purchase Order agreement and view the Batch Configuration tab. Click the Override button, and after a few moments a file should be dropped to Contoso’s output directory. Open it up and you’ll see that it contains only two interchanges.&lt;/p&gt;  &lt;p&gt;You may want more control over when a batch is released – for example, you might want to send out a single batch every day when all of the files for a certain client have been processed. In a future post I’ll talk about using an external release trigger, to allow you to control exactly when the batch is released.&lt;/p&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/BizTalk" rel="tag"&gt;BizTalk&lt;/a&gt;, &lt;a href="http://technorati.com/tags/EDI" rel="tag"&gt;EDI&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/148731.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/148731.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/148731.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/148731.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Some non-geek blog lovin&amp;rsquo;</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/02/13/some-non-geek-blog-lovinrsquo.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/02/13/some-non-geek-blog-lovinrsquo.aspx</id>
        <published>2012-02-13T10:36:25-06:00:00</published>
        <updated>2012-02-16T15:12:46Z</updated>
        <content type="html">&lt;p&gt;I promised my wife I’d link to her blog, so here it is:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://therunningonveggiesmom.blogspot.com/" target="_blank"&gt;Running on Veggies: Adventures in Healthy Living&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Back to the geeky stuff shortly!&lt;/p&gt;
&lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Other" rel="tag"&gt;Other&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/148689.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/148689.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/148689.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/148689.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Android&amp;ndash;Create a ListView with rounded corners</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/bosuch/archive/2012/02/06/androidndashcreate-a-listview-with-rounded-corners.aspx" />
        <id>http://geekswithblogs.net/bosuch/archive/2012/02/06/androidndashcreate-a-listview-with-rounded-corners.aspx</id>
        <published>2012-02-06T16:26:39-06:00:00</published>
        <updated>2012-02-16T15:11:32Z</updated>
        <content type="html">&lt;p&gt;In a &lt;a href="http://geekswithblogs.net/bosuch/archive/2011/01/31/android---create-a-custom-multi-line-listview-bound-to-an.aspx" target="_blank"&gt;previous post&lt;/a&gt; I showed how to create a custom multi-line ListView bound to an ArrayList. Let’s make it a little more visually appealing and give each item some rounded corners.&lt;/p&gt;  &lt;p&gt;If you followed the previous how-to you wound up with something that looked like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/d691ddf7ffa5_E181/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/d691ddf7ffa5_E181/image_thumb.png" width="244" height="241" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To put each ListView item (name, address &amp;amp; phone) into its own rounded-corner box, create a new file in your res/drawable directory called border.xml, and paste in the following code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2" face="Times New Roman"&gt;&amp;lt;shape xmlns:android="&lt;/font&gt;&lt;a href="http://schemas.android.com/apk/res/android&amp;quot;"&gt;&lt;font size="2" face="Times New Roman"&gt;http://schemas.android.com/apk/res/android"&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Times New Roman"&gt; &amp;gt;       &lt;br /&gt;    &amp;lt;stroke android:width="1dp" android:color="#FFFFFF" /&amp;gt;         &lt;br /&gt;    &amp;lt;padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp" /&amp;gt;         &lt;br /&gt;    &amp;lt;corners android:radius="8dp" /&amp;gt;         &lt;br /&gt;&amp;lt;/shape&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then, specify the background of your LinearLayout in custom_row_view.xml:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;android:background="@drawable/border"&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And that’s it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/d691ddf7ffa5_E181/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/bosuch/Windows-Live-Writer/d691ddf7ffa5_E181/image_thumb_1.png" width="226" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Of course, you can mess with colors, padding etc. to get the look you want, and you can apply this to just about any object in your layout.&lt;/p&gt;
&lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Android" rel="tag"&gt;Android&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/bosuch/aggbug/148617.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/bosuch/comments/148617.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/bosuch/comments/commentRss/148617.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/bosuch/services/trackbacks/148617.aspx</trackback:ping>
    </entry>
</feed>
