From aa8c2f48fd76ce986c104a36568fdba3a7ac6ce5 Mon Sep 17 00:00:00 2001 From: epuzanov Date: Tue, 25 Feb 2025 14:51:49 +0100 Subject: [PATCH 1/3] Make the max and length parameters optional for the UniqueCodeGenerator --- .../substance/processors/UniqueCodeGenerator.java | 8 +++++--- .../java/ix/ginas/utils/CodeSequentialGenerator.java | 11 ++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/gsrs-module-substances-core/src/main/java/gsrs/module/substance/processors/UniqueCodeGenerator.java b/gsrs-module-substances-core/src/main/java/gsrs/module/substance/processors/UniqueCodeGenerator.java index 2b02ce121..6256f2a7a 100644 --- a/gsrs-module-substances-core/src/main/java/gsrs/module/substance/processors/UniqueCodeGenerator.java +++ b/gsrs-module-substances-core/src/main/java/gsrs/module/substance/processors/UniqueCodeGenerator.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -37,8 +38,8 @@ public UniqueCodeGenerator(Map with) { log.trace("UniqueCodeGenerator constructor with Map"); String name = (String) with.get("name"); codeSystem = (String) with.get("codesystem"); - String codeSystemSuffix = (String) with.get("suffix"); - int length = (Integer) with.get("length"); + String codeSystemSuffix = (String) with.getOrDefault("suffix", ""); + int length = (int) with.getOrDefault("length", 0); boolean padding = (Boolean) with.get("padding"); Boolean useLegacy = (Boolean) with.get("useLegacy"); Map groups = (Map) with.get("groups"); @@ -46,7 +47,8 @@ public UniqueCodeGenerator(Map with) { try { maxValue = Long.parseLong(String.valueOf(with.get("max"))); } catch (Exception e) { - maxValue = Long.MAX_VALUE; + int counterLen = length - codeSystemSuffix.length(); + maxValue = counterLen < 1 ? Long.MAX_VALUE : Long.valueOf(String.join("", Collections.nCopies(counterLen, "9"))); } final Long max = maxValue; String msg = String.format("codeSystem: %s; codeSystemSuffix: %s; length: %d; padding: %b, max: %d", diff --git a/gsrs-module-substances-core/src/main/java/ix/ginas/utils/CodeSequentialGenerator.java b/gsrs-module-substances-core/src/main/java/ix/ginas/utils/CodeSequentialGenerator.java index 61aa5d826..ad000a3fa 100644 --- a/gsrs-module-substances-core/src/main/java/ix/ginas/utils/CodeSequentialGenerator.java +++ b/gsrs-module-substances-core/src/main/java/ix/ginas/utils/CodeSequentialGenerator.java @@ -13,6 +13,7 @@ import ix.ginas.models.v1.Substance; import lombok.extern.slf4j.Slf4j; +import java.util.Collections; import java.util.Map; import java.util.Objects; /* @@ -49,8 +50,6 @@ @Component public class CodeSequentialGenerator extends SequentialNumericIDGenerator { - public static final Long DEFAULT_MAX = Long.MAX_VALUE; - @Autowired private CodeRepository codeRepository; @@ -88,10 +87,12 @@ public CodeSequentialGenerator( @JsonProperty("name") String name, @JsonProperty("groups") Map groups) { super(len, suffix, padding); - if(max==null) { max=DEFAULT_MAX; } - - this.max = max; if(suffix==null) { this.suffix= "";} + if(max==null) { + int counterLen = len - this.suffix.length(); + max = counterLen < 1 ? Long.MAX_VALUE : Long.valueOf(String.join("", Collections.nCopies(counterLen, "9"))); + } + this.max = max; this.groups = (groups != null) ? groups.values().stream().toArray(String[]::new) : null; if(!this.getClass().equals(LegacyCodeSequentialGenerator.class)) { // Legacy could be an extension of this class, and if so these checks aren't appropriate. From 4f41afdffdd8036c936e1ce2749254abeff1b632 Mon Sep 17 00:00:00 2001 From: alx652 Date: Tue, 4 Mar 2025 09:36:14 -0500 Subject: [PATCH 2/3] fix test --- .../example/substance/processor/UniqueCodeGeneratorTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gsrs-module-substance-example/src/test/java/example/substance/processor/UniqueCodeGeneratorTest.java b/gsrs-module-substance-example/src/test/java/example/substance/processor/UniqueCodeGeneratorTest.java index 4a05ae9b4..b629574d3 100644 --- a/gsrs-module-substance-example/src/test/java/example/substance/processor/UniqueCodeGeneratorTest.java +++ b/gsrs-module-substance-example/src/test/java/example/substance/processor/UniqueCodeGeneratorTest.java @@ -183,7 +183,9 @@ public void testSeqGenCheckDefaults() { CodeSequentialGenerator codeGenerator = new CodeSequentialGenerator(seqGenName, length, suffix, padding, max, codeSystem, null); ProteinSubstance substance = getSubstanceFromFile("YYD6UT8T47"); AutowireHelper.getInstance().autowire(codeGenerator); - assertEquals(codeGenerator.getMax(), codeGenerator.DEFAULT_MAX); + // assertEquals(codeGenerator.getMax(), codeGenerator.DEFAULT_MAX); + assertEquals(codeGenerator.getMax(), (Long) Long.MAX_VALUE); + assertEquals(codeGenerator.getLen(),String.valueOf(codeGenerator.getMax()).length()+codeGenerator.getSuffix().length()); } From 4cf2894306556127d770bc636652263212e53c5e Mon Sep 17 00:00:00 2001 From: alx652 Date: Tue, 4 Mar 2025 09:41:28 -0500 Subject: [PATCH 3/3] remove comment --- .../example/substance/processor/UniqueCodeGeneratorTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/gsrs-module-substance-example/src/test/java/example/substance/processor/UniqueCodeGeneratorTest.java b/gsrs-module-substance-example/src/test/java/example/substance/processor/UniqueCodeGeneratorTest.java index b629574d3..ace2a77f6 100644 --- a/gsrs-module-substance-example/src/test/java/example/substance/processor/UniqueCodeGeneratorTest.java +++ b/gsrs-module-substance-example/src/test/java/example/substance/processor/UniqueCodeGeneratorTest.java @@ -183,7 +183,6 @@ public void testSeqGenCheckDefaults() { CodeSequentialGenerator codeGenerator = new CodeSequentialGenerator(seqGenName, length, suffix, padding, max, codeSystem, null); ProteinSubstance substance = getSubstanceFromFile("YYD6UT8T47"); AutowireHelper.getInstance().autowire(codeGenerator); - // assertEquals(codeGenerator.getMax(), codeGenerator.DEFAULT_MAX); assertEquals(codeGenerator.getMax(), (Long) Long.MAX_VALUE); assertEquals(codeGenerator.getLen(),String.valueOf(codeGenerator.getMax()).length()+codeGenerator.getSuffix().length());