# This is the main configuration file for the application.
# ~~~~~

# Secret key
# ~~~~~
# The secret key is used to secure cryptographics functions.
# If you deploy your application to several instances be sure to use the same key!
application.secret="L2CruW9v9v4lHuh5ObC>RLJXNu7f59m]o>pU0P6JW/8yGd6a2?uNPB?E^ohv;p?M"

# The application languages
# ~~~~~
application.langs="en"

# Global object class
# ~~~~~
# Define the Global object class for this application.
# Default to Global in the root package.
# global=Global

# Database configuration
# ~~~~~
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
#
# db.default.driver=org.h2.Driver
# db.default.url="jdbc:h2:mem:play"
# db.default.user=sa
# db.default.password=

# Evolutions
# ~~~~~
# You can disable evolutions if needed
# evolutionplugin=disabled

# Logger
# ~~~~~
# You can also configure logback (http://logback.qos.ch/), by providing a logger.xml file in the conf directory .

# Root logger:
logger.root=ERROR

# Logger used by the framework:
logger.play=INFO

# Logger provided to your application:
logger.application=DEBUG

# Logger used by Quartz
logger.org.quartz=INFO

# Logger used by PredictionIO Scheduler
logger.io.prediction.scheduler=INFO

# PredictionIO Repository Base (For Development Only)
io.prediction.base=../..
io.prediction.itemrec.base=${io.prediction.base}/process/engines/itemrec
io.prediction.itemsim.base=${io.prediction.base}/process/engines/itemsim

# Used by PredictionIO Commons
io.prediction.commons.appdata.db.type=mongodb
io.prediction.commons.appdata.db.host=localhost
io.prediction.commons.appdata.db.port=27017

io.prediction.commons.appdata.test.db.type=mongodb
io.prediction.commons.appdata.test.db.host=localhost
io.prediction.commons.appdata.test.db.port=27017

io.prediction.commons.appdata.training.db.type=mongodb
io.prediction.commons.appdata.training.db.host=localhost
io.prediction.commons.appdata.training.db.port=27017

io.prediction.commons.appdata.validation.db.type=mongodb
io.prediction.commons.appdata.validation.db.host=localhost
io.prediction.commons.appdata.validation.db.port=27017

io.prediction.commons.modeldata.db.type=mongodb
io.prediction.commons.modeldata.db.host=localhost
io.prediction.commons.modeldata.db.port=27017

io.prediction.commons.modeldata.training.db.type=mongodb
io.prediction.commons.modeldata.training.db.host=localhost
io.prediction.commons.modeldata.training.db.port=27017

io.prediction.commons.settings.db.type=mongodb
io.prediction.commons.settings.db.host=localhost
io.prediction.commons.settings.db.port=27017

# PredictionIO Algorithms
pdio-knnitembased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
pdio-latestrank.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
pdio-randomrank.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
mahout-itembased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
mahout-parallelals.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
mahout-knnuserbased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
mahout-thresholduserbased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
mahout-slopeone.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
mahout-alswr.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
mahout-svdsgd.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
mahout-svdplusplus.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar

# Itemrec Scala Mahout Algorithms
io.prediction.algorithms.mahout.itemrec.jar=${io.prediction.itemrec.base}/algorithms/scala/mahout/target/PredictionIO-Process-ItemRec-Algorithms-Scala-Mahout-assembly-0.4.jar

# Mahout core job
io.prediction.algorithms.mahout-core-job.jar=${io.prediction.base}/vendors/mahout-0.8-snapshot-1975/mahout-core-0.8-SNAPSHOT-job.jar

# PredictionIO Offline Evaluation
io.prediction.evaluations.scalding.itemrec.jar=${io.prediction.itemrec.base}/evaluations/hadoop/scalding/target/PredictionIO-Process-ItemRec-Evaluations-Hadoop-Scalding-assembly-0.4.jar
io.prediction.evaluations.itemrec.topkitems.jar=${io.prediction.itemrec.base}/evaluations/scala/topkitems/target/PredictionIO-Process-ItemRec-Evaluations-TopKItems-assembly-0.4.jar
io.prediction.evaluations.itemrec.trainingtestsplit.jar=${io.prediction.itemrec.base}/evaluations/scala/trainingtestsplit/target/PredictionIO-Process-ItemRec-Evaluations-Scala-TrainingTestSplitTime-assembly-0.4.jar
io.prediction.evaluations.itemrec.paramgen.jar=${io.prediction.itemrec.base}/evaluations/scala/paramgen/target/PredictionIO-Process-ItemRec-Evaluations-ParamGen-assembly-0.4.jar
