Skip to content
Snippets Groups Projects
Commit 6079d7c8 authored by Julian Hochstetter's avatar Julian Hochstetter
Browse files

Task #4040: getUserAnswer

parent 54e6e13c
No related merge requests found
......@@ -31,9 +31,9 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import de.thm.arsnova.entities.Answer;
import de.thm.arsnova.entities.Question;
import de.thm.arsnova.exceptions.NotFoundException;
import de.thm.arsnova.services.IQuestionService;
......@@ -128,4 +128,14 @@ public class QuestionController extends AbstractController {
logger.info(answers.toString());
return answers;
}
@RequestMapping(value="/session/{sessionKey}/question/{questionId}/myanswer", method=RequestMethod.GET)
@ResponseBody
public Answer getMyAnswer(@PathVariable String sessionKey, @PathVariable String questionId, HttpServletResponse response) {
Answer answer = questionService.getMyAnswer(sessionKey, questionId);
if(answer == null) {
throw new NotFoundException();
}
return answer;
}
}
......@@ -52,6 +52,7 @@ import com.fourspaces.couchdb.Document;
import com.fourspaces.couchdb.View;
import com.fourspaces.couchdb.ViewResults;
import de.thm.arsnova.entities.Answer;
import de.thm.arsnova.entities.Feedback;
import de.thm.arsnova.entities.LoggedIn;
import de.thm.arsnova.entities.PossibleAnswer;
......@@ -688,11 +689,38 @@ public class CouchDBDao implements IDatabaseDao {
}
return unanswered;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
logger.error("Error while retrieving unansweredquestions", e);
}
return null;
}
@Override
public Answer getMyAnswer(String sessionKey, String questionId) {
User user = userService.getCurrentUser();
if(user == null) {
throw new UnauthorizedException();
}
Session s = this.getSessionFromKeyword(sessionKey);
if(s == null) {
throw new NotFoundException();
}
try {
View view = new View("answer/by_question_and_user");
view.setKey("[" + URLEncoder.encode("\"" + questionId + "\",\"" + user.getUsername() + "\"", "UTF-8") + "]");
ViewResults results = this.getDatabase().view(view);
if(results.getResults().isEmpty()) {
throw new NotFoundException();
}
return (Answer) JSONObject.toBean(results.getJSONArray("rows").optJSONObject(0).optJSONObject("value"),
Answer.class);
} catch (UnsupportedEncodingException e) {
logger.error("Error while retrieving unansweredquestions", e);
}
return null;
}
}
......@@ -21,6 +21,7 @@ package de.thm.arsnova.dao;
import java.util.List;
import de.thm.arsnova.entities.Answer;
import de.thm.arsnova.entities.Feedback;
import de.thm.arsnova.entities.Question;
import de.thm.arsnova.entities.LoggedIn;
......@@ -64,4 +65,6 @@ public interface IDatabaseDao {
public List<String> getUnAnsweredQuestions(String sessionKey);
public Answer getMyAnswer(String sessionKey, String questionId);
}
\ No newline at end of file
package de.thm.arsnova.entities;
import java.util.ArrayList;
import java.util.List;
/*
"type":"skill_question_answer",
"sessionId":"61d33ea2ec73acefbba898c3510325c9",
"questionId":"61d33ea2ec73acefbba898c351040280",
"answerText":"2500 $",
"user":"jhtr80"
}}
*/
public class Answer {
private String _id;
private String _rev;
private String type;
private String sessionId;
private String questionId;
private String answerText;
private String user;
public Answer() {
this.type = "skill_question_answer";
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String get_rev() {
return _rev;
}
public void set_rev(String _rev) {
this._rev = _rev;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public String getQuestionId() {
return questionId;
}
public void setQuestionId(String questionId) {
this.questionId = questionId;
}
public String getAnswerText() {
return answerText;
}
public void setAnswerText(String answerText) {
this.answerText = answerText;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
@Override
public String toString() {
return "Answer type:'" + type + "'" +
", session: " + sessionId +
", question: " + questionId +
", answer: " + answerText +
", user: " + user;
}
}
......@@ -21,6 +21,7 @@ package de.thm.arsnova.services;
import java.util.List;
import de.thm.arsnova.entities.Answer;
import de.thm.arsnova.entities.Question;
public interface IQuestionService {
......@@ -37,4 +38,6 @@ public interface IQuestionService {
public void deleteQuestion(String sessionKey, String questionId);
public List<String> getUnAnsweredQuestions(String sessionKey);
public Answer getMyAnswer(String sessionKey, String questionId);
}
\ No newline at end of file
......@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service;
import de.thm.arsnova.annotation.Authenticated;
import de.thm.arsnova.dao.IDatabaseDao;
import de.thm.arsnova.entities.Answer;
import de.thm.arsnova.entities.Question;
import de.thm.arsnova.entities.Session;
import de.thm.arsnova.exceptions.NoContentException;
......@@ -93,4 +94,10 @@ public class QuestionService implements IQuestionService {
public List<String> getUnAnsweredQuestions(String sessionKey) {
return databaseDao.getUnAnsweredQuestions(sessionKey);
}
@Override
@Authenticated
public Answer getMyAnswer(String sessionKey, String questionId) {
return databaseDao.getMyAnswer(sessionKey, questionId);
}
}
......@@ -8,6 +8,7 @@ import java.util.concurrent.ConcurrentHashMap;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import de.thm.arsnova.entities.Answer;
import de.thm.arsnova.entities.Feedback;
import de.thm.arsnova.entities.LoggedIn;
import de.thm.arsnova.entities.Question;
......@@ -199,4 +200,10 @@ public class StubDatabaseDao implements IDatabaseDao {
return null;
}
@Override
public Answer getMyAnswer(String sessionKey, String questionId) {
// TODO Auto-generated method stub
return null;
}
}
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