Hi Pascal,
thanks for your work :-) It's great to have people working on improving this
since it's at the heart of what makes XWiki powerful.
do you remember my work on classes and objects?
> I fear the answer is "no" :)
We certainly do :-)
> Anyway, I have been working on some other critical projects so I haven't
> been able to work on that for some time.
> But, now I have restarted my study for my current needs.
> The idea was to provide a simple way to manage classes, to delete/restore
> class properties and to synchronize objects with these classes.
>
> As I was not really happy about the result of my previous work based on
> class versioning (I found it too much intrusive in XWiki code and
> complicated), I totally changed my approach into something much lighter.
> The idea is really simple:
> I propose to add the feature of enabling/disabling class properties.
> * If you disable a property, it is only "hidden" without being deleted so
> you can modify the structure of the class without losing anything.
> * Then the disabled properties are also "hidden" for the objects
> instantiating this class and the valued fields are also not lost.
> * If you add a new property to the class, all objects will inherit a new
> field with the default value.
> * If you enable a disabled property, all the objects owning the field
> re-find it and the objects not having the field now have it with the
> default
> value.
> * you could also delete a disabled field from an object for some
> optimization issues.
That sounds god as it solves the issue without deleting the data. The
developer shouldn't forget to update his / her ClassSheet pages in order to
remove the $doc.display('NowHiddenProperty') afterwards I guess...
> I also propose to add the "remove property" feature which would be quite
> protected but which is useful: you simply delete the property from the
> class.
> * All objects having the "removed" field are no more synchronized with the
> class.
> * the removed field still exist in the object but is no more available to
> classical display functions which use "class properties" to find object
> fields.
> * the removed field can be deleted from the object to resynchronize the
> object to the class
> * if a new property with the same type and name is re-added to the class,
> the object re-finds its existing field.
What about adding the ability to automatically synchronize all objects at
once (that is, deleting the property from all objects) ? This feature would
be even more protected, but I can see its usefulness (for instance, when
I've just started writing a class, added a couple objects then thought about
a better way to do what I wanted -> little data to lose, would help me gain
some time & avoid having me go to 10 objects to delete the property from
each of them).
> The way to do it is quite simple: just add a "enabled" field to the
> PropertyClass and manage it in the code.
>
> I have modified a bit XWiki-Core and some velocity scripts but it seems
> really light without any really new logic
>
> Are you interested in this?
I think so, though I'll let Vincent / Sergiu provide a Developer / Committer
answer.
By the way, you might also be interested in
http://dev.xwiki.org/xwiki/bin/view/Design/OverhaulOfXWikiClassesAndObjectsManagement...
Guillaume
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs