From 5bfbc10e3d90ec91bd6b29195f6cb008a6371fd2 Mon Sep 17 00:00:00 2001 From: Tamino Dauth Date: Tue, 9 Apr 2019 18:34:08 +0200 Subject: [PATCH] Purge database of removed state machines #19 --- .../api/neo4j/GuiStateMachineApiNeo4J.scala | 17 +++++++---------- .../api/neo4j/GuiStateMachineNeo4J.scala | 7 +------ 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/main/scala/de/retest/guistatemachine/api/neo4j/GuiStateMachineApiNeo4J.scala b/src/main/scala/de/retest/guistatemachine/api/neo4j/GuiStateMachineApiNeo4J.scala index 9b51fd9..e74d06a 100644 --- a/src/main/scala/de/retest/guistatemachine/api/neo4j/GuiStateMachineApiNeo4J.scala +++ b/src/main/scala/de/retest/guistatemachine/api/neo4j/GuiStateMachineApiNeo4J.scala @@ -9,7 +9,7 @@ import scala.collection.concurrent.TrieMap class GuiStateMachineApiNeo4J extends GuiStateMachineApi { private val logger = Logger[GuiStateMachineApiNeo4J] - private val stateMachines = TrieMap[String, GuiStateMachine]() + private val stateMachines = TrieMap[String, GuiStateMachineNeo4J]() // TODO #19 Load existing state machines from the disk. override def createStateMachine(name: String): GuiStateMachine = { @@ -22,15 +22,12 @@ class GuiStateMachineApiNeo4J extends GuiStateMachineApi { guiStateMachine } - override def removeStateMachine(name: String): Boolean = stateMachines.get(name) match { - case Some(_) => - if (stateMachines.remove(name).isDefined) { - val uri = getUri(name) - Neo4jSessionFactory.getSessionFactory(uri).close() // TODO #19 Removes from disk? - true - } else { - false - } + override def removeStateMachine(name: String): Boolean = stateMachines.remove(name) match { + case Some(stateMachine) => + stateMachine.session.purgeDatabase() + val uri = getUri(name) + Neo4jSessionFactory.getSessionFactory(uri).close() + true case None => false } diff --git a/src/main/scala/de/retest/guistatemachine/api/neo4j/GuiStateMachineNeo4J.scala b/src/main/scala/de/retest/guistatemachine/api/neo4j/GuiStateMachineNeo4J.scala index 12fe48f..e3f7f6d 100644 --- a/src/main/scala/de/retest/guistatemachine/api/neo4j/GuiStateMachineNeo4J.scala +++ b/src/main/scala/de/retest/guistatemachine/api/neo4j/GuiStateMachineNeo4J.scala @@ -38,12 +38,7 @@ class GuiStateMachineNeo4J(var uri: String) extends GuiStateMachine { result } - override def clear(): Unit = - Neo4jSessionFactory.transaction { - // Deletes all nodes and relationships. - session.deleteAll(classOf[SutStateEntity]) - session.deleteAll(classOf[ActionTransitionEntity]) - } + override def clear(): Unit = session.purgeDatabase() override def assignFrom(other: GuiStateMachine): Unit = { // TODO #19 Should we delete the old graph database?