Hello.
I've been looking trough similar problems here but can't seem to find
a solution that would work so I'm posting a new question.
My situation is like this. I have an application that connects to
multiple databases that are selected at runtime. All of the databases
have same structure. In Cayenne modeller I have created a single
DataNode and DataMap with this structure. Now at runtime I would like
to clone that whole datadomain (in future it will probably have more
then 1 map/node).
I've used the code posted on website about copying datadomains and
modified to fit my needs. But I keep having same problem. After
creating 2 or more domains all of them use the same(last) database
connection. I'm guessing there is something I'm missing when cloning
datadomain, but I can't find out what it is.
Here is the code I'm using.
public static void copyDataDomain(String domainName)
{
LOGGER.debug("Copy data domain: " + domainName);
// get source DataDomain
DataDomain sourceDataDomain =
Configuration.getSharedConfiguration().getDomain("ArrowDomain");
LOGGER.debug("Source DataDomain: " + sourceDataDomain);
DataDomain destDataDomain = new DataDomain(domainName,
sourceDataDomain.getProperties());
Configuration.getSharedConfiguration().addDomain(destDataDomain);
LOGGER.debug("Destination DataDomain: " + destDataDomain);
// copy data maps
LOGGER.debug("Copying data maps...");
for(DataMap map : sourceDataDomain.getDataMaps())
{
LOGGER.debug("Copying data map: " + map.getName());
destDataDomain.addMap(map);
}
// copy data nodes
LOGGER.debug("Copying data nodes...");
for(DataNode node : sourceDataDomain.getDataNodes())
{
LOGGER.debug("Copying data node: " + node.getName());
destDataDomain.addNode(node);
}
LOGGER.debug("New data domain created: " + domainName);
}
I've also tried adding EntityResolver as it was suggested in one of
the thread, and a couple of other tips I found, but without any luck.
Kind regards,
--Mirko R. Teran
Sent from Ljubljana, Slovenia
This archive was generated by hypermail 2.0.0 : Mon Sep 07 2009 - 03:11:49 EDT