From 9f5151f1289786ac9ae93fcfd6a26396250d417e Mon Sep 17 00:00:00 2001 From: Katharina Staden <katharina.staden@mni.thm.de> Date: Mon, 8 Jun 2015 20:53:39 +0200 Subject: [PATCH] Retrieved @Cacheable and changed updateSession method in SessionService, now getting the session by keyword and set all fields that may have changed to a new value --- .../java/de/thm/arsnova/dao/CouchDBDao.java | 1 + .../thm/arsnova/services/SessionService.java | 36 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index f4a24c6d8..199a165e9 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -432,6 +432,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware } @Override + @Cacheable("sessions") public Session getSessionFromKeyword(final String keyword) { final NovaView view = new NovaView("session/by_keyword"); view.setKey(keyword); diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index b404910b3..170c19c11 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -313,7 +313,41 @@ public class SessionService implements ISessionService, ApplicationEventPublishe @Override @PreAuthorize("isAuthenticated() and hasPermission(#session, 'owner')") public Session updateSession(final String sessionkey, final Session session) { - return databaseDao.updateSession(session); + final Session existingSession = databaseDao.getSessionFromKeyword(sessionkey); + + existingSession.setActive(session.isActive()); + existingSession.setShortName(session.getShortName()); + existingSession.setPpAuthorName(session.getPpAuthorName()); + existingSession.setPpAuthorMail(session.getPpAuthorMail()); + existingSession.setShortName(session.getShortName()); + existingSession.setPpAuthorName(session.getPpAuthorName()); + existingSession.setPpFaculty(session.getPpFaculty()); + existingSession.setName(session.getName()); + existingSession.setPpUniversity(session.getPpUniversity()); + existingSession.setPpDescription(session.getPpDescription()); + existingSession.setPpLevel(session.getPpLevel()); + existingSession.setPpLicense(session.getPpLicense()); + existingSession.setPpSubject(session.getPpSubject()); + + if (session.getPpLogo() != null) { + if (session.getPpLogo().startsWith("http")) { + final String base64ImageString = imageUtils.encodeImageToString(session.getPpLogo()); + if (base64ImageString == null) { + throw new BadRequestException(); + } + existingSession.setPpLogo(base64ImageString); + } else { + existingSession.setPpLogo(session.getPpLogo()); + } + // base64 adds offset to filesize, formula taken from: http://en.wikipedia.org/wiki/Base64#MIME + final int fileSize = (int) ((existingSession.getPpLogo().length() - 814) / 1.37); + if (fileSize > uploadFileSizeByte) { + LOGGER.error("Could not save file. File is too large with " + fileSize + " Byte."); + throw new PayloadTooLargeException(); + } + } + + return databaseDao.updateSession(existingSession); } /* -- GitLab