From d5371b307da213a3f745a7ecde722eae2bf751b2 Mon Sep 17 00:00:00 2001 From: Francesco Date: Mon, 25 Sep 2023 15:41:10 +0200 Subject: [PATCH] WIP --- .../tech/ailef/dbadmin/external/DbAdmin.java | 6 +++ .../dbadmin/external/dbmapping/DbField.java | 4 ++ .../external/dbmapping/DbFieldType.java | 22 ++++++++++ .../resources/templates/model/create.html | 40 +++++++++++++------ 4 files changed, 59 insertions(+), 13 deletions(-) diff --git a/src/main/java/tech/ailef/dbadmin/external/DbAdmin.java b/src/main/java/tech/ailef/dbadmin/external/DbAdmin.java index 2de4e69..db6a4dc 100644 --- a/src/main/java/tech/ailef/dbadmin/external/DbAdmin.java +++ b/src/main/java/tech/ailef/dbadmin/external/DbAdmin.java @@ -20,6 +20,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.EntityManager; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; +import jakarta.persistence.Lob; import jakarta.persistence.ManyToMany; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; @@ -201,6 +202,7 @@ public class DbAdmin { ManyToMany manyToMany = f.getAnnotation(ManyToMany.class); ManyToOne manyToOne = f.getAnnotation(ManyToOne.class); OneToOne oneToOne = f.getAnnotation(OneToOne.class); + Lob lob = f.getAnnotation(Lob.class); String fieldName = determineFieldName(f); @@ -212,6 +214,10 @@ public class DbAdmin { DbFieldType fieldType = null; try { fieldType = DbFieldType.fromClass(f.getType()); + + if (fieldType != null && lob != null && fieldType == DbFieldType.STRING) { + fieldType = DbFieldType.TEXT; + } } catch (DbAdminException e) { // If failure, we try to map a relationship on this field } diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbField.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbField.java index 60acb03..5162a91 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbField.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbField.java @@ -124,6 +124,10 @@ public class DbField { return format; } + public boolean isText() { + return type == DbFieldType.TEXT; + } + @Override public String toString() { return "DbField [name=" + dbName + ", javaName=" + javaName + ", type=" + type + ", field=" + field diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbFieldType.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbFieldType.java index 05bb705..bfebae7 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbFieldType.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbFieldType.java @@ -163,6 +163,28 @@ public enum DbFieldType { return List.of(CompareOperator.CONTAINS, CompareOperator.STRING_EQ); } }, + TEXT { + @Override + public String getHTMLName() { + return "textarea"; + } + + @Override + public Object parseValue(Object value) { + return value; + } + + @Override + public Class getJavaClass() { + return String.class; + } + + @Override + public List getCompareOperators() { + return List.of(CompareOperator.CONTAINS, CompareOperator.STRING_EQ); + } + + }, BOOLEAN { @Override public String getHTMLName() { diff --git a/src/main/resources/templates/model/create.html b/src/main/resources/templates/model/create.html index bf40e27..5e236f0 100644 --- a/src/main/resources/templates/model/create.html +++ b/src/main/resources/templates/model/create.html @@ -43,19 +43,33 @@ - - + + + + + + Binary field