Wednesday, May 21, 2008

This (now-lastPost.time) In WOLips

Thanks to the many additional contributors we've had in the past few months -- Quinton Dolan, Andrew Lindesay, Lachlan Deck, Henrique Prange, David Avendasora, as well as the usual crew (and if I missed anyone, I apologize). The changes below represent the cumulative efforts of everyone. Currently these changes are only available in the nightly build. This will probably be moving to stable prior to WOWODC.

API Editor
API editor has been visually redesigned to hopefully make it easier to use. "Required" and "Settable" actually ... work properly now. Also, required bindings appear bolded in the binding list. There is still not an editor for complex binding validations, but Entity Modeler is getting a graphical qualifier editor (visually "inspired" by Core Data Modeler) that hopefully can be used to render/edit binding validations also.


You can now open API files in the API editor that do not have a corresponding WOComponent.

Component Editor
Completion works on Direct Action class names, Direct Action names (though it's not quite smart enough to know which DA's to restrict to based on the Direct Action class name, yet, so you'll get all DA methods shown as completion proposals), page names, framework names, resources, and actions. Resource completion is sort of sketchy as well, because the code isn't passing through flattening rules. I think if you use Wonder-style projects it should work out. If you flatten, it probably won't. All of these completion types require that your API files are defined properly with the appropriate binding type.

Component Live Search should work much better on Windows now.

Lots of fixes and cleanups in the Component Creation Wizard (particularly related to character encodings).

The default application and framework templates set the encoding of Components to UTF-8 by default.

Refactor=>Renaming components properly renames all the component files (java, api, etc). Previously this worked if you renamed the Java file but not if you renamed the WO.

Lots lots lots of fixes and enhancements to formatting component HTML. It should be MUCH better now.

Your selections in the Add Key/Add Action dialogs are preserved across executions now.

"Add Key" without an accessor creates a public ivar now.

Component validation runs in a background thread. This prevents the component editor from blocking the opening of your component while it performs a relatively expensive binding validation. There are still a little wonkiness with this -- every once in a while I lose my validations on a component until I resave it, but the performance increase for opening components is pretty substantial.

Initial support for Groovy components (Q can provide more info on this).

Keypath completion works inside of OGNL bindings.

Obnoxious long-standing bug where keypath completion would not work on values of unknown attributes is finally fixed.

Entity Modeler
SQL Generation properly passes through the necessary flags for index in 5.4 (though this requires 5.4.2).

Entity Modeler can now load EOModels from inside of jar frameworks.

Entity Modeler is much slicker about how it does live rename syncing. If you use infix caps, prefix caps, underscores, all uppercase, all lowercase, and several combinations of these, synced renames understand that. For example, if your attribute is named "firstName" and your column name is "first_name" if you rename the attribute to "personFirstName" it will sync-as-you-type the column name to be "person_first_name". It will also try to guess what it should use based on other attributes and entities in your model. There are still some things it misses, but it should be a much citizen in non-infix-caps database environments.

You can now provide a "parent class override" for an entity. This class will be set as the parent of your _Entity class. For instance rather than the EOGenericRecord-variant (which allows for per-entity custom "generic record" classes). This is set in the Advanced Entity Properties dialog.

The new relationship dialog has been redesigned. There's ONE more redesign coming to clarify the order of operations if you don't want to create an inverse relationship:


Entity Modeler now provides an option for selecting the REST adaptor (for Wonder's JavaRESTAdaptor).

Attributes and relationships now expose a "common class property" flag that can be used in eogenerator to generate methods that are shared between client and server classes for Java Client.

It's not available yet, but a graphical qualifier builder that will function pretty similarly to the predicate builder in Core Data Modeler is almost ready. This will allow you to build qualifiers completely without touching the big text area.

If you use Wonder and the Migration API, you know how annoying it can be to write your "zero" migration -- you spend all this time modeling your entities, and then you have to turn around and manually build the zero migration with the API. Entity Modeler can now generate a zero migration for you. Just select the model or set of entities to generate and click the "Generate Migration" button in the toolbar or the context menu and it will spit out:



EOGenerator
Entity Modeler and Velocity EOGenerator have exposed several new features for making it easier to write eogenerated Java Client classes.

EOModelDoc
EOModelDoc shows a list of all entities that reference an entity at the top of the entity docs.

EOModelDoc shows a list of all sub-entities at the top of the entity docs.

Building
The long-standing bug with component patternsets evaluating incorrectly on Windows has finally been fixed.

Maven (bear with me here, I don't use Maven, so these are mostly transcribed)
WO Maven plugin now has "install" and "deploy" goals.

woboostrap adds WO 5.4 libraries now.

New archetype for WebObjects applications conforms to new archetype plugin

Rule Editor
There's been a D2W rule editor inside of WOLips for a long time, but it's always .... well it's just been really broken. Finally the reigns have been picked up and a still-alpha, but functional rule editor plugin has been committed. So if you're not on OS X and can't use RuleModeler, you actually have some hope of a refreshed editor showing up.

Thanks again to everyone who has been involved. It's been very nice seeing submissions from several new faces, and we have plenty of ideas left to implement and more cool things coming.

12 comments:

Arroz said...

First, consider all the "Whoa! Nice work! Yeah!" stuff said! :)

Second, the zero-migration thing seems really cool, and I strongly encourage you to do it for non-zero migrations.

Kieran said...

awesome, awesome, awesome. Great Work all woproject team. Thanks for the great enhancements.

Robert Huber said...

Hello

I was very surprised to find a standalone of the Entity Modeler! As we have in our company quite a few EOModels, I am of course very happy to see a replacement for the EOModeler. Do I read correctly that there will be a diagram view available in the future? That would be great!
Now I am wondering if I can use Entity Modeler and still use after editing a model in Entity Modeler use the file in EOModel. Where are the limits? For example, what happens when using Comments in Entity Modeler (thanks for that, it's very useful)

Best regards, Robert

PS: When using the New menu command, it's the same as the Open menu! A bug?

Mike Schrag said...

Going between the two should always work. We write custom extensions into userInfo dictionaries. I have an alpha of a diagram view, but I don't know when it will be available. New/Open probably do look the same -- To create a new model, I think you have to choose a folder to write into because it needs to know the location of the model to determine project dependencies.

Robert Huber said...

Hello Mike

Thanks for the info. So I am waiting (inpatiently) for the release of the diagramm view/editor.
You are right that I missed that New asks for the folder to storethe new model, it works of course! Sorry.

Regards and thanks a lot, Robert

PS: Just for curiosity: Why is the standalone version more looking like a windows app instead of a Mac app (on a Mac)? For example tab appearances?

Mike Schrag said...

I wouldn't hold your breath for the diagram view -- it's a very low priority.

As far as the look, it's an Eclipse RCP application, so it just looks like whatever Eclipse looks like. It actually doesn't look like Windows ... Tabs look weird on all platforms.

Robert Huber said...

Thanks for the explanation!

I still hold my breath as the diagram view is the only view (in a model with let's say 100 entities and lots more relationships) where you can see and discuss (and verify) for example the delete rules, the optionality and the naming of relationships. All other (list views) don't help much here. My opinion (i. e. experience) only.
So I very much hope for the diagram view :-)

Best regards, Robert

Robert Huber said...

Hi

When I try to generate SQL code from an eomodel (originally made in EOModeler), I getthe following error:

There was no valid EOF ClassLoader factory defined.

org.objectstyle.wolips.eomodeler.core.model.EOModelException: There was no valid EOF ClassLoader factory defined.
at org.objectstyle.wolips.eomodeler.core.model.IEOClassLoaderFactory$Utility.createClassLoader(IEOClassLoaderFactory.java:56)
at org.objectstyle.wolips.eomodeler.actions.GenerateSQLDialog.getEOModelClassLoader(GenerateSQLDialog.java:254)
at org.objectstyle.wolips.eomodeler.actions.GenerateSQLDialog.generateSql(GenerateSQLDialog.java:294)
at org.objectstyle.wolips.eomodeler.actions.GenerateSQLDialog$1.run(GenerateSQLDialog.java:276)
at java.lang.Thread.run(Thread.java:613)

Robert Huber said...

Hi All

I forgot to mention I am using the standalone Entity Modeler version 1.0.4.

I just opened a model made in EOModeler version 5.3 in the Entity Modeler and get above message.
Following what the console says:

===== Montag, 16. Juni 2008 14:34 Uhr Europe/Zurich =====
AbstractEOClassLoader.createClassLoaderForModel: TrackIT ...
AbstractEOClassLoader.createClassLoaderForModel: TrackIT ...
IDEAProjectEOModelGroupFactory.findIdeaProjectFilesInFolder: Looking in /Users/robert/Desktop/TrackIT.eomodeld ...
IDEAProjectEOModelGroupFactory.findIdeaProjectFilesInFolder: Looking in /Users/robert/Desktop ...
IDEAProjectEOModelGroupFactory.findIdeaProjectFilesInFolder: Looking in /Users/robert ...
IDEAProjectEOModelGroupFactory.findIdeaProjectFilesInFolder: Looking in /Users ...
IDEAProjectEOModelGroupFactory.findIdeaProjectFilesInFolder: Looking in / ...
org.objectstyle.wolips.eomodeler.core.model.EOModelException: There was no valid EOF ClassLoader factory defined.
at org.objectstyle.wolips.eomodeler.core.model.IEOClassLoaderFactory$Utility.createClassLoader(IEOClassLoaderFactory.java:56)
at org.objectstyle.wolips.eomodeler.actions.GenerateSQLDialog.getEOModelClassLoader(GenerateSQLDialog.java:254)
at org.objectstyle.wolips.eomodeler.actions.GenerateSQLDialog.generateSql(GenerateSQLDialog.java:294)
at org.objectstyle.wolips.eomodeler.actions.GenerateSQLDialog$1.run(GenerateSQLDialog.java:276)
at java.lang.Thread.run(Thread.java:613)

As I don't have any IDEAProject (it's an IDE, is it) and never used IDEA, it seems a bug to ask for that!?

Thanks for help, Robert

PS: It seems the function to directly display the table content within the Entity Modeler (compared to the EOModeler) is gone. Is that correct?

Mike Schrag said...

fetching data is not yet supported

What IDE are you using? If it's Xcode, that is not supported for loading dependencies. It should work for IDEA and for Eclipse projects.

GavinEadie said...

... this is really, really valuable work, Mike et al. Thank you.

Robert said...

What is the equivalent of WOLips/Mac WOD binding hover / cmd-click on Windows?