Skip to content

Commit 1dc039b

Browse files
committed
Add BigDecimal support for Precision and RoundingMode
1 parent d1fa224 commit 1dc039b

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

src/main/java/org/computate/frFR/java/EcrireGenClasse.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -927,6 +927,8 @@ public class EcrireGenClasse extends EcrireClasse {
927927
* Var.enUS: entityHtml
928928
*/
929929
Boolean entiteHtml;
930+
Integer entitePrecision;
931+
String entiteModeDArrondi;
930932

931933
/**
932934
* Var.enUS: entityModify
@@ -3355,6 +3357,8 @@ public void genCodeEntite(String langueNom, JsonObject langueConfig) throws Exce
33553357
entiteDefaut = doc.getString("entiteDefaut_stored_string");
33563358
entiteRequis = doc.getBoolean("entiteRequis_stored_boolean");
33573359
entiteHtml = doc.getBoolean("entiteHtml_stored_boolean");
3360+
entiteModeDArrondi = doc.getString("entiteModeDArrondi_stored_string");
3361+
entitePrecision = doc.getInteger("entitePrecision_stored_int");
33583362
Boolean entiteEstListe = (StringUtils.equals(entiteNomCanonique, ArrayList.class.getCanonicalName()) || StringUtils.equals(entiteNomCanonique, List.class.getCanonicalName()));
33593363

33603364
Boolean entiteEstZonedDateTime = StringUtils.equals(entiteNomCanonique, ZonedDateTime.class.getCanonicalName())
@@ -3976,25 +3980,25 @@ else if(entiteSetUpper)
39763980
}
39773981
tl(1, "}");
39783982
tl(1, "public static MathContext staticMathContext", entiteVarCapitalise, "() {");
3979-
tl(2, "return new MathContext(precision, RoundingMode.HALF_UP);");
3983+
tl(2, "return new MathContext(", entitePrecision, ", RoundingMode.valueOf(\"", entiteModeDArrondi, "\"));");
39803984
tl(1, "}");
39813985
tl(1, "public static ", entiteEstListe ? entiteNomSimpleCompletGenerique : entiteNomSimpleComplet, " staticSet", entiteVarCapitalise, "(", classePartsRequeteSite.getEtendBase() ? classePartsRequeteSite.getNomSimpleSuperGenerique() : classePartsRequeteSite.nomSimple(langueNom), " ", langueConfig.getString(I18n.var_requeteSite), "_, String o) {");
39823986
tl(2, "o = StringUtils.removeAll(o, \"[^\\\\d\\\\.]\");");
39833987
tl(2, "if(NumberUtils.isParsable(o))");
3984-
tl(3, "return new BigDecimal(o, MathContext.DECIMAL64).setScale(2, RoundingMode.HALF_UP);");
3988+
tl(3, "return new BigDecimal(o, staticMathContext", entiteVarCapitalise, "());");
39853989
tl(2, "return null;");
39863990
tl(1, "}");
39873991
tl(1, "@JsonIgnore");
39883992
tl(1, "public void set", entiteVarCapitalise, "(Double o) {");
3989-
tl(2, entiteEstListe ? "add" : "set", entiteVarCapitalise, "(new BigDecimal(o, MathContext.DECIMAL64).setScale(2, RoundingMode.HALF_UP));");
3993+
tl(2, entiteEstListe ? "add" : "set", entiteVarCapitalise, "(new BigDecimal(o, staticMathContext", entiteVarCapitalise, "()));");
39903994
tl(1, "}");
39913995
tl(1, "@JsonIgnore");
39923996
tl(1, "public void set", entiteVarCapitalise, "(Integer o) {");
3993-
tl(2, entiteEstListe ? "add" : "set", entiteVarCapitalise, "(new BigDecimal(o, MathContext.DECIMAL64).setScale(2, RoundingMode.HALF_UP));");
3997+
tl(2, entiteEstListe ? "add" : "set", entiteVarCapitalise, "(new BigDecimal(o, staticMathContext", entiteVarCapitalise, "()));");
39943998
tl(1, "}");
39953999
tl(1, "@JsonIgnore");
39964000
tl(1, "public void set", entiteVarCapitalise, "(Number o) {");
3997-
tl(2, entiteEstListe ? "add" : "set", entiteVarCapitalise, "(new BigDecimal(o.doubleValue(), MathContext.DECIMAL64).setScale(2, RoundingMode.HALF_UP));");
4001+
tl(2, entiteEstListe ? "add" : "set", entiteVarCapitalise, "(new BigDecimal(o.doubleValue(), staticMathContext", entiteVarCapitalise, "()));");
39984002
tl(1, "}");
39994003
staticSet = true;
40004004
}
@@ -4051,7 +4055,7 @@ else if(entiteSetUpper)
40514055
tl(4, "}");
40524056
tl(4, "return shape;");
40534057
tl(3, "} catch(Exception ex) {");
4054-
tl(4, "ExceptionUtils.rethrow(ex);");
4058+
tl(4, "LOG.error(String.format(\"Could not parse GeoJSON. %s: %s\", ex.getMessage(), o));");
40554059
tl(3, "}");
40564060
tl(2, "}");
40574061
tl(2, "return null;");
@@ -4086,7 +4090,7 @@ else if(entiteSetUpper)
40864090
}
40874091
tl(4, "return shape", StringUtils.equals(entiteNomCanoniqueGenerique, VAL_nomCanoniquePolygon) ? "s" : "", ";");
40884092
tl(3, "} catch(Exception ex) {");
4089-
tl(4, "ExceptionUtils.rethrow(ex);");
4093+
tl(4, "LOG.error(String.format(\"Could not parse GeoJSON. %s: %s\", ex.getMessage(), o));");
40904094
tl(3, "}");
40914095
tl(2, "}");
40924096
tl(2, "return null;");
@@ -4385,19 +4389,22 @@ else if(entiteSetUpper)
43854389

43864390
// Setter BigDecimal //
43874391
if((activerVertx || activerQuarkus) && StringUtils.equals(entiteNomCanoniqueGenerique, BigDecimal.class.getCanonicalName())) {
4392+
tl(1, "public static MathContext staticMathContext", entiteVarCapitalise, "() {");
4393+
tl(2, "return new MathContext(", entitePrecision, ", RoundingMode.valueOf(\"", entiteModeDArrondi, "\"));");
4394+
tl(1, "}");
43884395
tl(1, "@JsonIgnore");
43894396
tl(1, "public void set", entiteVarCapitalise, "(JsonArray objects) {");
43904397
tl(2, entiteVar, ".clear();");
43914398
tl(2, "if(objects == null)");
43924399
tl(3, "return;");
43934400
tl(2, "for(int i = 0; i < objects.size(); i++) {");
43944401
tl(3, entiteListeNomSimpleVertxJson, " o = objects.get", entiteListeNomSimpleVertxJson, "(i);");
4395-
tl(3, "add", entiteVarCapitalise, "(new BigDecimal(o, MathContext.DECIMAL64).setScale(2, RoundingMode.HALF_UP));");
4402+
tl(3, "add", entiteVarCapitalise, "(new BigDecimal(o, staticMathContext", entiteVarCapitalise, "()));");
43964403
tl(2, "}");
43974404
tl(1, "}");
43984405
tl(1, "public ", classeNomSimple, " add", entiteVarCapitalise, "(String o) {");
43994406
tl(2, "if(NumberUtils.isParsable(o)) {");
4400-
tl(3, entiteNomSimpleCompletGenerique, " p = new BigDecimal(o, MathContext.DECIMAL64).setScale(2, RoundingMode.HALF_UP);");
4407+
tl(3, entiteNomSimpleCompletGenerique, " p = new BigDecimal(o, staticMathContext", entiteVarCapitalise, "());");
44014408
tl(3, "add", entiteVarCapitalise, "(p);");
44024409
tl(2, "}");
44034410
tl(2, "return (", classeNomSimple, ")this;");
@@ -5605,9 +5612,9 @@ else if(entiteNomSimple.equals("List") || entiteNomSimple.equals("ArrayList") ||
56055612
}
56065613
if(VAL_nomCanoniquePolygon.equals(entiteNomCanoniqueGenerique)) {
56075614
tl(4, "} else if(val instanceof JsonObject) {");
5608-
tl(5, "staticSet", entiteVarCapitalise, "(", langueConfig.getString(I18n.var_requeteSite), "_, val.toString()).stream().forEach(v -> add", entiteVarCapitalise, "(v));");
5615+
tl(5, "Optional.ofNullable(staticSet", entiteVarCapitalise, "(", langueConfig.getString(I18n.var_requeteSite), "_, val.toString())).ifPresent(u -> u.stream().forEach(v -> add", entiteVarCapitalise, "(v)));");
56095616
tl(4, "} else if(val instanceof String) {");
5610-
tl(5, "staticSet", entiteVarCapitalise, "(", langueConfig.getString(I18n.var_requeteSite), "_, (String)val).stream().forEach(v -> add", entiteVarCapitalise, "(v));");
5617+
tl(5, "Optional.ofNullable(staticSet", entiteVarCapitalise, "(", langueConfig.getString(I18n.var_requeteSite), "_, (String)val)).ifPresent(u -> u.stream().forEach(v -> add", entiteVarCapitalise, "(v)));");
56115618
} else {
56125619
tl(4, "} else if(val instanceof JsonArray) {");
56135620
tl(5, "((JsonArray)val).stream().forEach(v -> add", entiteVarCapitalise, "(staticSet", entiteVarCapitalise, "(", langueConfig.getString(I18n.var_requeteSite), "_, v.toString())));");

src/main/java/org/computate/frFR/java/IndexerClasse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4018,6 +4018,8 @@ else if(StringUtils.equalsAny(entiteNomCanonique, VAL_nomCanoniqueBigDecimal)) {
40184018
entiteNomSimpleVertxJson = "String";
40194019
entiteNomCanoniqueVertxJson = VAL_nomCanoniqueString;
40204020
classePartsGenAjouter(ClasseParts.initClasseParts(this, NumberUtils.class.getCanonicalName(), classeLangueNom), classeLangueNom);
4021+
indexerStockerSolr(entiteDoc, "entiteModeDArrondi", regexLangue(classeLangueNom, "^" + i18nGlobale.getString(I18n.var_ModeDArrondi), methodeCommentaire, "HALF_UP"));
4022+
indexerStockerSolr(entiteDoc, "entitePrecision", Integer.parseInt(regexLangue(classeLangueNom, "^" + i18nGlobale.getString(I18n.var_Precision), methodeCommentaire, "2")));
40214023
}
40224024
else if(StringUtils.equalsAny(entiteNomCanonique, VAL_nomCanoniqueDouble)) {
40234025
entiteNomSimpleVertxJson = "String";
@@ -4086,6 +4088,8 @@ else if(StringUtils.equalsAny(entiteNomCanoniqueGenerique, VAL_nomCanoniqueBigDe
40864088
entiteListeNomSimpleVertxJson = "String";
40874089
entiteListeNomCanoniqueVertxJson = VAL_nomCanoniqueString;
40884090
classePartsGenAjouter(ClasseParts.initClasseParts(this, NumberUtils.class.getCanonicalName(), classeLangueNom), classeLangueNom);
4091+
indexerStockerSolr(entiteDoc, "entiteModeDArrondi", regexLangue(classeLangueNom, "^" + i18nGlobale.getString(I18n.var_ModeDArrondi), methodeCommentaire, "HALF_UP"));
4092+
indexerStockerSolr(entiteDoc, "entitePrecision", Integer.parseInt(regexLangue(classeLangueNom, "^" + i18nGlobale.getString(I18n.var_Precision), methodeCommentaire, "2")));
40894093
}
40904094
else if(StringUtils.equalsAny(entiteNomCanoniqueGenerique, VAL_nomCanoniqueDouble)) {
40914095
entiteNomSimpleVertxJson = "JsonArray";

0 commit comments

Comments
 (0)