Discussion:
Migrations and Prototypes Question
Tim Worman
2018-10-19 20:08:37 UTC
Permalink
I’ve got a conundrum and I’m hoping someone can help with it.

My model has some date value attributes defined in an entity (not timestamp). In one case I’m using the ‘date’ prototype and in another I’m testing the ‘javaLocalDate’ prototype. When using these prototypes, all the value conversions, etc., in the model are correct. They work. But I’ve always been really flummoxed that migrations will never set the external fields as ‘date’ types in the target database.

So, I’ve been digging in to try and get to the bottom of it.

My databases (OpenBase and MySQL) both support ‘date’ types. In my Wonder version, OpenBase and MySQL plugins support the more modern EOSchemaSynchronizationFactory and in both cases the proper synchronization factory is initialized when needed.

I’m overriding createTableStatementsForEntityGroup(NSArray entities)…

Good, I have entities here...but when I log out the entities (and attributes), none of the metadata about the attributes’ prototypes, value conversions, etc., that appear in Entity Modeler are there - in other words I have no way to capture the data type and override the external type that is being sent to the database. When I log them out, all of the types are set to NSTimestamp.

Does anyone have any clues, tips, (or just hazard signs) that they can share for why I’m finding this impossible?

Tim
UCLA GSE&IS
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (Webobjects-***@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/uoh8%40ml-in.narkive.net

This e
Samuel Pelletier
2018-10-21 19:05:41 UTC
Permalink
Hi Tim,

I have the same problem with FrontBase and found where the code is but never tried to fix it.

If I remember correctly, the code you are looking for is in the WOLips eclipse plugin in the EOModeler module. I do not think it would be really hard to fix but I do not have a working setup for WOLips development.

Samuel
Post by Tim Worman
I’ve got a conundrum and I’m hoping someone can help with it.
My model has some date value attributes defined in an entity (not timestamp). In one case I’m using the ‘date’ prototype and in another I’m testing the ‘javaLocalDate’ prototype. When using these prototypes, all the value conversions, etc., in the model are correct. They work. But I’ve always been really flummoxed that migrations will never set the external fields as ‘date’ types in the target database.
So, I’ve been digging in to try and get to the bottom of it.
My databases (OpenBase and MySQL) both support ‘date’ types. In my Wonder version, OpenBase and MySQL plugins support the more modern EOSchemaSynchronizationFactory and in both cases the proper synchronization factory is initialized when needed.
I’m overriding createTableStatementsForEntityGroup(NSArray entities)…
Good, I have entities here...but when I log out the entities (and attributes), none of the metadata about the attributes’ prototypes, value conversions, etc., that appear in Entity Modeler are there - in other words I have no way to capture the data type and override the external type that is being sent to the database. When I log them out, all of the types are set to NSTimestamp.
Does anyone have any clues, tips, (or just hazard signs) that they can share for why I’m finding this impossible?
Tim
UCLA GSE&IS
_______________________________________________
Do not post admin requests to the list. They will be ignored.
https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (Webobjects-***@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/uoh8%40ml-in.narkive.net

This email sent to uoh
Tim Worman
2018-10-22 19:09:05 UTC
Permalink
Thanks Samuel,

I don’t have a working wolips dev environment either. It may not be worth it to dig deeper. I’m still a little mystified though as to why none of the attribute metadata from the model is available to the sychronization frameworks. I’m sure there’s a great explanation but that seems like a huge gap.

T
Post by Samuel Pelletier
Hi Tim,
I have the same problem with FrontBase and found where the code is but never tried to fix it.
If I remember correctly, the code you are looking for is in the WOLips eclipse plugin in the EOModeler module. I do not think it would be really hard to fix but I do not have a working setup for WOLips development.
Samuel
Post by Tim Worman
I’ve got a conundrum and I’m hoping someone can help with it.
My model has some date value attributes defined in an entity (not timestamp). In one case I’m using the ‘date’ prototype and in another I’m testing the ‘javaLocalDate’ prototype. When using these prototypes, all the value conversions, etc., in the model are correct. They work. But I’ve always been really flummoxed that migrations will never set the external fields as ‘date’ types in the target database.
So, I’ve been digging in to try and get to the bottom of it.
My databases (OpenBase and MySQL) both support ‘date’ types. In my Wonder version, OpenBase and MySQL plugins support the more modern EOSchemaSynchronizationFactory and in both cases the proper synchronization factory is initialized when needed.
I’m overriding createTableStatementsForEntityGroup(NSArray entities)…
Good, I have entities here...but when I log out the entities (and attributes), none of the metadata about the attributes’ prototypes, value conversions, etc., that appear in Entity Modeler are there - in other words I have no way to capture the data type and override the external type that is being sent to the database. When I log them out, all of the types are set to NSTimestamp.
Does anyone have any clues, tips, (or just hazard signs) that they can share for why I’m finding this impossible?
Tim
UCLA GSE&IS
_______________________________________________
Do not post admin requests to the list. They will be ignored.
https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (Webobjects-***@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/uoh8%40ml-in.narkive.net

This email sent to ***@m
Wolfgang Hartmann
2018-10-23 19:57:13 UTC
Permalink
Hy,

I've never used WO-Migrations/Schema-Generation but I think the problem is related to different ClassLoaders:


* The ERPrototypes are in a project in your workspace or installed locally. They can be accessed by the classloader of your running WO-Application. They are not bundled with WOLips because the Apple-WO-Licence does not allow that.
* The WO-Migration/Schema-Generation-Process seems to run in another classloader.

The Classloader-Issue is related to different areas of WOLips/EOF.

* The Cayenne-Model-Generation uses the workaround of a running application. See JavaDoc in wonder/Frameworks/Misc/ERCayenne/Sources/er/cayenne/CayenneConverter.java
* The SQL-Generation-Utility links the classloader of your EOModeler with the core-plugin-classloader. See my explanation in https://github.com/wocommunity/wolips/pull/116 (chapter 'Classloading and NextStep-Classes')
* The Entity-Generation with Velocity configures the Velocity-Classloader explicitly. See wolips/wolips/core/plugins/org.objectstyle.wolips.eogenerator.core/java/org/objectstyle/wolips/eogenerator/core/runner/VelocityEOGeneratorRunner.java

Maybe some classloader-setup is missing for the Migration/Generation-process. All this workaround would not be necessary if Apple would have allowed that the EOF-NS-Classes could be used within WOLips...

Best Regards,
Wolfy


________________________________
Von: Webobjects-dev <webobjects-dev-bounces+halbeisen=***@lists.apple.com> im Auftrag von Tim Worman <***@thetimmy.com>
Gesendet: Montag, 22. Oktober 2018 21:09
An: Samuel Pelletier
Cc: WebObjects-Dev Mailing List List
Betreff: Re: Migrations and Prototypes Question

Thanks Samuel,

I don’t have a working wolips dev environment either. It may not be worth it to dig deeper. I’m still a little mystified though as to why none of the attribute metadata from the model is available to the sychronization frameworks. I’m sure there’s a great explanation but that seems like a huge gap.

T
Post by Samuel Pelletier
Hi Tim,
I have the same problem with FrontBase and found where the code is but never tried to fix it.
If I remember correctly, the code you are looking for is in the WOLips eclipse plugin in the EOModeler module. I do not think it would be really hard to fix but I do not have a working setup for WOLips development.
Samuel
I’ve got a conundrum and I’m hoping someone can help with it.
My model has some date value attributes defined in an entity (not timestamp). In one case I’m using the ‘date’ prototype and in another I’m testing the ‘javaLocalDate’ prototype. When using these prototypes, all the value conversions, etc., in the model are correct. They work. But I’ve always been really flummoxed that migrations will never set the external fields as ‘date’ types in the target database.
So, I’ve been digging in to try and get to the bottom of it.
My databases (OpenBase and MySQL) both support ‘date’ types. In my Wonder version, OpenBase and MySQL plugins support the more modern EOSchemaSynchronizationFactory and in both cases the proper synchronization factory is initialized when needed.
I’m overriding createTableStatementsForEntityGroup(NSArray entities)…
Good, I have entities here...but when I log out the entities (and attributes), none of the metadata about the attributes’ prototypes, value conversions, etc., that appear in Entity Modeler are there - in other words I have no way to capture the data type and override the external type that is being sent to the database. When I log them out, all of the types are set to NSTimestamp.
Does anyone have any clues, tips, (or just hazard signs) that they can share for why I’m finding this impossible?
Tim
UCLA GSE&IS
_______________________________________________
Do not post admin requests to the list. They will be ignored.
https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (Webobjects-***@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/halbeisen%40hotmail.com

This email sent to ***@hotmail.com

Loading...