diff --git a/src/main/scala/app/SystemSettingsController.scala b/src/main/scala/app/SystemSettingsController.scala index 2292853..c81e6d9 100644 --- a/src/main/scala/app/SystemSettingsController.scala +++ b/src/main/scala/app/SystemSettingsController.scala @@ -139,9 +139,10 @@ val installedPlugins = plugin.PluginSystem.plugins getAvailablePlugins(installedPlugins).filter(x => pluginIds.contains(x.id)).foreach { plugin => val pluginDir = new java.io.File(PluginHome, plugin.id) - if(!pluginDir.exists){ - FileUtils.copyDirectory(new java.io.File(dir, plugin.repository + "/" + plugin.id), pluginDir) + if(pluginDir.exists){ + FileUtils.deleteDirectory(pluginDir) } + FileUtils.copyDirectory(new java.io.File(dir, plugin.repository + "/" + plugin.id), pluginDir) PluginSystem.installPlugin(plugin.id) } } diff --git a/src/main/scala/model/Plugin.scala b/src/main/scala/model/Plugin.scala index 3295a33..bc85ca0 100644 --- a/src/main/scala/model/Plugin.scala +++ b/src/main/scala/model/Plugin.scala @@ -7,7 +7,7 @@ lazy val Plugins = TableQuery[Plugins] class Plugins(tag: Tag) extends Table[Plugin](tag, "PLUGIN"){ - val pluginId = column[String]("PLUGIN_ID") + val pluginId = column[String]("PLUGIN_ID", O PrimaryKey) val version = column[String]("VERSION") def * = (pluginId, version) <> (Plugin.tupled, Plugin.unapply) } diff --git a/src/main/scala/plugin/PluginSystem.scala b/src/main/scala/plugin/PluginSystem.scala index 5408aeb..c12c9cd 100644 --- a/src/main/scala/plugin/PluginSystem.scala +++ b/src/main/scala/plugin/PluginSystem.scala @@ -113,7 +113,7 @@ migrate(session.conn, pluginId, plugin.get.version) } } catch { - case e: Exception => logger.warn(s"Error in plugin loading for ${scalaFile.getAbsolutePath}", e) + case e: Throwable => logger.warn(s"Error in plugin loading for ${scalaFile.getAbsolutePath}", e) } } } diff --git a/src/main/scala/service/PluginService.scala b/src/main/scala/service/PluginService.scala index 74523b2..d1bb9d8 100644 --- a/src/main/scala/service/PluginService.scala +++ b/src/main/scala/service/PluginService.scala @@ -6,14 +6,19 @@ trait PluginService { - def getPlugins()(implicit s: Session): List[Plugin] = Plugins.sortBy(_.pluginId).list + def getPlugins()(implicit s: Session): List[Plugin] = + Plugins.sortBy(_.pluginId).list - def registerPlugin(plugin: Plugin)(implicit s: Session): Unit = Plugins.insert(plugin) + def registerPlugin(plugin: Plugin)(implicit s: Session): Unit = + Plugins.insert(plugin) - def updatePlugin(plugin: Plugin)(implicit s: Session): Unit = Plugins.update(plugin) + def updatePlugin(plugin: Plugin)(implicit s: Session): Unit = + Plugins.filter(_.pluginId === plugin.pluginId.bind).map(_.version).update(plugin.version) - def deletePlugin(pluginId: String)(implicit s: Session): Unit = Plugins.filter(_.pluginId === pluginId.bind).delete + def deletePlugin(pluginId: String)(implicit s: Session): Unit = + Plugins.filter(_.pluginId === pluginId.bind).delete - def getPlugin(pluginId: String)(implicit s: Session): Option[Plugin] = Plugins.filter(_.pluginId === pluginId.bind).firstOption + def getPlugin(pluginId: String)(implicit s: Session): Option[Plugin] = + Plugins.filter(_.pluginId === pluginId.bind).firstOption }