This is an automated email from the ASF dual-hosted git repository. nadment pushed a commit to branch 2255 in repository https://gitbox.apache.org/repos/asf/hop.git
commit 2a21dab0473ca4d1ab9b75cf56d248762b8134eb Author: Nicolas Adment <[email protected]> AuthorDate: Wed Feb 8 21:28:45 2023 +0100 Call DB procedure transform allow connection with variables #2255 --- .../hop/pipeline/transforms/dbproc/DBProc.java | 4 +- .../pipeline/transforms/dbproc/DBProcDialog.java | 20 ++++---- .../hop/pipeline/transforms/dbproc/DBProcMeta.java | 55 ++++++++++++++-------- 3 files changed, 47 insertions(+), 32 deletions(-) diff --git a/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProc.java b/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProc.java index 591c73190d..766b71fdf1 100644 --- a/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProc.java +++ b/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProc.java @@ -21,6 +21,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.hop.core.Const; import org.apache.hop.core.RowMetaAndData; import org.apache.hop.core.database.Database; +import org.apache.hop.core.database.DatabaseMeta; import org.apache.hop.core.exception.HopDatabaseException; import org.apache.hop.core.exception.HopException; import org.apache.hop.core.exception.HopTransformException; @@ -207,7 +208,8 @@ public class DBProc extends BaseTransform<DBProcMeta, DBProcData> { data.readsRows = true; } - data.db = new Database(this, this, meta.getDatabase()); + DatabaseMeta databaseMeta = getPipelineMeta().findDatabase(meta.getConnection(), variables); + data.db = new Database(this, this, databaseMeta); try { data.db.connect(); diff --git a/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProcDialog.java b/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProcDialog.java index dac17ba98a..b91cd68123 100644 --- a/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProcDialog.java +++ b/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProcDialog.java @@ -143,7 +143,8 @@ public class DBProcDialog extends BaseTransformDialog implements ITransformDialo wTransformName.setLayoutData(fdTransformName); // Connection line - wConnection = addConnectionLine(shell, wTransformName, input.getDatabase(), null); + DatabaseMeta databaseMeta = pipelineMeta.findDatabase(input.getConnection(), variables); + wConnection = addConnectionLine(shell, wTransformName, databaseMeta, null); // ProcName line... // add button to get list of procedures on selected connection... @@ -314,10 +315,9 @@ public class DBProcDialog extends BaseTransformDialog implements ITransformDialo } private void selectProcedure(Event event) { - DatabaseMeta dbInfo = pipelineMeta.findDatabase(wConnection.getText()); - if (dbInfo != null) { - Database db = new Database(loggingObject, variables, dbInfo); - try { + DatabaseMeta databaseMeta = pipelineMeta.findDatabase(wConnection.getText(), variables); + if (databaseMeta != null) { + try (Database db = new Database(loggingObject, variables, databaseMeta)) { db.connect(); String[] procs = db.getProcedures(); if (procs != null && procs.length > 0) { @@ -344,8 +344,6 @@ public class DBProcDialog extends BaseTransformDialog implements ITransformDialo BaseMessages.getString(PKG, "DBProcDialog.ErrorGettingProceduresList.DialogTitle"), BaseMessages.getString(PKG, "DBProcDialog.ErrorGettingProceduresList.DialogMessage"), dbe); - } finally { - db.disconnect(); } } } @@ -381,8 +379,8 @@ public class DBProcDialog extends BaseTransformDialog implements ITransformDialo item.setText(3, Const.NVL(argument.getType(), "")); } - if (input.getDatabase() != null) { - wConnection.setText(input.getDatabase().getName()); + if (input.getConnection() != null) { + wConnection.setText(input.getConnection()); } wProcName.setText(Const.NVL(input.getProcedure(), "")); @@ -415,7 +413,7 @@ public class DBProcDialog extends BaseTransformDialog implements ITransformDialo argument.setType(item.getText(3)); input.getArguments().add(argument); } - input.setDatabase(wConnection.loadSelectedElement()); + input.setConnection(wConnection.getText()); input.setProcedure(wProcName.getText()); input.getResult().setName(wResult.getText()); input.getResult().setType(wResultType.getText()); @@ -423,7 +421,7 @@ public class DBProcDialog extends BaseTransformDialog implements ITransformDialo transformName = wTransformName.getText(); // return value - if (input.getDatabase() == null) { + if (input.getConnection() == null) { MessageBox mb = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR); mb.setMessage(BaseMessages.getString(PKG, "DBProcDialog.InvalidConnection.DialogMessage")); mb.setText(BaseMessages.getString(PKG, "DBProcDialog.InvalidConnection.DialogTitle")); diff --git a/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProcMeta.java b/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProcMeta.java index 0ef13e00c2..4ee1dc924f 100644 --- a/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProcMeta.java +++ b/plugins/transforms/dbproc/src/main/java/org/apache/hop/pipeline/transforms/dbproc/DBProcMeta.java @@ -26,7 +26,6 @@ import org.apache.hop.core.database.DatabaseMeta; import org.apache.hop.core.exception.HopException; import org.apache.hop.core.exception.HopPluginException; import org.apache.hop.core.exception.HopTransformException; -import org.apache.hop.core.logging.LoggingObject; import org.apache.hop.core.row.IRowMeta; import org.apache.hop.core.row.IValueMeta; import org.apache.hop.core.row.value.ValueMetaBase; @@ -55,10 +54,10 @@ public class DBProcMeta extends BaseTransformMeta<DBProc, DBProcData> { private static final Class<?> PKG = DBProcMeta.class; // For Translator /** database connection */ - @HopMetadataProperty(key = "connection", storeWithName = true) - private DatabaseMeta database; - - /** proc.-name to be called */ + @HopMetadataProperty(key = "connection") + private String connection; + + /** procedure name to be called */ @HopMetadataProperty private String procedure; /** function arguments */ @@ -79,7 +78,7 @@ public class DBProcMeta extends BaseTransformMeta<DBProc, DBProcData> { public DBProcMeta(DBProcMeta m) { this(); - this.database = database == null ? null : new DatabaseMeta(m.database); + this.connection = m.connection; this.procedure = m.procedure; for (ProcArgument argument : m.arguments) { this.arguments.add(new ProcArgument(argument)); @@ -95,7 +94,7 @@ public class DBProcMeta extends BaseTransformMeta<DBProc, DBProcData> { @Override public void setDefault() { - database = null; + connection = null; result.name = "result"; result.type = "Number"; autoCommit = true; @@ -153,9 +152,25 @@ public class DBProcMeta extends BaseTransformMeta<DBProc, DBProcData> { CheckResult cr; String errorMessage = ""; - if (database != null) { - Database db = new Database(new LoggingObject(pipelineMeta), variables, database); - try { + DatabaseMeta databaseMeta = null; + + try { + databaseMeta = + metadataProvider.getSerializer(DatabaseMeta.class).load(variables.resolve(connection)); + } catch (HopException e) { + cr = + new CheckResult( + ICheckResult.TYPE_RESULT_ERROR, + BaseMessages.getString( + PKG, + "DBProcMeta.CheckResult.DatabaseMetaError", + variables.resolve(connection)), + transformMeta); + remarks.add(cr); + } + + if (databaseMeta != null) { + try (Database db = new Database(loggingObject, variables, databaseMeta)) { db.connect(); // Look up fields in the input stream <prev> @@ -209,13 +224,13 @@ public class DBProcMeta extends BaseTransformMeta<DBProc, DBProcData> { BaseMessages.getString(PKG, "DBProcMeta.CheckResult.CouldNotReadFields") + Const.CR; cr = new CheckResult(ICheckResult.TYPE_RESULT_ERROR, errorMessage, transformMeta); remarks.add(cr); - } + } } catch (HopException e) { errorMessage = BaseMessages.getString(PKG, "DBProcMeta.CheckResult.ErrorOccurred") + e.getMessage(); cr = new CheckResult(ICheckResult.TYPE_RESULT_ERROR, errorMessage, transformMeta); remarks.add(cr); - } + } } else { errorMessage = BaseMessages.getString(PKG, "DBProcMeta.CheckResult.InvalidConnection"); cr = new CheckResult(ICheckResult.TYPE_RESULT_ERROR, errorMessage, transformMeta); @@ -393,21 +408,21 @@ public class DBProcMeta extends BaseTransformMeta<DBProc, DBProcData> { } /** - * Gets database + * Gets database connection * - * @return value of database + * @return value of connection */ - public DatabaseMeta getDatabase() { - return database; + public String getConnection() { + return connection; } /** - * Sets database + * Sets database connection * - * @param database value of database + * @param connection value of database connection */ - public void setDatabase(DatabaseMeta database) { - this.database = database; + public void setConnection(String connection) { + this.connection = connection; } /**
