Category: Skipper features

After some weeks of hard work we are happy to announce that Skipper now supports also Gedmo extensions. New version with the support is so far available as beta, you can download it from a post about Gedmo extensions on our support forum.

Because Gedmo extensions support needed a lot of changes in the application, we are now looking for beta testers who will try it. So if you have a project with Gedmo extensions you are very welcomed to import them in your Skipper model and let us know, whether everything works as expected. We will be really glad for your help :-)

Gedmo extensions support is now available only for Doctrine 2 framework. But this is only temporary, as soon as the beta will be properly tested, also a support for MongoDB ODM will be added.

Our latest release 3.2.0 brings to Skipper new way how namespaces are handled by our application.

Few words about history

Long time ago when the first version of our application was created (originally called ORM Designer), there hadn’t been things like namespaces in ORM frameworks. But as ORM frameworks have been developed in time, each framework came with some way how entity namespaces are being handled.

Because ORM Designer / Skipper needed to handle it too, we added support for namespaces in form of ORM attributes. This had been a functional and sufficient solution until Doctrine 2 has introduced new way how to handle namespaces and allowed several entities with the same name but in different namespaces.

For some time it wasn’t possible to create such models in Skipper because of internal limitations (each entity was represented by it’s local name only). But today with our latest release this limitation is over. We have reworked Skipper core and a way how unique names are handled and now it’s possible to create also these models.

New age of namespaces

Starting with version 3.2.0 each Module, Region, Entity and Collection can have defined its own namespace

Namespace of each object is calculated from all its parents:

\Module\Region\SubRegion\Entity

Each of these objects can have defined own relative or absolute namespace. This means that in case of need sub-region can override namespace via absolute path. In such way, the final entity namespace will be:

\SubRegion\Entity

The same thing is possible also for Entity. In case you need to define one of your entities in different namespace than the rest of entities in the module, simply define absolute namespace directly for the entity.

All this features are available to all ORM frameworks which support namespace. Namespace support is available for all import and export scripts as same as for visual editing.

Project file changes

Because of these changes it was necessary to update Skipper project files a little. There are two most important changes which caused that projects from 3.2.0 aren’t fully backward compatible with older versions.

The first change of XML format are new attributes @local-name,@name, @local-namespace and @namespace. Attributes starting with @local- are values defined on specified object. On the other hand attributes @name and @namespaces are calculated values depending on its parents.

The second change in XML format is deprecated <entity-ref> and <collection-ref> elements in project file. Instead of __ elements entities are stored in owner regions to keep the same hierarchy like in visual model.

For example, this means following. This is how looked original project file with entity in one region like:

Conclusion

Although it might not be visible on the first sight, new namespace support was a very complex task. Because of that we had this feature for more than month in beta mode before releasing it to public. Thanks to all our testers we successfully localized and fixed several bugs caused by this new feature.

Now, when no more issues are reported we decided to publish it for all our users. We will be glad for any feedback.

Since a lot of you have asked, we prepared presentations about ORM Designer. Now you can show your teammates or anyone else, who may be interested in ORM Designer, what it can bring.With these slideshows you can demonstrate ORM Designer functionality to your team leader when needed more arguments to his conviction.

Prepared documents are suitable for personal presentation as well as for sending by email as the contained text has highly informative character. If you would like to add or modify something, please write it here to comments.

Well, this update is not yet automatic. So why should you bother to download the file and manually update ORM Designer again? For exactly that reason. All future updates will be automatic.

With our team growing, we have started releasing new updates more often, and having to download new version manually every two weeks or so might annoy some users. I know it would annoy me. But that is over now.

ORM Designer checks for new versions on start-up, and when there is a newer version, you will get a notification with a list of all new changes and fixes. And if you want to, you can allow the update to happen, so don’t worry that the application will be changing under your hands without you knowing.

And because you want all the new stuff to keep your ORM Designer up-to-date, just press the Update Now button. All you need to do now is to watch the progress bar.

Updating the ORM Designer is now almost as easy as creating definitions with it. Make your life another bit easier and get the latest version now.

We have the final upgrade of the Property Editor ready for you. Last time we gave you new button, now it is a whole new window.

We have attached the new Property Editor Drawer to every object Editor and Wizard, so you can now define values of ORM attributes and set ORM Designer configurations directly when you create an element. Following this logic, general properties (like name, type or size) are now editable from the Property Editor.

This means you can edit every thing about each element from the same place, its up to you if you like to use the Object Editor window, or if you set it up from the simple table of the Property Editor. Or you can combine both, to achieve faster, more streamlined workflow. And ORM Designer is all about removing unnecessary steps so you can concentrate on what needs to be done.

So last time it was a button, now a window. To keep up the pace it will have to be new application next time I guess.

Today’s buzzword is properties. ORM properties. ORM properties are the reason why ORM Designer is the best choice for your work with ORM frameworks. Keeping track of all the properties and defining them is pretty tedious if you do it by hand. We know. That’s why we made ORM Designer in the first place.

But now we finally got around to tweak the way you edit them. First we’ve separated the three main groups: General properties, where you have everything you can see in the visual model, ORM properties, which are making your code tick, and the Configurations, where you can specify the export paths, file extensions and all the inner workings of ORM Designer. But it gets better.

The new Quick Filter button in the properties may not seem much at the first glance. But when you find out, how much clicking it saves you when sorting through the Property Editor, you will love it. Big time.

And to tease you a little, all these changes are groundwork for the main change in the Property Editor. We are working on the Big One, but we didn’t want to overwhelm you with goodies, so we are releasing them one by one. PS: Okay, I take it back. Today’s buzzword was ORM Designer again.

And don’t work too hard, you know you don’t have to with ORM Designer.

Perfect for everyone who wants to share their models with colleagues or customers. It allows viewing of whole model including entities present in it and relationships between them, but without ability to edit anything. Free tool available for everyone, even for those without full license

Very detailed and comprehensive websites that provide information about everything related to ORM Designer. It is thematically segmented, fully searchable and linked, so you won’t have to scroll through any monstrous pdf.

We made ORM Designer translatable and the first volunteers applied to implement their native languages into it. Any help is welcome, so if you are willing to translate our application into your language, contact us.

Advanced feature able to save you a lot of time. ORM Designer can automatically create some elements for you. How these new elements will look depends on setting of model elements templates, which are fully customizable.

Additional goodies

We have been working on many other features and enhancements, to stay concise here is the short list of some of them.

Alternate foreign key

Hello Everybody,

ORM Designer was growing up in pretty idealistic environment. We wanted it to be a tool that will generate clean and readable code. Elegant tool for elegant solutions. In our minds the ORM Designer was not an ordinary ORM tool, but the sharp and efficient ORM scalpel.

However, developer’s life is not just polished garden of immaculate design solutions. Sometimes you need a hammer. And a big one. One of our users contacted us about pretty unusual solution, having a foreign key pointing to different column than the primary key.

At first, we did not like it. But then he presented his situation of multiple databases in great deal of detail, and we had to agree, that his solution might not be an elegant one, but it was the only reasonable one. Our goal is, after all, having ORM Designer help our users, and do their work for them.

So we have implemented this functionality as a part of our latest release (it is only supported by some frameworks though, namely Propel and Doctrine). You can learn more about it in our documentation.

Do you need to tackle a difficult task? Do you feel that ORM Designer could help you but something is missing? Let us know, we can add specific functions. After all, ORM Designer is a tool intended to help with all your work.

Entity defined by template

Hello Everybody,

One of the most interesting features of ORM Designer is its customizability. Now we took it to the next level. We have vastly enhanced the template functionality. It’s so awesome now, that I don’t even know where to start.

We have already had templates for some basic functions in place, but we thought, well lets make templates for everything. And we did it! After two weeks of hard labour, strenuouss tests, documentation and despair we can proudly present the NEW TEMPLATES.

Do you want to be sure all your entities have their primary keys? You can. Do you want the aliases used in your associations being generated automatically? They will be. Do you want to create your entities with the repeating fields already defined. No problem, you can have your IDs, names, createdAt and updatedAt with just single click. Do you want to completely define your whole project using templates and just have it built the exact moment you press the Create new project? I can’t see why would you want to do that, but you totally can.

Everything can be manged by a template now, primary keys, aliases, association and inheritance fields, Many-to-many entities, even names and values of ORM properties like the export paths. Templates can be now set separately for Doctrine, Doctrine 2, Propel and PHP Cake and you can even have templates applied on import or changes in your model.

So you have all noticed the grid in the ORM Designer, it is this handy little tool to neatly organize all your entities and modules. It was okay, but we had a look at it and thought, “okay is not enough for our users”.

Oh boy, we did not see how big can this little feature get. We spent hours tweaking, arguing, tweaking again, researching, and tweaking even more. Well, it is pretty much perfect now.

You can set all the regular stuff like color and size, but you can also use this mysterious slider called “Grid Sticking” to adjust how firmly will your elements stick to the grid. All your settings will be shared between the tabs and projects and it goes without saying your changes will not get lost when you close the application.

And as always, let us know if you have an idea to make this tool even better. We strive for ORM Designer to be as user-friendly as humanely possible and we’re having great fun implementing all the little features and enhancements.

If you expect an article about genetics or superpowers you will be probably little disappointed. But we think the new ORM Designer feature is quite cool too, so let’s take a closer look at it. In the last week we prepared ORM Designer for language mutations.

From now, English is not the only one

Till now, the application has spoken only English. For most users it is fine with no doubts, it is the most widespread language all around the world. But still, native language is native language and to have commands in application translated is much more comfortable.

To find out if everything works fine, we tested the translation mechanism on our native language. As you can see in the picture above, in the new ORM Designer release Czech is also available :-)

You might have guessed it, but two language versions isn’t our goal. Right now the application is being translated into Spanish, but there are many more languages ORM Designer wants to speak!

Join us!

If you want to join us in our effort to make ORM Designer really multi-language tool, we will be more than happy. Head to the article about Localization and follow described steps.

When you finish the work, share the translation files at our support forum with the rest of the community and enjoy the eternal glory as our greatest heroes :-)

And the last thing, this is how we want ORM Designer localizations to look like :-)

As you might have noticed, in the last few weeks we were neglecting our blog a bit. The reason for this is that our whole team is currently busy finishingnew documentation, and we are excited to tell you that the launch is planned for the next week.

Don’t worry, no bulky pdf with hundreds of pages is heading your way. Simple is smart, and the documentation completely follows this rule. We created it in a shape of simple websites thematically** sorted** by its main topics. For intuitive navigation, the search function has also been added.

Since last year we have received many request to implement a support for Java JPA-Hibernate framework. So now we decided to come up to expectations and last week we started to work on implementation.

As Java ORM is slightly different from the PHP ORMs already supported by ORM Designer, we’re looking for some enthusiasts who would test a beta version when available. If you are interested, please contact us at [email protected].

We would also appreciate some JPA-Hibernate projects so we can run tests during the implementation. You will be very welcome if you send them to [email protected]. Each project will be treated strictly as confidential and no data or model parts will be visible to anyone else.

If you have any ideas about the implementation, you can discuss below.

For those who sometimes needs to show a project to his colleagues or customers, ORM Designer now offers a new free version. ORM Designer Viewer is time unlimited and enables to browse the whole model with its objects and associations. However, all editing functions are disabled.

How to launch ORM Designer Viewer

Simply download version 2.2.1.734 from download page and install the application. After the installation and first start, the welcome screen with license activation appears. Now please select the third option - Free viewer only and click the Next button.

And that’s it, we’re done. Now you can use ORM Designer Viewer.

Is this free version interested for you? Will you use in your team? We would appreciate your feedback, feel free to discuss below this blog post.

As we are constantly improving the interface of the application, we have reordered items in the file menu. New order is a result of last user testing. Now they should help you work even faster and find required action more easily. We have also add new icons so they more precisely express the functionality of menu items.

Icons have been created specially for ORM Designer. But because we’d like to support also new applications and start-ups, we decided to publish PNG formats as giveaways. They can be used both for commercial and non-commercial use as long as they are not sold by themselves. We would be also happy if you inform us about using icons.

Download PNG icons with 32x32 pixels resolution

Download PNG icons with 64x64 pixels resolution

Some tasks in ORM Designer might be a little bit confusing while beginning with the application. To make these task more intuitive and quicker, from version xxx.xxx the new wizards are available. They will guide you during:

import of model from DBDesigner or MySQL Workbench into a current project,

license activation.

But not only the functionality of wizards is important. To make your work more comfortable we tried to create them nice and user friendly. So they have unified visual style and contains frameworks icons for better orientation.

Now lets take a look at a Project Import Wizard.

So what you think, will the wizards help you work faster? And do you like it? Discuss below.

ORM Designer offers a lot of functions and features. However, for some new users it doesn’t have to be exactly clear how ORM Designer can help them and what the core features are. For those we have added new product tour to the application, which is available from version 2.2.1.734. Tour contains 10 graphical slide which should help better understand the work flow from the model import / creation up to the definitions export.

If you want to take a look at the tour slides right now, above is an online version.

We’d like to introduce you our improved color picker in ORM Designer which is available from version 2.1.12. You can download it HERE.

From now you can create nice and well arranged models quickly and simply so they will be easily readable for you and your colleagues.

Use your favorite colors to distinguish your project modules and regions. With the same color tones you can also highlight the ORM elements which are related. With color picker you can also colorize the comments in your model.

Simple and user friendly

To colorize the region or module use double click on required area and open the color picker.

You can choose from 3 color pallets. Select your favorite colors from basicor pastel pallet and mix the colors according to your preferences. Or you can simple use pre-defined color themes from the third bookmark.

Note: This feature is currently available only in beta-version 1.4.5. If you want to try it, please download latest version from http://www.orm-designer.com/beta.

Another news for Propel ORM users! Today I want to introduce you new Behaviours support feature.

ORM Designer supports two ways how to handle behaviours. The first way uses predefined behaviour list of already known behaviours, the second way uses customBehaviour type to define any behaviour by it’s name and params.

Use of custom behaviors

For setup custom behaviour to any of your tables, follow next steps:

Mark the requested table

In ORM Properties list click “Add item” next to “Behaviors” property

Select “customBehavior” from the list

Enter behaviour name to relevant “name” property

If your behavior has some parameters, add them by using “Add item” next to “CustomParameters” property

After that you have to enter the parameter name and the parameter value. You can add unlimited number of additional parameters.

And this is it ;-). Now when you export your model, you can see definitions like this:

Use of predefined behaviours

Using of predefined behaviours is better than custom one in several ways. As first, you don’t have to write behavior name again and again but you can simply select it from a list. The same thing is for the behavior parameters. The second advantage is that for specific parameter values there is an automatic completion and offering of preferred values (booleans, column names, … ). Now I show you how to define “Timestampable” behavior for a specific entity.

The first steps are the same as in the previous example. Select the requested entity, click “Add item” next to “Behaviors” property and select desired behavior. In our example “Timestampable”.

Now you can configure timestampable behavior by using two predefined properties “create_column” and “update_column”. When you click on the arrow next to property value, you can simply choose the one of available columns.

Each predefined behaviour has also an option to define another additional behaviour parameter. This can be simply achieve by using “customParameter” as well as in the case of the custom behaviors.

When you add one or more custom parameters you can simply configure them.

List of currently supported Propel ORM behaviors:

NestedSet

SoftDelete

Sluggable

Timestampable

Sortable

Aggregate

Versionable

I18n

Query Cache

AutoAddPk

Alternative Coding Standards

Note: Remembr that you can anytime use customBehavior if you need to use behavior not listed in list above. If you find any behavior which is common for more users and isn’t listed here, let us know and we will add it to ORM Designer configuration.

I hope you like this new function and as always if you find any bug or have any idea feel free to let us know!

The usage is simple, as usually ;-). Create an object, add few fields and commit changes. Then select desired field of the model and look to the ORM Properties editor:

Now, when you click on the add icon you can choose from the list of available validators or choose one of two special items “otherValidator” or “customValidator”:

OtherValidator use in special cases when you want to use validator which isn’t listed in this list. This validator choose if you would like to enter all validator identificators like name,value and message and these values will be added to the specific column.

CustomValidator is there for cases when you have implemented your own validator and want to use it in a specific column. In this case simply add a class name to this validator and ORM Designer will export it for you.

You can have zero,one or more validators of one type for one column because of multiple instances of custom or other validator. Here are few examples of already configured validators:

Now, when you press “Export” button, your XML file will look like this:

Today I want to show you a new small feature in ORM Designer 1.4.2 which helps you with navigation in the model. Until now, ORM Designer has shown only three different icons in a column for primary keys, foreign keys and other columns. Today we have added another three types for differentiation of NULL and NOT NULL columns. Empty diamonds beside the column names symbolize columns where NULL is allowed, filled diamonds where value is requried.

Today I want to show you a new feature of ORM Desigener for Doctrine ORM. It is an ability to define prefix for a whole module by which ORM Designer exports every entity with a name composed of this prefix and stand-alone name. In the past we received several requests from Zend Framework users for this feature, so here it is ;-).

This feature is the most useful for Zend Framework users, but might be used by every Doctrine ORM user. When using Doctrine ORM with Zend Framework you have to create the names of your entities with prefixes as Default_Model_Entity_Name or Forum_Model_Entity_Name (more about this topic is described in the article Doctrine1 Integration with Zend Framework).

And how does it work? Here is a screenshot of an example model:

In this model we’re using simple and nice entity names like “parent” or “child”. To “entity_prefix” attribute of each module we enter common prefix for all entities. After that when we export the model to the YAML file, we get a following result:

Today I would like to introduce you a new upcoming feature for CakePHP users. Nowadays ORM Designer can export php classes for your model objects. But when you want to use CakePHP migrations, you have to make the DB changes manually. This would change in the next ORM Designer release. Besides model classes ORM Designer knows how to generate CakeSchema (http://book.cakephp.org/2.0/en/console-and-shells/schema-management-and-migrations.html) object class which defines a whole DB structure.

Usage of this new function is very simple. In your current ORM Designer model choose “Project object”

In Project property window there is a new item Schema with child export-file. Select “export-file” property and click on the button with three dots and choose export file for schema file.

Now, if you export your model by using “Export to ORM” button, beside the model object files DB schema file will be also generated.

Today we finished beta support of CakePHP validators in ORM Designer. Thanks to Stefano Manfredini for giving us the idea and testing this new feature. You will find this new feature in upcoming ORM Designer 1.4.0 version build 417 and later.

Screenshot of testing model with entered validators:

Detailed screenshot to all supported validators in ORM Designer:

How to use it

If you want to add a validator to any field in your model, follow next instructions:

Select the field where you want to define new data validation.

In ORM Property window click on Validator item -> ”Add Item”.

After clicking on “Add Item”, the window with all supported validators appear. Choose the required validator and press OK.

After selecting validator from the list, you can add some additional parameters. You can do this by selecting added validator and entering value to the correspond property.

After you enter all required validators, you can “Export” them to base class.

And it’s done. No more complicated and confused array definitions, simple design it in ORM Designer ;-)

List of currently supported validators include their parameters:

alphaNumeric

between

minimum

maximum

blank

boolean

cc

type

deep

regex

comparison

operator

value

date

format

decimal

decimal

email

validate-host

equalTo

value

extension

value

ip

isUnique

minLength

value

maxLength

value

money

position

multiple

in

min

max

inList

values

numeric

notEmpty

phone

reg-ex

country

postal

reg-ex

country

range

minimum

maximum

ssn

reg-ex

country

url

strict

reg-ex

regex

own-function

name

params

All validators have folllowing commont properties:

name: Rule name used in definition array when field has multiple validators

One of other major features introduced in ORM Designer 1.4.0 is inheritance support. Currently supported frameworks are PHP Doctrine and Doctrine2.

There are several ways how to create inheritance between entities.

1) Inheritance tool

If you want to use inheritance tool, first select this tool on the ribbon window:

With this tool selected click on base entity from which you want to inherit.

Next click on entity that should be derived from base entity.

Once the inheritance is created, you can configure more parameters in the Property editor.

2) Inheritance wizard

If you want to use inheritance wizard, select entity in model and use “Create Inheritance”command from ribbon tab “Editing”.

In the Create New Inheritance wizard select base and derived entity from the list of entities in the combo boxes.

You can also select type of inheritance, discriminator field and discriminator value for created inheritance. More information about additional parameters is at the end of this article.

3) Create inheritance in project tree

You can also create inheritance through project tree. Simply select entity (which will be used as the base entity for inheritance) in the project tree and select “Add Inheritance” in the context menu (right-click on the entity). New inheritance wizard will be executed after this step (same wizard as in previous step).

4) Create inheritance in entity edit window

Another way how to start “New Inheritance Wizard” is through the edit entity window. Select “Inheritance” tab in the “Edit entity” window. In this tab select “Add Inheritance” from top tool bar to start “New Inheritance Wizard”. This tab also contains list of all extending and base entities.

Inheritance Additional parameters

Type of inheritance is ORM framework dependent. For PHP Doctrine framework is available Simple inheritance, Concrete inheritance or Column aggregation inheritance. For Doctrine2 is currently available Single table inheritance and Class table inheritance.

Note: Mapped superclass isn’t currently supported, because there is no way how to define it in YAML or XML file format.

One week after first ORM Designer 1.4.0 public beta release we’re finishing full support of Model Inheritance. Inheritance will be available for Doctrine and Doctrine2 ORM frameworks. Within a few weeks we want to implement inheritance support also for the new version of Propel 1.5..

Bellow is a screenshot of simple model with inheritance and association. On the right side of the screen is a detail of inheritance editor.

ORM Designer 1.4.0 is almost here and we want to give you yet another peek of what is coming. ORM property editor is the core feature since the first release of ORM Designer but it can be sometimes hard to use and understand which values to fill. Especially association configuration (“alias” / “foreignAlias”, “type” / “foreignType”, “cascade” / foreignCascade”) was one of these cases. Some of these association properties were side-dependent and others were same for both sides (in Doctirne ORM for example database attribute “onDelete”). From now on you’ll find side-dependent properties grouped by owning-side and inverse-side with destination table hint for better orientation.

When we started implementing Doctrine 2 support we had to deal with many new ORM framework features. Doctrine 2 has many new associations and the association definition is more descriptive than before. To solve this problem we hacked the powerful ORM property editor. Bellow you can see some of the new features. You get direct configuration of object properties with predefined values and validators. And as you are used to from Doctrine 1, Propel and CakePHP you get inline help on the places that might be confusing.

ORM property editor object and field:

Next step before releasing public version is ORM and ERD terminology unification. It’s a bit confusing in current versions when you are editing ORM application model and all model components are named as you are used in ERD (e.g. on the first screenshot is “object” still called “table”. Relation is called “foreign-key”,…).

After serveral weeks of intensive work on ORM Designer we’re almost done finishing Doctrine 2 support. You can find two new screenshot bellow with correctly imported Doctrine 2 model. Used models can be found in Doctrine 2 unit tests.

First alpha version is almost ready to be released, we have to do some final touches to the user interface.

Screenshot of CMS testing project:

Screenshot of Navigation testing project:

Screenshot of import project screen in ORM Designer:

In this post I want to show you one of the new features to be released in ORM Designer 1.4.x. ORM Designer works differently with core properties and ORM framework dependent properties. This is due to different features provided by ORM frameworks. For example column core properties are name, type, length, description etc. and ORM properties scale and unsigned in Doctrine ORM.

With the coming release of ORM Designer with Doctrine 2 we have to do refactoring of many windows. Also some of the properties previously located under ORM dependent properties would be moved to the core properties. As a result you should be able to faster and easier define foreign and local alias of relationship/association and other common tasks. As this would be a change in the way you were used to work before we wanted to make sure you’ll find what you are looking for. We’ve merged core properties and ORM dependent properties into a single window so you could see all applicable properties at the same place.

One of new features in upcoming ORM Designer 1.4.x will be updated error handlers. No more old unmeaning error boxes with short message. New handlers will have intuitive gui with well arranged controls.

Log Output

The main change will be a new Log output tab where user will found detailed information about raised exception. This tab will contain more detailed information about the error or raised exception. When user will work with new ORMD script system and running script will cause the error, this tab will contain the log of script execution with all variables and their values. (Script system is also developed for 1.4.x version, more about it in next post).

ORM Designer released

Today we have officially released our application, ORM Designer, to public. For more than 3 years, we have used it as an internal tool for our Symfony and Propel/Doctrine based commercial development. Since it helped us a lot, we decided to offer it to more users.

ORM Designer will allow you to design your schema definitions using ER diagrams. You won’t have to write your XML/YML definiton files manually from scratch. You won’t have to keep up-to-date documentation and diagrams in another tool. Everything will be in one place: you will design your models visually in ORM Designer, and ORM Designer will then generate the code.

Try our application out, you will like it. And let us know your comments or ideas, we are interested in your opinions.

Application is offered for a starting price of €99. This includes a year of support and updates for free. After this period, you can extend your maintenance for another year. Each extension will cost 30% of the original price.