diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/scala/database/Database.scala | 22 | ||||
-rw-r--r-- | src/main/scala/logger/Logger.scala (renamed from src/main/scala/myapp/logger.scala) | 5 | ||||
-rw-r--r-- | src/main/scala/myapp/MyApp.scala (renamed from src/main/scala/myapp/application.scala) | 6 | ||||
-rw-r--r-- | src/main/scala/myapp/Runner.scala (renamed from src/main/scala/myapp.scala) | 6 | ||||
-rw-r--r-- | src/main/scala/myapp/cake/Container.scala (renamed from src/main/scala/myapp/cake/container.scala) | 36 | ||||
-rw-r--r-- | src/main/scala/myapp/cake/services.scala | 38 | ||||
-rw-r--r-- | src/main/scala/myapp/database.scala | 19 |
7 files changed, 70 insertions, 62 deletions
diff --git a/src/main/scala/database/Database.scala b/src/main/scala/database/Database.scala new file mode 100644 index 0000000..3606593 --- /dev/null +++ b/src/main/scala/database/Database.scala @@ -0,0 +1,22 @@ +package 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: String = + List(dsn, username, password).mkString(", ") +} + +object DBI { + def connect (dsn: String, username: String, password: String): DBI = + new DBI(dsn, username, password) +} diff --git a/src/main/scala/myapp/logger.scala b/src/main/scala/logger/Logger.scala index 8e985dc..0e2fe79 100644 --- a/src/main/scala/myapp/logger.scala +++ b/src/main/scala/logger/Logger.scala @@ -1,10 +1,11 @@ -package myapp.logger +package logger trait Logger { def log (msg: String): Unit } class FileLogger (logFileName: String) extends Logger { - def log (msg: String): Unit = + def log (msg: String) { println("writing " + msg + " to " + logFileName) + } } diff --git a/src/main/scala/myapp/application.scala b/src/main/scala/myapp/MyApp.scala index 24cda2a..f3c8dcc 100644 --- a/src/main/scala/myapp/application.scala +++ b/src/main/scala/myapp/MyApp.scala @@ -1,7 +1,7 @@ -package myapp.application +package myapp -import myapp.logger.Logger -import myapp.database.Database +import logger.Logger +import database.Database class MyApp (logger: Logger, dbh: Database) { def run { diff --git a/src/main/scala/myapp.scala b/src/main/scala/myapp/Runner.scala index 2de2372..15c3403 100644 --- a/src/main/scala/myapp.scala +++ b/src/main/scala/myapp/Runner.scala @@ -1,6 +1,8 @@ -import myapp.cake.container.Container +package myapp -object MyApp extends App { +import myapp.cake.Container + +object Runner extends App { val container1 = new Container println("running container 1") container1.application.run diff --git a/src/main/scala/myapp/cake/container.scala b/src/main/scala/myapp/cake/Container.scala index 6437c8b..ca952cd 100644 --- a/src/main/scala/myapp/cake/container.scala +++ b/src/main/scala/myapp/cake/Container.scala @@ -1,14 +1,26 @@ -package myapp.cake.container +package myapp.cake -import myapp.cake.services -import myapp.logger.FileLogger -import myapp.database.DBI -import myapp.application.MyApp +import database.DBI +import logger.FileLogger + +import myapp.MyApp + +class Container ( + logFileName: String = "out.log", + dsn: String = "dbi:mysql:myapp", + username: String = "doy", + password: String = "blah" +) extends HasApplication with HasLogger with HasDatabase { + def application = new Application + // def logger = new Logger(logFileName) // non-singleton + lazy val logger = new Logger(logFileName) // singleton + def database = Database.connect(dsn, username, password) +} trait HasLogger extends services.HasLogger { type LoggerType = Logger - class Logger( + class Logger ( logFileName: String ) extends FileLogger(logFileName) with LoggerService } @@ -35,15 +47,3 @@ trait HasApplication extends services.HasApplication { 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 { - def application = new Application - // def logger = new Logger(logFileName) // non-singleton - lazy val logger = new Logger(logFileName) // singleton - def database = Database.connect(dsn, username, password) -} diff --git a/src/main/scala/myapp/cake/services.scala b/src/main/scala/myapp/cake/services.scala index 6d4a860..c9579c6 100644 --- a/src/main/scala/myapp/cake/services.scala +++ b/src/main/scala/myapp/cake/services.scala @@ -1,30 +1,32 @@ -package myapp.cake.services +package myapp.cake -import myapp.database.Database -import myapp.logger.Logger +object services { + import database.Database + import logger.Logger -trait HasApplication { - type ApplicationType + trait HasApplication { + type ApplicationType - def application (): ApplicationType with ApplicationService + def application: ApplicationType with ApplicationService - trait ApplicationService { - def run (): Unit + trait ApplicationService { + def run: Unit + } } -} -trait HasDatabase { - type DatabaseType + trait HasDatabase { + type DatabaseType - def database (): DatabaseType with DatabaseService + def database: DatabaseType with DatabaseService - trait DatabaseService extends Database -} + trait DatabaseService extends Database + } -trait HasLogger { - type LoggerType + trait HasLogger { + type LoggerType - def logger (): LoggerType with LoggerService + def logger: LoggerType with LoggerService - trait LoggerService extends Logger + trait LoggerService extends Logger + } } diff --git a/src/main/scala/myapp/database.scala b/src/main/scala/myapp/database.scala deleted file mode 100644 index 9a321c2..0000000 --- a/src/main/scala/myapp/database.scala +++ /dev/null @@ -1,19 +0,0 @@ -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) -} |