From 5e377f152de4073c79abcf4efb4507306604b170 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 12 Feb 2013 20:13:04 -0600 Subject: renamings and style tweaks to make this more readable --- src/main/scala/myapp/cake/container.scala | 48 +++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/main/scala/myapp/cake/container.scala (limited to 'src/main/scala/myapp/cake/container.scala') diff --git a/src/main/scala/myapp/cake/container.scala b/src/main/scala/myapp/cake/container.scala new file mode 100644 index 0000000..7c40880 --- /dev/null +++ b/src/main/scala/myapp/cake/container.scala @@ -0,0 +1,48 @@ +package myapp.cake.container + +import myapp.cake.services +import myapp.logger.FileLogger +import myapp.database.DBI +import myapp.application.MyApp + +trait HasLogger extends services.HasLogger { + type LoggerType = Logger + + class Logger( + logFileName: String + ) extends FileLogger(logFileName) with LoggerService +} + +trait HasDatabase extends services.HasDatabase { + type DatabaseType = Database + + class Database protected ( + dsn: String, + username: String, + password: String + ) extends DBI(dsn, username, password) with DatabaseService + + object Database { + def connect(dsn: String, username: String, password: String) = + new Database(dsn, username, password) + } +} + +trait HasApplication extends services.HasApplication { + this: HasLogger with HasDatabase => + + type ApplicationType = Application + + class Application extends MyApp(logger, database) with ApplicationService +} + +class Container ( + logFileName: String = "out.log", + dsn: String = "dbi:mysql:myapp", + username: String = "doy", + password: String = "blah" +) extends HasApplication with HasLogger with HasDatabase { + lazy val application = new Application + lazy val logger = new Logger(logFileName) + lazy val database = Database.connect(dsn, username, password) +} -- cgit v1.2.3-54-g00ecf