Skip to content
Snippets Groups Projects
Commit f034caed authored by Tom Käsler's avatar Tom Käsler
Browse files

#15459 check to see whether new question brings a new subject to append it in subjectSortOrder

parent 92025f94
Branches
Tags
No related merge requests found
......@@ -20,6 +20,7 @@ package de.thm.arsnova.dao;
import java.io.IOException;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
......@@ -550,6 +551,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
q.put("gridType", question.getGridType());
q.put("scaleFactor", question.getScaleFactor());
q.put("gridScaleFactor", question.getGridScaleFactor());
q.put("timestamp", question.getTimestamp());
return q;
}
......@@ -1973,14 +1975,6 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
for (final Document d : results.getResults()) {
final String s = d.getString("value");
qids.add(s);
/*final Answer a = new Answer();
a.setAnswerCount(d.getInt("value"));
a.setAbstentionCount(abstentionCount);
a.setQuestionId(d.getJSONObject().getJSONArray("key").getString(0));
a.setPiRound(piRound);
final String answerText = d.getJSONObject().getJSONArray("key").getString(2);
a.setAnswerText("null".equals(answerText) ? null : answerText);
answers.add(a);*/
}
return qids;
......@@ -2004,21 +1998,38 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
if (results.getResults().isEmpty()) {
return null;
}
SortOrder sortOrder = new SortOrder();
for (final Document d : results.getResults()) {
sortOrder.set_id(d.getJSONObject("value").getString("_id"));
sortOrder.set_rev(d.getJSONObject("value").getString("_rev"));
sortOrder.setSessionId(d.getJSONObject("value").getString("sessionId"));
sortOrder.setSortType(d.getJSONObject("value").getString("sortType"));
sortOrder.setQuestionVariant(d.getJSONObject("value").getString("questionVariant"));
List<String> sort = new ArrayList<String>();
JSONArray json = d.getJSONObject("value").getJSONArray("sortOrder");
int len = json.size();
for (int i=0; i<len; i++) {
sort.add(json.getString(i));
}
sortOrder.setSortOrder(sort);
}
return (SortOrder) JSONObject.toBean(
results.getJSONArray("rows").optJSONObject(0).optJSONObject("value"),
SortOrder.class
);
return sortOrder;
}
@Override
public SortOrder createOrUpdateSortOrder(SortOrder sortOrder) {
try {
String id = sortOrder.get_id();
String rev = sortOrder.get_rev();
SortOrder oldSortOrder = getSortOrder(sortOrder.getSessionId(), sortOrder.getQuestionVariant(), sortOrder.getSubject());
Document d = new Document();
if (null != id) {
String id = "";
String rev = "";
if (oldSortOrder != null) {
id = oldSortOrder.get_id();
rev = oldSortOrder.get_rev();
d = database.getDocument(id, rev);
}
......
......@@ -140,10 +140,23 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
final Question result = databaseDao.saveQuestion(session, question);
SortOrder sortOrder = databaseDao.getSortOrder(session.get_id(), question.getQuestionVariant(), question.getSubject());
if (sortOrder != null) {
addQuestionToSortOrder(sortOrder, question);
databaseDao.createOrUpdateSortOrder(sortOrder);
SortOrder subjectSortOrder = databaseDao.getSortOrder(session.get_id(), question.getQuestionVariant(), "");
if (subjectSortOrder != null) {
SortOrder questionSortOrder = databaseDao.getSortOrder(session.get_id(), question.getQuestionVariant(), question.getSubject());
if (questionSortOrder == null) {
List<String> s = new ArrayList<String>();
s.add(question.getSubject());
SortOrder newQSortOrder = new SortOrder();
newQSortOrder.setSessionId(question.get_id());
newQSortOrder.setSortType(subjectSortOrder.getSortType());
newQSortOrder.setQuestionVariant(subjectSortOrder.getQuestionVariant());
newQSortOrder.setSortOrder(s);
databaseDao.createOrUpdateSortOrder(newQSortOrder);
addToSortOrder(subjectSortOrder, question.getSubject());
}
else {
addToSortOrder(questionSortOrder, question.get_id());
}
}
final NewQuestionEvent event = new NewQuestionEvent(this, session, result);
......@@ -589,11 +602,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
subjectSortOrder = createSortOrder(session, "lecture", "");
}
final User user = userService.getCurrentUser();
if (session.isCreator(user)) {
return getQuestionsBySortOrder(subjectSortOrder, false);
} else {
return getQuestionsBySortOrder(subjectSortOrder, true);
}
return getQuestionsBySortOrder(subjectSortOrder, session.isCreator(user));
}
@Override
......@@ -617,11 +626,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
subjectSortOrder = createSortOrder(session, "preparation", "");
}
final User user = userService.getCurrentUser();
if (session.isCreator(user)) {
return getQuestionsBySortOrder(subjectSortOrder, false);
} else {
return getQuestionsBySortOrder(subjectSortOrder, true);
}
return getQuestionsBySortOrder(subjectSortOrder, session.isCreator(user));
}
private Session getSession(final String sessionkey) {
......@@ -829,14 +834,14 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
return sortOrder.getSortType();
}
public SortOrder addQuestionToSortOrder(SortOrder sortOrder, Question question) {
public SortOrder addToSortOrder(SortOrder sortOrder, String toBeAdded) {
List<String> tmpList = sortOrder.getSortOrder();
tmpList.add(question.get_id());
tmpList.add(toBeAdded);
sortOrder.setSortOrder(tmpList);
if("alphabet".equals(sortOrder.getSortType())) {
sortOrder = alphabeticalSort(sortOrder);
}
return sortOrder;
return databaseDao.createOrUpdateSortOrder(sortOrder);
}
public List<Question> getQuestionsBySortOrder(SortOrder subjectSortOrder, boolean onlyActive) {
......
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