On Oct 24, 2008, at 3:17 PM, William Sandner wrote:
We have 4 different environments that we deploy to, development, test, staging, and production. We are using ant as our build tool.
For most of our environments we connect to a localhost database with a common password, but production is on an external server which has a more secure password. What is the best way to change the db connection at build time?
Example:
When I build for production, I want to make sure the connection is pointing to the correct server and the password is correct.
I know I can use ant to search and replace for connection string tokens in the Properties file, but is this the easiest way?
NSNotificationCenter.defaultCenter().addObserver(
this,
new NSSelector("modelAdded",
new Class[] { NSNotification.class }),
EOModelGroup.ModelAddedNotification, null);
}
public void modelAdded(NSNotification n) {
NSLog.out.appendln("Notification ModelAdded: ");
EOModel m = (EOModel) n.object();
String dbhost = System.getProperty("app.dbhost");
String db = System.getProperty("app.db");
if (db == null || dbhost == null)
NSLog.out.appendln("No app.dbhost or app.db set, using defaults");
else {
if (m.name().equals("MODELNAME")) {
NSLog.out.appendln("Overriding host: " + dbhost + " db: " + db);
NSMutableDictionary<String, Object> c = new NSMutableDictionary<String, Object>(
m.connectionDictionary());
c.setObjectForKey("jdbc:postgresql://" + dbhost + "/" + db,
"URL");
m.setConnectionDictionary(c);
}
}
}
Then I set the app lunch parameters on JavaMonitor to set those properties :-Dapp.dbhost=server -Dapp.db=dbname
I guess you can do something similar with the login/password. The beauty of it is that you can launch the same app with connections strings, no recompile/rebuild needed.
Of course, being new here I invite comments about this approach....
Henrique Gomes