…well, this is the solution to your problems (at least I hope so).

I am continuing receiving emails from people in despair that cannot successfully use this tutorial. I am sorry but I cannot answer to all this emails, so I thought to write this post in order to allow people to configure it correctly.

BTW, this demo is still working since 2 years without any problems, and the code there is just the same you can download from this blog. So it must work also for you ;-)

So if you just cannot use it, this is a check list:

If you receive the "Unable to load dll (mapscript)" error, look at this article from Tamas Szekeres (the mapscript c# mantainer).

Read more

This is the fifth post of a series started with this post about a MonoRail and ActiveRecord tutorial.

With this post we will finally start to write code for our MonoRail and ActiveRecord tutorial. Here we will go on writing the model classes, and from them we will autogenerate the database schema (alternatively you could first create the database schema and then generate the classes using the generator).

We need to write 5 classes for our 5 models (Album, AlbumGenre, Artist, Genre, Support). As we discussed the convention is to place them under the Models folder of our CastleProject solution.

So let's create these 5 classes.

Read more

This is the fourth post of a series started with this post about a MonoRail and ActiveRecord tutorial.

Last time we wrote the Album class and we have seen how to implement the primary key mapping and simple properties mapping.
With simple properties mapping I mean the class properties that will go to map simple data type in the database. Instead with complex properties I will mean the class properties that will go to map a relationship with another table in the database.

For the album class there are simple properties (ID, Name and Year) and complex properties (Support, Artists and Genres).
The simple properties are mapped to standard data types: ID (primary key) to int, Name to string, Year to Int16.
The complex properties are mapped to object types: Support to Support Object, Artists to an IList of Artist Object and Genres to an IList of Genre objects.

Now to go on with the tutorial we should continue writing the other classes (otherwise Album class will not compile), but in this part I first want to show you how to implement relationships in your class.
For a complete introduction to relationship mapping in ActiveRecord you can look here. In this tutorial we will use the most important relationship mapping kinds: BelongsTo, HasAndBelongsToMany (simple and with an attribute).

Read more

This is the third post of a series started with this post about a MonoRail and ActiveRecord tutorial.

There are several approaches for writing the domain model classes for a MonoRail and ActiveRecord application:

  • Create the domain model classes from a generator, providing a database schema
  • Create the domain model classes from scratch

Consequently, if you have chosen to create the domain model classes from scratch, after you have created the domain model classes you can auto-generate the database schema.
If instead you have already the database schema, you could opt for the first point (and maybe retouch them after the generation).

For the aims of this tutorial, we will first write the domain model classes and then auto-generate the database schema.

These are the domain model classes: copy and paste them under the model folder (once again this is a convention, you can add them in a different place):

Read more

This is the second post of a serie started with this post about a MonoRail and ActiveRecord tutorial.

Let's start developing our sample application. The first thing we need to do is to create a .NET project configured for using the CastleProject stuff. You can go in two ways:

  • Create a Visual Studio project with the MonoRail project wizard.
    The wizard will create for you the MonoRail project structure, generate the configuration elements in the web.config file and add all the necessary references to the project.
    You will be prompted to choose a view engine (NVelocity, Brail or ASP .Net Web Forms), if to enable the Windsor inversion of control, and if you wish to create a test project for TDD (Test Driven Development).
    For the purpose of this tutorial choose NVelocity, not enable Windsor and create the TDD test project. You can look at the procedure here.
  • If you are using another IDE than Visual Studio, or if you want to manually configure the environment, you can look at the manual procedure in the same link of the first point.

The references that will be added are:

  • Castle.MonoRail.Framework.dll: The MonoRail framework, that implements for the project the MVC Pattern
  • Castle.MonoRail.Framework.Views.NVelocity.dll: The view engine we have chosen
  • Castle.Components.Binder.dll: The binder implementation
  • Castle.Components.Common.EmailSender.dll: The email service contracts
  • Castle.Components.Common.EmailSender.SmtpEmailSender.dll: The email service implementation
  • Castle.Core.dll: Core functionalities shared by Castle Projects
  • NVelocity.dll: The template engine

Read more

In the last 2-3 years there were a lot of talking about agile and high-productivity development with an outstanding framework that is already in the legend, like happened to Java in the late 90s: Ruby on Rails.
Given its success, many other project in the Open Source community were born trying to reproduce the beauty of the Ruby on Rails rapid and agile development framework for other environments. Just to name a few: Turbogears for Python and Grails for Java.

The main features of these rapid development framework generally are:

I have seen many .NET developers migrating to Ruby on Rails or to others high productivity frameworks, not knowing that also for .NET (and Mono) there is already an outstanding framework for this purpose: the CastleProject.
Even if for this framework there is still not a first stable release (the main components are actually at Release Candidate 2), it offers already an excellent solution for agile and rapid development for the .NET world.

Read more

Cuyahoga: "Hello World" sample module tutorial

Filed on April 30th, 2007 at 11:59 am under , , , , , | 6 Comments 

Cuyahoga is an impressive open source web site framework (and CMS) with many impressive features like:

  • RDMBS indipendency via NHibernate
  • Enterprise architecture
  • Plug-in architecture
  • Deployable, using Mono, to platforms different from Windows, like Linux, Mac OS X, Solaris, unlike other popular .NET CMS
  • Search engine based on DotLucene
  • Full ASP .NET 2.0 engine
  • logging system via log4net (the same logging engine in zigGIS)

People willing to deeply dig in Cuyahoga may download the latest release (1.5.0) source code and this basic tutorial for developing Cuyahoga modules.

The problem with this tutorial is that is a bit out of date (is based on VS 2003 and on a old release of Cuyahoga) so I thought to make this post to update the tutorial to VS 2005 and to the current stable release of Cuyahoga.

Here I am assuming that you are using VS 2005 IDE and Cuyahoga 1.5.0. You can of course use other IDEs without problems, but my post is concerned about using VS 2005.

We will create a very simple module, just showing the classic "Hello World" text. In my next posts I will write a longer tutorial with data management.

Read more

PostGis WorkspaceFactory

Filed on February 21st, 2007 at 5:58 pm under , , , , , , , | 2 Comments 

In my previous post I have showed you how to install and using zigGIS for adding PostGIS data into ArcMap.
From the ArcMap user interface you just need to press the zigGIS button and an "Add PostGIS data" dialog will be shown to you. From there you can set a zig File path, where PostGIS connections settings are stored, and then a PostGIS layers list will be shown and you can check which layer(s) add to the map.

Add PostGis data

In this post I will show how to programmatically use zigGIS and ArcObjects to add PostGIS data into ArcMap.
zigGIS is a Microsoft .NET 2.0 library that can be used from .NET clients and also from COM clients.
You could use it in your ArcObjects .NET applications/library to manage PostGIS data, in any .NET language like VB .NET and C#.
As zigGIS it is obviously exposed to COM (ArcObjects are in COM), you could also use it in your COM applications/library, for example in applications developed with Visual Basic 6 and ArcMap's VBA (Visual Basic for Application).
Read more

zigGIS is an Open Source PostGIS connector for ArcGIS Desktop, that enables ArcMap to add PostGIS layers in the map.
Differently from other kinds of connectors, like for example PGArc, the very nice feature of zigGIS is the direct-read of PostGIS data, without the needs of proxy shapefiles. This meaning that the PostGIS features are directly readed and displayed in ArcMap from the PostGIS data source without a previous conversion to a shapefile or personal GDB.

zigGIS interface

This is a very interesting project, but still in a very early phase, in fact there are still important issues that are planned to be solved in the next future, like:
- edit features (edit PostGIS layer from ArcMap is still not implemented, and it is read-only)
- symbology not working (only simple symbol rendering is currently working)
- selections are not supported
Read more

Full OSS solution vs OSS/commercial solution mix

Filed on January 19th, 2007 at 3:51 pm under , , , , , , , | 5 Comments 

I wanted to leave a comment in this Bill Dollin's post, but after that it came out to my mind to leave a trackback to it, and going with a my own post on this subject as far as I have several things to discuss about.

In the OSS jungle, it looks there are in the last times more and more solutions and projects based on commercial closed-code software. For example zigGIS, the Open Source ArcGIS connector for PostGIS, in which I am involved, is by itself an OS project tied to proprietary frameworks (Microsoft and Esri). This is many times not so good, as I cannot dig, for example, in Esri ArcObjects core code for understanding why a particular issue is coming out.
At my office we are in the process of taking an important strategic decision.
We are going to replace our actual commercial closed-source CMS (Content Managment System) - that we were using for some portals we manage for several years - for an Open Source solution.
Read more

Next Page →