Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: db31fe17 by tchemit at 2019-07-03T15:39:45Z [REFERENTIEL] La validation sur les Objets flottant matériaux ne fonctionnent plus :( - Closes #1339 - - - - - 1 changed file: - dto/src/main/java/fr/ird/observe/dto/referential/seine/ObjectMaterialDto.java Changes: ===================================== dto/src/main/java/fr/ird/observe/dto/referential/seine/ObjectMaterialDto.java ===================================== @@ -22,9 +22,13 @@ package fr.ird.observe.dto.referential.seine; * #L% */ -import fr.ird.observe.dto.referential.FormulaHelper; import org.apache.commons.lang3.StringUtils; +import javax.script.Bindings; +import javax.script.ScriptContext; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; + public class ObjectMaterialDto extends GeneratedObjectMaterialDto { private static final long serialVersionUID = 1L; @@ -48,7 +52,15 @@ public class ObjectMaterialDto extends GeneratedObjectMaterialDto { @Override public void setValidation(String validation) { super.setValidation(validation); - boolean result = FormulaHelper.validateObjectMaterialValidation(validation, 10); + Object value = "10"; + if (isBoolean()) { + value = Boolean.TRUE; + } else if (isInteger()) { + value = 10; + }else if (isFloat()) { + value = 10f; + } + boolean result = validateObjectMaterialValidation(validation, value); setValidationValid(result); } @@ -64,4 +76,34 @@ public class ObjectMaterialDto extends GeneratedObjectMaterialDto { return parent != null && parent.getParentId() != null; } + /** moteur d'évaluation d'expression */ + private static ScriptEngine scriptEngine; + + + private static ScriptEngine getScriptEngine() { + if (scriptEngine == null) { + ScriptEngineManager factory = new ScriptEngineManager(); + + scriptEngine = factory.getEngineByExtension("js"); + } + return scriptEngine; + } + + public static boolean validateObjectMaterialValidation(String relation, Object value) { + if (!StringUtils.isEmpty(relation)) { + + ScriptEngine engine = getScriptEngine(); + Bindings bindings = engine.createBindings(); + bindings.put("x", value); + + try { + engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE); + Boolean o = (Boolean) engine.eval(relation); + return true; + } catch (Exception e) { + return false; + } + } + return false; + } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/db31fe17f54df0f5c7678242cdaa... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/db31fe17f54df0f5c7678242cdaa... You're receiving this email because of your account on gitlab.com.