Skip to content

Commit

Permalink
SAK-49580 Not all global variables are exported on the xml - S2U-11 -…
Browse files Browse the repository at this point in the history
… MASTER (sakaiproject#12204)
  • Loading branch information
jesusmmp authored Dec 19, 2023
1 parent bdd9ca8 commit c4b00ed
Showing 1 changed file with 16 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.stream.Collectors;

import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;

Expand Down Expand Up @@ -517,18 +519,18 @@ private void setItemTextCalculatedQuestion(List<ItemTextIfc> itemTextList, Item
String incorrectFeedback = itemTextList.get(0).getItem().getInCorrectItemFeedback();
List<String> formulaNames = gs.extractFormulas(instructions);
List<String> variableNames = gs.extractVariables(instructions);
List<String> globalVariableNamesInstructions = gs.extractGlobalVariables(instructions);
List<String> globalVariableNamesCorrectFeedback = gs.extractGlobalVariables(correctFeedback);
List<String> globalVariableNamesInCorrectFeedback = gs.extractGlobalVariables(incorrectFeedback);

// creating a list with all globalvariablesnames (without repeated names)
List<String> globalVariableNames = new ArrayList<>();
globalVariableNames.addAll(globalVariableNamesInstructions);
globalVariableNames.addAll(globalVariableNamesCorrectFeedback);
globalVariableNames.addAll(globalVariableNamesInCorrectFeedback);
Set<String> uniqueGlobalVariableNames = new HashSet<>(globalVariableNames);
globalVariableNames.clear();
globalVariableNames.addAll(uniqueGlobalVariableNames);

Set<String> formulaNamesSet = new HashSet<>(formulaNames);
Set<String> variableNamesSet = new HashSet<>(variableNames);
Set<String> calcQuestionEntitiesSet = itemTextList.stream().map(ItemTextIfc::getText).collect(Collectors.toSet());

// removing formulas and variables. We only need global variables
calcQuestionEntitiesSet.removeAll(formulaNamesSet);
calcQuestionEntitiesSet.removeAll(variableNamesSet);

Set<String> globalVariableNamesSet = calcQuestionEntitiesSet;

List<String> globalVariableNames = new ArrayList<>(globalVariableNamesSet);

for (ItemTextIfc itemText : itemTextList) {
if (variableNames.contains(itemText.getText())) {
Expand Down Expand Up @@ -614,7 +616,7 @@ private void addCalculatedQuestionGlobalVariable(ItemTextIfc itemText, Item item
itemXml.add(updatedXpath, "name");
itemXml.update(updatedXpath + "/name", itemText.getText());
itemXml.add(updatedXpath, "formula");
itemXml.update(updatedXpath + "/formula", text);
itemXml.update(updatedXpath + "/formula", StringEscapeUtils.escapeHtml4(text));
itemXml.add(updatedXpath, "addedButNotExtracted");
itemXml.update(updatedXpath + "/addedButNotExtracted", String.valueOf(itemText.isAddedButNotExtracted()));
break;
Expand Down Expand Up @@ -657,7 +659,7 @@ private void addCalculatedQuestionFormula(ItemTextIfc itemText, Item itemXml, St
itemXml.add(updatedXpath, "name");
itemXml.update(updatedXpath + "/name", itemText.getText());
itemXml.add(updatedXpath, "formula");
itemXml.update(updatedXpath + "/formula", formula);
itemXml.update(updatedXpath + "/formula", StringEscapeUtils.escapeHtml4(formula));
itemXml.add(updatedXpath, "tolerance");
itemXml.update(updatedXpath + "/tolerance", tolerance);
itemXml.add(updatedXpath, "decimalPlaces");
Expand Down

0 comments on commit c4b00ed

Please sign in to comment.