From 4d55c8755b5a6d6e1803d9103346b5c809afee96 Mon Sep 17 00:00:00 2001 From: Tamino Dauth Date: Tue, 26 Mar 2019 18:10:49 +0100 Subject: [PATCH] Add initial entity types #19 --- .../api/neo4j/ActionTransitionEntity.scala | 13 +++++++++++++ .../guistatemachine/api/neo4j/Entity.scala | 8 ++++++++ .../api/neo4j/Neo4jSessionFactory.scala | 10 ++++++++++ .../api/neo4j/SutStateEntity.scala | 17 +++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 src/main/scala/de/retest/guistatemachine/api/neo4j/ActionTransitionEntity.scala create mode 100644 src/main/scala/de/retest/guistatemachine/api/neo4j/Entity.scala create mode 100644 src/main/scala/de/retest/guistatemachine/api/neo4j/Neo4jSessionFactory.scala create mode 100644 src/main/scala/de/retest/guistatemachine/api/neo4j/SutStateEntity.scala diff --git a/src/main/scala/de/retest/guistatemachine/api/neo4j/ActionTransitionEntity.scala b/src/main/scala/de/retest/guistatemachine/api/neo4j/ActionTransitionEntity.scala new file mode 100644 index 0000000..2d0e419 --- /dev/null +++ b/src/main/scala/de/retest/guistatemachine/api/neo4j/ActionTransitionEntity.scala @@ -0,0 +1,13 @@ +package de.retest.guistatemachine.api.neo4j +import de.retest.recheck.ui.descriptors.SutState +import org.neo4j.ogm.annotation.{EndNode, RelationshipEntity, StartNode} + +@RelationshipEntity(`type` = "EXECUTED") +class ActionTransitionEntity(start: SutState, end: SutState) extends Entity { + + def this() = this(null, null) + + @StartNode val s = start + + @EndNode val e = end +} diff --git a/src/main/scala/de/retest/guistatemachine/api/neo4j/Entity.scala b/src/main/scala/de/retest/guistatemachine/api/neo4j/Entity.scala new file mode 100644 index 0000000..8779963 --- /dev/null +++ b/src/main/scala/de/retest/guistatemachine/api/neo4j/Entity.scala @@ -0,0 +1,8 @@ +package de.retest.guistatemachine.api.neo4j + +import org.neo4j.ogm.annotation.{GeneratedValue, Id} + +abstract class Entity { + @Id @GeneratedValue private val id = 0L + def getId: Long = id +} diff --git a/src/main/scala/de/retest/guistatemachine/api/neo4j/Neo4jSessionFactory.scala b/src/main/scala/de/retest/guistatemachine/api/neo4j/Neo4jSessionFactory.scala new file mode 100644 index 0000000..aa0fe2f --- /dev/null +++ b/src/main/scala/de/retest/guistatemachine/api/neo4j/Neo4jSessionFactory.scala @@ -0,0 +1,10 @@ +package de.retest.guistatemachine.api.neo4j + +import org.neo4j.ogm.session.SessionFactory + +// TODO #19 Use sessions to modify the state graph. +object Neo4jSessionFactory { + private val sessionFactory = new SessionFactory("de.retest.guistatemachine.api.neo4j") + + def getSession() = sessionFactory.openSession() +} diff --git a/src/main/scala/de/retest/guistatemachine/api/neo4j/SutStateEntity.scala b/src/main/scala/de/retest/guistatemachine/api/neo4j/SutStateEntity.scala new file mode 100644 index 0000000..1d511ce --- /dev/null +++ b/src/main/scala/de/retest/guistatemachine/api/neo4j/SutStateEntity.scala @@ -0,0 +1,17 @@ +package de.retest.guistatemachine.api.neo4j + +import de.retest.recheck.ui.descriptors.SutState +import org.neo4j.ogm.annotation.typeconversion.Convert +import org.neo4j.ogm.annotation.{GeneratedValue, Id, _} + +// TODO #19 Use this entity and sessions instead of manual transactions. +@NodeEntity +class SutStateEntity(state: SutState) extends Entity { + + def this() = this(null) + + @Id @GeneratedValue private val id = 0L + + @Convert(classOf[SutStateConverter]) + private val sutState = state +}