diff --git a/pom.xml b/pom.xml
index 72b7568..7665a55 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,6 +60,14 @@
maven-jar-plugin
3.0.2
+
+
+
+ true
+ org.fundacionjala.app.App
+
+
+
maven-install-plugin
diff --git a/src/main/java/org/fundacionjala/app/quizz/console/QuizUIHandler.java b/src/main/java/org/fundacionjala/app/quizz/console/QuizUIHandler.java
index b1b1384..b21769e 100644
--- a/src/main/java/org/fundacionjala/app/quizz/console/QuizUIHandler.java
+++ b/src/main/java/org/fundacionjala/app/quizz/console/QuizUIHandler.java
@@ -33,7 +33,10 @@ public static void showQuiz(QuizAnswers quizAnswers) {
System.out.println("=============================================");
for (Answer answer : quizAnswers.getAnswers()) {
- System.out.println(answer);
+ System.out.println("Answer title: " + answer.getQuestion().getTitle());
+ System.out.println("Question Code: " + answer.getQuestion().getType().getCode());
+ System.out.println("Question Name: " + answer.getQuestion().getType().getName());
+ System.out.println(answer.toString());
}
System.out.println("=============================================");
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/Answer.java b/src/main/java/org/fundacionjala/app/quizz/model/Answer.java
index 334b5f6..ef5cda0 100644
--- a/src/main/java/org/fundacionjala/app/quizz/model/Answer.java
+++ b/src/main/java/org/fundacionjala/app/quizz/model/Answer.java
@@ -12,6 +12,10 @@ public Answer(Question question, Set answers) {
this.answers = answers;
}
+ public Question getQuestion(){
+ return question;
+ }
+
@Override
public String toString() {
return question.getTitle() + ": " + Arrays.toString(answers.toArray());
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/QuestionType.java b/src/main/java/org/fundacionjala/app/quizz/model/QuestionType.java
index 1e400d1..464ee91 100644
--- a/src/main/java/org/fundacionjala/app/quizz/model/QuestionType.java
+++ b/src/main/java/org/fundacionjala/app/quizz/model/QuestionType.java
@@ -5,11 +5,13 @@
import org.fundacionjala.app.quizz.model.validator.ValidatorType;
import org.fundacionjala.app.quizz.model.configuration.DateConfiguration;
import org.fundacionjala.app.quizz.model.configuration.PickOneConfiguration;
+import org.fundacionjala.app.quizz.model.configuration.NumericConfiguration;
public enum QuestionType {
TEXT(1, "Text", new TextConfiguration()),
DATE(2, "Date", new DateConfiguration()),
- PICK_ONE(3, "Pick One", new PickOneConfiguration());
+ PICK_ONE(3, "Pick One", new PickOneConfiguration()),
+ NUMERIC(4, "Numeric", new NumericConfiguration());
private final int code;
private final String displayName;
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/configuration/NumericConfiguration.java b/src/main/java/org/fundacionjala/app/quizz/model/configuration/NumericConfiguration.java
new file mode 100644
index 0000000..0185056
--- /dev/null
+++ b/src/main/java/org/fundacionjala/app/quizz/model/configuration/NumericConfiguration.java
@@ -0,0 +1,10 @@
+package org.fundacionjala.app.quizz.model.configuration;
+
+import org.fundacionjala.app.quizz.model.validator.ValidatorType;
+
+public class NumericConfiguration extends QuestionConfiguration{
+
+ public NumericConfiguration() {
+ super(false, ValidatorType.REQUIRED, ValidatorType.MIN, ValidatorType.MAX);
+ }
+}
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/configuration/TextConfiguration.java b/src/main/java/org/fundacionjala/app/quizz/model/configuration/TextConfiguration.java
index ed1db26..39cb5c4 100644
--- a/src/main/java/org/fundacionjala/app/quizz/model/configuration/TextConfiguration.java
+++ b/src/main/java/org/fundacionjala/app/quizz/model/configuration/TextConfiguration.java
@@ -4,6 +4,6 @@
public class TextConfiguration extends QuestionConfiguration {
public TextConfiguration() {
- super(false, ValidatorType.REQUIRED, ValidatorType.MIN_LENGTH);
+ super(false, ValidatorType.REQUIRED, ValidatorType.MIN_LENGTH, ValidatorType.MAX_LENGTH, ValidatorType.UPPERCASE);
}
}
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/validator/MaxLengthValidator.java b/src/main/java/org/fundacionjala/app/quizz/model/validator/MaxLengthValidator.java
new file mode 100644
index 0000000..696d6cc
--- /dev/null
+++ b/src/main/java/org/fundacionjala/app/quizz/model/validator/MaxLengthValidator.java
@@ -0,0 +1,23 @@
+package org.fundacionjala.app.quizz.model.validator;
+
+import java.util.List;
+
+public class MaxLengthValidator implements Validator {
+
+ private static final String ERROR_MESSAGE = "The value length must be less than ";
+
+ @Override
+ public void validate(String value, String conditionValueString, List errors) {
+ try {
+ int conditionValue = IntegerParser.parse(conditionValueString);
+
+ if (value.length() > conditionValue) {
+ errors.add(ERROR_MESSAGE + conditionValue);
+ }
+ } catch (NumberFormatException exception) {
+ exception.printStackTrace();
+ errors.add(IntegerParser.ERROR_MESSAGE_INVALID_NUMBER);
+ }
+
+ }
+}
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/validator/MaxValidator.java b/src/main/java/org/fundacionjala/app/quizz/model/validator/MaxValidator.java
new file mode 100644
index 0000000..5308c31
--- /dev/null
+++ b/src/main/java/org/fundacionjala/app/quizz/model/validator/MaxValidator.java
@@ -0,0 +1,23 @@
+package org.fundacionjala.app.quizz.model.validator;
+
+import java.util.List;
+
+public class MaxValidator implements Validator {
+
+ private static final String ERROR_MESSAGE_SMALLER_THAN = "The value must be smaller than ";
+
+ @Override
+ public void validate(String valueString, String conditionValueString, List errors) {
+ try {
+ int value = IntegerParser.parse(valueString);
+ int conditionValue = IntegerParser.parse(conditionValueString);
+
+ if (value > conditionValue) {
+ errors.add(ERROR_MESSAGE_SMALLER_THAN + conditionValue);
+ }
+ } catch (NumberFormatException exception) {
+ exception.printStackTrace();
+ errors.add(IntegerParser.ERROR_MESSAGE_INVALID_NUMBER);
+ }
+ }
+}
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/validator/MinLengthValidator.java b/src/main/java/org/fundacionjala/app/quizz/model/validator/MinLengthValidator.java
index 2e7ed99..3deb3de 100644
--- a/src/main/java/org/fundacionjala/app/quizz/model/validator/MinLengthValidator.java
+++ b/src/main/java/org/fundacionjala/app/quizz/model/validator/MinLengthValidator.java
@@ -4,7 +4,7 @@
public class MinLengthValidator implements Validator {
- private static final String ERROR_MESSAGE = "The value length must be less than ";
+ private static final String ERROR_MESSAGE = "The value length must be greater than ";
@Override
public void validate(String value, String conditionValueString, List errors) {
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/validator/UpperCaseValidator.java b/src/main/java/org/fundacionjala/app/quizz/model/validator/UpperCaseValidator.java
new file mode 100644
index 0000000..9af1c2f
--- /dev/null
+++ b/src/main/java/org/fundacionjala/app/quizz/model/validator/UpperCaseValidator.java
@@ -0,0 +1,15 @@
+package org.fundacionjala.app.quizz.model.validator;
+
+import java.util.List;
+
+public class UpperCaseValidator implements Validator {
+
+ private static final String ERROR_MESSAGE = "The value text is only uppercase";
+
+ @Override
+ public void validate(String value, String conditionValueString, List errors) {
+ if (!(value.toUpperCase().equals(value))) {
+ errors.add(ERROR_MESSAGE);
+ }
+ }
+}
diff --git a/src/main/java/org/fundacionjala/app/quizz/model/validator/ValidatorType.java b/src/main/java/org/fundacionjala/app/quizz/model/validator/ValidatorType.java
index 026d924..fb49ec8 100644
--- a/src/main/java/org/fundacionjala/app/quizz/model/validator/ValidatorType.java
+++ b/src/main/java/org/fundacionjala/app/quizz/model/validator/ValidatorType.java
@@ -4,7 +4,10 @@ public enum ValidatorType {
REQUIRED(1, "Required", new RequiredValidator()),
DATE(2, "Date", new DateValidator()),
MIN(3, "Min", new MinValidator()),
- MIN_LENGTH(4, "Min Length", new MinLengthValidator());
+ MIN_LENGTH(4, "Min Length", new MinLengthValidator()),
+ MAX(5, "Max", new MaxValidator()),
+ MAX_LENGTH(6, "Max Length", new MaxLengthValidator()),
+ UPPERCASE(7, "Uppercase", new UpperCaseValidator());
private final int code;
private final String displayName;
diff --git a/src/test/java/org/fundacionjala/app/quizz/model/validator/ValidatorIT.java b/src/test/java/org/fundacionjala/app/quizz/model/validator/ValidatorIT.java
index 4ff023c..169585b 100644
--- a/src/test/java/org/fundacionjala/app/quizz/model/validator/ValidatorIT.java
+++ b/src/test/java/org/fundacionjala/app/quizz/model/validator/ValidatorIT.java
@@ -18,4 +18,14 @@ public void testDateValidator() {
Assert.assertEquals(DateValidator.class, dateValidator.getClass());
Assert.assertTrue(errors.isEmpty());
}
+
+ @Test
+ public void testTextValidator() {
+ List errors = new ArrayList<>();
+ Validator validator = ValidatorType.UPPERCASE.getValidator();
+
+ validator.validate("HOLA", null, errors);
+ Assert.assertEquals(UpperCaseValidator.class, validator.getClass());
+ Assert.assertTrue(errors.isEmpty());
+ }
}