Commit 91aa41b3 authored by Kevin Robert's avatar Kevin Robert
Browse files

UNOTOPLYS-55 : Ajout d'un log lorsque l'utilisateur n'a pas renseigné tous les...

UNOTOPLYS-55 : Ajout d'un log lorsque l'utilisateur n'a pas renseigné tous les champs required. Modification des logs dans Expression pour ne pas log 2 fois la même erreur.
parent 681bb0c0
......@@ -205,28 +205,17 @@ public class Expression implements IExpression {
@Override
public <T> T evaluate(final String expression, Class<T> classz) {
try {
return parse(expression).getValue(context, classz);
return parser.parseExpression(expression).getValue(context, classz);
} catch (ParseException e) {
LOGGER.error("Erreur à l'analyse syntaxique de l'expression {}", expression, e);
} catch (ExpressionException e) {
LOGGER.error("Erreur à l'évaluation de l'expression {}", expression, e);
LOGGER.info("Variables : {}", variables);
LOGGER.info("Answers : {}", this.answers);
LOGGER.info("Scores : {}", this.scores);
return null;
}
}
/**
* Analyse syntaxique de l'expression.
* @param expression une expression Spring EL
* @return
*/
protected org.springframework.expression.Expression parse(final String expression) {
try {
return parser.parseExpression(expression);
} catch (ParseException e) {
LOGGER.error("Erreur à l'analyse syntaxique de l'expression {}", expression, e);
throw e;
}
return null;
}
@Override
......
......@@ -8,10 +8,10 @@ import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.servlet.http.HttpSession;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
......@@ -45,6 +45,8 @@ import io.undertow.servlet.spec.HttpSessionImpl;
@Transactional
public class FormApiDelegateImpl implements FormApiDelegate {
private static final Logger LOGGER = LoggerFactory.getLogger(FormApiDelegateImpl.class);
private final NativeWebRequest request;
private FormRepository formRepository;
......@@ -162,7 +164,11 @@ public class FormApiDelegateImpl implements FormApiDelegate {
.collect(Collectors.toSet());
// @formatter:on
// toutes les questions obligatoires sont répondues si l'ensemble des questions répondues est présent dans l'ensemble des questions obligatoires
return questionsAnswers.containsAll(requiredQuestions);
boolean allRequiredAnswer = questionsAnswers.containsAll(requiredQuestions);
if (!allRequiredAnswer) {
LOGGER.info("L'utilisateur '{}' n'a pas renseigné toutes les questions obligatoires pour l'écran '{}'.", request.getSessionId(), screen.getReference());
}
return allRequiredAnswer;
}
@Override
......@@ -197,6 +203,7 @@ public class FormApiDelegateImpl implements FormApiDelegate {
@Override
public ResponseEntity<ScreenAPI> restart(final String referenceForm) {
((HttpSessionImpl) request.getSessionMutex()).invalidate();
// TODO : Ajout une trace de l'action lors de la validation de la PR UNOTOPLYS-44.
return initialize(referenceForm);
}
......@@ -336,7 +343,7 @@ public class FormApiDelegateImpl implements FormApiDelegate {
final List<Screen> screens = answers.stream().map(Answer::getScreen).collect(Collectors.toList());
// si l'utilisateur est revenu sur ses réponses, la position est celle du screen dans les réponses
int currentScreenAnswerIndex = screens.indexOf(screen);
return currentScreenAnswerIndex >= 0 ? currentScreenAnswerIndex + 1: answers.size();
return currentScreenAnswerIndex >= 0 ? currentScreenAnswerIndex + 1 : answers.size();
}
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment