Multiple databases and migrations causing weird side affect

2010-08-04 Thread Joe Little
I have two databases, and two models with their own migrations
pointing at each. When I kick off an application tied to database and
model B, the migration kicks off with a fresh db as expected.
However, since one relation exists in B to an entity in A, it would
appear that migrations are kicking off to generate the model tables
for both A and B in Database B. Thus, after migrations, but code is
searching against empty tables generated in B for data in that was in
A.

I hope you followed along with the bouncing ball. It took a while to
see that the model was migrating these duplicate but empty tables into
db B. My Properties file only makes mention of migration models for B,
but I'm presuming that some dependency is being kicked off incorrectly
to cause this. Anyway to force a migration not to happen?

Here's an example from my dev machine and DBs. I have to define the
global for ERAttachment to work, and both Models A and B do have
references to ERAttachment.

dbConnectURLGLOBAL=jdbc:postgresql://localhost/gradoffice
dbConnectUserGLOBAL=postgres
dbConnectPasswordGLOBAL=
dbConnectPluginGLOBAL=PostgresqlPlugIn
dbConnectDriverGLOBAL=org.postgresql.Driver
dbConnectJDBCInfoGlobal=

gradoffice.URL=jdbc:postgresql://localhost/gradoffice
gradoffice.DBUser = postgres
gradoffice.DBPassword =
gradoffice.DBDriver = org.postgresql.Driver
gradoffice.DBPlugin = PostgresqlPlugIn
gradoffice.DBJDBCInfo =


admitarch.URL = jdbc:postgresql://localhost/admit-archive
admitarch.DBUser = postgres
admitarch.DBPassword =
admitarch.DBDriver = org.postgresql.Driver
admitarch.DBPlugin = PostgresqlPlugIn
admitarch.DBJDBCInfo =
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Multiple databases and migrations causing weird side affect

2010-08-04 Thread Joe Little
I'm on to something here. When I remove the relation and try to run,
this application is simply not fetching the model and loading it for
admitarch as defined in the Properties files below. Is that normal?

On Wed, Aug 4, 2010 at 4:41 PM, Joe Little jmlit...@gmail.com wrote:
 I have two databases, and two models with their own migrations
 pointing at each. When I kick off an application tied to database and
 model B, the migration kicks off with a fresh db as expected.
 However, since one relation exists in B to an entity in A, it would
 appear that migrations are kicking off to generate the model tables
 for both A and B in Database B. Thus, after migrations, but code is
 searching against empty tables generated in B for data in that was in
 A.

 I hope you followed along with the bouncing ball. It took a while to
 see that the model was migrating these duplicate but empty tables into
 db B. My Properties file only makes mention of migration models for B,
 but I'm presuming that some dependency is being kicked off incorrectly
 to cause this. Anyway to force a migration not to happen?

 Here's an example from my dev machine and DBs. I have to define the
 global for ERAttachment to work, and both Models A and B do have
 references to ERAttachment.

 dbConnectURLGLOBAL=jdbc:postgresql://localhost/gradoffice
 dbConnectUserGLOBAL=postgres
 dbConnectPasswordGLOBAL=
 dbConnectPluginGLOBAL=PostgresqlPlugIn
 dbConnectDriverGLOBAL=org.postgresql.Driver
 dbConnectJDBCInfoGlobal=

 gradoffice.URL=jdbc:postgresql://localhost/gradoffice
 gradoffice.DBUser = postgres
 gradoffice.DBPassword =
 gradoffice.DBDriver = org.postgresql.Driver
 gradoffice.DBPlugin = PostgresqlPlugIn
 gradoffice.DBJDBCInfo =


 admitarch.URL = jdbc:postgresql://localhost/admit-archive
 admitarch.DBUser = postgres
 admitarch.DBPassword =
 admitarch.DBDriver = org.postgresql.Driver
 admitarch.DBPlugin = PostgresqlPlugIn
 admitarch.DBJDBCInfo =

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Multiple databases and migrations causing weird side affect

2010-08-04 Thread Ramsey Lee Gurley
A possibly helpful email from May 6 on the wonder list:

 Hi Ricardo,
 
 I'm usually adding the relationships programatically in such situations.
 
 E.g.
 
 ERXEOAccessUtilities.createRelationship(
   contactModifier, // name
   PDBUUser.ENTITY_NAME, id, // from
   PDCrmContact.ENTITY_NAME, modifiedByID, // to
   true, // toMany
   EOEntityClassDescription.DeleteRuleDeny,
   false, // mandatory
   false, // class property
   false // propagate PK
 );
 
 Another more complex example:
 
 private void setupDynamicRelationships() {
   String ownerEntityName =  
 ERXProperties.stringForKey(PROPERTY_OWNER_ENTITY_NAME);
   if (ownerEntityName == null || .equals(ownerEntityName)) {
   log.warn(PROPERTY_OWNER_ENTITY_NAME +  is not set, not setting 
 up  
 owner support!);
   } else {
   EOEntity ownerEntity =  
 ERXEOAccessUtilities.entityNamed(ERXEC.newEditingContext(),  
 ownerEntityName);
   @SuppressWarnings(unchecked)
   NSArrayString primaryKeyAttributeNames =  
 ownerEntity.primaryKeyAttributeNames();
   if (primaryKeyAttributeNames.count()  1)
   throw new RuntimeException(Composite primary keys are 
 unsupported);
   String ownerEntityPrimaryKeyAttributeName =  
 primaryKeyAttributeNames.lastObject();
   ERXEOAccessUtilities.createRelationship(
   owner,
   PDIBArticle.ENTITY_NAME, ownerID,
   ownerEntityName, ownerEntityPrimaryKeyAttributeName,
   false, EOClassDescription.DeleteRuleNullify, false, 
 true, false);
   ERXEOAccessUtilities.createRelationship(
   articles,
   ownerEntityName, ownerEntityPrimaryKeyAttributeName,
   PDIBArticle.ENTITY_NAME, ownerID,
   true, EOClassDescription.DeleteRuleCascade, false, 
 true, false);
   }
 }
 
 For frameworks, I execute that in the framework principal. See  
 ERXFrameworkPrincipal#finishInitialization().
 For applications, in the Application class  
 (ERXapplication#didFinishLaunching() or finishInitialization()).
 
 Timo

Am 07.05.2010 um 01:51 schrieb Ricardo J. Parada:

 Framework A has an entity named 'A'.
 Framework B has an entity named 'B'
 
 I need to setup a to-one named toB which takes me from A--B.
 
 The only catch is that I don't want to introduce a dependency on  
 framework B in my application or framework A.
 
 If my application links against framework A only then Wonder throws  
 an exception at startup, which is a good thing. :-)
 
 But I do need to join from A to B somehow and keep these frameworks  
 independent of each other.
 
 Has anyone done this?
 
 I created a SimpleB entity that maps to the same table as B.  Then  
 setup A--SimpleB.  That works...  but I'm wondering if there's a  
 better way.  Like defining SimpleB in a core framework and then have  
 B entity extend SimpleB or something like that.
 
 Thanks,
 Ricardo





On Aug 4, 2010, at 7:57 PM, Joe Little wrote:

 I'm on to something here. When I remove the relation and try to run,
 this application is simply not fetching the model and loading it for
 admitarch as defined in the Properties files below. Is that normal?
 
 On Wed, Aug 4, 2010 at 4:41 PM, Joe Little jmlit...@gmail.com wrote:
 I have two databases, and two models with their own migrations
 pointing at each. When I kick off an application tied to database and
 model B, the migration kicks off with a fresh db as expected.
 However, since one relation exists in B to an entity in A, it would
 appear that migrations are kicking off to generate the model tables
 for both A and B in Database B. Thus, after migrations, but code is
 searching against empty tables generated in B for data in that was in
 A.
 
 I hope you followed along with the bouncing ball. It took a while to
 see that the model was migrating these duplicate but empty tables into
 db B. My Properties file only makes mention of migration models for B,
 but I'm presuming that some dependency is being kicked off incorrectly
 to cause this. Anyway to force a migration not to happen?
 
 Here's an example from my dev machine and DBs. I have to define the
 global for ERAttachment to work, and both Models A and B do have
 references to ERAttachment.
 
 dbConnectURLGLOBAL=jdbc:postgresql://localhost/gradoffice
 dbConnectUserGLOBAL=postgres
 dbConnectPasswordGLOBAL=
 dbConnectPluginGLOBAL=PostgresqlPlugIn
 dbConnectDriverGLOBAL=org.postgresql.Driver
 dbConnectJDBCInfoGlobal=
 
 gradoffice.URL=jdbc:postgresql://localhost/gradoffice
 gradoffice.DBUser = postgres
 gradoffice.DBPassword =
 gradoffice.DBDriver = org.postgresql.Driver
 gradoffice.DBPlugin = PostgresqlPlugIn
 gradoffice.DBJDBCInfo =
 
 
 admitarch.URL = jdbc:postgresql://localhost/admit-archive
 admitarch.DBUser = postgres
 admitarch.DBPassword =
 admitarch.DBDriver = 

Re: Multiple databases and migrations causing weird side affect

2010-08-04 Thread Joe Little
Thanks. I think my problem is more fundamental now since it can't find
any existing entities relative to the second defined database and
model. This has working for me in other other cases, but I'm wondering
if having both models depending on ERAttachment somehow disallows the
secondary database connection, or something similar. I'm simply not
connecting at all to one of my DBs.

On Wed, Aug 4, 2010 at 5:08 PM, Ramsey Lee Gurley rgur...@mac.com wrote:
 A possibly helpful email from May 6 on the wonder list:

 Hi Ricardo,

 I'm usually adding the relationships programatically in such situations.

 E.g.

 ERXEOAccessUtilities.createRelationship(
       contactModifier, // name
       PDBUUser.ENTITY_NAME, id, // from
       PDCrmContact.ENTITY_NAME, modifiedByID, // to
       true, // toMany
       EOEntityClassDescription.DeleteRuleDeny,
       false, // mandatory
       false, // class property
       false // propagate PK
 );

 Another more complex example:

 private void setupDynamicRelationships() {
       String ownerEntityName =
 ERXProperties.stringForKey(PROPERTY_OWNER_ENTITY_NAME);
       if (ownerEntityName == null || .equals(ownerEntityName)) {
               log.warn(PROPERTY_OWNER_ENTITY_NAME +  is not set, not 
 setting up
 owner support!);
       } else {
               EOEntity ownerEntity =
 ERXEOAccessUtilities.entityNamed(ERXEC.newEditingContext(),
 ownerEntityName);
               @SuppressWarnings(unchecked)
               NSArrayString primaryKeyAttributeNames =
 ownerEntity.primaryKeyAttributeNames();
               if (primaryKeyAttributeNames.count()  1)
                       throw new RuntimeException(Composite primary keys are 
 unsupported);
               String ownerEntityPrimaryKeyAttributeName =
 primaryKeyAttributeNames.lastObject();
               ERXEOAccessUtilities.createRelationship(
                       owner,
                       PDIBArticle.ENTITY_NAME, ownerID,
                       ownerEntityName, ownerEntityPrimaryKeyAttributeName,
                       false, EOClassDescription.DeleteRuleNullify, false, 
 true, false);
               ERXEOAccessUtilities.createRelationship(
                       articles,
                       ownerEntityName, ownerEntityPrimaryKeyAttributeName,
                       PDIBArticle.ENTITY_NAME, ownerID,
                       true, EOClassDescription.DeleteRuleCascade, false, 
 true, false);
       }
 }

 For frameworks, I execute that in the framework principal. See
 ERXFrameworkPrincipal#finishInitialization().
 For applications, in the Application class
 (ERXapplication#didFinishLaunching() or finishInitialization()).

 Timo

 Am 07.05.2010 um 01:51 schrieb Ricardo J. Parada:

 Framework A has an entity named 'A'.
 Framework B has an entity named 'B'

 I need to setup a to-one named toB which takes me from A--B.

 The only catch is that I don't want to introduce a dependency on
 framework B in my application or framework A.

 If my application links against framework A only then Wonder throws
 an exception at startup, which is a good thing. :-)

 But I do need to join from A to B somehow and keep these frameworks
 independent of each other.

 Has anyone done this?

 I created a SimpleB entity that maps to the same table as B.  Then
 setup A--SimpleB.  That works...  but I'm wondering if there's a
 better way.  Like defining SimpleB in a core framework and then have
 B entity extend SimpleB or something like that.

 Thanks,
 Ricardo





 On Aug 4, 2010, at 7:57 PM, Joe Little wrote:

 I'm on to something here. When I remove the relation and try to run,
 this application is simply not fetching the model and loading it for
 admitarch as defined in the Properties files below. Is that normal?

 On Wed, Aug 4, 2010 at 4:41 PM, Joe Little jmlit...@gmail.com wrote:
 I have two databases, and two models with their own migrations
 pointing at each. When I kick off an application tied to database and
 model B, the migration kicks off with a fresh db as expected.
 However, since one relation exists in B to an entity in A, it would
 appear that migrations are kicking off to generate the model tables
 for both A and B in Database B. Thus, after migrations, but code is
 searching against empty tables generated in B for data in that was in
 A.

 I hope you followed along with the bouncing ball. It took a while to
 see that the model was migrating these duplicate but empty tables into
 db B. My Properties file only makes mention of migration models for B,
 but I'm presuming that some dependency is being kicked off incorrectly
 to cause this. Anyway to force a migration not to happen?

 Here's an example from my dev machine and DBs. I have to define the
 global for ERAttachment to work, and both Models A and B do have
 references to ERAttachment.

 dbConnectURLGLOBAL=jdbc:postgresql://localhost/gradoffice
 dbConnectUserGLOBAL=postgres
 dbConnectPasswordGLOBAL=
 dbConnectPluginGLOBAL=PostgresqlPlugIn
 

Re: Multiple databases and migrations causing weird side affect

2010-08-04 Thread Joe Little
My connection dictionary only contains one DB (multiple times) instead
of the expect multiple DBs..

Aug 04 17:21:28 AdvisorImport[62414] WARN
er.extensions.eof.ERXModelGroup  - Clearing previous class
descriptions
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - Using JDBCPlugIn
'PostgresqlPlugIn' for jdbcadap...@1692466348
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - Using JDBCPlugIn
'PostgresqlPlugIn' for jdbcadap...@396836144
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - Using JDBCPlugIn
'PostgresqlPlugIn' for jdbcadap...@1688348273
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - Using JDBCPlugIn
'PostgresqlPlugIn' for jdbcadap...@832064157
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - Using JDBCPlugIn
'PostgresqlPlugIn' for jdbcadap...@1625488363
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  -  connecting with
dictionary: {plugin = PostgresqlPlugIn; username = postgres;
driver = org.postgresql.Driver; password = password deleted for
log; URL = jdbc:postgresql://localhost/gradoffice; }
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  -  === Begin
Internal Transaction
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - Using JDBCPlugIn
'PostgresqlPlugIn' for jdbcadap...@380449691
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - fetching JDBC Info
with jdbccont...@1159139518
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  -  connecting with
dictionary: {plugin = PostgresqlPlugIn; username = postgres;
driver = org.postgresql.Driver; password = password deleted for
log; URL = jdbc:postgresql://localhost/gradoffice; }
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - connection disconnected.
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  - fetching JDBC Info
with jdbccont...@1639291161
Aug 04 17:21:28 AdvisorImport[62414] DEBUG NSLog  -  connecting with
dictionary: {plugin = PostgresqlPlugIn; username = postgres;
driver = org.postgresql.Driver; password = password deleted for
log; URL = jdbc:postgresql://localhost/gradoffice; }

But again both models are defined and in the build path:
gradoffice.URL=jdbc:postgresql://localhost/gradoffice
gradoffice.DBUser = postgres
gradoffice.DBPassword =
gradoffice.DBDriver = org.postgresql.Driver
gradoffice.DBPlugin = PostgresqlPlugIn
gradoffice.DBJDBCInfo =

admitarch.URL = jdbc:postgresql://localhost/admit-archive
admitarch.DBUser = postgres
admitarch.DBPassword =
admitarch.DBDriver = org.postgresql.Driver
admitarch.DBPlugin = PostgresqlPlugIn
admitarch.DBJDBCInfo =

dbConnectURLGLOBAL=jdbc:postgresql://localhost/gradoffice
dbConnectUserGLOBAL=postgres
dbConnectPasswordGLOBAL=
dbConnectPluginGLOBAL=PostgresqlPlugIn
dbConnectDriverGLOBAL=org.postgresql.Driver
dbConnectJDBCInfoGlobal=

On Wed, Aug 4, 2010 at 5:14 PM, Joe Little jmlit...@gmail.com wrote:
 Thanks. I think my problem is more fundamental now since it can't find
 any existing entities relative to the second defined database and
 model. This has working for me in other other cases, but I'm wondering
 if having both models depending on ERAttachment somehow disallows the
 secondary database connection, or something similar. I'm simply not
 connecting at all to one of my DBs.

 On Wed, Aug 4, 2010 at 5:08 PM, Ramsey Lee Gurley rgur...@mac.com wrote:
 A possibly helpful email from May 6 on the wonder list:

 Hi Ricardo,

 I'm usually adding the relationships programatically in such situations.

 E.g.

 ERXEOAccessUtilities.createRelationship(
       contactModifier, // name
       PDBUUser.ENTITY_NAME, id, // from
       PDCrmContact.ENTITY_NAME, modifiedByID, // to
       true, // toMany
       EOEntityClassDescription.DeleteRuleDeny,
       false, // mandatory
       false, // class property
       false // propagate PK
 );

 Another more complex example:

 private void setupDynamicRelationships() {
       String ownerEntityName =
 ERXProperties.stringForKey(PROPERTY_OWNER_ENTITY_NAME);
       if (ownerEntityName == null || .equals(ownerEntityName)) {
               log.warn(PROPERTY_OWNER_ENTITY_NAME +  is not set, not 
 setting up
 owner support!);
       } else {
               EOEntity ownerEntity =
 ERXEOAccessUtilities.entityNamed(ERXEC.newEditingContext(),
 ownerEntityName);
               @SuppressWarnings(unchecked)
               NSArrayString primaryKeyAttributeNames =
 ownerEntity.primaryKeyAttributeNames();
               if (primaryKeyAttributeNames.count()  1)
                       throw new RuntimeException(Composite primary keys 
 are unsupported);
               String ownerEntityPrimaryKeyAttributeName =
 primaryKeyAttributeNames.lastObject();
               ERXEOAccessUtilities.createRelationship(
                       owner,
                       PDIBArticle.ENTITY_NAME, ownerID,
                       ownerEntityName, ownerEntityPrimaryKeyAttributeName,
                       false, EOClassDescription.DeleteRuleNullify, false, 
 true, false);
               ERXEOAccessUtilities.createRelationship(
                       articles,