Hello,

I try to write a short test program, which can use multiple data sources dynamically with Cayenne. At the moment I have finished the replacement for the driver.xml and cayenne.xml (I think):

--------------------------------

// init a connection
DataSourceInfo properties = new DataSourceInfo();
properties.setDataSourceUrl("jdbc:oracle:thin:@test:1521:play");
properties.setJdbcDriver("oracle.jdbc.OracleDriver");
properties.setMinConnections(1);
properties.setMaxConnections(1);
properties.setUserName("scott");
properties.setPassword("testme");

 PoolManager pmA = new PoolManager(
                    properties.getJdbcDriver(),
                    properties.getDataSourceUrl(),
                    properties.getMinConnections(),
                    properties.getMaxConnections(),
                    properties.getUserName(),
                    properties.getPassword());

DataMap map = new DataMap("test_db");
//??

DataNode node = new DataNode("dev_db");
node.addDataMap(map);
node.setDataSource(pmA);

DataDomain domainA = new DataDomain();
domainA.addNode(node);
domainA.addMap(map);

// get the context ??


// init another connection
properties.setDataSourceUrl("jdbc:oracle:thin:@test:1521:test");

PoolManager pmB = new PoolManager(
                    properties.getJdbcDriver(),
                    properties.getDataSourceUrl(),
                    properties.getMinConnections(),
                    properties.getMaxConnections(),
                    properties.getUserName(),
                    properties.getPassword());

map = new DataMap("test_db");
//??

node = new DataNode("test_db");
node.addDataMap(map);
node.setDataSource(pmB);

DataDomain domainB = new DataDomain();
domainB.addNode(node);
domainB.addMap(map);

// get the context ??


---------------------

The questions:

How I can load a predefined data map from a map.xml into my DataMap object without affecting the already defined objects (node, domain etc.)? Can I define the map dynamically? How I can create a DataContext for the domains I have?

I have a lot of different data sources, which are defined by some other parts of the application. The DataSourceInfo object must be changeable by the user and it can be, that I get changes on the database structure, so it must be possible to react on them with a new data-map at runtime.

Is it possible with Cayenne?

Tanks
André

Reply via email to