Code Generator

Labels
AJAX(112) App Studio(9) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(178) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(184) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(3) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Code Generator
Thursday, February 11, 2010PrintSubscribe
Test Bench, Relationship Discovery, Denormalization Field Map, Auto Generated Fields in Grid Views

Test Bench

Code OnTime Designer has been enhanced with the Test Bench. This tool is designed to speed testing of data controllers without leaving the design environment. Action bar displayed above the settings of a data controller elements now features the “Preview” action.

If you click on the action then Code OnTime Generator will automatically create a test site based on Web Site Factory premium project. The test project will feature a single page named after the currently selected data controller. A browser window will open automatically as soon as the project has been generated. If this is your first time invoking the Test Bench then it will take some time to generate the initial code of the test site. Subsequent requests to preview data controllers will run much faster and will allow quickly testing changes without generating the entire project.

This illustration shows the Preview action on the action bar of the data view category list of Employees data controller from the Northwind sample. We just have changed the Floating attribute of Employees category to Yes.

image

We click on the Preview button and the Test Bench web site is opened in a new browser window in just a few seconds. If we select an employee then the following presentation will be rendered.

image

Denormalization Field Map

The code generator will automatically discover relationships between data objects in your database and create the corresponding business objects by denormalizing the data object relationships.

For example, sample database Northwind features Products and Suppliers tables. Products  table refers to Suppliers via foreign key that links dbo.Products.SupplierID and dbo.Suppliers.SupplierID fields. The code generator will automatically include the first most appropriate field from the Supliers table to complement dbo.Products.SupplierID field. The automatically selected field is Suppliers.CompanyName, which is included into Products business object as SupplierCompanyName.

You will probably agree that this make sense. Sometimes the code generator will select a field that does not make much sense at all. You can assist the code generator by supplying a denormalization field map on Business Logic Layer page of the project configuration wizard.

 image

Here is a sample denormalization field map:

dbo.Products => dbo.Suppliers
ContactName
ContactTitle
Fax
Phone

dbo.Employees=>dbo.Employees
LastName
FirstName

dbo.Orders=>dbo.Employees
LastName
FirstName

dbo.Order Details=>dbo.Products
UnitPrice

This map will ensure that ContactName, ContactTitle, Fax, and Phone are included into Products business object and any other business objects that include references to the products.

For example, OrderDetails business object will also include ContactName, ContactTitle, Fax and Phone of the product supplier with the appropriate prefix (ProductSupplieContactName, ProductSupplierContactTitle, etc.)  in front of the field name.

Employees business object is based on a self-referring Employees data object. The foreign key name is ReporsTo. The business object will have ReportsToLastName and ReportsToFirstName fields automatically included in its field roster by the code generator.

Another option of denormalization is to use Code OnTime Designer to add the appropriate formula fields directly to the data controllers. The advantage of using a denormalization map is that it will save you a bunch of mouse clicks in the Designer. The advantage of using the Code OnTime Designer for denormalization purposes is that explicitly declared formula fields can include custom expressions that go beyond a simple field reference delivered through the map.

Relationship Discovery

If you are missing a foreign key in a database or opted not to have an explicit foreign key for some other reasons then you can use Relationship Discovery mechanism to enter the missing relationships, which will help the code generator to construct the correctly denormalized business objects.

image

Here is an example:

foreign key dbo.Products(SupplierID) references dbo.Suppliers(SupplierID)

foreign key dbo.Orders(CustomerID) references dbo.Customers(CustomerID)

foreign key dbo.Order Details(OrderID) references dbo.Orders(OrderID)

foreign key dbo.Order Details(ProductID) references dbo.Products(ProductID)

Any child/parent relationship specified in relationship discovery overrides the corresponding physical foreign keys automatically discovered in the database. You can set the discovery depth to zero to take complete control over the fields that will be automatically included into composed business objects during denormalization process.

If there is a relationship specified in Relationship Discovery then the discovery depth is ignored when the code generator is following the relationship during denormalization.

The relationship discovery will be updated in the future to support primary key definitions, which will allow to automatically build business objects based on database views.

Auto-Generated Fields in Grid Views

Standard grid views created by the code generator automatically will include ten first fields that are suitable for display to end users. You can change this number on the Features page of the project configuration wizard as shown on the picture below.

image

You can use Code OnTime Designer to re-arrange any data fields that were automatically generated.

Sunday, October 11, 2009PrintSubscribe
Learn by Example

Discover how code generators can help you to learn web development faster.

Learning to program web applications might seem like a brilliant idea. With hundreds of educational repositories on the Internet and many companies giving away tools practically for free, it seems that you can easily build the next Facebook. However, once one starts to dig deeper, they realize that it isn’t quite what it seems. With the Internet being such a hodgepodge of information, the student has a difficult time sorting it all out. Many go about copying and pasting code snippets found on the Internet, and assembling them into an application. Other alternatives are to pay for costly educational programs that teach you the basics.  None of these are great options for starting your next killer app.

People learn by example. The Internet provides tons of examples of all types of code. However, this code is not designed to work together. It’s like building something with different parts. A head of a donkey, the body of a lion, and the legs of an antelope were not designed with compatibility in mind. You need an integrated example in which all parts are working together perfectly, and organized in a thoughtful way. Instead, get a quality code generator. Point it to your database, choose your settings, and it will generate a complete framework and application in minutes, doing what many programmers take years to learn. Through examination of the generated code, many secrets of the trade can be learned, and methods of creating database applications can be acquired.

Let’s say you want to build a customer relationship management (CRM) database web application. This requires you to display customers, contacts, addresses, and activities, among others. You will need to provide means to sort and filter, display the records, and show a record detail view. Search for any of these on the Internet. For example, google “display grid of records ASP.NET”, and you will get nearly a quarter million results. How can you know which one is right for you? Let’s use a code generator. First, create a database for your CRM. Then, point your code generator to the database, select the desired options, and start code generation. Shortly, you will have the perfect instructional material. Some code generators provide you with the bare basics and create a simplistic web application. Others, like Code OnTime’s ASP.NET Code Generator, can create a highly sophisticated and thought-out application, complete with sorting and filtering, AJAX integration, reporting, and many other great features. It is also very easy to maintain. The generated professional-grade web application can impress the best programmers. The entire source code is available to examine and modify, and can teach you the most advanced methods of creating such an application.

The generated code has the advantage of being designed to work together, unlike “cut and paste” samples, which can be unwieldy and may not integrate successfully. This code doesn’t need to be used in your final project, and can be entirely thrown out once you’ve learned what you can from it. Or, you can decide to borrow some sections of the code for your own application, or just keep the whole thing and build your code on top of it.

Additionally, you can impress your friends and coworkers with a professional looking web application, and tell them about the great skills you acquired over the weekend just before the football game.

Labels: Code Generator
Friday, October 2, 2009PrintSubscribe
Eliminate the Grisly Problems of Project Estimation

See how a code generator can help reduce the headaches of Project Estimation and Planning.

The Project Manager’s job is to produce a project estimate, the most complicated step of any project. Project estimation forces project managers to deal with the unknown, making estimation difficult. Merely guessing off intuition is not the best solution. Many managers purchase costly project estimation software. Alternatively, managers can use a horde of programmers to create a prototype application to gauge the difficulty of the project. None of these choices are cost or time effective.

However, there is a much more elegant solution to this problem. Code generators can quickly and easily create an application prototype. Have your software architect construct a database according to the project requirements. Point the code generator to your database, and in minutes you will have a complete prototype of your application. It is much easier to estimate a project using a physical, usable example.

Suppose you were put in charge of a project to create a help desk web application. Your company’s business has grown too large, and your fellow co-workers are drowning in technical issues. As the project manager, you have to create an estimation of how long the project will take. You would need to create a system that manages information such as: problem history, priority levels, equipment, support staff, and problem resolutions. This would be a large and difficult undertaking, and you need a way to gauge the level of work necessary to complete it. Using a code generator, you can merely point it to the database created by your software architect based on current version of project requirements, and in minutes, you have a working prototype. You can now figure out exactly how much time and resources you will need to build your help desk.

This allows you to provide near instantaneous feedback to project stakeholders. The stakeholders can view the prototype to validate requirements, and to create new ones. New requirements will call for a revision of your estimate, and you can use the code generator again and again until the definitive requirements have taken shape.

Your development team may decide to completely scrap the generated code and built an application from scratch. It still had helped you in project estimation and saved time and money. Through the use of a code generator, project estimation became a much more efficient and cheaper process.

As an added bonus, some of the code may end up being useful and serve as a foundation, or become a part of the final product.

Labels: Code Generator