From d4cc7c5d2b718399c5a6cec903012ed3b8e77958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Sexenian?= <99925035+tomas-sexenian@users.noreply.github.com> Date: Mon, 15 Apr 2024 11:07:20 -0300 Subject: [PATCH 1/4] Consider escaped double quote case in picture prefix Issue:107955 --- common/src/main/java/com/genexus/LocalUtil.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/com/genexus/LocalUtil.java b/common/src/main/java/com/genexus/LocalUtil.java index e1bd16474..87b51857f 100644 --- a/common/src/main/java/com/genexus/LocalUtil.java +++ b/common/src/main/java/com/genexus/LocalUtil.java @@ -1562,6 +1562,8 @@ else if (a=='.' && !dotRemove) else if (a=='\\') { i++; + if (picture.charAt(i--) == '"') + pictureWithoutSymbols.append('"'); } } return pictureWithoutSymbols.toString(); @@ -1897,12 +1899,11 @@ private String removePicturePreffix(String suffix, String picture) private String addPicturePreffix(String suffix, String originalPicture, String value) { - if (originalPicture.startsWith(suffix)) - { - return suffix + value; - } - - return value; + if (suffix.equals("\"") && originalPicture.startsWith("\\\\")) + return suffix + value; + if (originalPicture.startsWith(suffix)) + return suffix + value; + return value; } private String pictureToNumberFormat(String withoutSuffixPicture) From 739a82c05085b26de2b1cd9a7b47f9fe609a75f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Sexenian?= <99925035+tomas-sexenian@users.noreply.github.com> Date: Mon, 15 Apr 2024 11:58:47 -0300 Subject: [PATCH 2/4] Remove unnecessary if statement --- common/src/main/java/com/genexus/LocalUtil.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/common/src/main/java/com/genexus/LocalUtil.java b/common/src/main/java/com/genexus/LocalUtil.java index 87b51857f..02ca3d141 100644 --- a/common/src/main/java/com/genexus/LocalUtil.java +++ b/common/src/main/java/com/genexus/LocalUtil.java @@ -1899,9 +1899,7 @@ private String removePicturePreffix(String suffix, String picture) private String addPicturePreffix(String suffix, String originalPicture, String value) { - if (suffix.equals("\"") && originalPicture.startsWith("\\\\")) - return suffix + value; - if (originalPicture.startsWith(suffix)) + if (originalPicture.startsWith(suffix) || (suffix.equals("\"") && originalPicture.startsWith("\\\\"))) return suffix + value; return value; } From 47638bbfe0b9c7a027e25b03d27e286a34f6ab62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Sexenian?= <99925035+tomas-sexenian@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:15:38 -0300 Subject: [PATCH 3/4] Add unit test --- java/src/test/java/com/genexus/TestCommonUtil.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/java/src/test/java/com/genexus/TestCommonUtil.java b/java/src/test/java/com/genexus/TestCommonUtil.java index 949145651..8857ee67f 100644 --- a/java/src/test/java/com/genexus/TestCommonUtil.java +++ b/java/src/test/java/com/genexus/TestCommonUtil.java @@ -211,6 +211,13 @@ public void testFormat() { result = ui.getLocalUtil().format(bigDecimalValue, picture); Assert.assertEquals(expectedResult, result); + decimalValue = 87654321; + picture = "\\\" ZZ,ZZZ,ZZ9"; + expectedResult = "\\\" 87,654,321"; + + result = ui.getLocalUtil().format(decimalValue, picture); + Assert.assertEquals(expectedResult, result); + double doubleValue = 123456.12; doLocalUtilFormatAssert(ui, doubleValue, new BigDecimal(doubleValue), "ZZZZZZZZZZ9.ZZZZZZ", " 123456.120000"); doLocalUtilFormatAssert(ui, doubleValue, new BigDecimal(doubleValue), "99999999999.999999", "00000123456.120000"); From b6ea20e52f3eb79fade8e40716cac5b26f22180f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Sexenian?= <99925035+tomas-sexenian@users.noreply.github.com> Date: Tue, 23 Apr 2024 10:32:39 -0300 Subject: [PATCH 4/4] Remove extra white space between prefix and number --- common/src/main/java/com/genexus/LocalUtil.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/src/main/java/com/genexus/LocalUtil.java b/common/src/main/java/com/genexus/LocalUtil.java index 02ca3d141..bb2986c81 100644 --- a/common/src/main/java/com/genexus/LocalUtil.java +++ b/common/src/main/java/com/genexus/LocalUtil.java @@ -1744,6 +1744,8 @@ else if (value.signum() == -1 && !originalPicture.startsWith("+")) if (originalPicture.startsWith("\\")) { negativeSign = -2; + if (preffix.equals("\"") && originalPicture.startsWith("\\\\")) + negativeSign--; return originalPicture.charAt(1) + addPictureSuffix(suffix, originalPicture, addPicturePreffix(preffix, originalPicture, alignRight(formatted, originalPictLength + negativeSign))); } return addPictureSuffix(suffix, originalPicture, addPicturePreffix(preffix, originalPicture, alignRight(formatted, originalPictLength + negativeSign)));