From 1368ca1ad3dc7d04d732a2b4a186b87ab615449e Mon Sep 17 00:00:00 2001 From: tekay <tom.kaesler@mni.thm.de> Date: Thu, 11 Feb 2016 13:33:08 +0100 Subject: [PATCH] implement exportSession including motds add constructors to transport classes to parse "main"class --- .../arsnova/controller/SessionController.java | 2 +- .../java/de/thm/arsnova/dao/CouchDBDao.java | 29 +++++- .../java/de/thm/arsnova/dao/IDatabaseDao.java | 2 + .../arsnova/entities/transport/Answer.java | 7 ++ .../transport/ImportExportSession.java | 94 +++++++++++++++++++ 5 files changed, 131 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 6269bda8..3e1e3737 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -272,7 +272,7 @@ public class SessionController extends PaginationController { @ApiOperation(value = "export sessions", nickname = "exportSession") @RequestMapping(value = "/export", method = RequestMethod.GET) public List<ImportExportSession> exportSession( - @ApiParam(value = "comma seperated list of sessionkeys", required = true) @PathVariable final String sessionkeys, + @ApiParam(value = "comma seperated list of sessionkeys", required = true) @RequestParam(value ="sessionkeys", defaultValue = "") final String sessionkeys, @ApiParam(value = "http servlet response", required = true) final HttpServletResponse response ) { List<ImportExportSession> sessions = new ArrayList<ImportExportSession>(); diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 3fdfbcf6..1307ea84 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1623,6 +1623,12 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware return getQuestions(view, session); } + @Override + public List<Question> getAllSkillQuestions(final Session session) { + final List<Question> questions = getQuestions(new NovaView("skill_question/by_session"), session); + return questions; + } + private List<Question> getQuestions(final NovaView view, final Session session) { view.setStartKeyArray(session.get_id()); view.setEndKeyArray(session.get_id(), "{}"); @@ -2189,8 +2195,27 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware } @Override - public ImportExportQuestion exportSession(String sessionkey) { - + public ImportExportSession exportSession(String sessionkey) { + ImportExportSession ies = new ImportExportSession(); + Session session = getDatabaseDao().getSessionFromKeyword(sessionkey); + ies.setSessionFromSessionObject(session); + List<Question> questionList = getDatabaseDao().getAllSkillQuestions(session); + for (Question q : questionList) { + List<de.thm.arsnova.entities.transport.Answer> aL = new ArrayList<de.thm.arsnova.entities.transport.Answer>(); + for (Answer a : this.getDatabaseDao().getAllAnswers(q)) { + de.thm.arsnova.entities.transport.Answer ta = new de.thm.arsnova.entities.transport.Answer(a); + aL.add(ta); + } + ies.addQuestionWithAnswers(q, aL); + } + List<de.thm.arsnova.entities.transport.InterposedQuestion> iL = new ArrayList<de.thm.arsnova.entities.transport.InterposedQuestion>(); + for (InterposedQuestion i : getDatabaseDao().getInterposedQuestions(session, 0, 0)) { + de.thm.arsnova.entities.transport.InterposedQuestion ti = new de.thm.arsnova.entities.transport.InterposedQuestion(i); + iL.add(ti); + } + ies.setFeedbackQuestions(iL); + ies.setMotds(getDatabaseDao().getMotdsForSession(session.getKeyword())); + return ies; } @Override diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 8b59feb7..70f67139 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -153,6 +153,8 @@ public interface IDatabaseDao { List<Question> getPreparationQuestionsForTeachers(Session session); + List<Question> getAllSkillQuestions(Session session); + int getLectureQuestionCount(Session session); int getFlashcardCount(Session session); diff --git a/src/main/java/de/thm/arsnova/entities/transport/Answer.java b/src/main/java/de/thm/arsnova/entities/transport/Answer.java index 133c0314..32d17963 100644 --- a/src/main/java/de/thm/arsnova/entities/transport/Answer.java +++ b/src/main/java/de/thm/arsnova/entities/transport/Answer.java @@ -41,6 +41,13 @@ public class Answer implements Serializable { private boolean abstention; + public Answer(de.thm.arsnova.entities.Answer a) { + answerSubject = a.getAnswerSubject(); + answerText = a.getAnswerText(); + answerImage = a.getAnswerImage(); + abstention = a.isAbstention(); + } + @ApiModelProperty(required = true, value = "used to display text answer") public String getAnswerText() { return answerText; diff --git a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java index 27698954..6a0dd46b 100644 --- a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java +++ b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java @@ -17,9 +17,11 @@ */ package de.thm.arsnova.entities.transport; +import java.util.ArrayList; import de.thm.arsnova.entities.Question; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.Motd; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -38,6 +40,13 @@ public class ImportExportSession { private List<InterposedQuestion> feedbackQuestions; + private List<Motd> motds; + + public ImportExportSession() { + questions = new ArrayList<ImportExportQuestion>(); + feedbackQuestions = new ArrayList<InterposedQuestion>(); + } + @ApiModelProperty(required = true, value = "used to display session") public ImportExportSesssion getSession() { return session; @@ -65,6 +74,30 @@ public class ImportExportSession { this.feedbackQuestions = feedbackQuestions; } + public List<Motd> getMotds() { + return motds; + } + + public void setMotds(List<Motd> mL) { + this.motds = mL; + } + + public void setSessionFromSessionObject(Session s) { + ImportExportSesssion iesession = new ImportExportSesssion(); + iesession.setName(s.getName()); + iesession.setShortName(s.getShortName()); + iesession.setActive(s.isActive()); + PublicPool p = new PublicPool(); + p.setPpFromSession(s); + iesession.setPublicPool(p); + session = iesession; + } + + public void addQuestionWithAnswers(Question q, List<Answer> aL) { + ImportExportQuestion ieq = new ImportExportQuestion(q); + ieq.setAnswers(aL); + } + public Session generateSessionEntity(User user) { final Session s = new Session(); // import fields @@ -100,6 +133,53 @@ public class ImportExportSession { private List<Answer> answers; + public ImportExportQuestion(Question q) { + setType(q.getType()); + setQuestionType(q.getQuestionType()); + setQuestionVariant(q.getQuestionVariant()); + setSubject(q.getSubject()); + setText(q.getText()); + setActive(q.isActive()); + setReleasedFor(q.getReleasedFor()); + setPossibleAnswers(q.getPossibleAnswers()); + setNoCorrect(q.isNoCorrect()); + setSessionId(q.getSessionId()); + setSessionKeyword(q.getSessionKeyword()); + setTimestamp(q.getTimestamp()); + setNumber(q.getNumber()); + setDuration(q.getDuration()); + setPiRound(q.getPiRound()); + setPiRoundEndTime(q.getPiRoundEndTime()); + setPiRoundStartTime(q.getPiRoundStartTime()); + setPiRoundFinished(q.isPiRoundFinished()); + setVotingDisabled(q.isVotingDisabled()); + setShowStatistic(q.isShowStatistic()); + setShowAnswer(q.isShowAnswer()); + setAbstention(q.isAbstention()); + setImage(q.getImage()); + setFcImage(q.getFcImage()); + setOffsetX(q.getOffsetX()); + setOffsetY(q.getOffsetY()); + setGridZoomLvl(q.getGridZoomLvl()); + setGridSizeX(q.getGridSizeX()); + setGridSizeY(q.getGridSizeY()); + setGridIsHidden(q.getGridIsHidden()); + setImgRotation(q.getImgRotation()); + setToggleFieldsLeft(q.getToggleFieldsLeft()); + setNumClickableFields(q.getNumClickableFields()); + setThresholdCorrectAnswers(q.getThresholdCorrectAnswers()); + setCvIsColored(q.getCvIsColored()); + setGridLineColor(q.getGridLineColor()); + setNumberOfDots(q.getNumberOfDots()); + setGridType(q.getGridType()); + setScaleFactor(q.getScaleFactor()); + setGridScaleFactor(q.getGridScaleFactor()); + setImageQuestion(q.isImageQuestion()); + setTextAnswerEnabled(q.isTextAnswerEnabled()); + setHint(q.getHint()); + setSolution(q.getSolution()); + } + @ApiModelProperty(required = true, value = " used to display answers") public List<Answer> getAnswers() { return answers; @@ -181,6 +261,20 @@ public class ImportExportSession { private String shortName; + public void setPpFromSession(Session s) { + ppAuthorName = s.getPpAuthorName(); + ppAuthorMail = s.getPpAuthorMail(); + ppUniversity = s.getPpUniversity(); + ppLogo = s.getPpLogo(); + ppSubject = s.getPpSubject(); + ppLicense = s.getPpLicense(); + ppLevel = s.getPpLevel(); + ppDescription = s.getPpDescription(); + ppFaculty = s.getPpFaculty(); + name = s.getName(); + shortName = s.getShortName(); + } + @ApiModelProperty(required = true, value = "used to display author name") public String getPpAuthorName() { return ppAuthorName; -- GitLab