Caramel – Code Generator


As some of you might know, I’ve been working on a class designer (Albino horse) off and on for a while now.

I’ve also started to work on a code generator where the class designer will be used.
The code generator will be a sort of hybrid between old school DB code generator and Puzzle ObjectMapper.

You will be able to edit domain models and table models just like ObjectMapper, but you can also add your own kind of nodes, making it possible to extend the generator for pretty much whatever you want.
Eg. you could add nodes for different types of web pages and map entities to those and genereate entire apps.

Enough talking, a picture says more than , all the blabbering above :-)

Very very alpha’ish screenshot of the generator:

 

Once I’ve added a bit more functionallity and cleaned it up a bit I will publish it on codeplex.

ObjectMapper 2008


The old ObjectMapper 2000 was and still is a great tool and I have used it in lots of projects to generate and map my entities.
But one thing that is clear, is that it was way way too complex for most users, it had more settings than the space shuttle and could be a real PITA in some cases.

So me and Mats have talked about adding mapping support inside VS.NET, much like the Linq to SQL mapping designer.
We haven’t actually decided exactly how it’s going to work yet, so there is not much to get excited about for now.

Anyway, I’ve started to build a visual class designer for it.
The control will be possible to use for any kind of Windows Forms project and will not be bound to Object Mapper.

Screenshots:

Main view and overview overlay:
classdesigner1.png

Zoom in and out:
classdesigner2.png

 Expand / Collapse:
classdesigner3.png

Custom styles:
classdesigner4.png

 I’ve also added some auto layout code to it, but it’s based on spring algorithm, which isn’t very good for class diagrams.

Well, if anyone is interested in some colaboration on this one let me know.
I figure that a decent UML’ish designer could be useful for more than us.
The plan is to release the designer as a standalone project anyway.