From a10814aaa2f8209a9f28cf5ee82c29ca222c58d8 Mon Sep 17 00:00:00 2001 From: pborissow Date: Sat, 20 May 2023 12:53:18 -0400 Subject: [PATCH 1/5] Add support for OpenJDK version of Nashorn --- src/javaxt/orm/Parser.java | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/javaxt/orm/Parser.java b/src/javaxt/orm/Parser.java index 64865d0..991d370 100644 --- a/src/javaxt/orm/Parser.java +++ b/src/javaxt/orm/Parser.java @@ -1,8 +1,14 @@ package javaxt.orm; -import javax.script.*; -import jdk.nashorn.api.scripting.ScriptObjectMirror; + +import java.util.*; import javaxt.json.*; -import java.util.HashMap; + +//Scripting includes +import javax.script.*; +import org.openjdk.nashorn.api.scripting.ScriptObjectMirror; +import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory; +import org.openjdk.nashorn.api.scripting.NashornScriptEngine; + //****************************************************************************** //** Parser Class @@ -67,13 +73,13 @@ public Model[] getModels(){ private void init(JSONObject json){ String packageName = json.get("package").toString(); JSONObject models = json.get("models").toJSONObject(); - HashMap options = new HashMap(); + HashMap options = new HashMap<>(); for (String key : optionalVars){ String val = json.get(key).toString(); if (val!=null) options.put(key, val); } - java.util.ArrayList arr = new java.util.ArrayList(); + ArrayList arr = new ArrayList<>(); for (String modelName : models.keySet()){ Model model = new Model(modelName, models.get(modelName).toJSONObject(), packageName, options); arr.add(model); @@ -94,8 +100,9 @@ private JSONObject parseJavaScript(String js) throws Exception { //Instantiate ScriptEngine - ScriptEngineManager factory = new ScriptEngineManager(); - ScriptEngine engine = factory.getEngineByName("nashorn"); + String[] options = new String[] { "--language=es6" }; + NashornScriptEngineFactory factory = new NashornScriptEngineFactory(); + NashornScriptEngine engine = (NashornScriptEngine) factory.getScriptEngine(options); //Extract variables From a9d4c9000917d8cd20a87a9a863aa4c1cc48394a Mon Sep 17 00:00:00 2001 From: pborissow Date: Sat, 20 May 2023 12:54:12 -0400 Subject: [PATCH 2/5] Updated pom.xml with new Nashorn dependency --- pom.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 12f4f58..94cf71a 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,12 @@ javaxt javaxt-core - 1.12.1 + 1.12.3 + + + org.openjdk.nashorn + nashorn-core + 15.4 From 911becf2fe02807c36c7074555f3b12a94a4a473 Mon Sep 17 00:00:00 2001 From: pborissow Date: Sat, 20 May 2023 12:57:21 -0400 Subject: [PATCH 3/5] Added support for new "implements" keyword. Also updated logic for returning passwords and cleaned up database code. --- src/javaxt/orm/Class.txt | 2 +- src/javaxt/orm/Model.java | 162 ++++++++++++++++++++++++-------------- 2 files changed, 106 insertions(+), 58 deletions(-) diff --git a/src/javaxt/orm/Class.txt b/src/javaxt/orm/Class.txt index 25063cb..c78c060 100644 --- a/src/javaxt/orm/Class.txt +++ b/src/javaxt/orm/Class.txt @@ -11,7 +11,7 @@ ${includes} * ******************************************************************************/ -public class ${modelName} extends javaxt.sql.Model { +public class ${modelName} extends javaxt.sql.Model ${implements}{ ${privateFields} diff --git a/src/javaxt/orm/Model.java b/src/javaxt/orm/Model.java index d1301c6..2461a13 100644 --- a/src/javaxt/orm/Model.java +++ b/src/javaxt/orm/Model.java @@ -1,6 +1,7 @@ package javaxt.orm; import javaxt.json.*; -import java.util.HashMap; +import java.util.*; +import java.util.stream.Collectors; //****************************************************************************** //** Model Class @@ -13,7 +14,8 @@ public class Model { private String name; - private java.util.ArrayList fields; + private HashSet implementations; + private ArrayList fields; private static final String template = getTemplate(); private String tableName; private String escapedTableName; @@ -30,7 +32,8 @@ public class Model { */ protected Model(String modelName, JSONObject modelInfo, String packageName, HashMap options){ this.name = modelName; - this.fields = new java.util.ArrayList(); + this.implementations = new HashSet<>(); + this.fields = new ArrayList<>(); this.options = options; this.packageName = packageName; this.tableName = Utils.camelCaseToUnderScore(name).toLowerCase(); @@ -47,6 +50,15 @@ protected Model(String modelName, JSONObject modelInfo, String packageName, Hash } + //Get implementation classes + JSONArray implementations = modelInfo.get("implements").toJSONArray(); + if (implementations!=null){ + for (JSONValue i : implementations){ + this.implementations.add(i.toString()); + } + } + + //Parse fields JSONArray arr = modelInfo.get("fields").toJSONArray(); if (arr!=null) @@ -180,6 +192,9 @@ public String getJavaCode(){ String str = template.replace("${modelName}", name); str = str.replace("${package}", packageName); str = str.replace("${tableName}", schemaName==null ? tableName : (schemaName + "." + tableName)); + str = str.replace("${implements}", implementations.isEmpty() ? "" : "\r\n implements " + + implementations.stream().map(Object::toString).collect(Collectors.joining(", ")) + " "); + StringBuilder fieldMap = new StringBuilder("\r\n"); StringBuilder privateFields = new StringBuilder(); @@ -192,7 +207,7 @@ public String getJavaCode(){ StringBuilder hasMany = new StringBuilder(); StringBuilder initArrays = new StringBuilder(); String getLastModified = ""; - java.util.TreeSet includes = new java.util.TreeSet(); + java.util.TreeSet includes = new java.util.TreeSet<>(); for (int i=0; i " + idArray + " = new ArrayList();\r\n"); - hasMany.append(" for (javaxt.sql.Recordset row : conn.getRecordset(\r\n"); + hasMany.append(" for (javaxt.sql.Record record : conn.getRecords(\r\n"); hasMany.append(" \"select " + rightColumn + " from " + tableName + " where " + leftColumn + "=\"+id)){\r\n"); - hasMany.append(" " + idArray + ".add(row.getValue(0).toLong());\r\n"); + hasMany.append(" " + fieldName + ".add(new " + modelName + "(record.get(0).toLong()));\r\n"); hasMany.append(" }\r\n"); - hasMany.append(" for (long " + id + " : " + idArray + "){\r\n"); - hasMany.append(" " + fieldName + ".add(new " + modelName + "(" + id + "));\r\n"); - hasMany.append(" }\r\n\r\n"); initArrays.append(" " + fieldName + " = new " + fieldType + "();\r\n"); @@ -438,24 +495,25 @@ else if (fieldType.equals("Geometry")){ //Update save models (see save method) saveModels.append("\r\n"); saveModels.append(" //Save " + fieldName + "\r\n"); - saveModels.append(" ArrayList " + idArray + " = new ArrayList();\r\n"); - saveModels.append(" for (" + modelName + " obj : " + fieldName + "){\r\n"); + saveModels.append(" ArrayList " + idArray + " = new ArrayList<>();\r\n"); + saveModels.append(" for (" + modelName + " obj : this." + fieldName + "){\r\n"); saveModels.append(" obj.save();\r\n"); saveModels.append(" " + idArray + ".add(obj.getID());\r\n"); saveModels.append(" }\r\n"); - saveModels.append("\r\n"); - saveModels.append(" conn.execute(\"delete from " + tableName + " where " + leftColumn + "=\" + id);\r\n"); - saveModels.append(" rs.open(\"select * from " + tableName + " where " + leftColumn + "=\" + id, conn, false);\r\n"); - saveModels.append(" for (long " + id + " : " + idArray + "){\r\n"); - saveModels.append(" rs.addNew();\r\n"); - saveModels.append(" rs.setValue(\"" + leftColumn + "\", id);\r\n"); - saveModels.append(" rs.setValue(\"" + rightColumn + "\", " + id + ");\r\n"); - saveModels.append(" rs.update();\r\n"); + saveModels.append("\r\n\r\n"); + saveModels.append(" //Link " + fieldName + " to this " + this.name + "\r\n"); + saveModels.append(" target = \"" + tableName + " where " + leftColumn + "=\" + this.id;\r\n"); + saveModels.append(" conn.execute(\"delete from \" + target);\r\n"); + saveModels.append(" try (javaxt.sql.Recordset rs = conn.getRecordset(\"select * from \" + target, false)){\r\n"); + saveModels.append(" for (long " + id + " : " + idArray + "){\r\n"); + saveModels.append(" rs.addNew();\r\n"); + saveModels.append(" rs.setValue(\"" + leftColumn + "\", this.id);\r\n"); + saveModels.append(" rs.setValue(\"" + rightColumn + "\", " + id + ");\r\n"); + saveModels.append(" rs.update();\r\n"); + saveModels.append(" }\r\n"); saveModels.append(" }\r\n"); - saveModels.append(" rs.close();\r\n"); - saveModels.append("\r\n"); } @@ -574,15 +632,8 @@ else if (fieldType.equals("byte[]")){ //Update the database constructor with hasMany variables if (hasMany.length()>0){ getValues.append("\r\n\r\n"); - getValues.append(" javaxt.sql.Connection conn = null;\r\n"); - getValues.append(" try{\r\n"); - getValues.append(" conn = getConnection(this.getClass());\r\n"); + getValues.append(" try (javaxt.sql.Connection conn = getConnection(this.getClass())) {\r\n"); getValues.append(hasMany); - getValues.append(" conn.close();\r\n"); - getValues.append(" }\r\n"); - getValues.append(" catch(SQLException e){\r\n"); - getValues.append(" if (conn!=null) conn.close();\r\n"); - getValues.append(" throw e;\r\n"); getValues.append(" }\r\n"); } @@ -625,18 +676,15 @@ else if (fieldType.equals("byte[]")){ " //**************************************************************************\r\n" + " /** Used to save a " + name + " in the database.\r\n" + " */\r\n" + - " public void save() throws SQLException {\r\n" + - " super.save();\r\n" + - " javaxt.sql.Connection conn = null;\r\n" + - " try{\r\n" + - " conn = getConnection(this.getClass());\r\n" + - " javaxt.sql.Recordset rs = new javaxt.sql.Recordset();\r\n" + - " " + saveModels + "\r\n" + - " conn.close();\r\n" + - " }\r\n" + - " catch(SQLException e){\r\n" + - " if (conn!=null) conn.close();\r\n" + - " throw e;\r\n" + + " public void save() throws SQLException {\r\n\r\n" + + + " //Update record in the " + this.tableName + " table\r\n" + + " super.save();\r\n\r\n\r\n" + + + " //Save models\r\n" + + " try (javaxt.sql.Connection conn = getConnection(this.getClass())) {\r\n" + + " String target;\r\n" + + " " + saveModels + " }\r\n" + " }\r\n"; @@ -711,7 +759,7 @@ public String getTableSQL(){ //Add fields - java.util.ArrayList foreignKeys = new java.util.ArrayList(); + java.util.ArrayList foreignKeys = new java.util.ArrayList<>(); java.util.Iterator it = fields.iterator(); while (it.hasNext()){ Field field = it.next(); From a7126fa07cbec1743fb992f539c44d25dca1a226 Mon Sep 17 00:00:00 2001 From: pborissow Date: Sat, 20 May 2023 13:47:17 -0400 Subject: [PATCH 4/5] Cleaned up JSONArray iterator --- src/javaxt/orm/Model.java | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/javaxt/orm/Model.java b/src/javaxt/orm/Model.java index 2461a13..fee6fd8 100644 --- a/src/javaxt/orm/Model.java +++ b/src/javaxt/orm/Model.java @@ -14,7 +14,7 @@ public class Model { private String name; - private HashSet implementations; + private TreeSet implementations; private ArrayList fields; private static final String template = getTemplate(); private String tableName; @@ -32,7 +32,7 @@ public class Model { */ protected Model(String modelName, JSONObject modelInfo, String packageName, HashMap options){ this.name = modelName; - this.implementations = new HashSet<>(); + this.implementations = new TreeSet<>(); this.fields = new ArrayList<>(); this.options = options; this.packageName = packageName; @@ -207,7 +207,7 @@ public String getJavaCode(){ StringBuilder hasMany = new StringBuilder(); StringBuilder initArrays = new StringBuilder(); String getLastModified = ""; - java.util.TreeSet includes = new java.util.TreeSet<>(); + TreeSet includes = new TreeSet<>(); for (int i=0; i foreignKeys = new java.util.ArrayList<>(); - java.util.Iterator it = fields.iterator(); + ArrayList foreignKeys = new ArrayList<>(); + Iterator it = fields.iterator(); while (it.hasNext()){ Field field = it.next(); if (field.isArray()) continue; @@ -823,7 +822,7 @@ public String getTableSQL(){ */ public String getDiamondTableSQL(){ StringBuilder str = new StringBuilder(); - java.util.Iterator it = fields.iterator(); + Iterator it = fields.iterator(); while (it.hasNext()){ Field field = it.next(); if (field.isArray()){ @@ -925,7 +924,7 @@ public String getDiamondTableSQL(){ */ public String getForeignKeySQL(){ StringBuilder str = new StringBuilder(); - java.util.Iterator it = fields.iterator(); + Iterator it = fields.iterator(); while (it.hasNext()){ Field field = it.next(); if (!field.isArray()){ @@ -967,7 +966,7 @@ public String getForeignKeySQL(){ public String getIndexSQL(){ StringBuilder str = new StringBuilder(); String indexPrefix = "IDX_" + tableName.toUpperCase()+ "_"; - java.util.Iterator it = fields.iterator(); + Iterator it = fields.iterator(); while (it.hasNext()){ Field field = it.next(); if (!field.isArray()){ @@ -1036,7 +1035,7 @@ public String getTriggerSQL(){ /** Returns true if the model contains a lastModified date field. */ protected boolean hasLastModifiedField(){ - java.util.Iterator it = fields.iterator(); + Iterator it = fields.iterator(); while (it.hasNext()){ Field field = it.next(); if (field.isArray()) continue; From 318973dc4ffa7d7dcb2bf19ca4fd210c33052a12 Mon Sep 17 00:00:00 2001 From: pborissow Date: Sun, 21 May 2023 09:31:30 -0400 Subject: [PATCH 5/5] Updated javaxt-core dependency in pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 94cf71a..352a3d5 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ javaxt javaxt-core - 1.12.3 + 2.0.0 org.openjdk.nashorn pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy