This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new 1465818bc5 fix #3834 (#3936)
1465818bc5 is described below
commit 1465818bc596aaa565e62ec71042f7617eff8e41
Author: Sergio Ramazzina <[email protected]>
AuthorDate: Thu May 16 11:08:35 2024 +0200
fix #3834 (#3936)
* fix #3834 - DimensionLookupUpdate: - specify connection through variables
* fix #3834 - DimensionLookupUpdate: - specify connection through variables
* change test to use variable, #3834
---------
Co-authored-by: Hans Van Akelyen <[email protected]>
---
.../0012-dimension-lookup-update-update.hpl | 54 +++---
integration-tests/database/dev-env-config.json | 30 ++--
.../dimensionlookup/DimensionLookup.java | 128 +++++++--------
.../dimensionlookup/DimensionLookupData.java | 3 +-
.../dimensionlookup/DimensionLookupDialog.java | 53 +++---
.../dimensionlookup/DimensionLookupMeta.java | 182 ++++++++++++++-------
.../messages/messages_en_US.properties | 1 +
.../dimensionlookup/DimensionLookupMetaTest.java | 2 +-
8 files changed, 252 insertions(+), 201 deletions(-)
diff --git a/integration-tests/database/0012-dimension-lookup-update-update.hpl
b/integration-tests/database/0012-dimension-lookup-update-update.hpl
index f202670dd1..33f0c23782 100644
--- a/integration-tests/database/0012-dimension-lookup-update-update.hpl
+++ b/integration-tests/database/0012-dimension-lookup-update-update.hpl
@@ -35,8 +35,6 @@ limitations under the License.
<created_date>2021/04/30 11:01:28.333</created_date>
<modified_user>-</modified_user>
<modified_date>2021/04/30 11:01:28.333</modified_date>
- <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key>
- <is_key_private>N</is_key_private>
</info>
<notepads>
</notepads>
@@ -58,28 +56,28 @@ limitations under the License.
<method>none</method>
<schema_name/>
</partitioning>
+ <data>
+ <line>
+ <item>1</item>
+ <item>a</item>
+ </line>
+ </data>
<fields>
<field>
- <set_empty_string>N</set_empty_string>
<length>-1</length>
- <name>key</name>
<precision>-1</precision>
+ <set_empty_string>N</set_empty_string>
+ <name>key</name>
<type>String</type>
</field>
<field>
- <set_empty_string>N</set_empty_string>
<length>-1</length>
- <name>value</name>
<precision>-1</precision>
+ <set_empty_string>N</set_empty_string>
+ <name>value</name>
<type>String</type>
</field>
</fields>
- <data>
- <line>
- <item>1</item>
- <item>a</item>
- </line>
- </data>
<attributes/>
<GUI>
<xloc>144</xloc>
@@ -97,43 +95,37 @@ limitations under the License.
<method>none</method>
<schema_name/>
</partitioning>
- <schema>public</schema>
- <table>dimension</table>
- <connection>unit-test-db</connection>
+ <cache_size>5000</cache_size>
<commit>100</commit>
- <update>Y</update>
+ <connection>${DATABASE_NAME}</connection>
<fields>
- <key>
- <name>key</name>
- <lookup>key</lookup>
- </key>
<date>
- <name/>
<from>date_from</from>
<to>date_to</to>
</date>
<field>
- <name>value</name>
<lookup>value</lookup>
+ <name>value</name>
<update>Update</update>
</field>
+ <key>
+ <lookup>key</lookup>
+ <name>key</name>
+ </key>
<return>
- <name>dimension_id</name>
- <rename/>
<creation_method>tablemax</creation_method>
- <use_autoinc>N</use_autoinc>
+ <name>dimension_id</name>
<version>version</version>
</return>
</fields>
- <sequence/>
- <min_year>1900</min_year>
<max_year>2199</max_year>
- <cache_size>5000</cache_size>
+ <min_year>1900</min_year>
<preload_cache>N</preload_cache>
- <use_start_date_alternative>N</use_start_date_alternative>
- <start_date_alternative>none</start_date_alternative>
- <start_date_field_name/>
+ <schema>public</schema>
+ <table>dimension</table>
+ <update>Y</update>
<useBatch>N</useBatch>
+ <use_start_date_alternative>N</use_start_date_alternative>
<attributes/>
<GUI>
<xloc>364</xloc>
diff --git a/integration-tests/database/dev-env-config.json
b/integration-tests/database/dev-env-config.json
index 00d07db900..8861a934f1 100644
--- a/integration-tests/database/dev-env-config.json
+++ b/integration-tests/database/dev-env-config.json
@@ -1,19 +1,15 @@
{
- "description": "HOP-2333 Test Environment Variables - DEV",
- "metadataBaseFolder": "${PROJECT_HOME}/metadata",
- "unitTestsBasePath": "${PROJECT_HOME}",
- "dataSetsCsvFolder": "${PROJECT_HOME}/datasets",
- "enforcingExecutionInHome": true,
- "config": {
- "variables": [
- {
- "name": "sample-var2",
- "value": "ProvaDev2"
- },
- {
- "name": "sample-var1",
- "value": "ProvaDev1"
- }
- ]
- }
+ "variables" : [ {
+ "name" : "sample-var2",
+ "value" : "ProvaDev2",
+ "description" : ""
+ }, {
+ "name" : "sample-var1",
+ "value" : "ProvaDev1",
+ "description" : ""
+ }, {
+ "name" : "DATABASE_NAME",
+ "value" : "unit-test-db",
+ "description" : ""
+ } ]
}
\ No newline at end of file
diff --git
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookup.java
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookup.java
index 76604ff279..dfd08967b9 100644
---
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookup.java
+++
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookup.java
@@ -35,7 +35,6 @@ 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;
@@ -94,8 +93,8 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
first = false;
data.schemaTable =
- meta.getDatabaseMeta()
- .getQuotedSchemaTableCombination(this, data.realSchemaName,
data.realTableName);
+ data.databaseMeta.getQuotedSchemaTableCombination(
+ this, data.realSchemaName, data.realTableName);
data.inputRowMeta = getInputRowMeta().clone();
data.outputRowMeta = getInputRowMeta().clone();
@@ -187,7 +186,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
//
data.valueDateNow = determineDimensionUpdatedDate(r);
- data.notFoundTk = (long)
meta.getDatabaseMeta().getNotFoundTK(isAutoIncrement());
+ data.notFoundTk = (long)
data.databaseMeta.getNotFoundTK(isAutoIncrement());
if (getCopy() == 0) {
checkDimZero();
@@ -280,31 +279,30 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
*/
private void preloadCache() throws HopException {
try {
- DatabaseMeta databaseMeta = meta.getDatabaseMeta();
DLFields f = meta.getFields();
// Retrieve: tk, version, from, to, natural keys, retrieval fields.
// Store these rows in the cache.
//
- String sql = "SELECT " +
databaseMeta.quoteField(f.getReturns().getKeyField());
+ String sql = "SELECT " +
data.databaseMeta.quoteField(f.getReturns().getKeyField());
// Add the natural key field in the table.
//
for (DLKey key : f.getKeys()) {
- sql += ", " + databaseMeta.quoteField(key.getLookup());
+ sql += ", " + data.databaseMeta.quoteField(key.getLookup());
}
// Add the extra fields to retrieve.
//
for (DLField field : f.getFields()) {
- sql += ", " + databaseMeta.quoteField(field.getLookup());
+ sql += ", " + data.databaseMeta.quoteField(field.getLookup());
}
// Add the date range fields
//
- sql += ", " + databaseMeta.quoteField(f.getDate().getFrom());
- sql += ", " + databaseMeta.quoteField(f.getDate().getTo());
+ sql += ", " + data.databaseMeta.quoteField(f.getDate().getFrom());
+ sql += ", " + data.databaseMeta.quoteField(f.getDate().getTo());
sql += " FROM " + data.schemaTable;
@@ -742,9 +740,9 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
valueDateTo = data.maxDate;
// First try to use an AUTOINCREMENT field
- if (meta.getDatabaseMeta().supportsAutoinc() && isAutoIncrement()) {
+ if (data.databaseMeta.supportsAutoinc() && isAutoIncrement()) {
technicalKey = null; // value to accept new key...
- } else if (meta.getDatabaseMeta().supportsSequences()
+ } else if (data.databaseMeta.supportsSequences()
// Try to get the value by looking at a SEQUENCE (oracle mostly)
&& meta.getSequenceName() != null
&& meta.getSequenceName().length() > 0) {
@@ -849,7 +847,6 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
*/
private void setDimLookup(IRowMeta rowMeta) throws HopException {
DLFields f = meta.getFields();
- DatabaseMeta databaseMeta = meta.getDatabaseMeta();
data.lookupRowMeta = new RowMeta();
@@ -866,18 +863,18 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
*/
String sql =
"SELECT "
- + databaseMeta.quoteField(f.getReturns().getKeyField())
+ + data.databaseMeta.quoteField(f.getReturns().getKeyField())
+ ", "
- + databaseMeta.quoteField(f.getReturns().getVersionField());
+ + data.databaseMeta.quoteField(f.getReturns().getVersionField());
for (DLField field : f.getFields()) {
// Don't retrieve the fields without input
if (StringUtils.isNotEmpty(field.getLookup())
&& isLookupOrUpdateTypeWithArgument(meta.isUpdate(), field)) {
- sql += ", " + databaseMeta.quoteField(field.getLookup());
+ sql += ", " + data.databaseMeta.quoteField(field.getLookup());
if (StringUtils.isNotEmpty(field.getName()) &&
!field.getLookup().equals(field.getName())) {
- sql += " AS " + databaseMeta.quoteField(field.getName());
+ sql += " AS " + data.databaseMeta.quoteField(field.getName());
}
}
}
@@ -885,9 +882,9 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
if (meta.getCacheSize() >= 0) {
sql +=
", "
- + databaseMeta.quoteField(f.getDate().getFrom())
+ + data.databaseMeta.quoteField(f.getDate().getFrom())
+ ", "
- + databaseMeta.quoteField(f.getDate().getTo());
+ + data.databaseMeta.quoteField(f.getDate().getTo());
}
sql += " FROM " + data.schemaTable + " WHERE ";
@@ -897,12 +894,12 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
if (i != 0) {
sql += " AND ";
}
- sql += databaseMeta.quoteField(key.getLookup()) + " = ? ";
+ sql += data.databaseMeta.quoteField(key.getLookup()) + " = ? ";
data.lookupRowMeta.addValueMeta(rowMeta.getValueMeta(data.keynrs[i]));
}
- String dateFromField = databaseMeta.quoteField(f.getDate().getFrom());
- String dateToField = databaseMeta.quoteField(f.getDate().getTo());
+ String dateFromField = data.databaseMeta.quoteField(f.getDate().getFrom());
+ String dateToField = data.databaseMeta.quoteField(f.getDate().getTo());
if (meta.isUsingStartDateAlternative() && meta.getStartDateAlternative()
== NULL
|| meta.getStartDateAlternative() == COLUMN_VALUE) {
@@ -926,11 +923,11 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
try {
logDetailed("Dimension Lookup setting preparedStatement to [" + sql +
"]");
data.prepStatementLookup =
- data.db.getConnection().prepareStatement(databaseMeta.stripCR(sql));
- if (databaseMeta.supportsSetMaxRows()) {
+
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sql));
+ if (data.databaseMeta.supportsSetMaxRows()) {
data.prepStatementLookup.setMaxRows(1); // alywas get only 1 line back!
}
- if (databaseMeta.getIDatabase().isMySqlVariant()) {
+ if (data.databaseMeta.getIDatabase().isMySqlVariant()) {
data.prepStatementLookup.setFetchSize(0); // Make sure to DISABLE
Streaming Result sets
}
logDetailed("Finished preparing dimension lookup statement.");
@@ -958,7 +955,6 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
Date dateTo)
throws HopException {
DLFields f = meta.getFields();
- DatabaseMeta databaseMeta = meta.getDatabaseMeta();
if (data.prepStatementInsert == null
&& data.prepStatementUpdate == null) { // first time: construct
prepared statement
@@ -976,29 +972,29 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
if (!isAutoIncrement()) {
// NO AUTOINCREMENT
- sql += databaseMeta.quoteField(f.getReturns().getKeyField()) + ", ";
+ sql += data.databaseMeta.quoteField(f.getReturns().getKeyField()) + ",
";
insertRowMeta.addValueMeta(
data.outputRowMeta.getValueMeta(inputRowMeta.size())); // the
first return value
// after the input
} else {
- if (databaseMeta.needsPlaceHolder()) {
+ if (data.databaseMeta.needsPlaceHolder()) {
sql += "0, "; // placeholder on informix!
}
}
sql +=
- databaseMeta.quoteField(f.getReturns().getVersionField())
+ data.databaseMeta.quoteField(f.getReturns().getVersionField())
+ ", "
- + databaseMeta.quoteField(f.getDate().getFrom())
+ + data.databaseMeta.quoteField(f.getDate().getFrom())
+ ", "
- + databaseMeta.quoteField(f.getDate().getTo());
+ + data.databaseMeta.quoteField(f.getDate().getTo());
insertRowMeta.addValueMeta(new
ValueMetaInteger(f.getReturns().getVersionField()));
insertRowMeta.addValueMeta(new ValueMetaDate(f.getDate().getFrom()));
insertRowMeta.addValueMeta(new ValueMetaDate(f.getDate().getTo()));
for (int i = 0; i < f.getKeys().size(); i++) {
DLKey key = f.getKeys().get(i);
- sql += ", " + databaseMeta.quoteField(key.getLookup());
+ sql += ", " + data.databaseMeta.quoteField(key.getLookup());
insertRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.keynrs[i]));
}
@@ -1008,7 +1004,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
// back of the row).
//
if (meta.isUpdate() && field.getUpdateType().isWithArgument()) {
- sql += ", " + databaseMeta.quoteField(field.getLookup());
+ sql += ", " + data.databaseMeta.quoteField(field.getLookup());
insertRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.fieldnrs[i]));
}
}
@@ -1030,7 +1026,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
break;
}
if (valueMeta != null) {
- sql += ", " + databaseMeta.quoteField(valueMeta.getName());
+ sql += ", " + data.databaseMeta.quoteField(valueMeta.getName());
insertRowMeta.addValueMeta(valueMeta);
}
}
@@ -1071,16 +1067,17 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
sql += " )";
try {
- if (technicalKey == null && databaseMeta.supportsAutoGeneratedKeys()) {
+ if (technicalKey == null &&
data.databaseMeta.supportsAutoGeneratedKeys()) {
logDetailed("SQL w/ return keys=[" + sql + "]");
data.prepStatementInsert =
data.db
.getConnection()
- .prepareStatement(databaseMeta.stripCR(sql),
Statement.RETURN_GENERATED_KEYS);
+ .prepareStatement(
+ data.databaseMeta.stripCR(sql),
Statement.RETURN_GENERATED_KEYS);
} else {
logDetailed("SQL=[" + sql + "]");
data.prepStatementInsert =
-
data.db.getConnection().prepareStatement(databaseMeta.stripCR(sql));
+
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sql));
}
} catch (SQLException ex) {
throw new HopDatabaseException("Unable to prepare dimension insert :"
+ Const.CR + sql, ex);
@@ -1096,7 +1093,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
// The end of the date range
//
- sqlUpdate += "SET " + databaseMeta.quoteField(f.getDate().getTo()) + " =
?" + Const.CR;
+ sqlUpdate += "SET " + data.databaseMeta.quoteField(f.getDate().getTo())
+ " = ?" + Const.CR;
updateRowMeta.addValueMeta(new ValueMetaDate(f.getDate().getTo()));
// The special update fields...
@@ -1115,7 +1112,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
break;
}
if (valueMeta != null) {
- sqlUpdate += ", " + databaseMeta.quoteField(valueMeta.getName()) + "
= ?" + Const.CR;
+ sqlUpdate += ", " +
data.databaseMeta.quoteField(valueMeta.getName()) + " = ?" + Const.CR;
updateRowMeta.addValueMeta(valueMeta);
}
}
@@ -1126,16 +1123,17 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
if (i > 0) {
sqlUpdate += "AND ";
}
- sqlUpdate += databaseMeta.quoteField(key.getLookup()) + " = ?" +
Const.CR;
+ sqlUpdate += data.databaseMeta.quoteField(key.getLookup()) + " = ?" +
Const.CR;
updateRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.keynrs[i]));
}
- sqlUpdate += "AND " +
databaseMeta.quoteField(f.getReturns().getVersionField()) + " = ? ";
+ sqlUpdate +=
+ "AND " +
data.databaseMeta.quoteField(f.getReturns().getVersionField()) + " = ? ";
updateRowMeta.addValueMeta(new
ValueMetaInteger(f.getReturns().getVersionField()));
try {
logDetailed("Preparing update: " + Const.CR + sqlUpdate + Const.CR);
data.prepStatementUpdate =
-
data.db.getConnection().prepareStatement(databaseMeta.stripCR(sqlUpdate));
+
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sqlUpdate));
} catch (SQLException ex) {
throw new HopDatabaseException(
"Unable to prepare dimension update :" + Const.CR + sqlUpdate, ex);
@@ -1226,7 +1224,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
if (isDebug()) {
logDebug("Row inserted!");
}
- if (technicalKey == null && databaseMeta.supportsAutoGeneratedKeys()) {
+ if (technicalKey == null && data.databaseMeta.supportsAutoGeneratedKeys())
{
try {
RowMetaAndData keys =
data.db.getGeneratedKeys(data.prepStatementInsert);
if (keys.getRowMeta().size() > 0) {
@@ -1350,7 +1348,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
sql += " ";
}
comma = true;
- sql += meta.getDatabaseMeta().quoteField(field.getLookup()) + " = ?"
+ Const.CR;
+ sql += data.databaseMeta.quoteField(field.getLookup()) + " = ?" +
Const.CR;
data.dimensionUpdateRowMeta.addValueMeta(rowMeta.getValueMeta(data.fieldnrs[i]));
}
}
@@ -1374,12 +1372,12 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
sql += " ";
}
comma = true;
- sql += meta.getDatabaseMeta().quoteField(valueMeta.getName()) + " =
?" + Const.CR;
+ sql += data.databaseMeta.quoteField(valueMeta.getName()) + " = ?" +
Const.CR;
data.dimensionUpdateRowMeta.addValueMeta(valueMeta);
}
}
- sql += "WHERE " +
meta.getDatabaseMeta().quoteField(f.getReturns().getKeyField()) + " = ?";
+ sql += "WHERE " +
data.databaseMeta.quoteField(f.getReturns().getKeyField()) + " = ?";
data.dimensionUpdateRowMeta.addValueMeta(
new ValueMetaInteger(f.getReturns().getKeyField())); // The tk
@@ -1388,7 +1386,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
logDebug("Preparing statement: [" + sql + "]");
}
data.prepStatementDimensionUpdate =
-
data.db.getConnection().prepareStatement(meta.getDatabaseMeta().stripCR(sql));
+
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sql));
} catch (SQLException ex) {
throw new HopDatabaseException("Couldn't prepare statement :" +
Const.CR + sql, ex);
}
@@ -1427,7 +1425,6 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
public void dimPunchThrough(IRowMeta rowMeta, Object[] row) throws
HopDatabaseException {
DLFields f = meta.getFields();
if (data.prepStatementPunchThrough == null) { // first time: construct
prepared statement
- DatabaseMeta databaseMeta = meta.getDatabaseMeta();
data.punchThroughRowMeta = new RowMeta();
/*
@@ -1446,7 +1443,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
sqlUpdate += " ";
}
first = false;
- sqlUpdate += databaseMeta.quoteField(field.getLookup()) + " = ?" +
Const.CR;
+ sqlUpdate += data.databaseMeta.quoteField(field.getLookup()) + " =
?" + Const.CR;
data.punchThroughRowMeta.addValueMeta(rowMeta.getValueMeta(data.fieldnrs[i]));
}
}
@@ -1464,7 +1461,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
break;
}
if (valueMeta != null) {
- sqlUpdate += ", " + databaseMeta.quoteField(valueMeta.getName()) + "
= ?" + Const.CR;
+ sqlUpdate += ", " +
data.databaseMeta.quoteField(valueMeta.getName()) + " = ?" + Const.CR;
data.punchThroughRowMeta.addValueMeta(valueMeta);
}
}
@@ -1475,13 +1472,13 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
if (i > 0) {
sqlUpdate += "AND ";
}
- sqlUpdate += databaseMeta.quoteField(key.getLookup()) + " = ?" +
Const.CR;
+ sqlUpdate += data.databaseMeta.quoteField(key.getLookup()) + " = ?" +
Const.CR;
data.punchThroughRowMeta.addValueMeta(rowMeta.getValueMeta(data.keynrs[i]));
}
try {
data.prepStatementPunchThrough =
-
data.db.getConnection().prepareStatement(meta.getDatabaseMeta().stripCR(sqlUpdate));
+
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sqlUpdate));
} catch (SQLException ex) {
throw new HopDatabaseException(
"Unable to prepare dimension punchThrough update statement : " +
Const.CR + sqlUpdate,
@@ -1727,8 +1724,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
return;
}
DLFields f = meta.getFields();
- DatabaseMeta databaseMeta = meta.getDatabaseMeta();
- int startTechnicalKey = databaseMeta.getNotFoundTK(isAutoIncrement());
+ int startTechnicalKey = data.databaseMeta.getNotFoundTK(isAutoIncrement());
if (isAutoIncrement()) {
// See if there are rows in the table
@@ -1738,7 +1734,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
"SELECT count(*) FROM "
+ data.schemaTable
+ " WHERE "
- + databaseMeta.quoteField(f.getReturns().getKeyField())
+ + data.databaseMeta.quoteField(f.getReturns().getKeyField())
+ " = "
+ startTechnicalKey;
RowMetaAndData r = data.db.getOneRow(sql);
@@ -1752,7 +1748,7 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
"SELECT count(*) FROM "
+ data.schemaTable
+ " WHERE "
- + databaseMeta.quoteField(f.getReturns().getKeyField())
+ + data.databaseMeta.quoteField(f.getReturns().getKeyField())
+ " = "
+ startTechnicalKey;
RowMetaAndData r = data.db.getOneRow(sql);
@@ -1760,24 +1756,24 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
if (count.longValue() == 0) {
String isql = null;
try {
- if (!databaseMeta.supportsAutoinc() || !isAutoIncrement()) {
+ if (!data.databaseMeta.supportsAutoinc() || !isAutoIncrement()) {
isql =
"insert into "
+ data.schemaTable
+ "("
- + databaseMeta.quoteField(f.getReturns().getKeyField())
+ + data.databaseMeta.quoteField(f.getReturns().getKeyField())
+ ", "
- + databaseMeta.quoteField(f.getReturns().getVersionField())
+ +
data.databaseMeta.quoteField(f.getReturns().getVersionField())
+ ") values (0, 1)";
} else {
isql =
- databaseMeta.getSqlInsertAutoIncUnknownDimensionRow(
+ data.databaseMeta.getSqlInsertAutoIncUnknownDimensionRow(
data.schemaTable,
- databaseMeta.quoteField(f.getReturns().getKeyField()),
- databaseMeta.quoteField(f.getReturns().getVersionField()));
+ data.databaseMeta.quoteField(f.getReturns().getKeyField()),
+
data.databaseMeta.quoteField(f.getReturns().getVersionField()));
}
- data.db.execStatement(databaseMeta.stripCR(isql));
+ data.db.execStatement(data.databaseMeta.stripCR(isql));
} catch (HopException e) {
throw new HopDatabaseException(
"Error inserting 'unknown' row in dimension [" + data.schemaTable
+ "] : " + isql, e);
@@ -1805,13 +1801,15 @@ public class DimensionLookup extends
BaseTransform<DimensionLookupMeta, Dimensio
data.startDateAlternative = NONE;
}
- if (meta.getDatabaseMeta() == null) {
+ data.databaseMeta = getPipelineMeta().findDatabase(meta.getConnection(),
variables);
+
+ if (data.databaseMeta == null) {
logError(
BaseMessages.getString(
PKG, "DimensionLookup.Init.ConnectionMissing",
getTransformName()));
return false;
}
- data.db = new Database(this, this, meta.getDatabaseMeta());
+ data.db = new Database(this, this, data.databaseMeta);
try {
data.db.connect();
diff --git
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupData.java
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupData.java
index e6d71c987c..3f57aa5258 100644
---
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupData.java
+++
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupData.java
@@ -21,6 +21,7 @@ import java.sql.PreparedStatement;
import java.util.Date;
import java.util.List;
import org.apache.hop.core.database.Database;
+import org.apache.hop.core.database.DatabaseMeta;
import org.apache.hop.core.hash.ByteArrayHashMap;
import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.pipeline.transform.BaseTransformData;
@@ -54,7 +55,7 @@ public class DimensionLookupData extends BaseTransformData
implements ITransform
public PreparedStatement prepStatementUpdate;
public PreparedStatement prepStatementDimensionUpdate;
public PreparedStatement prepStatementPunchThrough;
-
+ public DatabaseMeta databaseMeta;
public IRowMeta insertRowMeta;
public IRowMeta updateRowMeta;
public IRowMeta dimensionUpdateRowMeta;
diff --git
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupDialog.java
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupDialog.java
index 094c23175d..e0e95425e0 100644
---
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupDialog.java
+++
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupDialog.java
@@ -64,6 +64,7 @@ import
org.apache.hop.ui.pipeline.transform.BaseTransformDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
@@ -171,7 +172,12 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
PropsUi.setLook(shell);
setShellImage(shell, input);
- databaseMeta = input.getDatabaseMeta();
+ ModifyListener lsMod = e -> input.setChanged();
+ ModifyListener lsTableMod =
+ arg0 -> {
+ input.setChanged();
+ setTableFieldCombo();
+ };
shell.setLayout(props.createFormLayout());
shell.setText(BaseMessages.getString(PKG,
"DimensionLookupDialog.Shell.Title"));
@@ -229,13 +235,15 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
});
// Connection line
- wConnection = addConnectionLine(mainComposite, wUpdate,
input.getDatabaseMeta(), null);
+
+ wConnection = addConnectionLine(mainComposite, wUpdate,
input.getConnection(), lsMod);
wConnection.addListener(SWT.FocusOut, e -> setTableFieldCombo());
wConnection.addListener(
SWT.Modify,
e -> {
// We have new content: change ci connection:
- databaseMeta = wConnection.loadSelectedElement();
+ databaseMeta = pipelineMeta.findDatabase(wConnection.getText(),
variables);
+ ;
setFlags();
});
@@ -265,7 +273,7 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
fdSchema.top = new FormAttachment(wConnection, margin);
fdSchema.right = new FormAttachment(wbSchema, -margin);
wSchema.setLayoutData(fdSchema);
- wSchema.addListener(SWT.Modify, e -> setTableFieldCombo());
+ wSchema.addModifyListener(lsTableMod);
// Table line...
Label wlTable = new Label(mainComposite, SWT.RIGHT);
@@ -293,7 +301,7 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
fdTable.top = new FormAttachment(wbSchema, margin);
fdTable.right = new FormAttachment(wbTable, -margin);
wTable.setLayoutData(fdTable);
- wTable.addListener(SWT.Modify, e -> setTableFieldCombo());
+ wTable.addModifyListener(lsTableMod);
// Commit size ...
wlCommit = new Label(mainComposite, SWT.RIGHT);
@@ -1114,8 +1122,8 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
wVersion.setText(Const.NVL(f.getReturns().getVersionField(), ""));
wSeq.setText(Const.NVL(input.getSequenceName(), ""));
- if (input.getDatabaseMeta() != null) {
- wConnection.setText(input.getDatabaseMeta().getName());
+ if (input.getConnection() != null) {
+ wConnection.setText(input.getConnection());
}
wDateField.setText(Const.NVL(f.getDate().getName(), ""));
wFromDate.setText(Const.NVL(f.getDate().getFrom(), ""));
@@ -1150,7 +1158,8 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
wUpIns.optimizeTableView();
wKey.optimizeTableView();
- databaseMeta = wConnection.loadSelectedElement();
+ databaseMeta = pipelineMeta.findDatabase(wConnection.getText(), variables);
+ ;
// The alternative start date...
//
@@ -1182,7 +1191,7 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
transformName = wTransformName.getText(); // return value
- if (input.getDatabaseMeta() == null) {
+ if (input.getConnection() == null) {
MessageBox mb = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
mb.setMessage(
BaseMessages.getString(PKG,
"DimensionLookupDialog.InvalidConnection.DialogMessage"));
@@ -1248,7 +1257,7 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
}
f.getReturns().setVersionField(wVersion.getText());
- in.setDatabaseMeta(wConnection.loadSelectedElement());
+ in.setConnection(wConnection.getText());
f.getDate().setName(wDateField.getText());
f.getDate().setFrom(wFromDate.getText());
f.getDate().setTo(wToDate.getText());
@@ -1274,7 +1283,8 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
}
private void getTableName() {
- final DatabaseMeta dbMeta = wConnection.loadSelectedElement();
+ final DatabaseMeta dbMeta =
pipelineMeta.findDatabase(wConnection.getText(), variables);
+ ;
if (dbMeta == null) {
return;
}
@@ -1349,7 +1359,8 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
() -> {
final String tableName = variables.resolve(wTable.getText());
final String schemaName = variables.resolve(wSchema.getText());
- final DatabaseMeta dbMeta = wConnection.loadSelectedElement();
+ final DatabaseMeta dbMeta =
pipelineMeta.findDatabase(wConnection.getText(), variables);
+ ;
// Without a database or a table name we can't do very much
//
@@ -1402,7 +1413,7 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
private void getLookup() {
final String tableName = variables.resolve(wTable.getText());
final String schemaName = variables.resolve(wSchema.getText());
- DatabaseMeta dbMeta = wConnection.loadSelectedElement();
+ DatabaseMeta dbMeta = pipelineMeta.findDatabase(wConnection.getText(),
variables);
if (dbMeta != null && StringUtils.isNotEmpty(tableName)) {
try (Database db = new Database(loggingObject, variables, dbMeta)) {
db.connect();
@@ -1467,7 +1478,7 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
}
final String schemaName = variables.resolve(wSchema.getText());
final String tableName = variables.resolve(wTable.getText());
- final DatabaseMeta dbMeta = wConnection.loadSelectedElement();
+ final DatabaseMeta dbMeta =
pipelineMeta.findDatabase(wConnection.getText(), variables);
// Without a database or a table name we can't do very much
if (dbMeta == null || StringUtils.isEmpty(tableName)) {
@@ -1597,14 +1608,10 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
info.getSqlStatements(variables, pipelineMeta, transforminfo,
prev, metadataProvider);
if (!sql.hasError()) {
if (sql.hasSql()) {
+ DatabaseMeta databaseMeta =
pipelineMeta.findDatabase(wConnection.getText(), variables);
SqlEditor sqledit =
new SqlEditor(
- shell,
- SWT.NONE,
- variables,
- info.getDatabaseMeta(),
- DbCache.getInstance(),
- sql.getSql());
+ shell, SWT.NONE, variables, databaseMeta,
DbCache.getInstance(), sql.getSql());
sqledit.open();
} else {
MessageBox mb = new MessageBox(shell, SWT.OK |
SWT.ICON_INFORMATION);
@@ -1635,9 +1642,9 @@ public class DimensionLookupDialog extends
BaseTransformDialog implements ITrans
}
private void getSchemaNames() {
- DatabaseMeta dbMeta = wConnection.loadSelectedElement();
- if (dbMeta != null) {
- try (Database database = new Database(loggingObject, variables, dbMeta))
{
+ DatabaseMeta databaseMeta =
pipelineMeta.findDatabase(wConnection.getText(), variables);
+ if (databaseMeta != null) {
+ try (Database database = new Database(loggingObject, variables,
databaseMeta)) {
database.connect();
String[] schemas = Const.sortStrings(database.getSchemas());
diff --git
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMeta.java
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMeta.java
index be3ea6be4d..8088c2d121 100644
---
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMeta.java
+++
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMeta.java
@@ -79,10 +79,9 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
/** The database connection */
@HopMetadataProperty(
key = "connection",
- storeWithName = true,
injectionKey = "CONNECTION_NAME",
injectionKeyDescription = "DimensionLookup.Injection.CONNECTION_NAME")
- private DatabaseMeta databaseMeta;
+ private String connection;
/** Update the dimension or just lookup? */
@HopMetadataProperty(
@@ -180,7 +179,7 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
this();
this.schemaName = m.schemaName;
this.tableName = m.tableName;
- this.databaseMeta = databaseMeta == null ? null : new
DatabaseMeta(m.databaseMeta);
+ this.connection = m.connection;
this.update = m.update;
this.fields = new DLFields(m.fields);
this.sequenceName = m.sequenceName;
@@ -199,7 +198,7 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
public void setDefault() {
schemaName = "";
tableName = BaseMessages.getString(PKG,
"DimensionLookupMeta.DefaultTableName");
- databaseMeta = null;
+ connection = "";
commitSize = 100;
update = true;
@@ -232,7 +231,7 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
// We need a database connection
//
- if (databaseMeta == null) {
+ if (connection == null) {
String message =
BaseMessages.getString(
PKG,
"DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField");
@@ -278,33 +277,45 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
return;
}
- try (Database db = new Database(loggingObject, variables, databaseMeta)) {
- // Get the rows from the table...
- IRowMeta extraFields = db.getTableFieldsMeta(schemaName, tableName);
+ try {
+ DatabaseMeta databaseMeta =
+
metadataProvider.getSerializer(DatabaseMeta.class).load(variables.resolve(connection));
- for (DLField field : fields.fields) {
- v = extraFields.searchValueMeta(field.getLookup());
- if (v == null) {
- String message =
- BaseMessages.getString(
- PKG,
"DimensionLookupMeta.Exception.UnableToFindReturnField", field.getLookup());
- logError(message);
- throw new HopTransformException(message);
- }
+ try (Database db = new Database(loggingObject, variables, databaseMeta))
{
+ // Get the rows from the table...
+ IRowMeta extraFields = db.getTableFieldsMeta(schemaName, tableName);
- // If the field needs to be renamed, rename
- if (StringUtils.isNotEmpty(field.getName())) {
- v.setName(field.getName());
+ for (DLField field : fields.fields) {
+ v = extraFields.searchValueMeta(field.getLookup());
+ if (v == null) {
+ String message =
+ BaseMessages.getString(
+ PKG,
+ "DimensionLookupMeta.Exception.UnableToFindReturnField",
+ field.getLookup());
+ logError(message);
+ throw new HopTransformException(message);
+ }
+
+ // If the field needs to be renamed, rename
+ if (StringUtils.isNotEmpty(field.getName())) {
+ v.setName(field.getName());
+ }
+ v.setOrigin(name);
+ row.addValueMeta(v);
}
- v.setOrigin(name);
- row.addValueMeta(v);
+ } catch (Exception e) {
+ String message =
+ BaseMessages.getString(
+ PKG,
"DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField2");
+ logError(message);
+ throw new HopTransformException(message, e);
}
- } catch (Exception e) {
+ } catch (HopException e) {
String message =
- BaseMessages.getString(
- PKG,
"DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField2");
+ BaseMessages.getString(PKG,
"DimensionLookupMeta.Exception.DatabaseErrorOccurred")
+ + e.getMessage();
logError(message);
- throw new HopTransformException(message, e);
}
}
@@ -348,7 +359,7 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
// Check the absolute basics first.
//
List<ICheckResult> newRemarks = new ArrayList<>();
- checkDatabase(transformMeta, newRemarks);
+ checkDatabase(transformMeta, newRemarks, variables);
checkTable(transformMeta, variables, newRemarks);
if (!newRemarks.isEmpty()) {
// No point in going on if we don't have the minimum set of information
points.
@@ -362,33 +373,43 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
// Validate settings against the database.
//
- try (Database db = new Database(loggingObject, variables, databaseMeta)) {
- db.connect();
+ try {
+ DatabaseMeta databaseMeta =
+
metadataProvider.getSerializer(DatabaseMeta.class).load(variables.resolve(connection));
- IRowMeta tableRowMeta = checkTableFields(transformMeta, db, realSchema,
realTable, remarks);
- if (tableRowMeta != null) {
- checkKeys(
- transformMeta,
- variables,
- realSchema,
- realTable,
- tableRowMeta,
- previousRowMeta,
- remarks);
- checkReturns(transformMeta, tableRowMeta, remarks);
- checkDateFields(transformMeta, tableRowMeta, remarks);
+ try (Database db = new Database(loggingObject, variables, databaseMeta))
{
+ db.connect();
+
+ IRowMeta tableRowMeta = checkTableFields(transformMeta, db,
realSchema, realTable, remarks);
+ if (tableRowMeta != null) {
+ checkKeys(
+ transformMeta,
+ variables,
+ realSchema,
+ realTable,
+ tableRowMeta,
+ previousRowMeta,
+ remarks);
+ checkReturns(transformMeta, tableRowMeta, remarks);
+ checkDateFields(transformMeta, tableRowMeta, remarks);
+ }
+ checkPreviousFields(transformMeta, previousRowMeta, remarks);
+ checkSequence(transformMeta, db, variables, remarks);
+ } catch (HopException e) {
+ remarks.add(
+ new CheckResult(
+ ICheckResult.TYPE_RESULT_ERROR,
+ BaseMessages.getString(PKG,
"DimensionLookupMeta.CheckResult.CouldNotConectToDB")
+ + e.getMessage(),
+ transformMeta));
}
- checkPreviousFields(transformMeta, previousRowMeta, remarks);
- checkSequence(transformMeta, db, variables, remarks);
} catch (HopException e) {
- remarks.add(
- new CheckResult(
- ICheckResult.TYPE_RESULT_ERROR,
- BaseMessages.getString(PKG,
"DimensionLookupMeta.CheckResult.CouldNotConectToDB")
- + e.getMessage(),
- transformMeta));
+ String errorMessage =
+ BaseMessages.getString(PKG,
"DimensionLookupMeta.Exception.DatabaseErrorOccurred")
+ + e.getMessage();
+ CheckResult cr = new CheckResult(ICheckResult.TYPE_RESULT_ERROR,
errorMessage, transformMeta);
+ remarks.add(cr);
}
-
// See if we have input streams leading to this transform!
if (input.length > 0) {
remarks.add(
@@ -411,6 +432,9 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
throws HopDatabaseException {
String sequence = variables.resolve(sequenceName);
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
+
// Check sequence
if (databaseMeta.supportsSequences()
&& fields.returns.creationMethod == TechnicalKeyCreationMethod.SEQUENCE
@@ -691,7 +715,10 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
}
}
- private void checkDatabase(TransformMeta transformMeta, List<ICheckResult>
remarks) {
+ private void checkDatabase(
+ TransformMeta transformMeta, List<ICheckResult> remarks, IVariables
variables) {
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
if (databaseMeta == null) {
remarks.add(
new CheckResult(
@@ -710,6 +737,10 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
IRowMeta previousRowMeta,
List<ICheckResult> remarks) {
boolean allOk = true;
+
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
+
for (DLKey key : fields.keys) {
IValueMeta prevValueMeta =
previousRowMeta.searchValueMeta(key.getName());
if (prevValueMeta == null) {
@@ -776,7 +807,11 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
@Override
public IRowMeta getTableFields(IVariables variables) {
+
IRowMeta tableRowMeta = null;
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
+
if (databaseMeta != null) {
try (Database db = createDatabaseObject(variables)) {
db.connect();
@@ -798,6 +833,10 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
IRowMeta previousRowMeta,
IHopMetadataProvider metadataProvider)
throws HopTransformException {
+
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
+
SqlStatement statement =
new SqlStatement(transformMeta.getName(), databaseMeta, null); //
default: nothing to do!
@@ -888,6 +927,10 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
private void validateBasicSettings(IVariables variables, IRowMeta
previousRowMeta)
throws HopTransformException {
+
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
+
if (databaseMeta == null) {
throw new HopTransformException(
BaseMessages.getString(
@@ -1006,9 +1049,9 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
}
if (update) {
- analyzeImpactUpdate(impact, pipelineMeta, transformMeta, prev);
+ analyzeImpactUpdate(impact, pipelineMeta, transformMeta, prev,
variables);
} else {
- analyzeImpactLookup(impact, pipelineMeta, transformMeta, prev);
+ analyzeImpactLookup(impact, pipelineMeta, transformMeta, prev,
variables);
}
}
@@ -1016,7 +1059,12 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
List<DatabaseImpact> impact,
PipelineMeta pipelineMeta,
TransformMeta transformMeta,
- IRowMeta prev) {
+ IRowMeta prev,
+ IVariables variables) {
+
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
+
// Update: insert/update on all specified fields...
// Lookup: we do a lookup on the natural keys + the return fields!
for (DLKey key : fields.keys) {
@@ -1061,7 +1109,12 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
List<DatabaseImpact> impact,
PipelineMeta pipelineMeta,
TransformMeta transformMeta,
- IRowMeta prev) {
+ IRowMeta prev,
+ IVariables variables) {
+
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
+
// Lookup: we do a lookup on the natural keys + the return fields!
for (DLKey key : fields.keys) {
IValueMeta v = prev.searchValueMeta(key.getName());
@@ -1102,6 +1155,9 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
}
Database createDatabaseObject(IVariables variables) {
+ DatabaseMeta databaseMeta =
+
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection,
variables);
+
return new Database(loggingObject, variables, databaseMeta);
}
@@ -1776,21 +1832,21 @@ public class DimensionLookupMeta extends
BaseTransformMeta<DimensionLookup, Dime
}
/**
- * Gets databaseMeta
+ * Get connection name
*
- * @return value of databaseMeta
+ * @return
*/
- public DatabaseMeta getDatabaseMeta() {
- return databaseMeta;
+ public String getConnection() {
+ return connection;
}
/**
- * Sets databaseMeta
+ * Set connection name
*
- * @param databaseMeta value of databaseMeta
+ * @param connection
*/
- public void setDatabaseMeta(DatabaseMeta databaseMeta) {
- this.databaseMeta = databaseMeta;
+ public void setConnection(String connection) {
+ this.connection = connection;
}
/**
diff --git
a/plugins/transforms/dimensionlookup/src/main/resources/org/apache/hop/pipeline/transforms/dimensionlookup/messages/messages_en_US.properties
b/plugins/transforms/dimensionlookup/src/main/resources/org/apache/hop/pipeline/transforms/dimensionlookup/messages/messages_en_US.properties
index b2b642715b..99aec44a1b 100644
---
a/plugins/transforms/dimensionlookup/src/main/resources/org/apache/hop/pipeline/transforms/dimensionlookup/messages/messages_en_US.properties
+++
b/plugins/transforms/dimensionlookup/src/main/resources/org/apache/hop/pipeline/transforms/dimensionlookup/messages/messages_en_US.properties
@@ -191,6 +191,7 @@
DimensionLookupMeta.Exception.UnableToFindReturnField=Unable to find return fiel
DimensionLookupMeta.Exception.UnableToLoadTransformMetaFromXML=Unable to load
transform info from XML
DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField=Unable to
retrieve data type of return fields because no database connection was specified
DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField2=Unable to
retrieve data type of return fields because of an unexpected error
+DimensionLookupMeta.Exception.DatabaseErrorOccurred=A database error
occurred\:
DimensionLookupMeta.keyword=dimension,lookup
DimensionLookupMeta.Log.CheckField=Check field \#{0}, in inputstream from
previous transforms
DimensionLookupMeta.Log.CheckLookupField=Check lookupfield \#
diff --git
a/plugins/transforms/dimensionlookup/src/test/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMetaTest.java
b/plugins/transforms/dimensionlookup/src/test/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMetaTest.java
index 0086f93d69..44554a83b7 100644
---
a/plugins/transforms/dimensionlookup/src/test/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMetaTest.java
+++
b/plugins/transforms/dimensionlookup/src/test/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMetaTest.java
@@ -47,7 +47,7 @@ public class DimensionLookupMetaTest {
TransformSerializationTestUtil.testSerialization(
"/dimension-update-transform.xml", DimensionLookupMeta.class,
metadataProvider);
- assertNotNull(meta.getDatabaseMeta());
+ assertNotNull(meta.getConnection());
assertNotNull(meta.getTableName());
assertNotNull(meta.getSchemaName());
assertTrue(meta.isUpdate());