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/app.scala | 22 -------------- src/main/scala/cake.scala | 32 --------------------- src/main/scala/cake/application.scala | 13 --------- src/main/scala/cake/database.scala | 18 ------------ src/main/scala/cake/logger.scala | 10 ------- src/main/scala/cake/services.scala | 21 -------------- src/main/scala/myapp.scala | 22 ++++++++++++++ src/main/scala/myapp/application.scala | 13 +++++++++ src/main/scala/myapp/cake/container.scala | 48 +++++++++++++++++++++++++++++++ src/main/scala/myapp/cake/services.scala | 30 +++++++++++++++++++ src/main/scala/myapp/database.scala | 19 ++++++++++++ src/main/scala/myapp/logger.scala | 10 +++++++ 12 files changed, 142 insertions(+), 116 deletions(-) delete mode 100644 src/main/scala/app.scala delete mode 100644 src/main/scala/cake.scala delete mode 100644 src/main/scala/cake/application.scala delete mode 100644 src/main/scala/cake/database.scala delete mode 100644 src/main/scala/cake/logger.scala delete mode 100644 src/main/scala/cake/services.scala create mode 100644 src/main/scala/myapp.scala create mode 100644 src/main/scala/myapp/application.scala create mode 100644 src/main/scala/myapp/cake/container.scala create mode 100644 src/main/scala/myapp/cake/services.scala create mode 100644 src/main/scala/myapp/database.scala create mode 100644 src/main/scala/myapp/logger.scala diff --git a/src/main/scala/app.scala b/src/main/scala/app.scala deleted file mode 100644 index c75690f..0000000 --- a/src/main/scala/app.scala +++ /dev/null @@ -1,22 +0,0 @@ -import cake.Container - -object MyApp extends App { - val container1 = new Container - println("running container 1") - container1.application.run - println("done with container 1") - - val container2 = new Container(logFileName = "other.log") - println("running container 2") - container2.application.run - println("done with container 2") - - val container3 = new Container( - dsn = "dbi:SQLite::memory:", - username = "", - password = "" - ) - println("running container 3") - container3.application.run - println("done with container 3") -} diff --git a/src/main/scala/cake.scala b/src/main/scala/cake.scala deleted file mode 100644 index 32583e7..0000000 --- a/src/main/scala/cake.scala +++ /dev/null @@ -1,32 +0,0 @@ -package cake - -trait HasLogger extends cake.services.HasLogger { - type LoggerType = Logger - class Logger(logFileName: String) extends cake.logger.FileLogger(logFileName) with ILogger -} - -trait HasDatabase extends cake.services.HasDatabase { - type DatabaseType = Database - class Database protected (dsn: String, username: String, password: String) extends cake.database.DBI(dsn, username, password) with IDatabase - object Database { - def connect(dsn: String, username: String, password: String) = - new Database(dsn, username, password) - } -} - -trait HasApplication extends cake.services.HasApplication { - this: cake.HasLogger with cake.HasDatabase => - type ApplicationType = Application - class Application extends cake.application.Application(logger, database) with IApplication -} - -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) -} diff --git a/src/main/scala/cake/application.scala b/src/main/scala/cake/application.scala deleted file mode 100644 index c37396b..0000000 --- a/src/main/scala/cake/application.scala +++ /dev/null @@ -1,13 +0,0 @@ -package cake.application - -import cake.logger.Logger -import cake.database.Database - -class Application (logger: Logger, dbh: Database) { - def run (): Unit = { - logger.log("starting") - logger.log("got a dbh: " + dbh) - logger.log(dbh.query("foo")) - logger.log("ending") - } -} diff --git a/src/main/scala/cake/database.scala b/src/main/scala/cake/database.scala deleted file mode 100644 index dd9e2fd..0000000 --- a/src/main/scala/cake/database.scala +++ /dev/null @@ -1,18 +0,0 @@ -package cake.database - -trait Database { - def query (search: String): String -} - -class DBI protected ( - dsn: String, - username: String, - password: String) extends Database { - def query (search: String): String = "found " + search - override def toString = List(dsn, username, password).mkString(", ") -} - -object DBI { - def connect (dsn: String, username: String, password: String) = - new DBI(dsn, username, password) -} diff --git a/src/main/scala/cake/logger.scala b/src/main/scala/cake/logger.scala deleted file mode 100644 index db6de9a..0000000 --- a/src/main/scala/cake/logger.scala +++ /dev/null @@ -1,10 +0,0 @@ -package cake.logger - -trait Logger { - def log (msg: String): Unit -} - -class FileLogger (logFileName: String) extends Logger { - def log (msg: String): Unit = - println("writing " + msg + " to " + logFileName) -} diff --git a/src/main/scala/cake/services.scala b/src/main/scala/cake/services.scala deleted file mode 100644 index dd949c2..0000000 --- a/src/main/scala/cake/services.scala +++ /dev/null @@ -1,21 +0,0 @@ -package cake.services - -trait HasApplication { - type ApplicationType - val application: ApplicationType with IApplication - trait IApplication { - def run (): Unit - } -} - -trait HasDatabase { - type DatabaseType - val database: DatabaseType with IDatabase - trait IDatabase extends cake.database.Database -} - -trait HasLogger { - type LoggerType - val logger: LoggerType with ILogger - trait ILogger extends cake.logger.Logger -} diff --git a/src/main/scala/myapp.scala b/src/main/scala/myapp.scala new file mode 100644 index 0000000..2de2372 --- /dev/null +++ b/src/main/scala/myapp.scala @@ -0,0 +1,22 @@ +import myapp.cake.container.Container + +object MyApp extends App { + val container1 = new Container + println("running container 1") + container1.application.run + println("done with container 1") + + val container2 = new Container(logFileName = "other.log") + println("running container 2") + container2.application.run + println("done with container 2") + + val container3 = new Container( + dsn = "dbi:SQLite::memory:", + username = "", + password = "" + ) + println("running container 3") + container3.application.run + println("done with container 3") +} diff --git a/src/main/scala/myapp/application.scala b/src/main/scala/myapp/application.scala new file mode 100644 index 0000000..24cda2a --- /dev/null +++ b/src/main/scala/myapp/application.scala @@ -0,0 +1,13 @@ +package myapp.application + +import myapp.logger.Logger +import myapp.database.Database + +class MyApp (logger: Logger, dbh: Database) { + def run { + logger.log("starting") + logger.log("got a dbh: " + dbh) + logger.log(dbh.query("foo")) + logger.log("ending") + } +} 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) +} diff --git a/src/main/scala/myapp/cake/services.scala b/src/main/scala/myapp/cake/services.scala new file mode 100644 index 0000000..99be3d5 --- /dev/null +++ b/src/main/scala/myapp/cake/services.scala @@ -0,0 +1,30 @@ +package myapp.cake.services + +import myapp.database.Database +import myapp.logger.Logger + +trait HasApplication { + type ApplicationType + + val application: ApplicationType with ApplicationService + + trait ApplicationService { + def run (): Unit + } +} + +trait HasDatabase { + type DatabaseType + + val database: DatabaseType with DatabaseService + + trait DatabaseService extends Database +} + +trait HasLogger { + type LoggerType + + val logger: LoggerType with LoggerService + + trait LoggerService extends Logger +} diff --git a/src/main/scala/myapp/database.scala b/src/main/scala/myapp/database.scala new file mode 100644 index 0000000..9a321c2 --- /dev/null +++ b/src/main/scala/myapp/database.scala @@ -0,0 +1,19 @@ +package myapp.database + +trait Database { + def query (search: String): String +} + +class DBI protected ( + dsn: String, + username: String, + password: String +) extends Database { + def query (search: String): String = "found " + search + override def toString = List(dsn, username, password).mkString(", ") +} + +object DBI { + def connect (dsn: String, username: String, password: String) = + new DBI(dsn, username, password) +} diff --git a/src/main/scala/myapp/logger.scala b/src/main/scala/myapp/logger.scala new file mode 100644 index 0000000..8e985dc --- /dev/null +++ b/src/main/scala/myapp/logger.scala @@ -0,0 +1,10 @@ +package myapp.logger + +trait Logger { + def log (msg: String): Unit +} + +class FileLogger (logFileName: String) extends Logger { + def log (msg: String): Unit = + println("writing " + msg + " to " + logFileName) +} -- cgit v1.2.3