[Pharo-project] [ANN][Beta Release] DBXTools - Magritte Scaffolding - Phoseydon
Hi! I'm glad to announce the beta version of Phoseydon, one of the new dbxtalk tools developed as part of the summer of talk project, supported by ESUG. So, *What is Phoseydon?* It is a tool aimed to model and create applications easily, as Ruby does with Rails or python with Django. You describe a model, and from that model a relational database + an object model + an ORM mapping are fed from that model. *What does Phoseydon beta includes?* By now, it reads a database schema, builds a model description from it and then allows us to: - write classes from that description. - serialize that description as Magritte descriptions on the created classes. - build a Glorp mapping from that description. Glorp descriptions right now support Simple mappings (Strings, numbers, booleans..), OneToOne relationships, and ManyToOne relationships. *What does it do in the background?* It tries to explode Magritte benefits to create apps. The model's description is just a magritte descrition, so our class writer, magritte serializer and Glorp mapping builder use magritte visitors to consume that information. This allows people to build i.e. SOAP web services from these same magritte descriptions. *Where is the documentation? *Download info from: http://dbxtalk.smallworks.com.ar/pier/Download First Phoseydon doc: http://dbxtalk.smallworks.com.ar/pier/Documentation/creating-your-first-dbx-... *What is to come?* - Editing your model descriptions in runtime - Create your model descriptions without a database - More easy Glorp mappings support :) (like embedding objects, inheritance and more collections kinds) Please, feel free to provide feedback, critics and suggestions :). You'll find the project's issue tracker and mailing list @ http://dbxtalk.smallworks.com.ar/pier/Support Cheers, The DBXTalk Team
You guys are doing some fabulous and much needed work! Cheers r On 26 December 2011 18:46, Guillermo Polito <guillermopolito@gmail.com>wrote:
Hi!
I'm glad to announce the beta version of Phoseydon, one of the new dbxtalk tools developed as part of the summer of talk project, supported by ESUG.
So,
*What is Phoseydon?* It is a tool aimed to model and create applications easily, as Ruby does with Rails or python with Django. You describe a model, and from that model a relational database + an object model + an ORM mapping are fed from that model.
*What does Phoseydon beta includes?* By now, it reads a database schema, builds a model description from it and then allows us to: - write classes from that description. - serialize that description as Magritte descriptions on the created classes. - build a Glorp mapping from that description.
Glorp descriptions right now support Simple mappings (Strings, numbers, booleans..), OneToOne relationships, and ManyToOne relationships.
*What does it do in the background?* It tries to explode Magritte benefits to create apps. The model's description is just a magritte descrition, so our class writer, magritte serializer and Glorp mapping builder use magritte visitors to consume that information. This allows people to build i.e. SOAP web services from these same magritte descriptions.
*Where is the documentation? *Download info from: http://dbxtalk.smallworks.com.ar/pier/Download First Phoseydon doc: http://dbxtalk.smallworks.com.ar/pier/Documentation/creating-your-first-dbx-...
*What is to come?* - Editing your model descriptions in runtime - Create your model descriptions without a database - More easy Glorp mappings support :) (like embedding objects, inheritance and more collections kinds)
Please, feel free to provide feedback, critics and suggestions :). You'll find the project's issue tracker and mailing list @ http://dbxtalk.smallworks.com.ar/pier/Support
Cheers, The DBXTalk Team
Guillermo Polito wrote:
*What does Phoseydon beta includes?* By now, it reads a database schema, builds a model description from it and then allows us to: - write classes from that description.
I am very interested in the programmatic creation of classes. Although my application is not quite related to database schema. Instead I have a UML model stored in a database basically defined by two tables t_objects and t_connector from which I need to create Smalltalk classes, instance variables, and association & aggregate relationships. I tracked down a lot of what I want to the methods... DBXMagritteClassBuilderVisitor>>visitDBXEntity: aDBXEntity for which the answer was obvious in hindsight - just replicating the call to Object>>subclass::: DBXMagritteClassBuilderVisitor>>buildAccessorForAttribute: attribute inClass: aClass could you give me a pointer to read up on what the curly-brace-numbers are? btw, Can you advise how is the compiling activated? If you had about 800 classes that need to be created, would temporarily turning off the compile assist the program execution time significantly? regards, Ben
DBXMagritteClassBuilderVisitor>>buildAccessorForAttribute: attribute inClass: aClass
could you give me a pointer to read up on what the curly-brace-numbers are?
The curly braces in the string are just for string formatting, the second one is a dynamic array: 'hello {1}! How's your {2}?' format: { 'Ben' 'metaprogramming' }. What that method does is creating the accessors, ending up in a final string like this for the mutator: 'someAccessor: aParam instVar := aParam'
btw, Can you advise how is the compiling activated? If you had about 800 classes that need to be created, would temporarily turning off the compile assist the program execution time significantly?
I cannot give a good answer here. Maybe someone has better knowledge on the compiler and it's settings. Maybe creating a giant script with all the class creations is faster than 800 scripts. Or Maybe not significantly :P. Maybe disabling the UI notification enhances it a little bit. I've never worried about it a lot :P. Cheers, Guille
if you compileSilently instead of compile the changes are not logged and this improves the time. Stef On Dec 27, 2011, at 6:15 PM, Guillermo Polito wrote:
DBXMagritteClassBuilderVisitor>>buildAccessorForAttribute: attribute inClass: aClass could you give me a pointer to read up on what the curly-brace-numbers are?
The curly braces in the string are just for string formatting, the second one is a dynamic array:
'hello {1}! How's your {2}?' format: { 'Ben' 'metaprogramming' }.
What that method does is creating the accessors, ending up in a final string like this for the mutator:
'someAccessor: aParam instVar := aParam'
btw, Can you advise how is the compiling activated? If you had about 800 classes that need to be created, would temporarily turning off the compile assist the program execution time significantly?
I cannot give a good answer here. Maybe someone has better knowledge on the compiler and it's settings. Maybe creating a giant script with all the class creations is faster than 800 scripts. Or Maybe not significantly :P. Maybe disabling the UI notification enhances it a little bit.
I've never worried about it a lot :P.
Cheers, Guille
On Tue, Dec 27, 2011 at 7:53 AM, Ben Coman <btc@openinworld.com> wrote:
Guillermo Polito wrote:
*What does Phoseydon beta includes?* By now, it reads a database schema, builds a model description from it and then allows us to: - write classes from that description.
I am very interested in the programmatic creation of classes. Although my application is not quite related to database schema. Instead I have a UML model stored in a database basically defined by two tables t_objects and t_connector from which I need to create Smalltalk classes, instance variables, and association & aggregate relationships. I tracked down a lot of what I want to the methods...
DBXMagritteClassBuilderVisitor**>>visitDBXEntity: aDBXEntity for which the answer was obvious in hindsight - just replicating the call to Object>>subclass:::
DBXMagritteClassBuilderVisitor**>>buildAccessorForAttribute: attribute inClass: aClass could you give me a pointer to read up on what the curly-brace-numbers are?
btw, Can you advise how is the compiling activated? If you had about 800 classes that need to be created, would temporarily turning off the compile assist the program execution time significantly? regards, Ben
profile it using spyOn: to see where the time goes, and then you'll know. -- best, Eliot
participants (5)
-
Ben Coman -
Eliot Miranda -
Guillermo Polito -
Ramiro Diaz Trepat -
Stéphane Ducasse