From eb40bbc1bb81b57815f30e1d7a0487a0a8f1d630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Thu, 25 Mar 2021 20:24:36 +0100 Subject: [PATCH] [Editor] Improve database columns description --- .../component/{SQLElementCell.kt => SchemaElementCell.kt} | 6 +++--- ...ntStringConverter.kt => SchemaElementStringConverter.kt} | 2 +- .../base/editor/database/model/schema/SchemaColumn.kt | 6 ++++-- .../base/editor/database/model/schema/SchemaTable.kt | 2 +- .../base/editor/database/service/H2DatabaseService.kt | 5 +---- .../base/editor/database/view/list/TablesListView.kt | 4 ++-- 6 files changed, 12 insertions(+), 13 deletions(-) rename editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/{SQLElementCell.kt => SchemaElementCell.kt} (89%) rename editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/{SQLElementStringConverter.kt => SchemaElementStringConverter.kt} (95%) diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementCell.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SchemaElementCell.kt similarity index 89% rename from editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementCell.kt rename to editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SchemaElementCell.kt index 8c0f518b..c9b69db9 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementCell.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SchemaElementCell.kt @@ -8,7 +8,7 @@ import javafx.scene.control.cell.TextFieldTreeCell import tornadofx.action import tornadofx.item -class SQLElementCell( +class SchemaElementCell( renameElement: (element: Schema, name: String) -> Schema, deleteElement: (element: Schema) -> Unit ) : TextFieldTreeCell() { @@ -45,7 +45,7 @@ class SQLElementCell( } init { - converter = SQLElementStringConverter(this, renameElement) + converter = SchemaElementStringConverter(this, renameElement) } override fun updateItem(item: Schema?, empty: Boolean) { @@ -58,7 +58,7 @@ class SQLElementCell( } text = when (item) { - is SchemaColumn -> "${item.name}${if (item.nullable) "?" else ""}" + is SchemaColumn -> "${item.name}: ${item.rawType}${if (item.nullable) "?" else ""}" else -> item.name } diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementStringConverter.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SchemaElementStringConverter.kt similarity index 95% rename from editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementStringConverter.kt rename to editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SchemaElementStringConverter.kt index 7c4634b3..c0d915c7 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementStringConverter.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SchemaElementStringConverter.kt @@ -4,7 +4,7 @@ import com.bartlomiejpluta.base.editor.database.model.schema.Schema import javafx.scene.control.TreeCell import javafx.util.StringConverter -class SQLElementStringConverter( +class SchemaElementStringConverter( private val cell: TreeCell, private val rename: (item: Schema, newName: String) -> Schema ) : StringConverter() { diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaColumn.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaColumn.kt index 18eb7274..6a666438 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaColumn.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaColumn.kt @@ -6,10 +6,12 @@ import java.sql.Connection class SchemaColumn( val table: SchemaTable, name: String, - val type: ColumnType, + val rawType: String, val nullable: Boolean, val primary: Boolean ) : Schema { + val type = ColumnType.valueOf(rawType.replace(" ", "_").substringBefore("(")) + override var name: String = name private set(value) { field = value.toUpperCase() @@ -25,7 +27,7 @@ class SchemaColumn( table.columns.remove(this) } - override val icon = when (type) { + override val icon = if (primary) FontIcon("fa-key") else when (type) { ColumnType.INTEGER -> FontIcon("fa-hashtag") ColumnType.BOOLEAN -> FontIcon("fa-toggle-on") ColumnType.TINYINT -> FontIcon("fa-hashtag") diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaTable.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaTable.kt index 5dbf34d5..3e0a94b8 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaTable.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaTable.kt @@ -12,7 +12,7 @@ class SchemaTable(val database: SchemaDatabase, name: String) : Schema { val columns = observableListOf() - fun addColumn(name: String, type: ColumnType, nullable: Boolean, primary: Boolean) { + fun addColumn(name: String, type: String, nullable: Boolean, primary: Boolean) { val column = SchemaColumn(this, name, type, nullable, primary) columns += column } diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/H2DatabaseService.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/H2DatabaseService.kt index 1c83254f..276591a6 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/H2DatabaseService.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/H2DatabaseService.kt @@ -3,7 +3,6 @@ package com.bartlomiejpluta.base.editor.database.service import com.bartlomiejpluta.base.editor.database.model.data.DataField import com.bartlomiejpluta.base.editor.database.model.data.DataRecord import com.bartlomiejpluta.base.editor.database.model.data.Query -import com.bartlomiejpluta.base.editor.database.model.schema.ColumnType import com.bartlomiejpluta.base.editor.database.model.schema.SchemaDatabase import com.bartlomiejpluta.base.editor.project.context.ProjectContext import org.springframework.beans.factory.annotation.Autowired @@ -31,7 +30,7 @@ class H2DatabaseService : DatabaseService { while (results.next()) { table.addColumn( results.getString("FIELD"), - parseType(results.getString("TYPE")), + results.getString("TYPE"), results.getBoolean("NULL"), results.getString("KEY") == "PRI" ) @@ -49,8 +48,6 @@ class H2DatabaseService : DatabaseService { return projectContext.project?.database?.connection?.use(op) } - private fun parseType(type: String) = ColumnType.valueOf(type.replace(" ", "_").substringBefore("(")) - override fun execute(statement: String, name: String): Query? = run { val stmt = prepareStatement(statement).apply { execute() } val results = stmt.resultSet diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/list/TablesListView.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/list/TablesListView.kt index 78249cff..b27844d3 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/list/TablesListView.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/list/TablesListView.kt @@ -1,6 +1,6 @@ package com.bartlomiejpluta.base.editor.database.view.list -import com.bartlomiejpluta.base.editor.database.component.SQLElementCell +import com.bartlomiejpluta.base.editor.database.component.SchemaElementCell import com.bartlomiejpluta.base.editor.database.controller.DatabaseController import com.bartlomiejpluta.base.editor.database.model.* import com.bartlomiejpluta.base.editor.database.model.schema.Schema @@ -28,7 +28,7 @@ class TablesListView : View() { isShowRoot = false setCellFactory { - SQLElementCell(this@TablesListView::renameElement, this@TablesListView::deleteElement) + SchemaElementCell(this@TablesListView::renameElement, this@TablesListView::deleteElement) } setOnMouseClicked { event ->