Re: multiple model usage example
Re: multiple model usage example
- Subject: Re: multiple model usage example
- From: Kieran Kelleher <email@hidden>
- Date: Mon, 28 Jul 2008 15:57:54 -0400
Yes. You are correct. It knows which database to get each entity from
based on the connection dictionary of the model to which the entity
belongs. You don't have to do anything except put the models in your
app and/or frameworks. Even without Wonder, that is how EOF treats
multiple eomodels. Wonder allows more flexibility in terms of multiple
eomodels, IIRC, with possibility to define different prototypes for
each eomodel and different database vendors for each model and allows
you to set eomodel load order which is important to make sure that
prototype entities are loaded before the entities that refer to those
protos.
On Jul 28, 2008, at 3:42 PM, Joe Little wrote:
On Mon, Jul 28, 2008 at 11:37 AM, Kieran Kelleher <email@hidden
> wrote:
Joe,
OK, I see where you are going ... you are wondering how to fetch
against a
different eomodel ....... well, stop wondering ... it is automagic!
The only restriction for having lots of eomodels is that *all*
entity names
must be unique! (Note the java class package.name and database
table names
can be whatever you want)..... everything in EOF then "just works".
Regards, Kieran
PS. That code was in my Application constructor .... but may be
irrelevant
to your questions .... I was just showing how you could access
models and
entities after super in App constructor since Wonder has already
loaded them
all at that stage.
I think you get where I'm going. If its all unique (which it is in my
combined models) my guess is that EOF will know where to pull what
entity from which database. So, doing something like this:
public NSArray getApplicants () {
return EOUtilities.objectsForEntityNamed (new EOEditingContext(),
"Applicants");
}
public NSArray getArchApplicants () {
return EOUtilities.objectsForEntityNamed (new EOEditingContext(),
"ArchApplicants");
}
would work without even playing with the models and constructor
definitions, as its done automatically, at least in Wonder
Applications/Frameworks. Is that correct? The above come from two
separate models.
On Jul 28, 2008, at 2:18 PM, Joe Little wrote:
On Mon, Jul 28, 2008 at 11:03 AM, Kieran Kelleher <email@hidden
>
wrote:
Hi Joe,
AFAIK, if you just define properties below for each model using the
syntax
<modelname>.URL, <modelname>.DBUser, etc., all the models and their
entities
will be automatically loaded at startup by Wonder which checks
for such
properties at startup.
In your Application constructor, after super(), all the models and
entities
will have been loaded by Wonder, so you can iterate thru models
and/or
entities and do what you like with them, for example ......
// Make demography eomodel readonly
boolean demographyIsReadOnly =
ERXProperties
.booleanForKeyWithDefault("demography.isReadOnlyEntities",
false);
if (demographyIsReadOnly) {
EOModel demography =
EOModelGroup.defaultGroup().modelNamed("demography");
for (java.util.Enumeration demographyEntityEnumerator =
demography.entities().objectEnumerator();
demographyEntityEnumerator
.hasMoreElements();) {
EOEntity entity = (EOEntity)
demographyEntityEnumerator.nextElement();
entity.setReadOnly(true);
}
}
So, I presume you'd want ERXModelGroup there. The above was not in
Application.java I presume. When asking for a objects for a specific
entity, has done one use the usual utilities to call on the specific
model?
ie.. NSArray items = EOUtilities.objectsForEntityNamed (new
EOEditingContext(), "Item");
I guess I'm only missing the link between auto-loaded models and the
above style call, which I did with this:
admitModel = ERXModelGroup.defaultGroup().modelNamed("admit");
admitArchModel =
ERXModelGroup.defaultGroup().modelNamed("admitarch");
Does it just look for an Item across both models?
Kieran
On Jul 28, 2008, at 1:38 PM, Joe Little wrote:
On Mon, Jul 28, 2008 at 5:08 AM, Kieran Kelleher <email@hidden
>
wrote:
Hi Joe,
Not sure if this is what you are looking for .... here is an
example of
entries in Properties for access to different databases:
<snip>
#########################################################################
# ERExtensions - ERXModelGroup properties
#########################################################################
er.extensions.ERXModelGroup.prototypeModelNames=WKPrototypes
cheetah.URL = jdbc:mysql://host1/cheetah?capitalizeTypenames=true
cheetah.DBUser = @@cheetah.dbuser@@
cheetah.DBPassword = @@cheetah.dbpassword@@
cheetah.DBDriver =
cheetah.DBPlugin =
cheetah.DBJDBCInfo =
demography.URL = jdbc:mysql://host2/demography?
capitalizeTypenames=true
demography.DBUser = @@demography.dbuser@@
demography.DBPassword = @@demography.dbpassword@@
demography.DBDriver =
demography.DBPlugin =
demography.DBJDBCInfo =
</snip>
IIRC, ERXModelGroup is where a lot of model startup entity
loading
munging
happens, so examining the source there can indicate what is
happening,
how
it works, and what Properties entries affect what.
I'll look into the code. Never looked inside Wonder source and was
hoping for examples on how to use it. So, there isn't posted
anyway
examples on using ERXModelGroup and loading models into an app
within
Application? Again, I've been limited to the stuff that WO just
gives
you to date, which is all automatic. My understanding currently
ends
there.
HTH,
Kieran
On Jul 28, 2008, at 2:22 AM, Joe Little wrote:
That would need to be an ER Model I take it. Again, do you
happen to
have a snippet of code taking multiple entity modeler defined
models,
overriding those settings, etc, and then having a joined model
group..
or should this not be in a model group. I'm confused as to how
this is
all done w/ Wonder as I've also been trying to use
ModelConnector and
other PracticalWO Frameworks solutions to the same.
On Sun, Jul 27, 2008 at 10:48 PM, Guido Neitzer <email@hidden
>
wrote:
On 27.07.2008, at 23:28, Joe Little wrote:
Ok. I've banged my head on this one a lot.
ConfigurationManager
allows
you to change anything except for the database itself.
??
dbConnectURLGLOBAL=jdbc:postgresql://localhost/meetings
That can also be set on a per model base.
cug
--
http://www.event-s.net
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (Webobjects-
email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden