@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public void saveOrUpdateUserEntries(final Integer userId, final UserXmlPreferencesMap data, final boolean checkAccess) { for (final Map.Entry<String, Object> prefEntry : data.getPersistentData().entrySet()) { final String key = prefEntry.getKey(); if (data.isModified(key) == true) { try { saveOrUpdate(userId, key, prefEntry.getValue(), checkAccess); } catch (final Throwable ex) { log.warn(ex.getMessage(), ex); } data.setModified(key, false); } } }
/** * @see org.projectforge.web.wicket.AbstractEditPage#afterSaveOrUpdate() */ @Override public AbstractSecuredBasePage afterSaveOrUpdate() { Collection<TeamCalDO> teamCalRestWhiteList = form.getTeamCalRestWhiteList(); Collection<TeamCalDO> teamCalRestBlackList = teamCalCache.getAllFullAccessCalendars(); teamCalRestBlackList.removeAll(teamCalRestWhiteList); Integer[] blackListIds = teamCalRestBlackList.stream().map(cal -> cal.getId()).toArray(size -> new Integer[size]); userXmlPreferencesDao.saveOrUpdate(ThreadLocalUserContext.getUserId(), TeamCalDO.TEAMCALRESTBLACKLIST, blackListIds, true); userXmlPreferencesDao.saveOrUpdate(ThreadLocalUserContext.getUserId(), "disableSnowEffectPermant", form.getDisableSnowEffectPermant(), true); userXmlPreferencesCache.putEntry(ThreadLocalUserContext.getUserId(), "disableSnowEffectPermant", form.getDisableSnowEffectPermant(), true); final HttpServletRequest request = WicketUtils.getHttpServletRequest(getRequest()); // Don't trust the form data, use logged in user from the data base instead. UserFilter.refreshUser(request); return super.afterSaveOrUpdate(); }
@Override protected void onEvent(final AjaxRequestTarget target) { userXmlPreferencesDao.saveOrUpdate(ThreadLocalUserContext.getUserId(), "disableSnowEffectPermant", Boolean.TRUE, true); userXmlPreferencesCache.putEntry(ThreadLocalUserContext.getUserId(), "disableSnowEffectPermant", Boolean.TRUE, true); setResponsePage(getPage().getPageClass()); } }));