Saturday, May 14, 2011
Extended BLOB Processing

This update of Code On Time web application generator introduces a major enhancement of file upload/download feature and several bug fixes.

Make sure to refresh the browser cache after re-generating your application.

Bug Fixes / Enhancements

  • Data Sheet view rendering has been improved. Users will notice that sometimes column header of a selected cell is not rendered in “bold” font. This is happening only if assigning a “bold” font will cause the column to become wider. This cosmetic change makes it easier to work with the data sheet.
  • Tab and Shit+Tab keys will always skip read-only fields in the data sheet view. You can still select a read-only cell with a mouse click or with arrow keys.
  • Dates are now displayed exactly as stored in the database regardless of the time zone of the client browser. ASP.NET Ajax client library automatically adjusts dates to the browser’s time zone, which creates logical problems with date and time processing. Data serialization enhancement ensures that difference between the time zone of the web server and the time zone of the browser is ignored.
  • ASP.NET SQL Server Session State is now fully supported. This important feature allows running generated applications on web farms. Read about configuring SQL Server Session State at http://support.microsoft.com/kb/317604. You need to create Web.Config modification instructions for your application to enable the session state as described at http://blog.codeontime.com/2010/03/customizing-webconfig.html.
  • Form views no longer hide the top row of buttons regardless of the number of fields in a data view.
  • Business rules processor will only try to convert values if ICovertible interface is supported.
  • Microsoft SQL Server membership registration has been changed to remove LocalSqlServer connection string prior to the new registration of a connection string with the same name. This allows generating applications for SQL Server when the latest Oracle / NET library is installed on the same computer.
  • Import processor now implements BeforeProcess and AfterProcess. The class has been refactored in a partial ImportProcessor based on class ImportProcessorBase. This allows creating a new code file in your project with implementation of new virtual methods if you need to execute custom business logic before of after the import process.
  • The bug with field map processing when Import command is selected in IE 9 and Chrome has been corrected.
  • WebKit (Chrome and Safari) browsers will no longer display a modal popup information box stating that the “GetPage method has failed..”. This was happening when user were selecting a menu option while the page was waiting for a response from the server.
  • Read-Only fields are now always correctly passed to business rules. FieldValue class now  returns NewValue if a field is read-only or modified, which makes it possible to “see” the read-only value in a business rule method. Client library has been changed to enable value conversion on the client. Read-only values of non-string type are passed as their native representation to the server instead of being passed as strings.

File Upload/Download

The application framework of generated web applications allows enhanced processing of BLOB (Binary Large Object) fields. The framework will capture Content Type, Length, and File Name automatically if utility fields matching the BLOB field name are present.

This can be done by simply implementing additional fields in your database. For example, if you modify the Norwind.dbo.Categories table as shown below, refresh the metadata of your project and re-generate the project then the utility fields PictureFileName, PictureContentType, and PictureLength will automatically capture the corresponding properties of an uploaded file.

CREATE TABLE [dbo].[Categories](
    [CategoryID] [int] IDENTITY(1,1) NOT NULL,
    [CategoryName] [nvarchar](15) NOT NULL,
    [Description] [ntext] NULL,
    [Picture] [image] NULL,
    [PictureLength] [int] NULL,
    [PictureFileName] [nvarchar](50) NULL,
    [PictureContentType] [nvarchar](80) NULL,
 CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED 
(
    [CategoryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

If you upload a file of non-image format (PDF, Word Document, etc.) and try downloading the file then the application will return the correct content type and file name to the browser.

Important: Make sure to allocate enough length for <BLOB_FIELD_NAME>ContentType field to ensure that Microsoft Office documents will have their content type captured correctly. The content types of the latest Microsoft Office documents are extremely long.

If is also possible to process files through business rules. The tutorial will be available shortly.

Coming Soon

We have finally completed the necessary templates to roll out Azure Factory project. Premium and Unlimited edition users will be able to begin generating Azure Factory applications  starting with the next update.

Owners of Unlimited edition will be able to create enterprise-class applications with EASE (Enterprise Application Services Engine). The engine will include two major components – Dynamic Access Control List and Status Transitions.

We will be releasing a new project DotNetNuke Factory that will allow incorporating Code On Time applications in DotNetNuke web sites shortly thereafter.