Re: Dynamic database attribute

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Mon Jun 16 2008 - 03:40:41 EDT

  • Next message: Elena Doyle: "RE: Configuring SSL"

    Hi John,

    Actually a good idea for us to introduce a concept of ant-like dynamic
    variable substitution in the future.

    Now back down to Earth... The way to customize that now is via a
    custom DataSourceFactory class:

    http://cayenne.apache.org/doc/api/org/apache/cayenne/conf/DataSourceFactory.html

    This interface can be implemented in your code to do whatever your app
    needs to do. You should enter the full class name the custom
    implementation under DataNode -> DataSource Factory in the Modeler and
    then Cayenne will pick it up.

    Andrus

    On Jun 16, 2008, at 7:55 AM, John Armstrong wrote:

    > Hello Cayenne people,
    > First off, thank god for Cayenne. Its made my life a lot better and
    > Hibernate is but a nightmare now. Thanks.
    >
    > Ok so my issue. I have a stand-alone app. In this app it uses the ant
    > api to create a derby database in the users home directory. Some
    > snippets:
    >
    > I config ant as :
    > p.setProperty("dbFile", System.getProperty("user.home")
    > + "/portfolioDB");
    >
    > And then my build.xml says:
    > <database url="jdbc:derby:${dbFile}"
    > driverClassName="org.apache.derby.jdbc.EmbeddedDriver" username=""
    > password="" />
    >
    > This allows me to inject my ddl into the database on first run and
    > have the database be localized to the user account across platforms.
    >
    > I need a way to inject this same ${dbFile} context into the
    > *Node.driver file so that Cayenne accesses the database I just created
    > and populated at first run.
    >
    > Currently mine says:
    >
    > <url value="jdbc:derby:/portfolioDB;create=true"/>
    >
    > Which obviously is not dynamic. It would be great if I could set it to
    > <url value="jdbc:derby:${dbFile};create=true"/>
    >
    > Is this possible? I am imagining a way to set an environment variable
    > or some sort of custom config class that sets this. This app is
    > launched from a webstart so rewriting the config file is not a good
    > answer for me unless I absolutely have to. That would obviously
    > require a custom config class of some sort but is a level of
    > complexity that feels unnecessary.
    >
    > Thanks, this is a bit into the internals for me and I lose my way
    > quickly.
    >
    > John-
    >



    This archive was generated by hypermail 2.0.0 : Mon Jun 16 2008 - 03:41:19 EDT