You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2022/09/14 12:34:14 UTC
[hop] branch master updated: HOP-4182 MDI support to Number range transform - Store metadata for bounds as String instead of double - Indirectly fix HOP-3598 Adds zero decimal after any whole number input - Move bounds validation to check function - Fix some translation
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 7cb567670b HOP-4182 MDI support to Number range transform - Store metadata for bounds as String instead of double - Indirectly fix HOP-3598 Adds zero decimal after any whole number input - Move bounds validation to check function - Fix some translation
new 939c7f081f Merge pull request #1672 from nadment/HOP-4182
7cb567670b is described below
commit 7cb567670b7a0a5137aef497312c5c08c69a71ad
Author: Nicolas Adment <39...@users.noreply.github.com>
AuthorDate: Sun Sep 4 15:10:14 2022 +0200
HOP-4182 MDI support to Number range transform
- Store metadata for bounds as String instead of double
- Indirectly fix HOP-3598 Adds zero decimal after any whole number input
- Move bounds validation to check function
- Fix some translation
---
.../normaliser/messages/messages_fr_FR.properties | 4 +-
.../transforms/numberrange/NumberRange.java | 5 +
.../transforms/numberrange/NumberRangeDialog.java | 79 +++++---------
.../transforms/numberrange/NumberRangeMeta.java | 116 ++++++++-------------
.../transforms/numberrange/NumberRangeRule.java | 59 +++++++++--
.../transforms/numberrange/NumberRangeSet.java | 13 ---
.../numberrange/messages/messages_en_US.properties | 37 ++++---
.../numberrange/messages/messages_es_AR.properties | 19 ++--
.../numberrange/messages/messages_fr_FR.properties | 39 ++++---
.../numberrange/messages/messages_it_IT.properties | 19 ++--
.../numberrange/messages/messages_ja_JP.properties | 21 ++--
.../numberrange/messages/messages_ko_KR.properties | 21 ++--
.../numberrange/messages/messages_zh_CN.properties | 22 ++--
.../numberrange/NumberRangeMetaTest.java | 2 +-
14 files changed, 230 insertions(+), 226 deletions(-)
diff --git a/plugins/transforms/normaliser/src/main/resources/org/apache/hop/pipeline/transforms/normaliser/messages/messages_fr_FR.properties b/plugins/transforms/normaliser/src/main/resources/org/apache/hop/pipeline/transforms/normaliser/messages/messages_fr_FR.properties
index dbb09ec40f..e2716d56d4 100644
--- a/plugins/transforms/normaliser/src/main/resources/org/apache/hop/pipeline/transforms/normaliser/messages/messages_fr_FR.properties
+++ b/plugins/transforms/normaliser/src/main/resources/org/apache/hop/pipeline/transforms/normaliser/messages/messages_fr_FR.properties
@@ -32,9 +32,9 @@ NormaliserDialog.FailedToGetFields.DialogMessage=Impossible de r\u00E9cup\u00E9r
Normaliser.Log.CouldNotFindFieldInRow=Impossible de trouver le champ [{0} dans la ligne!
Normaliser.Log.LineNumber=N\u00B0Ligne
NormaliserMeta.Exception.UnableToLoadTransformMetaFromXML=Impossible de charger la transformation depuis le fichier XML
-NormaliserMeta.CheckResult.TransformReceivingFieldsOK=La transformation est connect\u00E9 aux transformations pr\u00E9c\u00E9dentes er r\u00E9cup\u00E800E8re {0} champs
+NormaliserMeta.CheckResult.TransformReceivingFieldsOK=La transformation est connect\u00E9 aux transformations pr\u00E9c\u00E9dentes et r\u00E9cup\u00E8re {0} champs
NormaliserMeta.CheckResult.FieldsNotFound=Les champs \u00E0 normaliser sont introuvables dans le flux d''entr\u00E9e:
NormaliserMeta.CheckResult.AllFieldsFound=Tous les champs \u00E0 normaliser ont \u00E9t\u00E9 trouv\u00E9s dans le flux d''entr\u00E9e.
NormaliserMeta.CheckResult.CouldNotReadFieldsFromPreviousTransform=Impossible de lire les champs depuis la transformation pr\u00E9c\u00E9dente.
-NormaliserMeta.CheckResult.TransformReceivingInfoOK=La transformation re\u00E7oit des informations des aures transformations.
+NormaliserMeta.CheckResult.TransformReceivingInfoOK=La transformation re\u00E7oit des informations des autres transformations.
NormaliserMeta.CheckResult.NoInputReceivedError=Aucun flux d''entr\u00E9e en provenance des autres transformations\!
diff --git a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRange.java b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRange.java
index 2211e3bb10..1fad115c93 100644
--- a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRange.java
+++ b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRange.java
@@ -53,6 +53,11 @@ public class NumberRange extends BaseTransform<NumberRangeMeta, NumberRangeData>
if (first) {
first = false;
+ // Prepare lower and upper bound
+ for (NumberRangeRule rule : meta.getRules()) {
+ rule.init();
+ }
+
numberRange = new NumberRangeSet(meta.getRules(), meta.getFallBackValue());
data.outputRowMeta = getInputRowMeta().clone();
// Prepare output fields
diff --git a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeDialog.java b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeDialog.java
index 70b6ece593..14fe97b327 100644
--- a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeDialog.java
+++ b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeDialog.java
@@ -74,27 +74,27 @@ public class NumberRangeDialog extends BaseTransformDialog implements ITransform
formLayout.marginHeight = Const.FORM_MARGIN;
shell.setLayout(formLayout);
- shell.setText(BaseMessages.getString(PKG, "NumberRange.TypeLongDesc"));
+ shell.setText(BaseMessages.getString(PKG, "NumberRangeDialog.Title"));
// Some buttons at the bottom
wOk = new Button(shell, SWT.PUSH);
- wOk.setText("OK");
+ wOk.setText(BaseMessages.getString(PKG, "System.Button.OK"));
wOk.addListener(SWT.Selection, e -> ok());
wCancel = new Button(shell, SWT.PUSH);
- wCancel.setText("Cancel");
+ wCancel.setText(BaseMessages.getString(PKG, "System.Button.Cancel"));
wCancel.addListener(SWT.Selection, e -> cancel());
BaseTransformDialog.positionBottomButtons(
shell, new Button[] {wOk, wCancel}, props.getMargin(), null);
// Create controls
wTransformName =
- createLine(lsMod, BaseMessages.getString(PKG, "NumberRange.TransformName"), null);
+ createLine(lsMod, BaseMessages.getString(PKG, "NumberRangeDialog.TransformName"), null);
inputFieldControl =
createLineCombo(
- lsMod, BaseMessages.getString(PKG, "NumberRange.InputField"), wTransformName);
+ lsMod, BaseMessages.getString(PKG, "NumberRangeDialog.InputField"), wTransformName);
outputFieldControl =
createLine(
- lsMod, BaseMessages.getString(PKG, "NumberRange.OutputField"), inputFieldControl);
+ lsMod, BaseMessages.getString(PKG, "NumberRangeDialog.OutputField"), inputFieldControl);
inputFieldControl.addFocusListener(
new FocusListener() {
@@ -112,7 +112,7 @@ public class NumberRangeDialog extends BaseTransformDialog implements ITransform
});
fallBackValueControl =
createLine(
- lsMod, BaseMessages.getString(PKG, "NumberRange.DefaultValue"), outputFieldControl);
+ lsMod, BaseMessages.getString(PKG, "NumberRangeDialog.DefaultValue"), outputFieldControl);
createRulesTable(lsMod);
@@ -127,7 +127,7 @@ public class NumberRangeDialog extends BaseTransformDialog implements ITransform
/** Creates the table of rules */
private void createRulesTable(ModifyListener lsMod) {
Label rulesLable = new Label(shell, SWT.NONE);
- rulesLable.setText(BaseMessages.getString(PKG, "NumberRange.Ranges"));
+ rulesLable.setText(BaseMessages.getString(PKG, "NumberRangeDialog.Ranges"));
props.setLook(rulesLable);
FormData lableFormData = new FormData();
lableFormData.left = new FormAttachment(0, 0);
@@ -140,17 +140,17 @@ public class NumberRangeDialog extends BaseTransformDialog implements ITransform
ColumnInfo[] colinf = new ColumnInfo[3];
colinf[0] =
new ColumnInfo(
- BaseMessages.getString(PKG, "NumberRange.LowerBound"),
+ BaseMessages.getString(PKG, "NumberRangeDialog.LowerBound"),
ColumnInfo.COLUMN_TYPE_TEXT,
false);
colinf[1] =
new ColumnInfo(
- BaseMessages.getString(PKG, "NumberRange.UpperBound"),
+ BaseMessages.getString(PKG, "NumberRangeDialog.UpperBound"),
ColumnInfo.COLUMN_TYPE_TEXT,
false);
colinf[2] =
new ColumnInfo(
- BaseMessages.getString(PKG, "NumberRange.Value"), ColumnInfo.COLUMN_TYPE_TEXT, false);
+ BaseMessages.getString(PKG, "NumberRangeDialog.Value"), ColumnInfo.COLUMN_TYPE_TEXT, false);
rulesControl =
new TableView(
@@ -260,20 +260,9 @@ public class NumberRangeDialog extends BaseTransformDialog implements ITransform
for (int i = 0; i < input.getRules().size(); i++) {
NumberRangeRule rule = input.getRules().get(i);
TableItem item = rulesControl.table.getItem(i);
-
- // Empty value is equal to minimal possible value
- if (rule.getLowerBound() > -Double.MAX_VALUE) {
- String lowerBoundStr = String.valueOf(rule.getLowerBound());
- item.setText(1, lowerBoundStr);
- }
-
- // Empty value is equal to maximal possible value
- if (rule.getUpperBound() < Double.MAX_VALUE) {
- String upperBoundStr = String.valueOf(rule.getUpperBound());
- item.setText(2, upperBoundStr);
- }
-
- item.setText(3, rule.getValue());
+ item.setText(1, Const.NVL(rule.getLowerBound(),""));
+ item.setText(2, Const.NVL(rule.getUpperBound(),""));
+ item.setText(3, Const.NVL(rule.getValue(),""));
}
rulesControl.setRowNums();
rulesControl.optWidth(true);
@@ -292,40 +281,20 @@ public class NumberRangeDialog extends BaseTransformDialog implements ITransform
transformName = wTransformName.getText(); // return value
- String inputField = inputFieldControl.getText();
- input.setInputField(inputField);
+ input.setInputField(inputFieldControl.getText());
+ input.setOutputField(outputFieldControl.getText());
+ input.setFallBackValue(fallBackValueControl.getText());
input.emptyRules();
- String fallBackValue = fallBackValueControl.getText();
- input.setFallBackValue(fallBackValue);
-
- input.setOutputField(outputFieldControl.getText());
-
int count = rulesControl.nrNonEmpty();
for (int i = 0; i < count; i++) {
TableItem item = rulesControl.getNonEmpty(i);
- String lowerBoundStr =
- Utils.isEmpty(item.getText(1)) ? String.valueOf(-Double.MAX_VALUE) : item.getText(1);
- String upperBoundStr =
- Utils.isEmpty(item.getText(2)) ? String.valueOf(Double.MAX_VALUE) : item.getText(2);
+ String lowerBoundStr = item.getText(1);
+ String upperBoundStr = item.getText(2);
String value = item.getText(3);
-
- try {
- double lowerBound = Double.parseDouble(lowerBoundStr);
- double upperBound = Double.parseDouble(upperBoundStr);
-
- input.addRule(lowerBound, upperBound, value);
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException(
- "Bounds of this rule are not numeric: lowerBound="
- + lowerBoundStr
- + ", upperBound="
- + upperBoundStr
- + ", value="
- + value,
- e);
- }
+
+ input.addRule(lowerBoundStr, upperBoundStr, value);
}
dispose();
@@ -347,7 +316,11 @@ public class NumberRangeDialog extends BaseTransformDialog implements ITransform
} catch (HopException ke) {
new ErrorDialog(
- shell, BaseMessages.getString(PKG, "NumberRange.TypeLongDesc"), "Can't get fields", ke);
+ shell,
+ BaseMessages.getString(PKG, "NumberRangeDialog.Title"),
+ BaseMessages.getString(PKG, "NumberRangeDialog.FailedToGetFields.DialogMessage"),
+ ke);
}
}
}
+
diff --git a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeMeta.java b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeMeta.java
index 2b6ccd635d..46c4b269f2 100644
--- a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeMeta.java
+++ b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeMeta.java
@@ -18,77 +18,56 @@
package org.apache.hop.pipeline.transforms.numberrange;
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.HopTransformException;
-import org.apache.hop.core.exception.HopXmlException;
import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.core.row.IValueMeta;
import org.apache.hop.core.row.value.ValueMetaString;
+import org.apache.hop.core.util.Utils;
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.LinkedList;
import java.util.List;
@Transform(
id = "NumberRange",
image = "numberrange.svg",
- name = "i18n::BaseTransform.TypeLongDesc.NumberRange",
- description = "i18n::BaseTransform.TypeTooltipDesc.NumberRange",
+ name = "i18n::NumberRange.Name",
+ description = "i18n::NumberRange.Description",
categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Transform",
- keywords = "i18n::NumberRangeMeta.keyword",
+ keywords = "i18n::NumberRange.Keyword",
documentationUrl = "/pipeline/transforms/numberrange.html")
public class NumberRangeMeta extends BaseTransformMeta<NumberRange, NumberRangeData> {
+ private static final Class<?> PKG = NumberRangeMeta.class; // For Translator
+
+ @HopMetadataProperty(key ="inputField", injectionKey = "INPUT_FIELD", injectionKeyDescription = "NumberRangeMeta.Injection.INPUT_FIELD")
private String inputField;
+ @HopMetadataProperty(key ="outputField", injectionKey = "OUTPUT_FIELD", injectionKeyDescription = "NumberRangeMeta.Injection.OUTPUT_FIELD")
private String outputField;
+ @HopMetadataProperty(key ="fallBackValue", injectionKey = "FALL_BACK_VALUE", injectionKeyDescription = "NumberRangeMeta.Injection.FALL_BACK_VALUE")
private String fallBackValue;
+ @HopMetadataProperty(groupKey = "rules", key = "rule", injectionGroupKey = "RULES", injectionGroupDescription = "NumberRangeMeta.Injection.RULES")
private List<NumberRangeRule> rules;
public NumberRangeMeta() {
super();
+ rules = new LinkedList<>();
}
public void emptyRules() {
rules = new LinkedList<>();
}
- public NumberRangeMeta(Node transformNode, IHopMetadataProvider metadataProvider)
- throws HopXmlException {
- loadXml(transformNode, metadataProvider);
- }
-
- @Override
- public String getXml() {
- StringBuilder retval = new StringBuilder();
-
- retval.append(" ").append(XmlHandler.addTagValue("inputField", inputField));
- retval.append(" ").append(XmlHandler.addTagValue("outputField", outputField));
- retval.append(" ").append(XmlHandler.addTagValue("fallBackValue", getFallBackValue()));
-
- retval.append(" <rules>").append(Const.CR);
- for (NumberRangeRule rule : rules) {
- retval.append(" <rule>").append(Const.CR);
- retval.append(" ").append(XmlHandler.addTagValue("lower_bound", rule.getLowerBound()));
- retval.append(" ").append(XmlHandler.addTagValue("upper_bound", rule.getUpperBound()));
- retval.append(" ").append(XmlHandler.addTagValue("value", rule.getValue()));
- retval.append(" </rule>").append(Const.CR);
- }
- retval.append(" </rules>").append(Const.CR);
-
- return retval.toString();
- }
-
@Override
public void getFields(
IRowMeta row,
@@ -110,44 +89,13 @@ public class NumberRangeMeta extends BaseTransformMeta<NumberRange, NumberRangeD
return retval;
}
- @Override
- public void loadXml(Node transformNode, IHopMetadataProvider metadataProvider)
- throws HopXmlException {
- try {
- inputField = XmlHandler.getTagValue(transformNode, "inputField");
- outputField = XmlHandler.getTagValue(transformNode, "outputField");
-
- emptyRules();
- String fallBackValue = XmlHandler.getTagValue(transformNode, "fallBackValue");
- setFallBackValue(fallBackValue);
-
- Node fields = XmlHandler.getSubNode(transformNode, "rules");
- int count = XmlHandler.countNodes(fields, "rule");
- for (int i = 0; i < count; i++) {
-
- Node fnode = XmlHandler.getSubNodeByNr(fields, "rule", i);
-
- String lowerBoundStr = XmlHandler.getTagValue(fnode, "lower_bound");
- String upperBoundStr = XmlHandler.getTagValue(fnode, "upper_bound");
- String value = XmlHandler.getTagValue(fnode, "value");
-
- double lowerBound = Double.parseDouble(lowerBoundStr);
- double upperBound = Double.parseDouble(upperBoundStr);
- addRule(lowerBound, upperBound, value);
- }
-
- } catch (Exception e) {
- throw new HopXmlException("Unable to read transform info from XML node", e);
- }
- }
-
@Override
public void setDefault() {
emptyRules();
setFallBackValue("unknown");
- addRule(-Double.MAX_VALUE, 5, "Less than 5");
- addRule(5, 10, "5-10");
- addRule(10, Double.MAX_VALUE, "More than 10");
+ addRule("", "5", "Less than 5");
+ addRule("5", "10", "5-10");
+ addRule("10", "", "More than 10");
inputField = "";
outputField = "range";
}
@@ -168,14 +116,16 @@ public class NumberRangeMeta extends BaseTransformMeta<NumberRange, NumberRangeD
cr =
new CheckResult(
CheckResult.TYPE_RESULT_WARNING,
- "Not receiving any fields from previous transforms!",
+ BaseMessages.getString(
+ PKG, "NumberRangeMeta.CheckResult.CouldNotReadFieldsFromPreviousTransform"),
transforminfo);
remarks.add(cr);
} else {
cr =
new CheckResult(
ICheckResult.TYPE_RESULT_OK,
- "Transform is connected to previous one, receiving " + prev.size() + " fields",
+ BaseMessages.getString(
+ PKG, "NumberRangeMeta.CheckResult.TransformReceivingFieldsOK", prev.size() + ""),
transforminfo);
remarks.add(cr);
}
@@ -185,17 +135,36 @@ public class NumberRangeMeta extends BaseTransformMeta<NumberRange, NumberRangeD
cr =
new CheckResult(
ICheckResult.TYPE_RESULT_OK,
- "Transform is receiving info from other transforms.",
+ BaseMessages.getString(PKG, "NumberRangeMeta.CheckResult.TransformReceivingInfoOK"),
transforminfo);
remarks.add(cr);
} else {
cr =
new CheckResult(
ICheckResult.TYPE_RESULT_ERROR,
- "No input received from other transforms!",
+ BaseMessages.getString(PKG, "NumberRangeMeta.CheckResult.NoInputReceivedError"),
transforminfo);
remarks.add(cr);
}
+
+ // Check that the lower and upper bounds are numerics
+ for (NumberRangeRule rule : this.rules) {
+ try {
+ if (!Utils.isEmpty(rule.getLowerBound())) {
+ Double.valueOf(rule.getLowerBound());
+ }
+ if (!Utils.isEmpty(rule.getUpperBound())) {
+ Double.valueOf(rule.getUpperBound());
+ }
+ } catch (NumberFormatException e) {
+ cr = new CheckResult(
+ ICheckResult.TYPE_RESULT_ERROR,
+ BaseMessages.getString(
+ PKG, "NumberRangeMeta.CheckResult.NotNumericRule", rule.getLowerBound(), rule.getUpperBound(), rule.getValue()),
+ transforminfo);
+ remarks.add(cr);
+ }
+ }
}
public String getInputField() {
@@ -226,9 +195,10 @@ public class NumberRangeMeta extends BaseTransformMeta<NumberRange, NumberRangeD
this.fallBackValue = fallBackValue;
}
- public void addRule(double lowerBound, double upperBound, String value) {
+ public NumberRangeRule addRule(String lowerBound, String upperBound, String value) {
NumberRangeRule rule = new NumberRangeRule(lowerBound, upperBound, value);
rules.add(rule);
+ return rule;
}
public void setRules(List<NumberRangeRule> rules) {
diff --git a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeRule.java b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeRule.java
index afa22cd585..af116986f9 100644
--- a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeRule.java
+++ b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeRule.java
@@ -17,33 +17,64 @@
package org.apache.hop.pipeline.transforms.numberrange;
+import org.apache.hop.core.util.Utils;
+import org.apache.hop.metadata.api.HopMetadataProperty;
import java.util.Objects;
/** Contains one rule for a number range */
public class NumberRangeRule {
/** Lower bound for which the rule matches (lowerBound <= x) */
- private double lowerBound;
+ @HopMetadataProperty(key ="lower_bound", injectionKey = "LOWER_BOUND", injectionKeyDescription = "NumberRangeMeta.Injection.LOWER_BOUND")
+ private String lowerBound;
/** Upper bound for which the rule matches (x < upperBound) */
- private double upperBound;
+ @HopMetadataProperty(key ="upper_bound", injectionKey = "UPPER_BOUND", injectionKeyDescription = "NumberRangeMeta.Injection.UPPER_BOUND")
+ private String upperBound;
/** Value that is returned if the number to be tested is within the range */
+ @HopMetadataProperty(key ="value", injectionKey = "VALUE", injectionKeyDescription = "NumberRangeMeta.Injection.VALUE")
private String value;
+
+ private double lowerBoundValue;
+ private double upperBoundValue;
- public NumberRangeRule(double lowerBound, double upperBound, String value) {
+ public NumberRangeRule() {
+
+ }
+
+ public NumberRangeRule(String lowerBound, String upperBound, String value) {
this.lowerBound = lowerBound;
this.upperBound = upperBound;
this.value = value;
}
+
+ public void init() {
+ try {
+ // Empty value is equal to minimal possible value
+ if (Utils.isEmpty(this.lowerBound))
+ this.lowerBoundValue = -Double.MAX_VALUE;
+ else
+ this.lowerBoundValue = Double.valueOf(lowerBound);
+ // Empty value is equal to maximal possible value
+ if (Utils.isEmpty(this.upperBound))
+ this.upperBoundValue = Double.MAX_VALUE;
+ else
+ this.upperBoundValue = Double.valueOf(upperBound);
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("Bounds of this rule are not numeric: lowerBound="
+ + lowerBound + ", upperBound=" + upperBound + ", value=" + value, e);
+ }
+ }
+
/**
* Evaluates if the current value is within the range. If so, it returns the value. Otherwise it
* returns null.
*/
public String evaluate(double compareValue) {
// Check if the value is within the range
- if ((compareValue >= lowerBound) && (compareValue < upperBound)) {
+ if ((compareValue >= lowerBoundValue) && (compareValue < upperBoundValue)) {
return value;
}
@@ -51,14 +82,26 @@ public class NumberRangeRule {
return null;
}
- public double getLowerBound() {
+ public void setLowerBound(String value) {
+ this.lowerBound = value;
+ }
+
+ public String getLowerBound() {
return lowerBound;
}
- public double getUpperBound() {
+ public void setUpperBound(String value) {
+ this.upperBound = value;;
+ }
+
+ public String getUpperBound() {
return upperBound;
}
+ public void setValue(String value) {
+ this.value = value;
+ }
+
public String getValue() {
return value;
}
@@ -69,8 +112,8 @@ public class NumberRangeRule {
return false;
} else {
NumberRangeRule target = (NumberRangeRule) obj;
- return getLowerBound() == target.getLowerBound()
- && getUpperBound() == target.getUpperBound()
+ return getLowerBound().equals(target.getLowerBound())
+ && getUpperBound().equals(target.getUpperBound())
&& getValue().equals(target.getValue());
}
}
diff --git a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeSet.java b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeSet.java
index 09f72f5d68..1453dfa488 100644
--- a/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeSet.java
+++ b/plugins/transforms/numberrange/src/main/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeSet.java
@@ -64,19 +64,6 @@ public class NumberRangeSet {
return MULTI_VALUE_SEPARATOR;
}
- /** Evaluates a value against all rules. Return empty value if input is not numeric. */
- public String evaluate(String strValue) throws HopException {
- if (strValue != null) {
- // Try to parse value to double
- try {
- double doubleValue = Double.parseDouble(strValue);
- return evaluate(doubleValue);
- } catch (Exception e) {
- throw new HopException(e);
- }
- }
- return fallBackValue;
- }
/** Evaluates a value against all rules. Return empty value if input is not numeric. */
public String evaluate(Double value) throws HopException {
diff --git a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_en_US.properties b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_en_US.properties
index cbd3ecbb91..bbfce12d25 100644
--- a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_en_US.properties
+++ b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_en_US.properties
@@ -14,17 +14,30 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-BaseTransform.TypeLongDesc.NumberRange=Number range
-BaseTransform.TypeTooltipDesc.NumberRange=Create ranges based on numeric field
-NumberRange.TypeLongDesc=Number range
-NumberRange.TransformName=Transform name:
-NumberRange.InputField=Input field:
-NumberRange.OutputField=Output field:
-NumberRange.DefaultValue=Default value(if no range matches):
-NumberRange.Ranges=Ranges (min <= x< max):
-NumberRange.LowerBound=Lower Bound
-NumberRange.UpperBound=Upper Bound
-NumberRange.Value=Value
+NumberRange.Name=Number range
+NumberRange.Description=Create ranges based on numeric field
+NumberRange.Keyword=number,range
+NumberRangeDialog.Title=Number range
+NumberRangeDialog.TransformName=Transform name:
+NumberRangeDialog.InputField=Input field:
+NumberRangeDialog.OutputField=Output field:
+NumberRangeDialog.DefaultValue=Default value (if no range matches):
+NumberRangeDialog.Ranges=Ranges (min <= x< max):
+NumberRangeDialog.LowerBound=Lower bound
+NumberRangeDialog.UpperBound=Upper bound
+NumberRangeDialog.Value=Value
+NumberRangeDialog.FailedToGetFields.DialogMessage=Unable to get fields from previous transforms because of an error
NumberRange.Log.LineNumber=linenr
NumberRange.Log.ErrorInTransformRunning=Because of an error, this transform can''t continue:
-NumberRangeMeta.keyword=number,range
\ No newline at end of file
+NumberRangeMeta.Injection.INPUT_FIELD=Input field
+NumberRangeMeta.Injection.OUTPUT_FIELD=Output field
+NumberRangeMeta.Injection.FALL_BACK_VALUE=Default value (if no range matches)
+NumberRangeMeta.Injection.RULES=Rules
+NumberRangeMeta.Injection.LOWER_BOUND=Lower bound
+NumberRangeMeta.Injection.UPPER_BOUND=Upper bound
+NumberRangeMeta.Injection.VALUE=Value
+NumberRangeMeta.CheckResult.TransformReceivingFieldsOK=Transform is connected to previous one, receiving {0} fields
+NumberRangeMeta.CheckResult.CouldNotReadFieldsFromPreviousTransform=Couldn''t read fields from the previous transform
+NumberRangeMeta.CheckResult.TransformReceivingInfoOK=Transform is receiving info from other transforms
+NumberRangeMeta.CheckResult.NoInputReceivedError=No input received from other transforms
+NumberRangeMeta.CheckResult.NotNumericRule=Bounds of this rule are not numeric: lowerBound={0}, upperBound={1}, value={2}
\ No newline at end of file
diff --git a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_es_AR.properties b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_es_AR.properties
index a7f2582067..7ee8892af2 100644
--- a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_es_AR.properties
+++ b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_es_AR.properties
@@ -17,14 +17,15 @@
#
#
#
-NumberRange.UpperBound=L\u00EDmite superior
+NumberRange.Name=Rangos de n\u00FAmeros
+NumberRangeDialog.UpperBound=L\u00EDmite superior
NumberRange.Log.LineNumber=Nro. de \u013A\u00EDnea\:
-NumberRange.OutputField=Campo de salida
-NumberRange.Ranges=RAngos (min <\= x < max)
+NumberRangeDialog.OutputField=Campo de salida
+NumberRangeDialog.Ranges=RAngos (min <\= x < max)
NumberRange.Log.ErrorInTransformRunning=Este paso no puede continuar debido a un error\:
-NumberRange.Value=Valor
-NumberRange.LowerBound=L\u00EDmite inferior
-NumberRange.DefaultValue=Valor por defecto (si no hay coincidencia)\:
-NumberRange.InputField=Campo de entrada\:
-NumberRange.TransformName=Nombre del paso\:
-NumberRange.TypeLongDesc=Rangos de n\u00FAmeros
+NumberRangeDialog.Value=Valor
+NumberRangeDialog.LowerBound=L\u00EDmite inferior
+NumberRangeDialog.DefaultValue=Valor por defecto (si no hay coincidencia)\:
+NumberRangeDialog.InputField=Campo de entrada\:
+NumberRangeDialog.TransformName=Nombre del paso\:
+
diff --git a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_fr_FR.properties b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_fr_FR.properties
index 3108882d79..55c89c9635 100644
--- a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_fr_FR.properties
+++ b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_fr_FR.properties
@@ -17,16 +17,29 @@
#
#
#
-BaseTransform.TypeLongDesc.NumberRange=Cr\u00E9ation plages de nombres
-BaseTransform.TypeTooltipDesc.NumberRange=Cr\u00E9ation de plages de nombres
-NumberRange.TypeLongDesc=Cr\u00E9ation plages de nombres
-NumberRange.TransformName=Nom de la transformation
-NumberRange.InputField=Champ source
-NumberRange.OutputField=Champ retour
-NumberRange.DefaultValue=VValeur par d\u00E9faut
-NumberRange.Ranges=Borne inf. <= x< Borne sup.
-NumberRange.LowerBound=Borne inf\u00E9rieure
-NumberRange.UpperBound=Borne sup\u00E9rieure
-NumberRange.Value=Valeur
-NumberRange.Log.LineNumber=N°Ligne
-NumberRange.Log.ErrorInTransformRunning=Cette \u00E9tape ne peut \u00EAtre ex\u00E9cut\u00E9e:
\ No newline at end of file
+NumberRange.Name=Cr\u00E9ation plages de nombres
+NumberRange.Description=Cr\u00E9ation de plages de nombres
+NumberRange.Keyword=plage, interval, nombre
+NumberRangeDialog.Title=Cr\u00E9ation plages de nombres
+NumberRangeDialog.TransformName=Nom de la transformation
+NumberRangeDialog.InputField=Champ source
+NumberRangeDialog.OutputField=Champ retour
+NumberRangeDialog.DefaultValue=Valeur par d\u00E9faut
+NumberRangeDialog.Ranges=Borne inf. <= x< Borne sup.
+NumberRangeDialog.LowerBound=Borne inf\u00E9rieure
+NumberRangeDialog.UpperBound=Borne sup\u00E9rieure
+NumberRangeDialog.Value=Valeur
+NumberRange.Log.LineNumber=N\u00B0Ligne
+NumberRange.Log.ErrorInTransformRunning=Cette transformation ne peut \u00EAtre ex\u00E9cut\u00E9e:
+NumberRangeMeta.Injection.INPUT_FIELD=Champ source
+NumberRangeMeta.Injection.OUTPUT_FIELD=Champ retour
+NumberRangeMeta.Injection.FALL_BACK_VALUE=Valeur par d\u00E9faut
+NumberRangeMeta.Injection.RULES=R\u00E8gles
+NumberRangeMeta.Injection.LOWER_BOUND=Borne inf\u00E9rieure
+NumberRangeMeta.Injection.UPPER_BOUND=Borne sup\u00E9rieure
+NumberRangeMeta.Injection.VALUE=Valeur
+NumberRangeMeta.CheckResult.TransformReceivingFieldsOK=La transformation est connect\u00E9 aux transformations pr\u00E9c\u00E9dentes et r\u00E9cup\u00E8re {0} champs
+NumberRangeMeta.CheckResult.CouldNotReadFieldsFromPreviousTransform=Impossible de lire les champs depuis la transformation pr\u00E9c\u00E9dente
+NumberRangeMeta.CheckResult.TransformReceivingInfoOK=La transformation re\u00E7oit des informations des autres transformations
+NumberRangeMeta.CheckResult.NoInputReceivedError=Aucun flux d''entr\u00E9e en provenance des autres transformations
+NumberRangeMeta.CheckResult.NotNumericRule=Les plages de cette r\u00E8gle ne sont pas num\u00E9riques: inf\u00E9rieure={0}, sup\u00E9rieure={1}, valeur={2}
\ No newline at end of file
diff --git a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_it_IT.properties b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_it_IT.properties
index 5e10507a78..a5e65d563d 100644
--- a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_it_IT.properties
+++ b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_it_IT.properties
@@ -17,14 +17,15 @@
#
#
#
-NumberRange.UpperBound=Limite superiore
+NumberRange.Name=Range numerici
+NumberRangeDialog.Title=Range numerici
+NumberRangeDialog.UpperBound=Limite superiore
NumberRange.Log.LineNumber=linea n\u00B0
-NumberRange.OutputField=Campo d''output\:
-NumberRange.Ranges=Range (min <\= x< max)\:
+NumberRangeDialog.OutputField=Campo d''output\:
+NumberRangeDialog.Ranges=Range (min <\= x< max)\:
NumberRange.Log.ErrorInTransformRunning=A causa di un errore, questo transform non pu\u00F2 continuare\:
-NumberRange.Value=Valore
-NumberRange.LowerBound=Limite inferiore
-NumberRange.DefaultValue=Valore di default (se nessun range corrisponde)\:
-NumberRange.InputField=Campo d''input\:
-NumberRange.TypeLongDesc=Range numerici
-NumberRange.TransformName=Nome transform\:
+NumberRangeDialog.Value=Valore
+NumberRangeDialog.LowerBound=Limite inferiore
+NumberRangeDialog.DefaultValue=Valore di default (se nessun range corrisponde)\:
+NumberRangeDialog.InputField=Campo d''input\:
+NumberRangeDialog.TransformName=Nome transform\:
diff --git a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_ja_JP.properties b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_ja_JP.properties
index cb7cc84275..1aef6e698f 100644
--- a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_ja_JP.properties
+++ b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_ja_JP.properties
@@ -17,16 +17,15 @@
#
#
#
-BaseTransform.TypeLongDesc.NumberRange=\u6570\u5024\u7BC4\u56F2
-BaseTransform.TypeTooltipDesc.NumberRange=Number range\n\u7BC4\u56F2\u3092\u6307\u5B9A\u3057\u305F\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002
-NumberRange.TypeLongDesc=Number range
-NumberRange.TransformName=\u30b9\u30c6\u30c3\u30d7\u540d
-NumberRange.InputField=\u30d5\u30a3\u30fc\u30eb\u30c9\uff08\u5165\u529b\uff09
-NumberRange.OutputField=\u30d5\u30a3\u30fc\u30eb\u30c9\uff08\u51fa\u529b\uff09
-NumberRange.DefaultValue=\u30c7\u30d5\u30a9\u30eb\u30c8
-NumberRange.Ranges=\u7bc4\u56f2
-NumberRange.LowerBound=\u4e0b\u9650\u5024
-NumberRange.UpperBound=\u4e0a\u9650\u5024
-NumberRange.Value=\u5024
+NumberRange.Name=\u6570\u5024\u7BC4\u56F2
+NumberRange.Description=Number range\n\u7BC4\u56F2\u3092\u6307\u5B9A\u3057\u305F\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002
+NumberRangeDialog.TransformName=\u30b9\u30c6\u30c3\u30d7\u540d
+NumberRangeDialog.InputField=\u30d5\u30a3\u30fc\u30eb\u30c9\uff08\u5165\u529b\uff09
+NumberRangeDialog.OutputField=\u30d5\u30a3\u30fc\u30eb\u30c9\uff08\u51fa\u529b\uff09
+NumberRangeDialog.DefaultValue=\u30c7\u30d5\u30a9\u30eb\u30c8
+NumberRangeDialog.Ranges=\u7bc4\u56f2
+NumberRangeDialog.LowerBound=\u4e0b\u9650\u5024
+NumberRangeDialog.UpperBound=\u4e0a\u9650\u5024
+NumberRangeDialog.Value=\u5024
NumberRange.Log.LineNumber=linenr
NumberRange.Log.ErrorInTransformRunning=Because of an error, this transform can''t continue:
diff --git a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_ko_KR.properties b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_ko_KR.properties
index 7ccc39a138..ca4d45d0a7 100644
--- a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_ko_KR.properties
+++ b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_ko_KR.properties
@@ -17,14 +17,15 @@
#
#
#
-NumberRange.UpperBound=\uC0C1\uD55C
-NumberRange.Log.LineNumber=\uC904\uBC88\uD638
-NumberRange.OutputField=\uCD9C\uB825 \uD544\uB4DC\:
-NumberRange.Ranges=\uBC94\uC704 (\uCD5C\uC18C\uAC12 <\= x < \uCD5C\uB300\uAC12)\:
+NumberRange.Name=Number range
+NumberRangeDialog.UpperBound=\uC0C1\uD55C
+NumberRangeDialog.Log.LineNumber=\uC904\uBC88\uD638
+NumberRangeDialog.OutputField=\uCD9C\uB825 \uD544\uB4DC\:
+NumberRangeDialog.Ranges=\uBC94\uC704 (\uCD5C\uC18C\uAC12 <\= x < \uCD5C\uB300\uAC12)\:
NumberRange.Log.ErrorInTransformRunning=\uC624\uB958\uB85C \uC778\uD574 transform\uC744 \uC9C4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4\:
-NumberRange.Value=\uAC12
-NumberRange.LowerBound=\uD558\uD55C
-NumberRange.DefaultValue=\uAE30\uBCF8\uAC12(\uBC94\uC704 \uB9E4\uCE6D\uC774 \uC5C6\uB294 \uACBD\uC6B0)\:
-NumberRange.InputField=\uC785\uB825 \uD544\uB4DC\:
-NumberRange.TransformName=transform \uC774\uB984\:
-NumberRange.TypeLongDesc=Number range
+NumberRangeDialog.Value=\uAC12
+NumberRangeDialog.LowerBound=\uD558\uD55C
+NumberRangeDialog.DefaultValue=\uAE30\uBCF8\uAC12(\uBC94\uC704 \uB9E4\uCE6D\uC774 \uC5C6\uB294 \uACBD\uC6B0)\:
+NumberRangeDialog.InputField=\uC785\uB825 \uD544\uB4DC\:
+NumberRangeDialog.TransformName=transform \uC774\uB984\:
+
diff --git a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_zh_CN.properties b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_zh_CN.properties
index 46c5ccec82..af2484a328 100644
--- a/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_zh_CN.properties
+++ b/plugins/transforms/numberrange/src/main/resources/org/apache/hop/pipeline/transforms/numberrange/messages/messages_zh_CN.properties
@@ -16,17 +16,15 @@
# limitations under the License.
#
#
-BaseTransform.TypeLongDesc.NumberRange=\u6570\u503C\u8303\u56F4
-BaseTransform.TypeTooltipDesc.NumberRange=\u57FA\u4E8E\u6570\u5B57\u7C7B\u578B\u5B57\u6BB5\u521B\u5EFA\u533A\u95F4
-NumberRange.DefaultValue=\u7F3A\u7701\u503C(\u5982\u679C\u6CA1\u6709\u5339\u914D\u5230\u8303\u56F4)\:
-NumberRange.InputField=\u8F93\u5165\u5B57\u6BB5\:
+NumberRange.Name=\u6570\u503C\u8303\u56F4
+NumberRange.Description=\u57FA\u4E8E\u6570\u5B57\u7C7B\u578B\u5B57\u6BB5\u521B\u5EFA\u533A\u95F4
+NumberRangeDialog.DefaultValue=\u7F3A\u7701\u503C(\u5982\u679C\u6CA1\u6709\u5339\u914D\u5230\u8303\u56F4)\:
+NumberRangeDialog.InputField=\u8F93\u5165\u5B57\u6BB5\:
NumberRange.Log.ErrorInTransformRunning=\u7531\u4E8E\u9519\u8BEF, Transform \u4E0D\u80FD\u7EE7\u7EED\:
NumberRange.Log.LineNumber=\u884C\u53F7
-NumberRange.LowerBound=\u4E0B\u9650
-NumberRange.OutputField=\u8F93\u51FA\u5B57\u6BB5\:
-NumberRange.Ranges=\u8303\u56F4 (\u6700\u5C0F <\= x< \u6700\u5927)\:
-NumberRange.TransformName=Transform \u540D\u79F0
-NumberRange.TypeLongDesc=\u6570\u503C\u8303\u56F4
-NumberRange.UpperBound=\u4E0A\u754C
-NumberRange.Value=\u503C
-NumberRangeMeta.keyword=number,range
+NumberRangeDialog.LowerBound=\u4E0B\u9650
+NumberRangeDialog.OutputField=\u8F93\u51FA\u5B57\u6BB5\:
+NumberRangeDialog.Ranges=\u8303\u56F4 (\u6700\u5C0F <\= x< \u6700\u5927)\:
+NumberRangeDialog.TransformName=Transform \u540D\u79F0
+NumberRangeDialog.UpperBound=\u4E0A\u754C
+NumberRangeDialog.Value=\u503C
diff --git a/plugins/transforms/numberrange/src/test/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeMetaTest.java b/plugins/transforms/numberrange/src/test/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeMetaTest.java
index 95edda1f98..4281d87124 100644
--- a/plugins/transforms/numberrange/src/test/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeMetaTest.java
+++ b/plugins/transforms/numberrange/src/test/java/org/apache/hop/pipeline/transforms/numberrange/NumberRangeMetaTest.java
@@ -66,7 +66,7 @@ public class NumberRangeMetaTest {
@Override
public NumberRangeRule getTestObject() {
return new NumberRangeRule(
- new Random().nextDouble(), new Random().nextDouble(), UUID.randomUUID().toString());
+ String.valueOf(new Random().nextDouble()), String.valueOf(new Random().nextDouble()), UUID.randomUUID().toString());
}
@Override