Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 9f2ad3db by tchemit at 2019-07-03T15:50:34Z [REFERENTIEL] La validation sur les Objets flottant matériaux ne fonctionnent plus :( - Closes #1339 - - - - - 2 changed files: - dto/src/main/java/fr/ird/observe/dto/referential/seine/ObjectMaterialDto.java - services-local/src/test/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocalTest.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; + } } ===================================== services-local/src/test/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocalTest.java ===================================== @@ -183,7 +183,7 @@ public class ValidateServiceLocalTest extends ServiceLocalTestSupport { assertValidateResult(result, GearCaracteristicTypeDto.class, 2); assertValidateResult(result, ObjectOperationDto.class, 2); assertValidateResult(result, SpeciesListDto.class, 2); - assertValidateResult(result, ObjectMaterialDto.class, 10); + assertValidateResult(result, ObjectMaterialDto.class, 9); assertValidateResult(result, TransmittingBuoyOperationDto.class, 3); assertValidateResult(result, HookPositionDto.class, 1); assertValidateResult(result, FpaZoneDto.class, 5); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/9f2ad3dbea960391b123dbbc6588... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/9f2ad3dbea960391b123dbbc6588... You're receiving this email because of your account on gitlab.com.