From bc7952eaf00f6cdb0d27274b7dc133a20847cfd4 Mon Sep 17 00:00:00 2001 From: hugohills-regnosys Date: Wed, 25 Sep 2024 14:12:36 +0100 Subject: [PATCH 1/6] Xsd import to handle empty string --- .../java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java index c86c57c34..47769537b 100644 --- a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java +++ b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java @@ -74,6 +74,9 @@ public String toTypeName(String xsdName) { String[] parts = xsdName.split("[^a-zA-Z0-9]"); StringBuilder builder = new StringBuilder(); for (String part : parts) { + if (part.isEmpty()) { + continue; + } if (Character.isUpperCase(part.charAt(0))) { builder.append(part); } else { From 610331ab7586b8188a2e89b7d9b0608d83cdf76d Mon Sep 17 00:00:00 2001 From: hugohills-regnosys Date: Wed, 25 Sep 2024 14:16:15 +0100 Subject: [PATCH 2/6] formatting --- .../java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java index 47769537b..588c6bf72 100644 --- a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java +++ b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java @@ -76,8 +76,7 @@ public String toTypeName(String xsdName) { for (String part : parts) { if (part.isEmpty()) { continue; - } - if (Character.isUpperCase(part.charAt(0))) { + } else if (Character.isUpperCase(part.charAt(0))) { builder.append(part); } else { builder.append(Character.toUpperCase(part.charAt(0))); From 6c46b7c1789d7dfb103662cb90d1f49461afef8e Mon Sep 17 00:00:00 2001 From: hugohills-regnosys Date: Wed, 25 Sep 2024 15:46:52 +0100 Subject: [PATCH 3/6] Add _ to regex --- .../com/regnosys/rosetta/tools/modelimport/XsdUtil.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java index 588c6bf72..5484e80b4 100644 --- a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java +++ b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java @@ -71,12 +71,10 @@ public boolean isEnumType(XsdSimpleType simpleType) { } public String toTypeName(String xsdName) { - String[] parts = xsdName.split("[^a-zA-Z0-9]"); + String[] parts = xsdName.split("[^a-zA-Z0-9_]"); StringBuilder builder = new StringBuilder(); for (String part : parts) { - if (part.isEmpty()) { - continue; - } else if (Character.isUpperCase(part.charAt(0))) { + if (Character.isUpperCase(part.charAt(0))) { builder.append(part); } else { builder.append(Character.toUpperCase(part.charAt(0))); From a32311ad0d6adc2972bd6214bf072fcf9b4cbead Mon Sep 17 00:00:00 2001 From: hugohills-regnosys Date: Wed, 25 Sep 2024 15:48:42 +0100 Subject: [PATCH 4/6] Tidy up --- .../com/regnosys/rosetta/tools/modelimport/XsdUtil.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java index 5484e80b4..c6081d7ec 100644 --- a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java +++ b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java @@ -29,6 +29,9 @@ import org.xmlet.xsdparser.xsdelements.XsdSimpleType; public class XsdUtil { + + private static final String XSD_NAME_REGEX = "[^a-zA-Z0-9_]"; + private final Set documentationSources = Set.of("Definition"); public final String XSI_NAMESPACE = "http://www.w3.org/2001/XMLSchema-instance"; @@ -71,7 +74,7 @@ public boolean isEnumType(XsdSimpleType simpleType) { } public String toTypeName(String xsdName) { - String[] parts = xsdName.split("[^a-zA-Z0-9_]"); + String[] parts = xsdName.split(XSD_NAME_REGEX); StringBuilder builder = new StringBuilder(); for (String part : parts) { if (Character.isUpperCase(part.charAt(0))) { @@ -85,7 +88,7 @@ public String toTypeName(String xsdName) { } public String toAttributeName(String xsdName) { - String[] parts = xsdName.split("[^a-zA-Z0-9]"); + String[] parts = xsdName.split(XSD_NAME_REGEX); StringBuilder builder = new StringBuilder(); builder.append(allFirstLowerIfNotAbbrevation(parts[0])); Arrays.stream(parts).skip(1).forEach(part -> { @@ -100,7 +103,7 @@ public String toAttributeName(String xsdName) { } public String toEnumValueName(String xsdName) { - String[] parts = xsdName.split("[^a-zA-Z0-9]"); + String[] parts = xsdName.split(XSD_NAME_REGEX); String joined = String.join("_", parts).toUpperCase(); if (joined.matches("^[0-9].*")) { return "_" + joined; From 9f02ff724dd7ce94482ef9574feb79f7ecb36ce0 Mon Sep 17 00:00:00 2001 From: hugohills-regnosys Date: Wed, 25 Sep 2024 15:49:28 +0100 Subject: [PATCH 5/6] Rename --- .../com/regnosys/rosetta/tools/modelimport/XsdUtil.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java index c6081d7ec..fb5c39332 100644 --- a/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java +++ b/rosetta-tools/src/main/java/com/regnosys/rosetta/tools/modelimport/XsdUtil.java @@ -30,7 +30,7 @@ public class XsdUtil { - private static final String XSD_NAME_REGEX = "[^a-zA-Z0-9_]"; + private static final String XSD_NAME_PARTS_REGEX = "[^a-zA-Z0-9_]"; private final Set documentationSources = Set.of("Definition"); @@ -74,7 +74,7 @@ public boolean isEnumType(XsdSimpleType simpleType) { } public String toTypeName(String xsdName) { - String[] parts = xsdName.split(XSD_NAME_REGEX); + String[] parts = xsdName.split(XSD_NAME_PARTS_REGEX); StringBuilder builder = new StringBuilder(); for (String part : parts) { if (Character.isUpperCase(part.charAt(0))) { @@ -88,7 +88,7 @@ public String toTypeName(String xsdName) { } public String toAttributeName(String xsdName) { - String[] parts = xsdName.split(XSD_NAME_REGEX); + String[] parts = xsdName.split(XSD_NAME_PARTS_REGEX); StringBuilder builder = new StringBuilder(); builder.append(allFirstLowerIfNotAbbrevation(parts[0])); Arrays.stream(parts).skip(1).forEach(part -> { @@ -103,7 +103,7 @@ public String toAttributeName(String xsdName) { } public String toEnumValueName(String xsdName) { - String[] parts = xsdName.split(XSD_NAME_REGEX); + String[] parts = xsdName.split(XSD_NAME_PARTS_REGEX); String joined = String.join("_", parts).toUpperCase(); if (joined.matches("^[0-9].*")) { return "_" + joined; From 389b9f81f4c121b7233afcdba7a1e4d089a3891c Mon Sep 17 00:00:00 2001 From: hugohills-regnosys Date: Wed, 25 Sep 2024 17:25:49 +0100 Subject: [PATCH 6/6] update test --- .../model-import/data-and-enum/expected/ns-type.rosetta | 4 ++-- .../src/test/resources/model-import/data-and-enum/schema.xsd | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rosetta-tools/src/test/resources/model-import/data-and-enum/expected/ns-type.rosetta b/rosetta-tools/src/test/resources/model-import/data-and-enum/expected/ns-type.rosetta index c95f26f92..fbe2509d6 100644 --- a/rosetta-tools/src/test/resources/model-import/data-and-enum/expected/ns-type.rosetta +++ b/rosetta-tools/src/test/resources/model-import/data-and-enum/expected/ns-type.rosetta @@ -7,7 +7,7 @@ typeAlias Max500Text: <"Specifies a character string with a maximum length of 50 typeAlias Max3Number: <"Number (max 999) of objects represented as an integer."> int(digits: 3) -type Bar: <"Bar definition."> +type Bar__1: <"Bar definition."> barStrAttr string (1..1) <"Bar string attribute definition."> @@ -20,4 +20,4 @@ type Foo: <"Foo definition."> fooDecimalWithRestrictionAttr Max3Number (0..1) <"FooDecimalWithRestrictionAttr definition."> fooEnumAttr FooEnum (1..1) <"FooEnumAttr definition."> fooStrListAttr string (0..*) <"FooStrListAttr definition."> - fooBarListAttr Bar (1..2) <"FooBarListAttr definition."> + fooBarListAttr Bar__1 (1..2) <"FooBarListAttr definition."> diff --git a/rosetta-tools/src/test/resources/model-import/data-and-enum/schema.xsd b/rosetta-tools/src/test/resources/model-import/data-and-enum/schema.xsd index 3508ef260..d74e083ed 100644 --- a/rosetta-tools/src/test/resources/model-import/data-and-enum/schema.xsd +++ b/rosetta-tools/src/test/resources/model-import/data-and-enum/schema.xsd @@ -62,7 +62,7 @@ - + BarName Bar definition. @@ -124,7 +124,7 @@ FooStrListAttr definition. - + FooBarListAttrName FooBarListAttr definition.