This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/master by this push:
new f1ba6be5b0 HOP-4331 Cleanup XML of transform Null If
new cb44003da5 Merge pull request #1832 from nadment/HOP-4331
f1ba6be5b0 is described below
commit f1ba6be5b005bd18153bc3eeeabe0da54ebf1837
Author: Nicolas Adment <[email protected]>
AuthorDate: Fri Nov 25 21:24:05 2022 +0100
HOP-4331 Cleanup XML of transform Null If
---
.../hop/pipeline/transforms/nullif/NullIf.java | 11 +-
.../pipeline/transforms/nullif/NullIfDialog.java | 25 ++--
.../pipeline/transforms/nullif/NullIfField.java | 80 +++++++++++
.../hop/pipeline/transforms/nullif/NullIfMeta.java | 149 +++------------------
.../nullif/messages/messages_de_DE.properties | 1 -
.../nullif/messages/messages_en_US.properties | 7 +-
.../nullif/messages/messages_es_AR.properties | 1 -
.../nullif/messages/messages_es_ES.properties | 1 -
.../nullif/messages/messages_fr_FR.properties | 1 -
.../nullif/messages/messages_it_IT.properties | 1 -
.../nullif/messages/messages_ja_JP.properties | 1 -
.../nullif/messages/messages_ko_KR.properties | 1 -
.../nullif/messages/messages_zh_CN.properties | 1 -
.../transforms/nullif/NullIfMetaInjectionTest.java | 4 +-
.../pipeline/transforms/nullif/NullIfMetaTest.java | 99 ++++----------
.../hop/pipeline/transforms/nullif/NullIfTest.java | 28 ++--
.../src/test/resources/null-if-transform.xml | 48 +++++++
17 files changed, 208 insertions(+), 251 deletions(-)
diff --git
a/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIf.java
b/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIf.java
index c4734320b7..8f3cbbcb9c 100644
---
a/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIf.java
+++
b/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIf.java
@@ -55,16 +55,17 @@ public class NullIf extends BaseTransform<NullIfMeta,
NullIfData> {
if (first) {
first = false;
data.outputRowMeta = getInputRowMeta().clone();
- int fieldsLength = meta.getFields().length;
+ int fieldsLength = meta.getFields().size();
data.keynr = new int[fieldsLength];
data.nullValue = new Object[fieldsLength];
data.nullValueMeta = new IValueMeta[fieldsLength];
for (int i = 0; i < fieldsLength; i++) {
- data.keynr[i] =
data.outputRowMeta.indexOfValue(meta.getFields()[i].getFieldName());
+ NullIfField field = meta.getFields().get(i);
+ data.keynr[i] = data.outputRowMeta.indexOfValue(field.getName());
if (data.keynr[i] < 0) {
logError(
BaseMessages.getString(
- PKG, "NullIf.Log.CouldNotFindFieldInRow",
meta.getFields()[i].getFieldName()));
+ PKG, "NullIf.Log.CouldNotFindFieldInRow", field.getName()));
setErrors(1);
stopAll();
return false;
@@ -74,7 +75,7 @@ public class NullIf extends BaseTransform<NullIfMeta,
NullIfData> {
ValueMetaString vms = new ValueMetaString();
vms.setConversionMask(data.nullValueMeta[i].getConversionMask());
data.nullValue[i] =
- data.nullValueMeta[i].convertData(vms,
meta.getFields()[i].getFieldValue());
+ data.nullValueMeta[i].convertData(vms, field.getValue());
}
}
@@ -84,7 +85,7 @@ public class NullIf extends BaseTransform<NullIfMeta,
NullIfData> {
+ data.outputRowMeta.getString(r));
}
- for (int i = 0; i < meta.getFields().length; i++) {
+ for (int i = 0; i < meta.getFields().size(); i++) {
Object field = r[data.keynr[i]];
if (field != null && data.nullValueMeta[i].compare(field,
data.nullValue[i]) == 0) {
// OK, this value needs to be set to NULL
diff --git
a/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfDialog.java
b/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfDialog.java
index 3bafbe48c0..b24982ba79 100644
---
a/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfDialog.java
+++
b/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfDialog.java
@@ -89,7 +89,7 @@ public class NullIfDialog extends BaseTransformDialog
implements ITransformDialo
shell.setText(BaseMessages.getString(PKG, "NullIfDialog.Shell.Label"));
int middle = props.getMiddlePct();
- int margin = props.getMargin();
+ int margin = PropsUi.getMargin();
// Some buttons at the bottom
//
@@ -132,7 +132,7 @@ public class NullIfDialog extends BaseTransformDialog
implements ITransformDialo
wlFields.setLayoutData(fdlFields);
final int FieldsCols = 2;
- final int fieldsRows = input.getFields().length;
+ final int fieldsRows = input.getFields().size();
colinf = new ColumnInfo[FieldsCols];
colinf[0] =
@@ -215,10 +215,10 @@ public class NullIfDialog extends BaseTransformDialog
implements ITransformDialo
public void getData() {
wTransformName.setText(transformName);
- for (int i = 0; i < input.getFields().length; i++) {
+ for (int i = 0; i < input.getFields().size(); i++) {
TableItem item = wFields.table.getItem(i);
- String name = input.getFields()[i].getFieldName();
- String type = input.getFields()[i].getFieldValue();
+ String name = input.getFields().get(i).getName();
+ String type = input.getFields().get(i).getValue();
if (name != null) {
item.setText(1, name);
@@ -248,15 +248,14 @@ public class NullIfDialog extends BaseTransformDialog
implements ITransformDialo
transformName = wTransformName.getText(); // return value
- int count = wFields.nrNonEmpty();
- input.allocate(count);
-
- // CHECKSTYLE:Indentation:OFF
- for (int i = 0; i < count; i++) {
- TableItem item = wFields.getNonEmpty(i);
- input.getFields()[i].setFieldName(item.getText(1));
- input.getFields()[i].setFieldValue(item.getText(2));
+ input.getFields().clear();
+ for (TableItem item : wFields.getNonEmptyItems()) {
+ NullIfField field = new NullIfField();
+ field.setName(item.getText(1));
+ field.setValue(item.getText(2));
+ input.getFields().add(field);
}
+
dispose();
}
diff --git
a/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfField.java
b/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfField.java
new file mode 100644
index 0000000000..fff3ba213e
--- /dev/null
+++
b/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfField.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hop.pipeline.transforms.nullif;
+
+import org.apache.hop.core.Const;
+import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.metadata.api.HopMetadataProperty;
+
+import java.util.Objects;
+
+public class NullIfField implements Cloneable {
+
+ @HopMetadataProperty(injectionKey = "FIELDNAME", injectionKeyDescription =
"NullIf.Injection.FIELDNAME")
+ private String name;
+
+ @HopMetadataProperty(injectionKey = "FIELDVALUE", injectionKeyDescription
= "NullIf.Injection.FIELDVALUE")
+ private String value;
+
+ public NullIfField() {
+ }
+
+ public NullIfField(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ Boolean isEmptyAndNullDiffer =
+ ValueMetaBase.convertStringToBoolean(
+
Const.NVL(System.getProperty(Const.HOP_EMPTY_STRING_DIFFERS_FROM_NULL, "N"),
"N"));
+
+ this.value =
+ value == null && isEmptyAndNullDiffer ? Const.EMPTY_STRING : value;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ NullIfField field = (NullIfField) o;
+ return Objects.equals(name, field.name) && Objects.equals(value,
field.value);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, value);
+ }
+
+ @Override
+ public NullIfField clone() {
+ return new NullIfField(name, value);
+ }
+}
diff --git
a/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfMeta.java
b/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfMeta.java
index ac7c615b02..258082b956 100644
---
a/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfMeta.java
+++
b/plugins/transforms/nullif/src/main/java/org/apache/hop/pipeline/transforms/nullif/NullIfMeta.java
@@ -18,25 +18,18 @@
package org.apache.hop.pipeline.transforms.nullif;
import org.apache.hop.core.CheckResult;
-import org.apache.hop.core.Const;
import org.apache.hop.core.ICheckResult;
import org.apache.hop.core.annotations.Transform;
-import org.apache.hop.core.exception.HopXmlException;
-import org.apache.hop.core.injection.Injection;
-import org.apache.hop.core.injection.InjectionDeep;
-import org.apache.hop.core.injection.InjectionSupported;
import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.core.row.RowMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
import org.apache.hop.core.variables.IVariables;
-import org.apache.hop.core.xml.XmlHandler;
import org.apache.hop.i18n.BaseMessages;
+import org.apache.hop.metadata.api.HopMetadataProperty;
import org.apache.hop.metadata.api.IHopMetadataProvider;
import org.apache.hop.pipeline.PipelineMeta;
import org.apache.hop.pipeline.transform.BaseTransformMeta;
import org.apache.hop.pipeline.transform.TransformMeta;
-import org.w3c.dom.Node;
-
+import java.util.ArrayList;
import java.util.List;
@Transform(
@@ -47,126 +40,37 @@ import java.util.List;
categoryDescription =
"i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Flow",
keywords = "i18n::NullIfMeta.keyword",
documentationUrl = "/pipeline/transforms/nullif.html")
-@InjectionSupported(
- localizationPrefix = "Injection.NullIf.",
- groups = {"FIELDS"})
public class NullIfMeta extends BaseTransformMeta<NullIf, NullIfData> {
private static final Class<?> PKG = NullIfMeta.class; // For Translator
- public static class Field implements Cloneable {
-
- @Injection(name = "FIELDNAME", group = "FIELDS")
- private String fieldName;
-
- @Injection(name = "FIELDVALUE", group = "FIELDS")
- private String fieldValue;
-
- /** @return Returns the fieldName. */
- public String getFieldName() {
- return fieldName;
- }
-
- /** @param fieldName The fieldName to set. */
- public void setFieldName(String fieldName) {
- this.fieldName = fieldName;
- }
-
- /** @return Returns the fieldValue. */
- public String getFieldValue() {
- return fieldValue;
- }
-
- /** @param fieldValue The fieldValue to set. */
- public void setFieldValue(String fieldValue) {
- Boolean isEmptyAndNullDiffer =
- ValueMetaBase.convertStringToBoolean(
-
Const.NVL(System.getProperty(Const.HOP_EMPTY_STRING_DIFFERS_FROM_NULL, "N"),
"N"));
-
- this.fieldValue =
- fieldValue == null && isEmptyAndNullDiffer ? Const.EMPTY_STRING :
fieldValue;
- }
-
- @Override
- public Field clone() {
- try {
- return (Field) super.clone();
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- @InjectionDeep private Field[] fields;
+ @HopMetadataProperty(groupKey = "fields", key = "field", injectionGroupKey =
"FIELDS",
+ injectionGroupDescription = "NullIf.Injection.FIELDS")
+ private List<NullIfField> fields;
public NullIfMeta() {
- super(); // allocate BaseTransformMeta
+ super();
+ this.fields = new ArrayList<>();
}
-
- public Field[] getFields() {
+
+ public NullIfMeta(NullIfMeta meta) {
+ this();
+ for (NullIfField field : meta.fields) {
+ fields.add(new NullIfField(field.getName(), field.getValue()));
+ }
+ }
+
+ public List<NullIfField> getFields() {
return fields;
}
- public void setFields(Field[] fields) {
+ public void setFields(List<NullIfField> fields) {
this.fields = fields;
}
- @Override
- public void loadXml(Node transformNode, IHopMetadataProvider
metadataProvider)
- throws HopXmlException {
- readData(transformNode);
- }
-
- public void allocate(int count) {
- fields = new Field[count];
- for (int i = 0; i < count; i++) {
- fields[i] = new Field();
- }
- }
-
@Override
public Object clone() {
- NullIfMeta retval = (NullIfMeta) super.clone();
-
- int count = fields.length;
-
- retval.allocate(count);
-
- for (int i = 0; i < count; i++) {
- retval.getFields()[i] = fields[i].clone();
- }
- return retval;
- }
-
- private void readData(Node transformNode) throws HopXmlException {
- try {
- Node fieldNodes = XmlHandler.getSubNode(transformNode, "fields");
- int count = XmlHandler.countNodes(fieldNodes, "field");
-
- allocate(count);
-
- for (int i = 0; i < count; i++) {
- Node fnode = XmlHandler.getSubNodeByNr(fieldNodes, "field", i);
-
- fields[i].setFieldName(XmlHandler.getTagValue(fnode, "name"));
- fields[i].setFieldValue(XmlHandler.getTagValue(fnode, "value"));
- }
- } catch (Exception e) {
- throw new HopXmlException(
- BaseMessages.getString(PKG,
"NullIfMeta.Exception.UnableToReadTransformMetaFromXML"), e);
- }
- }
-
- @Override
- public void setDefault() {
- int count = 0;
-
- allocate(count);
-
- for (int i = 0; i < count; i++) {
- fields[i].setFieldName("field" + i);
- fields[i].setFieldValue("");
- }
+ return new NullIfMeta(this);
}
@Override
@@ -185,23 +89,6 @@ public class NullIfMeta extends BaseTransformMeta<NullIf,
NullIfData> {
return;
}
- @Override
- public String getXml() {
- StringBuilder retval = new StringBuilder();
-
- retval.append(" <fields>" + Const.CR);
-
- for (int i = 0; i < fields.length; i++) {
- retval.append(" <field>" + Const.CR);
- retval.append(" " + XmlHandler.addTagValue("name",
fields[i].getFieldName()));
- retval.append(" " + XmlHandler.addTagValue("value",
fields[i].getFieldValue()));
- retval.append(" </field>" + Const.CR);
- }
- retval.append(" </fields>" + Const.CR);
-
- return retval.toString();
- }
-
@Override
public void check(
List<ICheckResult> remarks,
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_de_DE.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_de_DE.properties
index f5e633184f..28a937c46d 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_de_DE.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_de_DE.properties
@@ -26,7 +26,6 @@ NullIfDialog.ColumnInfo.Name=Name
NullIfDialog.ColumnInfo.ValueToNull=Wert, der zu NULL umgewandelt wird
NullIf.Log.ConvertFieldValuesToNullForRow=Konvertiere diese Felder zu NULL für
die Zeile:
NullIf.Log.CouldNotFindFieldInRow=Konnte das felde ''{0}'' in der Zeile nicht
finden.
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=Konnte die
Schrittinformationen nicht von der XML-Datei laden
NullIfMeta.CheckResult.NoReceivingFieldsError=Empfängt keine Felder von
vorherigen Schritten\!
NullIfMeta.CheckResult.TransformReceivingFieldsOK=Schritt ist zu einem
vorherige verbunden und empfängt {0} Felder
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=Schritt
empfängt Informationen von anderen Schritten.
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_en_US.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_en_US.properties
index d857ccb677..e84221a997 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_en_US.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_en_US.properties
@@ -23,13 +23,12 @@ NullIfDialog.ColumnInfo.Name=Name
NullIfDialog.ColumnInfo.ValueToNull=Value to turn to NULL
NullIf.Log.ConvertFieldValuesToNullForRow=Convert field values to NULL for
row:
NullIf.Log.CouldNotFindFieldInRow=Couldn''t find field ''{0}'' in row!
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=Unable to read transform
information from XML
NullIfMeta.CheckResult.NoReceivingFieldsError=Not receiving any fields from
previous transforms\!
NullIfMeta.CheckResult.TransformReceivingFieldsOK=Transform is connected to
previous one, receiving {0} fields
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=Transform is
receiving info from other transforms.
NullIfMeta.CheckResult.NoInputReceivedError=No input received from other
transforms\!
NullIfMeta.keyword=null,if
-Injection.NullIf.FIELDS=Fields
-Injection.NullIf.FIELDNAME=The name of the field to check.
-Injection.NullIf.FIELDVALUE=When this value to encountered, replace it with
null.
+NullIf.Injection.FIELDS=Fields
+NullIf.Injection.FIELDNAME=The name of the field to check.
+NullIf.Injection.FIELDVALUE=When this value to encountered, replace it with
null.
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_es_AR.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_es_AR.properties
index c93a2f6757..c227add35f 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_es_AR.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_es_AR.properties
@@ -24,7 +24,6 @@ NullIfMeta.CheckResult.NoInputReceivedError=No se est\u00E1
recibiendo entrada d
NullIfDialog.ColumnInfo.Name=Nombre
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=El paso
est\u00E1 recibiendo informaci\u00F3n de otros pasos.
NullIfMeta.CheckResult.NoReceivingFieldsError=No se est\u00E1n recibiendo
campos de entrada de otros pasos.
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=Imposible cargar
informaci\u00F3n del paso desde XML
NullIfMeta.CheckResult.TransformReceivingFieldsOK=El paso est\u00E1 conectado
al anterior, recibiendo {0} campos
NullIf.Log.CouldNotFindFieldInRow=Imposible encontrar el campo ''{0}'' en la
fila.
NullIf.Log.ConvertFieldValuesToNullForRow=Convertir valores a NULO para la
fila\:
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_es_ES.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_es_ES.properties
index ec57d9a89e..eced3d6e9a 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_es_ES.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_es_ES.properties
@@ -26,7 +26,6 @@ NullIfDialog.ColumnInfo.Name=Nombre
NullIfDialog.ColumnInfo.ValueToNull=Valor a convertir en NULO
NullIf.Log.ConvertFieldValuesToNullForRow=Convertir valores de campo a NULO
para fila:
NullIf.Log.CouldNotFindFieldInRow=No se ha podido encontrar el campo ''{0}''
en la fila de entrada!
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=No se ha podido cargar
información del paso desde XML
NullIfMeta.CheckResult.NoReceivingFieldsError=No se ha recibido campos de
entrada de otros pasos\!
NullIfMeta.CheckResult.TransformReceivingFieldsOK=Paso esta conectado al
anterior, recibiendo {0} campos
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=Paso está
recibiendo información de otros pasos.
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_fr_FR.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_fr_FR.properties
index e8825de25f..13b5a451c2 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_fr_FR.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_fr_FR.properties
@@ -26,7 +26,6 @@ NullIfDialog.ColumnInfo.Name=Nom champ
NullIfDialog.ColumnInfo.ValueToNull=Rendre NULL si valeur \u00E9gale
NullIf.Log.ConvertFieldValuesToNullForRow=Rendre les valeurs valeurs du champs
:
NullIf.Log.CouldNotFindFieldInRow=Impossible de trouver le champ ''{0}'' dans
la ligne!
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=Impossible de lire les
informations de la transformation depuis le fichier XML
NullIfMeta.CheckResult.NoReceivingFieldsError=Aucun champ re\u00E7u des
transformations pr\u00E9c\u00E9dentes\!
NullIfMeta.CheckResult.TransformReceivingFieldsOK=La transformation est
connect\u00E9 \u00E0 la transformation pr\u00E9c\u00E9dente et re\u00E7oit {0}
champ(s)
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=La
transformation re\u00E7oit des informations des autres transformations.
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_it_IT.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_it_IT.properties
index 1e2b6ba4b2..0fa1430743 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_it_IT.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_it_IT.properties
@@ -22,7 +22,6 @@ NullIfMeta.CheckResult.NoInputReceivedError=Nessun input
ricevuto dagli altri tr
NullIfDialog.ColumnInfo.Name=Nome
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=Il transform
sta ricevendo informazioni dagli altri transforms.
NullIfMeta.CheckResult.NoReceivingFieldsError=Nessuna ricezione dei campi dai
transforms precedenti\!
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=Impossibile leggere le
informazioni del transform da XML
NullIf.Log.CouldNotFindFieldInRow=Impossibile trovare il campo ''{0}'' nella
riga\!
NullIfMeta.CheckResult.TransformReceivingFieldsOK=Il transform \u00E8
collegato al precedente, ricezione di {0} campi
NullIf.Log.ConvertFieldValuesToNullForRow=Convertire i valori del campo a NULL
per la riga\:
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_ja_JP.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_ja_JP.properties
index d38840dfd7..664267e557 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_ja_JP.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_ja_JP.properties
@@ -26,7 +26,6 @@
NullIfDialog.ColumnInfo.Name=\u30d5\u30a3\u30fc\u30eb\u30c9\u540d
NullIfDialog.ColumnInfo.ValueToNull=NULL\u53ef\u80fd
NullIf.Log.ConvertFieldValuesToNullForRow=Convert field values to NULL for
row:
NullIf.Log.CouldNotFindFieldInRow=Couldn''t find field ''{0}'' in row!
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=Unable to read transform
information from XML
NullIfMeta.CheckResult.NoReceivingFieldsError=Not receiving any fields from
previous transforms\!
NullIfMeta.CheckResult.TransformReceivingFieldsOK=Transform is connected to
previous one, receiving {0} fields
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=Transform is
receiving info from other transforms.
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_ko_KR.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_ko_KR.properties
index 6342639554..04e7775f6f 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_ko_KR.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_ko_KR.properties
@@ -22,7 +22,6 @@ NullIfMeta.CheckResult.NoInputReceivedError=\uB2E4\uB978
transform\uC5D0\uC11C \
NullIfDialog.ColumnInfo.Name=\uC774\uB984
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=transform
\uC774 \uB2E4\uB978 transform\uC5D0\uC11C \uC815\uBCF4\uB97C
\uBC1B\uC558\uC2B5\uB2C8\uB2E4.
NullIfMeta.CheckResult.NoReceivingFieldsError=\uC774\uC804
transform\uC5D0\uC11C \uBC1B\uC740 \uD544\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4\!
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=XML\uC5D0\uC11C
transform \uC815\uBCF4\uB97C \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4
NullIf.Log.CouldNotFindFieldInRow=\uB85C\uC6B0\uC5D0\uC11C \uD544\uB4DC
''{0}'' \uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4\!
NullIfMeta.CheckResult.TransformReceivingFieldsOK=transform\uC774 \uC774\uC804
transform\uACFC \uC5F0\uACB0\uB418\uC5C8\uACE0, {0} \uD544\uB4DC\uB97C
\uBC1B\uC558\uC2B5\uB2C8\uB2E4
NullIf.Log.ConvertFieldValuesToNullForRow=\uB85C\uC6B0\uC758 \uD544\uB4DC
\uAC12\uC744 NULL\uB85C \uBCC0\uACBD\:
diff --git
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_zh_CN.properties
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_zh_CN.properties
index fcb8c2856c..ab346f925a 100644
---
a/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_zh_CN.properties
+++
b/plugins/transforms/nullif/src/main/resources/org/apache/hop/pipeline/transforms/nullif/messages/messages_zh_CN.properties
@@ -29,5 +29,4 @@ NullIfMeta.CheckResult.NoInputReceivedError=No input received
from other transfo
NullIfMeta.CheckResult.NoReceivingFieldsError=Not receiving any fields from
previous transforms\!
NullIfMeta.CheckResult.TransformReceivingFieldsOK=Transform is connected to
previous one, receiving {0} fields
NullIfMeta.CheckResult.TransformRecevingInfoFromOtherTransforms=Transform is
receiving info from other transforms.
-NullIfMeta.Exception.UnableToReadTransformMetaFromXML=Unable to read transform
information from XML
NullIfMeta.keyword=null,if
diff --git
a/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfMetaInjectionTest.java
b/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfMetaInjectionTest.java
index 0a92e1302b..702900a58d 100644
---
a/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfMetaInjectionTest.java
+++
b/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfMetaInjectionTest.java
@@ -33,7 +33,7 @@ public class NullIfMetaInjectionTest extends
BaseMetadataInjectionTest<NullIfMet
@Test
public void test() throws Exception {
- check("FIELDNAME", () -> meta.getFields()[0].getFieldName());
- check("FIELDVALUE", () -> meta.getFields()[0].getFieldValue());
+ check("FIELDNAME", () -> meta.getFields().get(0).getName());
+ check("FIELDVALUE", () -> meta.getFields().get(0).getValue());
}
}
diff --git
a/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfMetaTest.java
b/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfMetaTest.java
index cf95270e08..9c439d4c04 100644
---
a/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfMetaTest.java
+++
b/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfMetaTest.java
@@ -17,108 +17,57 @@
package org.apache.hop.pipeline.transforms.nullif;
-import org.apache.commons.lang.builder.EqualsBuilder;
+import static org.junit.Assert.assertEquals;
import org.apache.hop.core.Const;
-import org.apache.hop.core.exception.HopException;
+import org.apache.hop.core.HopEnvironment;
+import org.apache.hop.core.plugins.PluginRegistry;
import org.apache.hop.junit.rules.RestoreHopEngineEnvironment;
-import org.apache.hop.pipeline.transforms.loadsave.LoadSaveTester;
-import
org.apache.hop.pipeline.transforms.loadsave.validator.ArrayLoadSaveValidator;
-import
org.apache.hop.pipeline.transforms.loadsave.validator.IFieldLoadSaveValidator;
-import org.apache.hop.pipeline.transforms.nullif.NullIfMeta.Field;
+import org.apache.hop.pipeline.transform.TransformSerializationTestUtil;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-
public class NullIfMetaTest {
@ClassRule public static RestoreHopEngineEnvironment env = new
RestoreHopEngineEnvironment();
- LoadSaveTester loadSaveTester;
-
@Before
- public void setUp() throws Exception {
-
- List<String> attributes = Arrays.asList("fields");
-
- Map<String, String> getterMap =
- new HashMap<String, String>() {
- {
- put("fields", "getFields");
- }
- };
- Map<String, String> setterMap =
- new HashMap<String, String>() {
- {
- put("fields", "setFields");
- }
- };
- Field field = new Field();
- field.setFieldName("fieldName");
- field.setFieldValue("fieldValue");
- IFieldLoadSaveValidator<Field[]> fieldArrayLoadSaveValidator =
- new ArrayLoadSaveValidator<>(new NullIfFieldLoadSaveValidator(field),
5);
- Map<String, IFieldLoadSaveValidator<?>> typeValidatorMap = new HashMap<>();
-
- typeValidatorMap.put(Field[].class.getCanonicalName(),
fieldArrayLoadSaveValidator);
- Map<String, IFieldLoadSaveValidator<?>> attrValidatorMap = new HashMap<>();
- attrValidatorMap.put("fields", fieldArrayLoadSaveValidator);
-
- loadSaveTester =
- new LoadSaveTester(
- NullIfMeta.class, attributes, getterMap, setterMap,
attrValidatorMap, typeValidatorMap);
+ public void setUpLoadSave() throws Exception {
+ HopEnvironment.init();
+ PluginRegistry.init();
}
@Test
- public void testSerialization() throws HopException {
- loadSaveTester.testSerialization();
+ public void testSerialization() throws Exception {
+ NullIfMeta meta =
+ TransformSerializationTestUtil.testSerialization(
+ "/null-if-transform.xml", NullIfMeta.class);
+
+ assertEquals(2, meta.getFields().size());
+ assertEquals("fieldName", meta.getFields().get(0).getName());
+ assertEquals("two", meta.getFields().get(0).getValue());
}
@Test
public void setFieldValueTest() {
- Field field = new Field();
+ NullIfField field = new NullIfField();
System.setProperty(Const.HOP_EMPTY_STRING_DIFFERS_FROM_NULL, "N");
- field.setFieldValue("theValue");
- assertEquals("theValue", field.getFieldValue());
+ field.setValue("theValue");
+ assertEquals("theValue", field.getValue());
}
@Test
public void setFieldValueNullTest() {
- Field field = new Field();
+ NullIfField field = new NullIfField();
System.setProperty(Const.HOP_EMPTY_STRING_DIFFERS_FROM_NULL, "N");
- field.setFieldValue(null);
- assertEquals(null, field.getFieldValue());
+ field.setValue(null);
+ assertEquals(null, field.getValue());
}
@Test
public void setFieldValueNullWithEmptyStringsDiffersFromNullTest() {
- Field field = new Field();
+ NullIfField field = new NullIfField();
System.setProperty(Const.HOP_EMPTY_STRING_DIFFERS_FROM_NULL, "Y");
- field.setFieldValue(null);
- assertEquals("", field.getFieldValue());
- }
-
- public static class NullIfFieldLoadSaveValidator implements
IFieldLoadSaveValidator<Field> {
-
- private final Field defaultValue;
-
- public NullIfFieldLoadSaveValidator(Field defaultValue) {
- this.defaultValue = defaultValue;
- }
-
- @Override
- public Field getTestObject() {
- return defaultValue;
- }
-
- @Override
- public boolean validateTestObject(Field testObject, Object actual) {
- return EqualsBuilder.reflectionEquals(testObject, actual);
- }
+ field.setValue(null);
+ assertEquals("", field.getValue());
}
}
diff --git
a/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfTest.java
b/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfTest.java
index f635036a44..e84530d526 100644
---
a/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfTest.java
+++
b/plugins/transforms/nullif/src/test/java/org/apache/hop/pipeline/transforms/nullif/NullIfTest.java
@@ -33,7 +33,6 @@ import org.apache.hop.junit.rules.RestoreHopEngineEnvironment;
import org.apache.hop.metadata.api.IHopMetadataProvider;
import org.apache.hop.pipeline.transform.TransformMeta;
import org.apache.hop.pipeline.transforms.mock.TransformMockHelper;
-import org.apache.hop.pipeline.transforms.nullif.NullIfMeta.Field;
import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
@@ -42,8 +41,9 @@ import org.junit.Test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
-
+import java.util.List;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doCallRealMethod;
@@ -73,7 +73,7 @@ public class NullIfTest {
private NullIfMeta mockProcessRowMeta() throws HopTransformException {
NullIfMeta processRowMeta = smh.iTransformMeta;
- Field[] fields = createArrayWithOneField("nullable-field",
"nullable-value");
+ List<NullIfField> fields = createArrayWithOneField("nullable-field",
"nullable-value");
doReturn(fields).when(processRowMeta).getFields();
doCallRealMethod()
.when(processRowMeta)
@@ -133,11 +133,13 @@ public class NullIfTest {
}
}
- private static Field[] createArrayWithOneField(String fieldName, String
fieldValue) {
- Field field = new Field();
- field.setFieldName(fieldName);
- field.setFieldValue(fieldValue);
- return new Field[] {field};
+ private static List<NullIfField> createArrayWithOneField(String name, String
value) {
+ List<NullIfField> fields = new ArrayList<>();
+ NullIfField field = new NullIfField();
+ field.setName(name);
+ field.setValue(value);
+ fields.add(field);
+ return fields;
}
private RowMeta getInputRowMeta2() {
@@ -160,11 +162,11 @@ public class NullIfTest {
private NullIfMeta mockProcessRowMeta2() throws HopTransformException {
NullIfMeta processRowMeta = smh.iTransformMeta;
- Field[] fields = new Field[4];
- fields[0] = createArrayWithOneField("value1", "20150606")[0];
- fields[1] = createArrayWithOneField("value2", "2015/06/06
00:00:00.000")[0];
- fields[2] = createArrayWithOneField("value3", "20150606")[0];
- fields[3] = createArrayWithOneField("value4", "2015/06/06
00:00:00.000")[0];
+ List<NullIfField> fields = new ArrayList<>();
+ fields.add(new NullIfField("value1", "20150606"));
+ fields.add(new NullIfField("value2", "2015/06/06 00:00:00.000"));
+ fields.add(new NullIfField("value3", "20150606"));
+ fields.add(new NullIfField("value4", "2015/06/06 00:00:00.000"));
doReturn(fields).when(processRowMeta).getFields();
doCallRealMethod()
.when(processRowMeta)
diff --git a/plugins/transforms/nullif/src/test/resources/null-if-transform.xml
b/plugins/transforms/nullif/src/test/resources/null-if-transform.xml
new file mode 100644
index 0000000000..801485f0c9
--- /dev/null
+++ b/plugins/transforms/nullif/src/test/resources/null-if-transform.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ ~
+ -->
+
+
+<transform>
+ <name>Null if two, four</name>
+ <type>NullIf</type>
+ <description/>
+ <distribute>Y</distribute>
+ <custom_distribution/>
+ <copies>1</copies>
+ <partitioning>
+ <method>none</method>
+ <schema_name/>
+ </partitioning>
+ <fields>
+ <field>
+ <name>fieldName</name>
+ <value>two</value>
+ </field>
+ <field>
+ <name>fieldName</name>
+ <value>four</value>
+ </field>
+ </fields>
+ <attributes/>
+ <GUI>
+ <xloc>208</xloc>
+ <yloc>96</yloc>
+ </GUI>
+ </transform>
+