From 5d10dd938adcfed9b8fcf8ee4d73c0171afeb25e Mon Sep 17 00:00:00 2001
From: npedot <nicola.pedot@gmail.com>
Date: Wed, 15 Jan 2020 11:51:14 +0100
Subject: [PATCH] adds person vsplit scenario

---
 .../scenario/PersonVSplitScenario.kt          | 44 +++++++++++++++++++
 .../scenario/SakilaScenario.kt                |  0
 .../scenario/DepartmentEmploeesScenario.kt    |  4 --
 .../scenario/PersonVSplitScenarioTI.kt        | 16 +++++++
 4 files changed, 60 insertions(+), 4 deletions(-)
 create mode 100644 src/main/kotlin/unibz.cs.semint.kprime/scenario/PersonVSplitScenario.kt
 rename src/main/kotlin/{unibz/cs/semint/kprime => unibz.cs.semint.kprime}/scenario/SakilaScenario.kt (100%)
 delete mode 100644 src/main/kotlin/unibz/cs/semint/kprime/scenario/DepartmentEmploeesScenario.kt
 create mode 100644 src/test/kotlin/unibz.cs.semint.kprime/scenario/PersonVSplitScenarioTI.kt

diff --git a/src/main/kotlin/unibz.cs.semint.kprime/scenario/PersonVSplitScenario.kt b/src/main/kotlin/unibz.cs.semint.kprime/scenario/PersonVSplitScenario.kt
new file mode 100644
index 0000000..6c6e2bf
--- /dev/null
+++ b/src/main/kotlin/unibz.cs.semint.kprime/scenario/PersonVSplitScenario.kt
@@ -0,0 +1,44 @@
+package unibz.cs.semint.kprime.scenario
+
+import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
+import unibz.cs.semint.kprime.domain.Column
+import unibz.cs.semint.kprime.domain.Constraint
+import unibz.cs.semint.kprime.domain.Database
+import unibz.cs.semint.kprime.domain.Table
+import unibz.cs.semint.kprime.usecase.XMLSerializeUseCase
+
+class PersonVSplitScenario {
+
+    fun run() {
+        val personMetadata = buildPersonMetadata()
+        print(XMLSerializeUseCase(XMLSerializerJacksonAdapter()).prettyDatabase(personMetadata).ok)
+        //vsplitSakila(personMetadata)
+
+    }
+
+    private fun vsplitSakila(personMetadata: Database) {
+        TODO("not implemented")
+        // if detect(db):result
+        //  apply(db,result):db
+    }
+
+    private fun buildPersonMetadata(): Database {
+        val db = Database()
+        val personTable = Table()
+        personTable.name= "person"
+        val colSSN = Column("SSN", "id.SSN", "dbname.SSN")
+        personTable.columns.add(colSSN)
+        val colT = Column("T", "id.SSN", "dbname.SSN")
+        personTable.columns.add(colT)
+        val colS = Column("S", "id.SSN", "dbname.SSN")
+        personTable.columns.add(colS)
+        db.schema.tables.add(personTable)
+        val primaryConstraint = Constraint()
+        primaryConstraint.name="primaryKey.person"
+        primaryConstraint.source.columns.add(colSSN)
+        primaryConstraint.source.columns.add(colT)
+        db.schema.constraints.add(primaryConstraint)
+        return db
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/unibz/cs/semint/kprime/scenario/SakilaScenario.kt b/src/main/kotlin/unibz.cs.semint.kprime/scenario/SakilaScenario.kt
similarity index 100%
rename from src/main/kotlin/unibz/cs/semint/kprime/scenario/SakilaScenario.kt
rename to src/main/kotlin/unibz.cs.semint.kprime/scenario/SakilaScenario.kt
diff --git a/src/main/kotlin/unibz/cs/semint/kprime/scenario/DepartmentEmploeesScenario.kt b/src/main/kotlin/unibz/cs/semint/kprime/scenario/DepartmentEmploeesScenario.kt
deleted file mode 100644
index 0094230..0000000
--- a/src/main/kotlin/unibz/cs/semint/kprime/scenario/DepartmentEmploeesScenario.kt
+++ /dev/null
@@ -1,4 +0,0 @@
-package unibz.cs.semint.kprime.scenario
-
-class DepartmentEmploeesScenario {
-}
\ No newline at end of file
diff --git a/src/test/kotlin/unibz.cs.semint.kprime/scenario/PersonVSplitScenarioTI.kt b/src/test/kotlin/unibz.cs.semint.kprime/scenario/PersonVSplitScenarioTI.kt
new file mode 100644
index 0000000..a78e9d9
--- /dev/null
+++ b/src/test/kotlin/unibz.cs.semint.kprime/scenario/PersonVSplitScenarioTI.kt
@@ -0,0 +1,16 @@
+package unibz.cs.semint.kprime.scenario
+
+import org.junit.Test
+
+class PersonVSplitScenarioTI {
+
+    @Test
+    fun test_person_vsplit_scenario() {
+        // given
+        val personVSplitScenario = PersonVSplitScenario()
+        // when
+        personVSplitScenario.run()
+        // then
+        // prints splitted database
+    }
+}
\ No newline at end of file
-- 
GitLab