From a14e6eb1b871fede7596d579b3a16a64d908b400 Mon Sep 17 00:00:00 2001 From: jorge Date: Mon, 1 Apr 2024 20:59:51 +0200 Subject: [PATCH 01/21] Added the first version of the entity randomizer --- .../entityGenerator/EntityGenerator.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 questionGenerator/src/main/java/questionGenerator/entityGenerator/EntityGenerator.java diff --git a/questionGenerator/src/main/java/questionGenerator/entityGenerator/EntityGenerator.java b/questionGenerator/src/main/java/questionGenerator/entityGenerator/EntityGenerator.java new file mode 100644 index 00000000..b139a2c6 --- /dev/null +++ b/questionGenerator/src/main/java/questionGenerator/entityGenerator/EntityGenerator.java @@ -0,0 +1,74 @@ +package main.java.questionGenerator.entityGenerator; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import main.java.questionGenerator.question.QuestionType; + +public class EntityGenerator { + + private static final String PRE_URL = "https://www.wikidata.org/w/api.php?action=query&format=json&" + + "list=backlinks&formatversion=2&"; + + private static String property = ""; + private static final String PROPERTY_URL = "bltitle=Property%3A"; + + private static final String POST_URL = "&blnamespace=0&"; + + private static final String LIMIT = "bllimit="; + + public static List getEntities(QuestionType type, int size) throws IOException{ + propertyFactory(type); + URL url = new URL(PRE_URL+PROPERTY_URL+property+POST_URL+LIMIT+size); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer content = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + in.close(); + + con.disconnect(); + + String json = content.toString(); + List result = extractEntities(json); + + return result; + } + + private static void propertyFactory(QuestionType type) { + switch (type) { + case CAPITAL: + property = "36"; + break; + case LANGUAGE: + property = "37"; + break; + case POPULATION: + property = "1082"; + break; + case SIZE: + property = "2046"; + break; + } + } + + private static List extractEntities(String json){ + List result = new ArrayList<>(); + String[] entities = json.split("\"title\":"); + for(int i=1; i Date: Mon, 1 Apr 2024 21:42:28 +0200 Subject: [PATCH 02/21] Added the new logic to allow random questions --- .vscode/launch.json | 7 +++ .../src/main/java/MainRandomizer.java | 19 ++++++ .../questionGenerator/QuestionGenerator.java | 59 ++++++++++++++++++- .../entityGenerator/EntityGenerator.java | 2 +- 4 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 questionGenerator/src/main/java/MainRandomizer.java diff --git a/.vscode/launch.json b/.vscode/launch.json index 2f30dd50..4796de2e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,5 +1,12 @@ { "configurations": [ + { + "type": "java", + "name": "MainRandomizer", + "request": "launch", + "mainClass": "main.java.MainRandomizer", + "projectName": "questionGenerator" + }, { "type": "java", "name": "Main", diff --git a/questionGenerator/src/main/java/MainRandomizer.java b/questionGenerator/src/main/java/MainRandomizer.java new file mode 100644 index 00000000..4331167d --- /dev/null +++ b/questionGenerator/src/main/java/MainRandomizer.java @@ -0,0 +1,19 @@ +package main.java; + +import java.util.List; + +import main.java.questionGenerator.QuestionGenerator; +import main.java.questionGenerator.question.Question; +import main.java.questionGenerator.question.QuestionType; + +public class MainRandomizer { + + public static void main(String[] args) { + QuestionGenerator qg = new QuestionGenerator("en"); + List qs = qg.generateQuestions(QuestionType.CAPITAL, 3); + for(Question q : qs) { + System.out.println(q.getJSON().toString()); + } + } + +} diff --git a/questionGenerator/src/main/java/questionGenerator/QuestionGenerator.java b/questionGenerator/src/main/java/questionGenerator/QuestionGenerator.java index d386f698..fac20e6a 100644 --- a/questionGenerator/src/main/java/questionGenerator/QuestionGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/QuestionGenerator.java @@ -1,5 +1,11 @@ package main.java.questionGenerator; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import main.java.questionGenerator.entityGenerator.EntityGenerator; import main.java.questionGenerator.generator.AbstractGenerator; import main.java.questionGenerator.generator.specificGenerators.CapitalGenerator; import main.java.questionGenerator.generator.specificGenerators.LanguageGenerator; @@ -8,8 +14,6 @@ import main.java.questionGenerator.question.Question; import main.java.questionGenerator.question.QuestionType; - - public class QuestionGenerator { private AbstractGenerator generator; @@ -29,7 +33,56 @@ public Question generateQuestion(QuestionType type) { generatorFactory(type); generator.setLocalization(languageCode); return generator.generate(id); - } + } + + public List generateQuestions(QuestionType type, int amount){ + setGenerator(type); + generator.setLocalization(languageCode); + List questions = new ArrayList<>(); + List entites = new ArrayList<>(); + try { + entites = EntityGenerator.getEntities(type, 100); + } catch (IOException e) { + e.printStackTrace(); + } + Random rnd = new Random(); + List chosen = new ArrayList<>(); + int size = entites.size(); + int number = 0; + while(number Date: Tue, 2 Apr 2024 15:14:07 +0200 Subject: [PATCH 03/21] Modified th hierarchy so that the default one is the correct one, and the mocks are properly labeled --- .vscode/launch.json | 7 + questionGenerator/src/main/java/Main.java | 51 +++---- questionGenerator/src/main/java/MainMock.java | 44 ++++++ .../src/main/java/MainRandomizer.java | 19 --- .../questionGenerator/QuestionGenerator.java | 56 +------- .../QuestionGeneratorMock.java | 127 ++++++++++++++++++ .../QuestionGeneratorTests.java | 10 +- 7 files changed, 207 insertions(+), 107 deletions(-) create mode 100644 questionGenerator/src/main/java/MainMock.java delete mode 100644 questionGenerator/src/main/java/MainRandomizer.java create mode 100644 questionGenerator/src/main/java/questionGenerator/QuestionGeneratorMock.java diff --git a/.vscode/launch.json b/.vscode/launch.json index 4796de2e..ce33cad0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,5 +1,12 @@ { "configurations": [ + { + "type": "java", + "name": "MainMock", + "request": "launch", + "mainClass": "main.java.MainMock", + "projectName": "questionGenerator" + }, { "type": "java", "name": "MainRandomizer", diff --git a/questionGenerator/src/main/java/Main.java b/questionGenerator/src/main/java/Main.java index 45e9bc0b..d9b23f50 100644 --- a/questionGenerator/src/main/java/Main.java +++ b/questionGenerator/src/main/java/Main.java @@ -1,43 +1,36 @@ package main.java; +import java.util.List; + import main.java.questionGenerator.QuestionGenerator; import main.java.questionGenerator.question.Question; import main.java.questionGenerator.question.QuestionType; -import main.java.questionGenerator.repository.QuestionRepository; public class Main { - private static QuestionType[] types = {QuestionType.POPULATION, QuestionType.CAPITAL, QuestionType.SIZE, - QuestionType.LANGUAGE}; - - public static void main(String[] args) { - System.out.println("Ahora en Espa�ol"); - QuestionGenerator qg = new QuestionGenerator("es"); - for(QuestionType t : types) { - run(qg, t); - System.out.println(); + public static void main(String[] args) { + QuestionGenerator qg = new QuestionGenerator("en"); + List qs = qg.generateQuestions(QuestionType.CAPITAL, 3); + for(Question q : qs) { + System.out.println(q.getJSON().toString()); } - System.out.println("Now English"); - qg = new QuestionGenerator("en"); - for(QuestionType t : types) { - run(qg, t); - System.out.println(); + System.out.println(); + + qs = qg.generateQuestions(QuestionType.LANGUAGE, 3); + for(Question q : qs) { + System.out.println(q.getJSON().toString()); } - System.out.println("Now in english but with bad language code"); - qg = new QuestionGenerator("ep"); - for(QuestionType t : types) { - run(qg, t); - System.out.println(); + System.out.println(); + + qs = qg.generateQuestions(QuestionType.POPULATION, 3); + for(Question q : qs) { + System.out.println(q.getJSON().toString()); } - - } - - private static void run(QuestionGenerator qg, QuestionType type) { - for(int i=0; i<3; i++) { - Question question = qg.generateQuestion(type); - question.setNumber(i); - QuestionRepository.getInstance().insertOne(question.getJSON().toString()); - System.out.println(question.getJSON().toString()); + System.out.println(); + + qs = qg.generateQuestions(QuestionType.SIZE, 3); + for(Question q : qs) { + System.out.println(q.getJSON().toString()); } } diff --git a/questionGenerator/src/main/java/MainMock.java b/questionGenerator/src/main/java/MainMock.java new file mode 100644 index 00000000..aa424aa0 --- /dev/null +++ b/questionGenerator/src/main/java/MainMock.java @@ -0,0 +1,44 @@ +package main.java; + +import main.java.questionGenerator.QuestionGeneratorMock; +import main.java.questionGenerator.question.Question; +import main.java.questionGenerator.question.QuestionType; +import main.java.questionGenerator.repository.QuestionRepository; + +public class MainMock { + + private static QuestionType[] types = {QuestionType.POPULATION, QuestionType.CAPITAL, QuestionType.SIZE, + QuestionType.LANGUAGE}; + + public static void main(String[] args) { + System.out.println("Ahora en Espa�ol"); + QuestionGeneratorMock qg = new QuestionGeneratorMock("es"); + for(QuestionType t : types) { + run(qg, t); + System.out.println(); + } + System.out.println("Now English"); + qg = new QuestionGeneratorMock("en"); + for(QuestionType t : types) { + run(qg, t); + System.out.println(); + } + System.out.println("Now in english but with bad language code"); + qg = new QuestionGeneratorMock("ep"); + for(QuestionType t : types) { + run(qg, t); + System.out.println(); + } + + } + + private static void run(QuestionGeneratorMock qg, QuestionType type) { + for(int i=0; i<3; i++) { + Question question = qg.generateQuestion(type); + question.setNumber(i); + //QuestionRepository.getInstance().insertOne(question.getJSON().toString()); + System.out.println(question.getJSON().toString()); + } + } + +} diff --git a/questionGenerator/src/main/java/MainRandomizer.java b/questionGenerator/src/main/java/MainRandomizer.java deleted file mode 100644 index 4331167d..00000000 --- a/questionGenerator/src/main/java/MainRandomizer.java +++ /dev/null @@ -1,19 +0,0 @@ -package main.java; - -import java.util.List; - -import main.java.questionGenerator.QuestionGenerator; -import main.java.questionGenerator.question.Question; -import main.java.questionGenerator.question.QuestionType; - -public class MainRandomizer { - - public static void main(String[] args) { - QuestionGenerator qg = new QuestionGenerator("en"); - List qs = qg.generateQuestions(QuestionType.CAPITAL, 3); - for(Question q : qs) { - System.out.println(q.getJSON().toString()); - } - } - -} diff --git a/questionGenerator/src/main/java/questionGenerator/QuestionGenerator.java b/questionGenerator/src/main/java/questionGenerator/QuestionGenerator.java index fac20e6a..92879cbe 100644 --- a/questionGenerator/src/main/java/questionGenerator/QuestionGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/QuestionGenerator.java @@ -15,26 +15,14 @@ import main.java.questionGenerator.question.QuestionType; public class QuestionGenerator { - - private AbstractGenerator generator; - private String id; + + private AbstractGenerator generator; private String languageCode; - private static String[] POP_ENTITIES = {"Q14317", "Q12273", "Q14649"}; - private static String[] CAP_ENTITIES = {"Q3934", "Q29", "Q43"}; - private static String[] SIZE_ENTITIES = {"Q29", "Q12273", "Q3934"}; - private static String[] LANG_ENTITIES = {"Q29", "Q43", "Q3934"}; - public QuestionGenerator(String languageCode){ this.languageCode = languageCode; } - public Question generateQuestion(QuestionType type) { - generatorFactory(type); - generator.setLocalization(languageCode); - return generator.generate(id); - } - public List generateQuestions(QuestionType type, int amount){ setGenerator(type); generator.setLocalization(languageCode); @@ -63,65 +51,25 @@ public List generateQuestions(QuestionType type, int amount){ } private void setGenerator(QuestionType type) { - switch (type) { - case POPULATION: { - generator = new PopulationGenerator(); - break; - } - case CAPITAL: { - generator = new CapitalGenerator(); - break; - - } - case SIZE: { - generator = new SizeGenerator(); - break; - } - case LANGUAGE: { - generator = new LanguageGenerator(); - break; - } - } - } - - private void generatorFactory(QuestionType type) { switch (type) { case POPULATION: { - id = POP_ENTITIES[0]; generator = new PopulationGenerator(); - moveUp(POP_ENTITIES); - POP_ENTITIES[POP_ENTITIES.length-1] = id; break; } case CAPITAL: { - id = CAP_ENTITIES[0]; generator = new CapitalGenerator(); - moveUp(CAP_ENTITIES); - CAP_ENTITIES[CAP_ENTITIES.length-1] = id; break; } case SIZE: { - id = SIZE_ENTITIES[0]; generator = new SizeGenerator(); - moveUp(SIZE_ENTITIES); - SIZE_ENTITIES[SIZE_ENTITIES.length-1] = id; break; } case LANGUAGE: { - id = LANG_ENTITIES[0]; generator = new LanguageGenerator(); - moveUp(LANG_ENTITIES); - LANG_ENTITIES[LANG_ENTITIES.length-1] = id; break; } } } - - private void moveUp(String[] list) { - for(int i=0; i generateQuestions(QuestionType type, int amount){ + setGenerator(type); + generator.setLocalization(languageCode); + List questions = new ArrayList<>(); + List entites = new ArrayList<>(); + try { + entites = EntityGenerator.getEntities(type, 100); + } catch (IOException e) { + e.printStackTrace(); + } + Random rnd = new Random(); + List chosen = new ArrayList<>(); + int size = entites.size(); + int number = 0; + while(number Date: Tue, 2 Apr 2024 15:18:41 +0200 Subject: [PATCH 04/21] Commented unsused code in the main mock --- questionGenerator/src/main/java/MainMock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/questionGenerator/src/main/java/MainMock.java b/questionGenerator/src/main/java/MainMock.java index aa424aa0..e175f2e1 100644 --- a/questionGenerator/src/main/java/MainMock.java +++ b/questionGenerator/src/main/java/MainMock.java @@ -3,7 +3,7 @@ import main.java.questionGenerator.QuestionGeneratorMock; import main.java.questionGenerator.question.Question; import main.java.questionGenerator.question.QuestionType; -import main.java.questionGenerator.repository.QuestionRepository; +//import main.java.questionGenerator.repository.QuestionRepository; public class MainMock { From 335f4939f49cd0b936382307d44b65bda1dafb2b Mon Sep 17 00:00:00 2001 From: jorge Date: Tue, 2 Apr 2024 15:22:54 +0200 Subject: [PATCH 05/21] Fixed the MainMock.java class --- questionGenerator/src/main/java/MainMock.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/questionGenerator/src/main/java/MainMock.java b/questionGenerator/src/main/java/MainMock.java index e175f2e1..208458da 100644 --- a/questionGenerator/src/main/java/MainMock.java +++ b/questionGenerator/src/main/java/MainMock.java @@ -1,9 +1,12 @@ package main.java; +import java.util.ArrayList; +import java.util.List; + import main.java.questionGenerator.QuestionGeneratorMock; import main.java.questionGenerator.question.Question; import main.java.questionGenerator.question.QuestionType; -//import main.java.questionGenerator.repository.QuestionRepository; +import main.java.questionGenerator.repository.QuestionRepository; public class MainMock { @@ -33,12 +36,17 @@ public static void main(String[] args) { } private static void run(QuestionGeneratorMock qg, QuestionType type) { + List questionJSONList = new ArrayList<>(); + + //Populate JSON list here for(int i=0; i<3; i++) { Question question = qg.generateQuestion(type); question.setNumber(i); - //QuestionRepository.getInstance().insertOne(question.getJSON().toString()); + questionJSONList.add(question.getJSON().toString()); System.out.println(question.getJSON().toString()); } + + QuestionRepository.getInstance().insert(questionJSONList); } } From 5e8dcaac9ce97e2747e1390748335eceff80f8f3 Mon Sep 17 00:00:00 2001 From: jorge Date: Tue, 2 Apr 2024 15:32:25 +0200 Subject: [PATCH 06/21] Updated the main so now it actually saves the questions --- questionGenerator/src/main/java/Main.java | 32 +++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/questionGenerator/src/main/java/Main.java b/questionGenerator/src/main/java/Main.java index f6da56f4..44500083 100644 --- a/questionGenerator/src/main/java/Main.java +++ b/questionGenerator/src/main/java/Main.java @@ -5,32 +5,32 @@ import main.java.questionGenerator.QuestionGenerator; import main.java.questionGenerator.question.Question; import main.java.questionGenerator.question.QuestionType; +import main.java.questionGenerator.repository.QuestionRepository; public class Main { public static void main(String[] args) { QuestionGenerator qg = new QuestionGenerator("en"); - List qs = qg.generateQuestions(QuestionType.CAPITAL, 3); - for(Question q : qs) { - System.out.println(q.getJSON().toString()); - } + + run(qg, QuestionType.CAPITAL, 3); System.out.println(); - qs = qg.generateQuestions(QuestionType.LANGUAGE, 3); - for(Question q : qs) { - System.out.println(q.getJSON().toString()); - } + run(qg, QuestionType.LANGUAGE, 3); System.out.println(); - qs = qg.generateQuestions(QuestionType.POPULATION, 3); - for(Question q : qs) { - System.out.println(q.getJSON().toString()); - } + run(qg, QuestionType.POPULATION, 3); System.out.println(); - qs = qg.generateQuestions(QuestionType.SIZE, 3); - for(Question q : qs) { - System.out.println(q.getJSON().toString()); - } + run(qg, QuestionType.SIZE, 3); + } + + private static void run(QuestionGenerator qg, QuestionType type, int numberOfQuestions){ + List questions = qg.generateQuestions(type, numberOfQuestions); + for(int i=0; i q.getJSON().toString()).toList()); } } From 1292f73787476db8b577f40b43fdef569ca7a3c5 Mon Sep 17 00:00:00 2001 From: jorge Date: Tue, 2 Apr 2024 16:30:59 +0200 Subject: [PATCH 07/21] Now it ensures that the language chosen is the correct one --- .../specificGenerators/LanguageGenerator.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java index 07bb70b0..e0b70ca9 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java @@ -1,5 +1,12 @@ package main.java.questionGenerator.generator.specificGenerators; +import java.util.List; +import java.util.Map; + +import org.wikidata.wdtk.datamodel.interfaces.Snak; +import org.wikidata.wdtk.datamodel.interfaces.SnakGroup; +import org.wikidata.wdtk.datamodel.interfaces.Statement; + import main.java.questionGenerator.generator.RightAnswerIsEntity; import main.java.questionGenerator.question.QuestionType; @@ -17,4 +24,26 @@ protected String getQuestion(String name) { return String.format(q, name); } + @Override + protected String getRightAnswer(Map> claims) { + for(Statement st : claims.get(super.getPropertyId())) { + boolean valid = true; + for(SnakGroup sg : st.getQualifiers()) { + for(Snak s : sg.getSnaks()) { + String value = getRightAnswerEntity(s.getPropertyId().toString()); + if(value.equals("P518")) { + valid = false; + break; + } + } + if(!valid) + break; + } + if(valid) { + return processRightAnswer(st); + } + } + return null; + } + } From 457e2cc789a99d02c78d7fa67bfbdf572eac6d2c Mon Sep 17 00:00:00 2001 From: jorge Date: Tue, 2 Apr 2024 16:39:51 +0200 Subject: [PATCH 08/21] Placed common code into abstract classes --- .../generator/RightAnswerIsEntity.java | 34 ++++++++++++++----- .../specificGenerators/CapitalGenerator.java | 32 ++--------------- .../specificGenerators/LanguageGenerator.java | 32 ++--------------- 3 files changed, 30 insertions(+), 68 deletions(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java index a65130b9..de5962ab 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java @@ -7,6 +7,8 @@ import java.util.Random; import org.wikidata.wdtk.datamodel.implementation.ItemDocumentImpl; +import org.wikidata.wdtk.datamodel.interfaces.Snak; +import org.wikidata.wdtk.datamodel.interfaces.SnakGroup; import org.wikidata.wdtk.datamodel.interfaces.Statement; import org.wikidata.wdtk.wikibaseapi.apierrors.MediaWikiApiErrorException; @@ -14,21 +16,37 @@ public abstract class RightAnswerIsEntity extends AbstractGenerator { - public RightAnswerIsEntity(String propertyId, QuestionType type) { + private final String PROPERTY_TO_CHECK; + + public RightAnswerIsEntity(String propertyId, QuestionType type, String propertyToCheck) { super(propertyId, type); + this.PROPERTY_TO_CHECK = propertyToCheck; } - /** - * This method acts as a wrapper because in some cases this is enough, but not in all of them, - * so the rest are in charge of overriding it and modifying what they need - */ @Override protected String getRightAnswer(Map> claims) { - return processRightAnswer(claims.get(super.getPropertyId()).get(0)); + for(Statement st : claims.get(super.getPropertyId())) { + boolean valid = true; + for(SnakGroup sg : st.getQualifiers()) { + for(Snak s : sg.getSnaks()) { + String value = getIdFromLink(s.getPropertyId().toString()); + if(value.equals(PROPERTY_TO_CHECK)) { + valid = false; + break; + } + } + if(!valid) + break; + } + if(valid) { + return processRightAnswer(st); + } + } + return null; } protected String processRightAnswer(Statement st) { - String entity = getRightAnswerEntity(st.getValue().toString()); + String entity = getIdFromLink(st.getValue().toString()); String answer = ""; try { ItemDocumentImpl idi = getAlreadyProcessedEntity(entity); @@ -65,7 +83,7 @@ protected String getAnswer(String id){ return getRightAnswer(idi.getJsonClaims()); } - protected String getRightAnswerEntity(String url) { + protected String getIdFromLink(String url) { String[] split1 = url.split(" "); String[] split2 = split1[0].split("/"); return split2[split2.length-1]; diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java index 59f72953..6aad2284 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java @@ -1,21 +1,15 @@ package main.java.questionGenerator.generator.specificGenerators; -import java.util.List; -import java.util.Map; - -import org.wikidata.wdtk.datamodel.interfaces.Snak; -import org.wikidata.wdtk.datamodel.interfaces.SnakGroup; -import org.wikidata.wdtk.datamodel.interfaces.Statement; - import main.java.questionGenerator.generator.RightAnswerIsEntity; import main.java.questionGenerator.question.QuestionType; public class CapitalGenerator extends RightAnswerIsEntity { private final static String PROPERTY = "P36"; + private final static String PROPERTY_TO_CHECK = "P582"; public CapitalGenerator(){ - super(PROPERTY, QuestionType.CAPITAL); + super(PROPERTY, QuestionType.CAPITAL, PROPERTY_TO_CHECK); } @Override @@ -24,26 +18,4 @@ protected String getQuestion(String name) { return String.format(q, name); } - @Override - protected String getRightAnswer(Map> claims) { - for(Statement st : claims.get(super.getPropertyId())) { - boolean valid = true; - for(SnakGroup sg : st.getQualifiers()) { - for(Snak s : sg.getSnaks()) { - String value = getRightAnswerEntity(s.getPropertyId().toString()); - if(value.equals("P582")) { - valid = false; - break; - } - } - if(!valid) - break; - } - if(valid) { - return processRightAnswer(st); - } - } - return null; - } - } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java index e0b70ca9..160d2041 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java @@ -1,21 +1,15 @@ package main.java.questionGenerator.generator.specificGenerators; -import java.util.List; -import java.util.Map; - -import org.wikidata.wdtk.datamodel.interfaces.Snak; -import org.wikidata.wdtk.datamodel.interfaces.SnakGroup; -import org.wikidata.wdtk.datamodel.interfaces.Statement; - import main.java.questionGenerator.generator.RightAnswerIsEntity; import main.java.questionGenerator.question.QuestionType; public class LanguageGenerator extends RightAnswerIsEntity { private final static String PROPERTY = "P37"; + private final static String PROPERTY_TO_CHECK = "P518"; public LanguageGenerator(){ - super(PROPERTY, QuestionType.LANGUAGE); + super(PROPERTY, QuestionType.LANGUAGE, PROPERTY_TO_CHECK); } @Override @@ -24,26 +18,4 @@ protected String getQuestion(String name) { return String.format(q, name); } - @Override - protected String getRightAnswer(Map> claims) { - for(Statement st : claims.get(super.getPropertyId())) { - boolean valid = true; - for(SnakGroup sg : st.getQualifiers()) { - for(Snak s : sg.getSnaks()) { - String value = getRightAnswerEntity(s.getPropertyId().toString()); - if(value.equals("P518")) { - valid = false; - break; - } - } - if(!valid) - break; - } - if(valid) { - return processRightAnswer(st); - } - } - return null; - } - } From 75f334beb902d4fb59259bbc6f2ac24fd1d79dec Mon Sep 17 00:00:00 2001 From: jorge Date: Tue, 2 Apr 2024 16:50:50 +0200 Subject: [PATCH 09/21] The population now has the most current one as correct answer --- .../generator/specificGenerators/PopulationGenerator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java index 9ba5273b..b8375c57 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java @@ -27,7 +27,8 @@ protected String getQuestion(String name) { @Override protected String getRightAnswer(Map> claims) { - Value v = claims.get(PROPERTY).get(0).getValue(); + List statements = claims.get(PROPERTY); + Value v = statements.get(statements.size()-1).getValue(); return v.toString(); } From b0b963572e6cae2690e00f8e02b7aa3fc16afaa3 Mon Sep 17 00:00:00 2001 From: jorge Date: Wed, 3 Apr 2024 17:00:13 +0200 Subject: [PATCH 10/21] Placed common code in the abstract classes --- .../generator/AbstractGenerator.java | 13 +++++++++++-- .../generator/RightAnswerIsEntity.java | 4 ++-- .../specificGenerators/CapitalGenerator.java | 9 ++------- .../specificGenerators/LanguageGenerator.java | 9 ++------- .../specificGenerators/PopulationGenerator.java | 9 ++------- .../generator/specificGenerators/SizeGenerator.java | 11 +++-------- 6 files changed, 22 insertions(+), 33 deletions(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java index 636d918e..f1ceb8e9 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java @@ -31,9 +31,12 @@ public abstract class AbstractGenerator { private static final String MESSAGES_PATH = "messages"; - public AbstractGenerator(String propertyId, QuestionType type) { + private String message; + + public AbstractGenerator(String propertyId, QuestionType type, String message) { this.propertyId = propertyId; this.type = type; + this.message = message; } /** @@ -83,10 +86,16 @@ protected String getName(Map names) { return mtv.getText(); } - protected abstract String getQuestion(String name); + + protected String getQuestion(String name) { + String q = getMessages().getString(message); + return String.format(q, name); + } + protected abstract String getRightAnswer(Map> claims); protected abstract List getWrongAnswers(String rightAnswer); + public String getPropertyId() { return propertyId; } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java index de5962ab..e8a3c6a2 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java @@ -18,8 +18,8 @@ public abstract class RightAnswerIsEntity extends AbstractGenerator { private final String PROPERTY_TO_CHECK; - public RightAnswerIsEntity(String propertyId, QuestionType type, String propertyToCheck) { - super(propertyId, type); + public RightAnswerIsEntity(String propertyId, QuestionType type, String propertyToCheck, String message) { + super(propertyId, type, message); this.PROPERTY_TO_CHECK = propertyToCheck; } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java index 6aad2284..489f3b66 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java @@ -7,15 +7,10 @@ public class CapitalGenerator extends RightAnswerIsEntity { private final static String PROPERTY = "P36"; private final static String PROPERTY_TO_CHECK = "P582"; + private final static String MESSAGE = "question.capital"; public CapitalGenerator(){ - super(PROPERTY, QuestionType.CAPITAL, PROPERTY_TO_CHECK); - } - - @Override - protected String getQuestion(String name) { - String q = getMessages().getString("question.capital"); - return String.format(q, name); + super(PROPERTY, QuestionType.CAPITAL, PROPERTY_TO_CHECK, MESSAGE); } } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java index 160d2041..b48d0c37 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java @@ -7,15 +7,10 @@ public class LanguageGenerator extends RightAnswerIsEntity { private final static String PROPERTY = "P37"; private final static String PROPERTY_TO_CHECK = "P518"; + private final static String MESSAGE = "question.language"; public LanguageGenerator(){ - super(PROPERTY, QuestionType.LANGUAGE, PROPERTY_TO_CHECK); - } - - @Override - protected String getQuestion(String name) { - String q = getMessages().getString("question.language"); - return String.format(q, name); + super(PROPERTY, QuestionType.LANGUAGE, PROPERTY_TO_CHECK, MESSAGE); } } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java index b8375c57..cc86ad87 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java @@ -14,15 +14,10 @@ public class PopulationGenerator extends AbstractGenerator { private final static String PROPERTY = "P1082"; + private final static String MESSAGE = "question.population"; public PopulationGenerator(){ - super(PROPERTY, QuestionType.POPULATION); - } - - @Override - protected String getQuestion(String name) { - String q = getMessages().getString("question.population"); - return String.format(q, name); + super(PROPERTY, QuestionType.POPULATION, MESSAGE); } @Override diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java index a6066984..e3ccc085 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java @@ -14,15 +14,10 @@ public class SizeGenerator extends AbstractGenerator { private final static String PROPERTY = "P2046"; + private final static String MESSAGE = "question.size"; - public SizeGenerator(){ - super(PROPERTY, QuestionType.SIZE); - } - - @Override - protected String getQuestion(String name) { - String q = getMessages().getString("question.size"); - return String.format(q, name); + public SizeGenerator() { + super(PROPERTY, QuestionType.SIZE, MESSAGE); } @Override From 0f1a3fc6acbca5346568dd3afc86d4fb96ae67d2 Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 13:39:02 +0200 Subject: [PATCH 11/21] Updating branch and a fix on population for not to show same answer. --- .../generator/specificGenerators/PopulationGenerator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java index cc86ad87..a7bd585a 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java @@ -46,8 +46,8 @@ protected List getWrongAnswers(String rightAnswer) { int parameter = 50; for(int i = 0; i < 3; i++){ int wrong = Math.round(number * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); - // Checking if it creates the same answer - if(wrong == number) + // Checking if it creates the same answer as any other + if(wrong == number || wrongAnswers.contains(String.valueOf(wrong))) i--; else wrongAnswers.add(String.valueOf(wrong)); From d19a6f6fac7a3e4179810c1c033f812eee894bcf Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 13:46:52 +0200 Subject: [PATCH 12/21] Fix for sizegenerator wronganswers --- .../generator/specificGenerators/SizeGenerator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java index e3ccc085..4115e1c8 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java @@ -44,8 +44,8 @@ protected List getWrongAnswers(String rightAnswer) { int parameter = 50; for(int i = 0; i < 3; i++){ float wrong = (number * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); - // Checking if it creates the same answer - if(wrong == number) + // Checking if it creates the same answer as any other + if(wrong == number || result.contains(String.valueOf(wrong))) i--; else result.add(String.valueOf(wrong)); From 5acdc442b8ff7a17ea4c330d3ed163d77036f430 Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 14:00:30 +0200 Subject: [PATCH 13/21] Creating a new class for when the answers aren't entity related. Commented the questionrepos part in Main.java for easy testing. --- questionGenerator/src/main/java/Main.java | 2 +- .../generator/RightAnswerNotAnEntity.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java diff --git a/questionGenerator/src/main/java/Main.java b/questionGenerator/src/main/java/Main.java index 44500083..b74f44e0 100644 --- a/questionGenerator/src/main/java/Main.java +++ b/questionGenerator/src/main/java/Main.java @@ -31,6 +31,6 @@ private static void run(QuestionGenerator qg, QuestionType type, int numberOfQue question.setNumber(i); System.out.println(question.getJSON().toString()); } - QuestionRepository.getInstance().insert(questions.stream().map(q -> q.getJSON().toString()).toList()); + //QuestionRepository.getInstance().insert(questions.stream().map(q -> q.getJSON().toString()).toList()); } } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java new file mode 100644 index 00000000..36a356c6 --- /dev/null +++ b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java @@ -0,0 +1,18 @@ +package main.java.questionGenerator.generator; + +import java.util.List; + +import main.java.questionGenerator.question.QuestionType; + +public abstract class RightAnswerNotAnEntity extends AbstractGenerator{ + + //Open to changes if needed. + public RightAnswerNotAnEntity(String propertyId, QuestionType type, String message) { + super(propertyId, type, message); + } + + @Override + protected List getWrongAnswers(String rightAnswer){ + return null; + } +} From e807dc65e5149393951afc17ea833e9ca12c92c6 Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 14:22:02 +0200 Subject: [PATCH 14/21] Works, but it is a bit goofy. It gives population with fractions and sometimes the fraction amount is too much. --- .../generator/RightAnswerNotAnEntity.java | 30 +++++++++++++++++-- .../PopulationGenerator.java | 7 +++-- .../specificGenerators/SizeGenerator.java | 7 +++-- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java index 36a356c6..9a315280 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java @@ -1,6 +1,8 @@ package main.java.questionGenerator.generator; +import java.util.ArrayList; import java.util.List; +import java.util.Random; import main.java.questionGenerator.question.QuestionType; @@ -12,7 +14,29 @@ public RightAnswerNotAnEntity(String propertyId, QuestionType type, String messa } @Override - protected List getWrongAnswers(String rightAnswer){ - return null; - } + protected List getWrongAnswers(String rightAnswer) { + float number = 0; + // Check if it is a float + try { + number = Float.parseFloat(rightAnswer); + } catch(NumberFormatException e) { + //throw exception or maybe return null + } + + List wrongAnswers = new ArrayList<>(); + Random rnd = new Random(); + + // Gives values depending on parameter with percentage + // Example: If parameter is 50 value range is number*.5 and number*1.5 + int parameter = 50; + for(int i = 0; i < 3; i++){ + float wrong = (number * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); + // Checking if it creates the same answer as any other + if(wrong == number || wrongAnswers.contains(String.valueOf(wrong))) + i--; + else + wrongAnswers.add(String.valueOf(wrong)); + } + return wrongAnswers; + } } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java index a7bd585a..d324994b 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java @@ -9,9 +9,10 @@ import org.wikidata.wdtk.datamodel.interfaces.Value; import main.java.questionGenerator.generator.AbstractGenerator; +import main.java.questionGenerator.generator.RightAnswerNotAnEntity; import main.java.questionGenerator.question.QuestionType; -public class PopulationGenerator extends AbstractGenerator { +public class PopulationGenerator extends RightAnswerNotAnEntity { private final static String PROPERTY = "P1082"; private final static String MESSAGE = "question.population"; @@ -27,7 +28,7 @@ protected String getRightAnswer(Map> claims) { return v.toString(); } - @Override + /* @Override protected List getWrongAnswers(String rightAnswer) { int number = 0; // Check if it is a integer @@ -53,6 +54,6 @@ protected List getWrongAnswers(String rightAnswer) { wrongAnswers.add(String.valueOf(wrong)); } return wrongAnswers; - } + } */ } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java index 4115e1c8..c78440ef 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java @@ -9,9 +9,10 @@ import org.wikidata.wdtk.datamodel.interfaces.Value; import main.java.questionGenerator.generator.AbstractGenerator; +import main.java.questionGenerator.generator.RightAnswerNotAnEntity; import main.java.questionGenerator.question.QuestionType; -public class SizeGenerator extends AbstractGenerator { +public class SizeGenerator extends RightAnswerNotAnEntity { private final static String PROPERTY = "P2046"; private final static String MESSAGE = "question.size"; @@ -26,7 +27,7 @@ protected String getRightAnswer(Map> claims) { return getRightAnswerEntity(v.toString()); } - @Override + /* @Override protected List getWrongAnswers(String rightAnswer) { float number = 0; // Check if it is a float @@ -51,7 +52,7 @@ protected List getWrongAnswers(String rightAnswer) { result.add(String.valueOf(wrong)); } return result; - } + } */ private String getRightAnswerEntity(String url) { String[] split1 = url.split(" "); From 4f4fa7f483f0c031a992107ed58711248075e7e4 Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 14:41:13 +0200 Subject: [PATCH 15/21] Fixed it by checking if it's an integer or a float and then working according to that. --- .../generator/RightAnswerNotAnEntity.java | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java index 9a315280..cb570644 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java @@ -15,12 +15,17 @@ public RightAnswerNotAnEntity(String propertyId, QuestionType type, String messa @Override protected List getWrongAnswers(String rightAnswer) { - float number = 0; + int inumber = 0; + float fnumber = 0; // Check if it is a float try { - number = Float.parseFloat(rightAnswer); - } catch(NumberFormatException e) { - //throw exception or maybe return null + inumber = Integer.parseInt(rightAnswer); + } catch(NumberFormatException e1) { + try { + fnumber = Float.parseFloat(rightAnswer); + } catch (NumberFormatException e2) { + //throw some exception or return null. + } } List wrongAnswers = new ArrayList<>(); @@ -29,14 +34,30 @@ protected List getWrongAnswers(String rightAnswer) { // Gives values depending on parameter with percentage // Example: If parameter is 50 value range is number*.5 and number*1.5 int parameter = 50; - for(int i = 0; i < 3; i++){ - float wrong = (number * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); - // Checking if it creates the same answer as any other - if(wrong == number || wrongAnswers.contains(String.valueOf(wrong))) - i--; - else - wrongAnswers.add(String.valueOf(wrong)); - } - return wrongAnswers; + + + if(inumber != 0){ + //for integer values + for(int i = 0; i < 3; i++){ + int wrong = (inumber * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); + // Checking if it creates the same answer as any other + if(wrong == inumber || wrongAnswers.contains(String.valueOf(wrong))) + i--; + else + wrongAnswers.add(String.valueOf(wrong)); + } + } + else{ + //for float values + for(int i = 0; i < 3; i++){ + float wrong = (fnumber * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); + // Checking if it creates the same answer as any other + if(wrong == fnumber || wrongAnswers.contains(String.valueOf(wrong))) + i--; + else + wrongAnswers.add(String.valueOf(wrong)); + } + } + return wrongAnswers; } } From 559ac25579d6fad256670d57362ae6be0d5bf45a Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 15:00:08 +0200 Subject: [PATCH 16/21] Renaming two files and cleaning up not used code. --- ...rIsEntity.java => AnswersAreEntities.java} | 4 +-- ...nEntity.java => AnswersAreNotEntites.java} | 8 ++--- .../specificGenerators/CapitalGenerator.java | 4 +-- .../specificGenerators/LanguageGenerator.java | 4 +-- .../PopulationGenerator.java | 36 ++----------------- .../specificGenerators/SizeGenerator.java | 34 ++---------------- 6 files changed, 14 insertions(+), 76 deletions(-) rename questionGenerator/src/main/java/questionGenerator/generator/{RightAnswerIsEntity.java => AnswersAreEntities.java} (94%) rename questionGenerator/src/main/java/questionGenerator/generator/{RightAnswerNotAnEntity.java => AnswersAreNotEntites.java} (82%) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java similarity index 94% rename from questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java rename to questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java index e8a3c6a2..27f9fe56 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerIsEntity.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java @@ -14,11 +14,11 @@ import main.java.questionGenerator.question.QuestionType; -public abstract class RightAnswerIsEntity extends AbstractGenerator { +public abstract class AnswersAreEntities extends AbstractGenerator { private final String PROPERTY_TO_CHECK; - public RightAnswerIsEntity(String propertyId, QuestionType type, String propertyToCheck, String message) { + public AnswersAreEntities(String propertyId, QuestionType type, String propertyToCheck, String message) { super(propertyId, type, message); this.PROPERTY_TO_CHECK = propertyToCheck; } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java similarity index 82% rename from questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java rename to questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java index cb570644..9a299c69 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/RightAnswerNotAnEntity.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java @@ -6,10 +6,10 @@ import main.java.questionGenerator.question.QuestionType; -public abstract class RightAnswerNotAnEntity extends AbstractGenerator{ +public abstract class AnswersAreNotEntites extends AbstractGenerator{ //Open to changes if needed. - public RightAnswerNotAnEntity(String propertyId, QuestionType type, String message) { + public AnswersAreNotEntites(String propertyId, QuestionType type, String message) { super(propertyId, type, message); } @@ -39,7 +39,7 @@ protected List getWrongAnswers(String rightAnswer) { if(inumber != 0){ //for integer values for(int i = 0; i < 3; i++){ - int wrong = (inumber * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); + long wrong = (inumber * (100 + rnd.nextInt(parameter * 2 + 1) - parameter) / 100); // Checking if it creates the same answer as any other if(wrong == inumber || wrongAnswers.contains(String.valueOf(wrong))) i--; @@ -50,7 +50,7 @@ protected List getWrongAnswers(String rightAnswer) { else{ //for float values for(int i = 0; i < 3; i++){ - float wrong = (fnumber * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); + float wrong = (fnumber * (100 + rnd.nextInt(parameter * 2 + 1) - parameter) / 100); // Checking if it creates the same answer as any other if(wrong == fnumber || wrongAnswers.contains(String.valueOf(wrong))) i--; diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java index 489f3b66..64444133 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/CapitalGenerator.java @@ -1,9 +1,9 @@ package main.java.questionGenerator.generator.specificGenerators; -import main.java.questionGenerator.generator.RightAnswerIsEntity; +import main.java.questionGenerator.generator.AnswersAreEntities; import main.java.questionGenerator.question.QuestionType; -public class CapitalGenerator extends RightAnswerIsEntity { +public class CapitalGenerator extends AnswersAreEntities { private final static String PROPERTY = "P36"; private final static String PROPERTY_TO_CHECK = "P582"; diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java index b48d0c37..5e2b7781 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/LanguageGenerator.java @@ -1,9 +1,9 @@ package main.java.questionGenerator.generator.specificGenerators; -import main.java.questionGenerator.generator.RightAnswerIsEntity; +import main.java.questionGenerator.generator.AnswersAreEntities; import main.java.questionGenerator.question.QuestionType; -public class LanguageGenerator extends RightAnswerIsEntity { +public class LanguageGenerator extends AnswersAreEntities { private final static String PROPERTY = "P37"; private final static String PROPERTY_TO_CHECK = "P518"; diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java index d324994b..b1feb771 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/PopulationGenerator.java @@ -1,18 +1,15 @@ package main.java.questionGenerator.generator.specificGenerators; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Random; import org.wikidata.wdtk.datamodel.interfaces.Statement; import org.wikidata.wdtk.datamodel.interfaces.Value; -import main.java.questionGenerator.generator.AbstractGenerator; -import main.java.questionGenerator.generator.RightAnswerNotAnEntity; +import main.java.questionGenerator.generator.AnswersAreNotEntites; import main.java.questionGenerator.question.QuestionType; -public class PopulationGenerator extends RightAnswerNotAnEntity { +public class PopulationGenerator extends AnswersAreNotEntites { private final static String PROPERTY = "P1082"; private final static String MESSAGE = "question.population"; @@ -27,33 +24,4 @@ protected String getRightAnswer(Map> claims) { Value v = statements.get(statements.size()-1).getValue(); return v.toString(); } - - /* @Override - protected List getWrongAnswers(String rightAnswer) { - int number = 0; - // Check if it is a integer - try { - number = Integer.parseInt(rightAnswer); - } catch(NumberFormatException e) { - //throw exception or maybe return null - } - - List wrongAnswers = new ArrayList(); - - Random rnd = new Random(); - - // Gives values depending on parameter with percentage - // Example: If parameter is 50 value range is number*.5 and number*1.5 - int parameter = 50; - for(int i = 0; i < 3; i++){ - int wrong = Math.round(number * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); - // Checking if it creates the same answer as any other - if(wrong == number || wrongAnswers.contains(String.valueOf(wrong))) - i--; - else - wrongAnswers.add(String.valueOf(wrong)); - } - return wrongAnswers; - } */ - } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java index c78440ef..2259c13e 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/specificGenerators/SizeGenerator.java @@ -1,18 +1,15 @@ package main.java.questionGenerator.generator.specificGenerators; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Random; import org.wikidata.wdtk.datamodel.interfaces.Statement; import org.wikidata.wdtk.datamodel.interfaces.Value; -import main.java.questionGenerator.generator.AbstractGenerator; -import main.java.questionGenerator.generator.RightAnswerNotAnEntity; +import main.java.questionGenerator.generator.AnswersAreNotEntites; import main.java.questionGenerator.question.QuestionType; -public class SizeGenerator extends RightAnswerNotAnEntity { +public class SizeGenerator extends AnswersAreNotEntites { private final static String PROPERTY = "P2046"; private final static String MESSAGE = "question.size"; @@ -27,33 +24,6 @@ protected String getRightAnswer(Map> claims) { return getRightAnswerEntity(v.toString()); } - /* @Override - protected List getWrongAnswers(String rightAnswer) { - float number = 0; - // Check if it is a float - try { - number = Float.parseFloat(rightAnswer); - } catch(NumberFormatException e) { - //throw exception or maybe return null - } - - List result = new ArrayList<>(); - Random rnd = new Random(); - - // Gives values depending on parameter with percentage - // Example: If parameter is 50 value range is number*.5 and number*1.5 - int parameter = 50; - for(int i = 0; i < 3; i++){ - float wrong = (number * (100 - parameter + rnd.nextInt(parameter * 2 + 1)) / 100); - // Checking if it creates the same answer as any other - if(wrong == number || result.contains(String.valueOf(wrong))) - i--; - else - result.add(String.valueOf(wrong)); - } - return result; - } */ - private String getRightAnswerEntity(String url) { String[] split1 = url.split(" "); String[] split2 = split1[0].split("/"); From 80c33ffa08f7d34b5dc447d2b96416dbec3ac999 Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 15:09:48 +0200 Subject: [PATCH 17/21] Extra check for distractors to be same sign. I got some negative numbers in population or size when it was a relatively big number but changing from int to long didn't work, so an extra precaution. --- .../generator/AnswersAreNotEntites.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java index 9a299c69..9d5f0017 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java @@ -40,7 +40,13 @@ protected List getWrongAnswers(String rightAnswer) { //for integer values for(int i = 0; i < 3; i++){ long wrong = (inumber * (100 + rnd.nextInt(parameter * 2 + 1) - parameter) / 100); - // Checking if it creates the same answer as any other + // An extra check for the wrong answer to be same sign. + if((inumber > 0 && wrong < 0) || (inumber < 0 && wrong > 0)) + { + i--; + continue; + } + // Checking if it creates the same answer as any other. if(wrong == inumber || wrongAnswers.contains(String.valueOf(wrong))) i--; else @@ -51,6 +57,12 @@ protected List getWrongAnswers(String rightAnswer) { //for float values for(int i = 0; i < 3; i++){ float wrong = (fnumber * (100 + rnd.nextInt(parameter * 2 + 1) - parameter) / 100); + // An extra check for the wrong answer to be same sign. + if((fnumber > 0 && wrong < 0) || (fnumber < 0 && wrong > 0)) + { + i--; + continue; + } // Checking if it creates the same answer as any other if(wrong == fnumber || wrongAnswers.contains(String.valueOf(wrong))) i--; From 970f20145b4a8f550e85a04225742f2a5e467e34 Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 15:47:40 +0200 Subject: [PATCH 18/21] changing of wronganswers arguments and using entitygenerator for entity answered questions for true randomization --- .../generator/AbstractGenerator.java | 4 +- .../generator/AnswersAreEntities.java | 68 ++++++++++++++++++- .../generator/AnswersAreNotEntites.java | 2 +- 3 files changed, 69 insertions(+), 5 deletions(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java index f1ceb8e9..7480da9a 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java @@ -73,7 +73,7 @@ public Question generate(String id) { String rightAnswer = getRightAnswer(idi.getJsonClaims()); //get the wrong answers - List answers = getWrongAnswers(rightAnswer); + List answers = getWrongAnswers(rightAnswer, type); answers.add(0, rightAnswer); //create and return the question @@ -93,7 +93,7 @@ protected String getQuestion(String name) { } protected abstract String getRightAnswer(Map> claims); - protected abstract List getWrongAnswers(String rightAnswer); + protected abstract List getWrongAnswers(String rightAnswer, QuestionType type); public String getPropertyId() { diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java index 27f9fe56..e66b0f27 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java @@ -12,6 +12,12 @@ import org.wikidata.wdtk.datamodel.interfaces.Statement; import org.wikidata.wdtk.wikibaseapi.apierrors.MediaWikiApiErrorException; +import main.java.questionGenerator.entityGenerator.EntityGenerator; +import main.java.questionGenerator.generator.specificGenerators.CapitalGenerator; +import main.java.questionGenerator.generator.specificGenerators.LanguageGenerator; +import main.java.questionGenerator.generator.specificGenerators.PopulationGenerator; +import main.java.questionGenerator.generator.specificGenerators.SizeGenerator; +import main.java.questionGenerator.question.Question; import main.java.questionGenerator.question.QuestionType; public abstract class AnswersAreEntities extends AbstractGenerator { @@ -89,9 +95,34 @@ protected String getIdFromLink(String url) { return split2[split2.length-1]; } + private AbstractGenerator generator; + private String languageCode; + + private void setGenerator(QuestionType type) { + switch (type) { + case POPULATION: { + generator = new PopulationGenerator(); + break; + } + case CAPITAL: { + generator = new CapitalGenerator(); + break; + + } + case SIZE: { + generator = new SizeGenerator(); + break; + } + case LANGUAGE: { + generator = new LanguageGenerator(); + break; + } + } + } + @Override - protected List getWrongAnswers(String rightAnswer) { - Random rnd = new Random(); + protected List getWrongAnswers(String rightAnswer, QuestionType type) { + /* Random rnd = new Random(); String[] entities = {"Q142", "Q183", "Q16", "Q142", "Q30", "Q408", "Q668", "Q17", "Q38", "Q159", "Q79", "Q155", "Q884", "Q414", "Q41", "Q258", "Q96", "Q843", "Q148", "Q20"}; List result = new ArrayList<>(); @@ -106,6 +137,39 @@ protected List getWrongAnswers(String rightAnswer) { used.add(rndnum); } } + return result; */ + setGenerator(type); + generator.setLocalization(languageCode); + List entites = new ArrayList<>(); + try { + entites = EntityGenerator.getEntities(type, 100); + } catch (IOException e) { + e.printStackTrace(); + } + Random rnd = new Random(); + List chosen = new ArrayList<>(); + int size = entites.size(); + int number = 0; + while(number<50) { + int index = rnd.nextInt(size); + String entity = entites.get(index); + if(!chosen.contains(entity)) { + chosen.add(entity); + number++; + } + } + List result = new ArrayList<>(); + List used = new ArrayList<>(); + for(int i = 0; i < 3; i++){ + int rndnum = rnd.nextInt(chosen.size()); + String wrong = getAnswer(chosen.get(rndnum)); + if(wrong == null || wrong.equals(rightAnswer) || used.contains(rndnum)) + i--; + else{ + result.add(wrong); + used.add(rndnum); + } + } return result; } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java index 9d5f0017..fd76e0f0 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java @@ -14,7 +14,7 @@ public AnswersAreNotEntites(String propertyId, QuestionType type, String message } @Override - protected List getWrongAnswers(String rightAnswer) { + protected List getWrongAnswers(String rightAnswer, QuestionType type) { int inumber = 0; float fnumber = 0; // Check if it is a float From bc7b1ca4ff30778003f898c83477ee5ac025a54c Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 15:49:30 +0200 Subject: [PATCH 19/21] Last cleanup of unused code and restoring main back to original. --- questionGenerator/src/main/java/Main.java | 2 +- .../generator/AnswersAreEntities.java | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/questionGenerator/src/main/java/Main.java b/questionGenerator/src/main/java/Main.java index b74f44e0..44500083 100644 --- a/questionGenerator/src/main/java/Main.java +++ b/questionGenerator/src/main/java/Main.java @@ -31,6 +31,6 @@ private static void run(QuestionGenerator qg, QuestionType type, int numberOfQue question.setNumber(i); System.out.println(question.getJSON().toString()); } - //QuestionRepository.getInstance().insert(questions.stream().map(q -> q.getJSON().toString()).toList()); + QuestionRepository.getInstance().insert(questions.stream().map(q -> q.getJSON().toString()).toList()); } } diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java index e66b0f27..cdffb320 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java @@ -17,7 +17,6 @@ import main.java.questionGenerator.generator.specificGenerators.LanguageGenerator; import main.java.questionGenerator.generator.specificGenerators.PopulationGenerator; import main.java.questionGenerator.generator.specificGenerators.SizeGenerator; -import main.java.questionGenerator.question.Question; import main.java.questionGenerator.question.QuestionType; public abstract class AnswersAreEntities extends AbstractGenerator { @@ -122,22 +121,6 @@ private void setGenerator(QuestionType type) { @Override protected List getWrongAnswers(String rightAnswer, QuestionType type) { - /* Random rnd = new Random(); - String[] entities = {"Q142", "Q183", "Q16", "Q142", "Q30", "Q408", "Q668", "Q17", "Q38", "Q159", - "Q79", "Q155", "Q884", "Q414", "Q41", "Q258", "Q96", "Q843", "Q148", "Q20"}; - List result = new ArrayList<>(); - List used = new ArrayList<>(); - for(int i = 0; i < 3; i++){ - int rndnum = rnd.nextInt(entities.length); - String wrong = getAnswer(entities[rndnum]); - if(wrong.equals(rightAnswer) || used.contains(rndnum)) - i--; - else{ - result.add(wrong); - used.add(rndnum); - } - } - return result; */ setGenerator(type); generator.setLocalization(languageCode); List entites = new ArrayList<>(); From 5bb4ceb2d0a9e370172430b7309e0ddc60118489 Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 4 Apr 2024 17:22:52 +0200 Subject: [PATCH 20/21] Actually no need to change the parameters and all that unnecessary generator codes. Big helps from Jorge. --- .../generator/AbstractGenerator.java | 4 +- .../generator/AnswersAreEntities.java | 50 ++----------------- .../generator/AnswersAreNotEntites.java | 2 +- 3 files changed, 8 insertions(+), 48 deletions(-) diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java b/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java index 7480da9a..f1ceb8e9 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AbstractGenerator.java @@ -73,7 +73,7 @@ public Question generate(String id) { String rightAnswer = getRightAnswer(idi.getJsonClaims()); //get the wrong answers - List answers = getWrongAnswers(rightAnswer, type); + List answers = getWrongAnswers(rightAnswer); answers.add(0, rightAnswer); //create and return the question @@ -93,7 +93,7 @@ protected String getQuestion(String name) { } protected abstract String getRightAnswer(Map> claims); - protected abstract List getWrongAnswers(String rightAnswer, QuestionType type); + protected abstract List getWrongAnswers(String rightAnswer); public String getPropertyId() { diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java index cdffb320..171b22cc 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreEntities.java @@ -13,19 +13,17 @@ import org.wikidata.wdtk.wikibaseapi.apierrors.MediaWikiApiErrorException; import main.java.questionGenerator.entityGenerator.EntityGenerator; -import main.java.questionGenerator.generator.specificGenerators.CapitalGenerator; -import main.java.questionGenerator.generator.specificGenerators.LanguageGenerator; -import main.java.questionGenerator.generator.specificGenerators.PopulationGenerator; -import main.java.questionGenerator.generator.specificGenerators.SizeGenerator; import main.java.questionGenerator.question.QuestionType; public abstract class AnswersAreEntities extends AbstractGenerator { private final String PROPERTY_TO_CHECK; + private final QuestionType type; public AnswersAreEntities(String propertyId, QuestionType type, String propertyToCheck, String message) { super(propertyId, type, message); this.PROPERTY_TO_CHECK = propertyToCheck; + this.type = type; } @Override @@ -93,36 +91,9 @@ protected String getIdFromLink(String url) { String[] split2 = split1[0].split("/"); return split2[split2.length-1]; } - - private AbstractGenerator generator; - private String languageCode; - - private void setGenerator(QuestionType type) { - switch (type) { - case POPULATION: { - generator = new PopulationGenerator(); - break; - } - case CAPITAL: { - generator = new CapitalGenerator(); - break; - - } - case SIZE: { - generator = new SizeGenerator(); - break; - } - case LANGUAGE: { - generator = new LanguageGenerator(); - break; - } - } - } @Override - protected List getWrongAnswers(String rightAnswer, QuestionType type) { - setGenerator(type); - generator.setLocalization(languageCode); + protected List getWrongAnswers(String rightAnswer) { List entites = new ArrayList<>(); try { entites = EntityGenerator.getEntities(type, 100); @@ -130,22 +101,11 @@ protected List getWrongAnswers(String rightAnswer, QuestionType type) { e.printStackTrace(); } Random rnd = new Random(); - List chosen = new ArrayList<>(); - int size = entites.size(); - int number = 0; - while(number<50) { - int index = rnd.nextInt(size); - String entity = entites.get(index); - if(!chosen.contains(entity)) { - chosen.add(entity); - number++; - } - } List result = new ArrayList<>(); List used = new ArrayList<>(); for(int i = 0; i < 3; i++){ - int rndnum = rnd.nextInt(chosen.size()); - String wrong = getAnswer(chosen.get(rndnum)); + int rndnum = rnd.nextInt(entites.size()); + String wrong = getAnswer(entites.get(rndnum)); if(wrong == null || wrong.equals(rightAnswer) || used.contains(rndnum)) i--; else{ diff --git a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java index fd76e0f0..9d5f0017 100644 --- a/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java +++ b/questionGenerator/src/main/java/questionGenerator/generator/AnswersAreNotEntites.java @@ -14,7 +14,7 @@ public AnswersAreNotEntites(String propertyId, QuestionType type, String message } @Override - protected List getWrongAnswers(String rightAnswer, QuestionType type) { + protected List getWrongAnswers(String rightAnswer) { int inumber = 0; float fnumber = 0; // Check if it is a float From 904d0dd72dbcb065b7c71610567dfe75c34f879c Mon Sep 17 00:00:00 2001 From: jorge Date: Sun, 7 Apr 2024 19:05:52 +0200 Subject: [PATCH 21/21] Fixed the tests to use the correct generator --- .../questionGenerator/QuestionGeneratorTests.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/questionGenerator/src/test/java/questionGenerator/QuestionGeneratorTests.java b/questionGenerator/src/test/java/questionGenerator/QuestionGeneratorTests.java index 3c82c502..67a6aa97 100644 --- a/questionGenerator/src/test/java/questionGenerator/QuestionGeneratorTests.java +++ b/questionGenerator/src/test/java/questionGenerator/QuestionGeneratorTests.java @@ -16,20 +16,20 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import main.java.questionGenerator.QuestionGeneratorMock; +import main.java.questionGenerator.QuestionGenerator; import main.java.questionGenerator.question.QuestionType; public class QuestionGeneratorTests { - private QuestionGeneratorMock qgEN; - private QuestionGeneratorMock qgES; + private QuestionGenerator qgEN; + private QuestionGenerator qgES; private static QuestionType[] types = {QuestionType.POPULATION, QuestionType.CAPITAL, QuestionType.SIZE, QuestionType.LANGUAGE}; @BeforeEach void setUp(){ - qgEN = new QuestionGeneratorMock("en"); - qgES = new QuestionGeneratorMock("es"); + qgEN = new QuestionGenerator("en"); + qgES = new QuestionGenerator("es"); } @Test @@ -39,7 +39,7 @@ void testGenerateQuestionsEnglish() { for(QuestionType t : types) { for(int i=0; i<3; i++) { - question = qgEN.generateQuestion(t).getJSON().toString(); + question = qgEN.generateQuestions(t, 1).get(0).getJSON().toString(); JSONObject json = null; //Check correct format @@ -98,7 +98,7 @@ void testGenerateQuestionsSpanish() { for(QuestionType t : types) { for(int i=0; i<3; i++) { - question = qgES.generateQuestion(t).getJSON().toString(); + question = qgES.generateQuestions(t, 1).get(0).getJSON().toString(); JSONObject json = null; //Check correct format