Skip to content

Commit

Permalink
#13 add the content of "config.global" in analyzer configuration.
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Mar 29, 2017
1 parent e928c06 commit 05a4ae1
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 21 deletions.
53 changes: 33 additions & 20 deletions app/services/Analyzer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -37,28 +37,41 @@ class AnalyzerSrv(
def get(analyzerId: String): Option[Analyzer] = list.find(_.id == analyzerId)
def listForType(dataType: String): Seq[Analyzer] = list.filter(_.dataTypeList.contains(dataType))

private[services] def getExternalAnalyzers: Seq[Analyzer] = for {
analyzerDir Try(Files.newDirectoryStream(analyzerPath).toSeq).getOrElse {
log.warn(s"Analyzer directory ($analyzerPath)is not found")
Nil
}
if Files.isDirectory(analyzerDir)
infoFile Files.newDirectoryStream(analyzerDir, "*.json").toSeq
if Files.isReadable(infoFile)
info = readInfo(infoFile)
name (info \ "name").asOpt[String] orElse { log.warn(s"name is missing in $infoFile"); None }
version (info \ "version").asOpt[String] orElse { log.warn(s"version is missing in $infoFile"); None }
description (info \ "description").asOpt[String] orElse { log.warn(s"description is missing in $infoFile"); None }
dataTypeList (info \ "dataTypeList").asOpt[Seq[String]] orElse { log.warn(s"dataTypeList is missing in $infoFile"); None }
command (info \ "command").asOpt[String] orElse { log.warn(s"command is missing in $infoFile"); None }
config = (info \ "config").asOpt[JsObject].getOrElse(JsObject(Nil))
baseConfig = (info \ "baseConfig").asOpt[String].flatMap(c (analyzerConfig \ c).asOpt[JsObject]).getOrElse(JsObject(Nil))
absoluteCommand = analyzerPath.resolve(Paths.get(command.replaceAll("[\\/]", File.separator)))
_ = log.info(s"Register analyzer $name $version (${(name + "_" + version).replaceAll("\\.", "_")})")
} yield ExternalAnalyzer(name, version, description, dataTypeList, absoluteCommand, baseConfig.deepMerge(config))(analyzeExecutionContext)
private[services] def getExternalAnalyzers: Seq[Analyzer] = {
val globalConfig = (analyzerConfig \ "global").asOpt[JsObject].getOrElse(JsObject(Nil))
for {
analyzerDir Try(Files.newDirectoryStream(analyzerPath).toSeq).getOrElse {
log.warn(s"Analyzer directory ($analyzerPath) is not found")
Nil
}
if Files.isDirectory(analyzerDir)
infoFile Files.newDirectoryStream(analyzerDir, "*.json").toSeq
if Files.isReadable(infoFile)
info = readInfo(infoFile)
name (info \ "name").asOpt[String] orElse {
log.warn(s"name is missing in $infoFile"); None
}
version (info \ "version").asOpt[String] orElse {
log.warn(s"version is missing in $infoFile"); None
}
description (info \ "description").asOpt[String] orElse {
log.warn(s"description is missing in $infoFile"); None
}
dataTypeList (info \ "dataTypeList").asOpt[Seq[String]] orElse {
log.warn(s"dataTypeList is missing in $infoFile"); None
}
command (info \ "command").asOpt[String] orElse {
log.warn(s"command is missing in $infoFile"); None
}
config = (info \ "config").asOpt[JsObject].getOrElse(JsObject(Nil))
baseConfig = (info \ "baseConfig").asOpt[String].flatMap(c (analyzerConfig \ c).asOpt[JsObject]).getOrElse(JsObject(Nil))
absoluteCommand = analyzerPath.resolve(Paths.get(command.replaceAll("[\\/]", File.separator)))
_ = log.info(s"Register analyzer $name $version (${(name + "_" + version).replaceAll("\\.", "_")})")
} yield ExternalAnalyzer(name, version, description, dataTypeList, absoluteCommand, globalConfig deepMerge baseConfig deepMerge config)(analyzeExecutionContext)
}

private[services] def readInfo(file: Path): JsValue = {
val source = scala.io.Source.fromFile(file.toFile())
val source = scala.io.Source.fromFile(file.toFile)
try {
Json.parse(source.mkString)
}
Expand Down
2 changes: 1 addition & 1 deletion build.sbt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name := """cortex"""

lazy val root = (project in file("."))
lazy val cortex = (project in file("."))
.enablePlugins(PlayScala)
.settings(PublishToBinTray.settings)

Expand Down

0 comments on commit 05a4ae1

Please sign in to comment.