public <T> T getDeserializedUserPreferencesByUserId(final Integer userId, final String key, final Class<T> returnClass) { return (T) deserialize(userId, getUserPreferencesByUserId(userId, key, true), false); }
/** * The annotations of the given classes will be processed by xstream which is used for marshalling and unmarshalling * user xml preferences. * * @param classes * @return this for chaining. * @see UserXmlPreferencesDao#processAnnotations(Class...) */ protected AbstractPlugin processUserXmlPreferencesAnnotations(final Class<?>... classes) { userXmlPreferencesDao.processAnnotations(classes); return this; }
/** * Register converters before marshaling and unmarshaling by XStream. * * @param daoClass Class of the dao. * @param doClass Class of the DO which will be converted. * @see UserXmlPreferencesBaseDOSingleValueConverter#UserXmlPreferencesBaseDOSingleValueConverter(Class, Class) */ public void registerUserXmlPreferencesConverter(final Class<? extends BaseDao<?>> daoClass, final Class<? extends BaseDO<?>> doClass) { userXmlPreferencesDao.registerConverter(daoClass, doClass, 10); }
@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); } } }
/** * Rest-Call for {@link TeamCalDao#getList(org.projectforge.core.BaseSearchFilter)} */ @GET @Path(RestPaths.LIST) @Produces(MediaType.APPLICATION_JSON) public Response getList(@QueryParam("fullAccess") final boolean fullAccess) { final TeamCalFilter filter = new TeamCalFilter(); if (fullAccess == true) { filter.setFullAccess(true); filter.setMinimalAccess(false); filter.setReadonlyAccess(false); } final List<TeamCalDO> list = teamCalDao.getList(filter); Integer[] teamCalBlackListIds = userXmlPreferencesDao .getDeserializedUserPreferencesByUserId(ThreadLocalUserContext.getUserId(), TeamCalDO.TEAMCALRESTBLACKLIST, Integer[].class); if(teamCalBlackListIds != null && teamCalBlackListIds.length > 0) { Arrays.stream(teamCalBlackListIds).forEach(calId -> list.remove(teamCalDao.getById(calId))); } final List<CalendarObject> result = new LinkedList<CalendarObject>(); if (list != null && list.size() > 0) { for (final TeamCalDO cal : list) { result.add(TeamCalDOConverter.getCalendarObject(cal, userRights)); } } final String json = JsonUtils.toJson(result); return Response.ok(json).build(); }
return; final Object userPrefsObj = userXmlPreferencesDao.deserialize(null, userPrefs, true); if (userPrefsObj == null || userPrefsObj instanceof Set == false) { return; newIds.add(newId); userXmlPreferencesDao.serialize(userPrefs, newIds); return;
UserXmlPreferencesDO userPrefs = getUserPreferencesByUserId(userId, key, checkAccess); final Date date = new Date(); if (userPrefs == null) { userPrefs.setKey(key); final String xml = serialize(userPrefs, entry); if (log.isDebugEnabled()) { log.debug("UserXmlPrefs serialize to db: " + xml);
/** * Throws AccessException if the context user is not admin user and not owner of the UserXmlPreferences, meaning the * given userId must be the id of the context user. * * @param userId */ public UserXmlPreferencesDO getUserPreferencesByUserId(final Integer userId, final String key, final boolean checkAccess) { if (checkAccess == true) { checkAccess(userId); } final List<UserXmlPreferencesDO> list = emgrFactory.runInTrans((emgr) -> { return emgr.selectAttached(UserXmlPreferencesDO.class, "select u from UserXmlPreferencesDO u where u.user.id = :userid and u.key = :key", "userid", userId, "key", key); }); Validate.isTrue(list.size() <= 1); if (list.size() == 1) { return list.get(0); } else return null; }
/** * Please use UserPreferenceHelper instead for correct handling of demo user's preferences! * * @see org.projectforge.business.user.UserXmlPreferencesMap#removeEntry(String) */ public Object removeEntry(final Integer userId, final String key) { final UserXmlPreferencesMap data = getUserPreferencesData(userId); if (data == null) { // Should only occur for the pseudo-first-login-user setting up the system. return null; } if (data.getPersistentData().containsKey(key) == true) { userXmlPreferencesDao.remove(userId, key); } else if (data.getVolatileData().containsKey(key) == false) { log.warn("Oups, user preferences object with key '" + key + "' is wether persistent nor volatile!"); } checkRefresh(); return data.removeEntry(key); }
final Object data = userXmlPreferencesDao.deserialize(null, userPrefs, true); buf.append("version "); buf.append(userPrefs.getVersion());
private synchronized void flushToDB(final Integer userId, final boolean checkAccess) { if (checkAccess == true) { if (userId.equals(ThreadLocalUserContext.getUserId()) == false) { log.error("User '" + ThreadLocalUserContext.getUserId() + "' has no access to write user preferences of other user '" + userId + "'."); // No access. return; } } PFUserDO user = emgrFactory.runInTrans(emgr -> { return emgr.selectByPk(PFUserDO.class, userId); }); if (AccessChecker.isDemoUser(user) == true) { // Do nothing for demo user. return; } final UserXmlPreferencesMap data = allPreferences.get(userId); if (data == null || data.isModified() == false) { return; } userXmlPreferencesDao.saveOrUpdateUserEntries(userId, data, checkAccess); }
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW, isolation = Isolation.REPEATABLE_READ) public void remove(final Integer userId, final String key) { if (accessChecker.isDemoUser(userId) == true) { // Do nothing. return; } final UserXmlPreferencesDO userPreferencesDO = getUserPreferencesByUserId(userId, key, true); if (userPreferencesDO != null) { emgrFactory.runInTrans(emgr -> { emgr.deleteAttached(emgr.selectByPkAttached(UserXmlPreferencesDO.class, userPreferencesDO.getId())); return null; }); } } }
xml = uncompressed; String sourceClassName = getSourceClassName(xml); String oldPackageName = null; String newPackageName = null;
/** * @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(); }
this.teamCalRestWhiteList = teamCalCache.getAllFullAccessCalendars(); Integer[] teamCalBlackListIds = userXmlPreferencesDao .getDeserializedUserPreferencesByUserId(ThreadLocalUserContext.getUserId(), TeamCalDO.TEAMCALRESTBLACKLIST, Integer[].class); if (teamCalBlackListIds != null && teamCalBlackListIds.length > 0) { Arrays.stream(teamCalBlackListIds).forEach(calId -> teamCalRestWhiteList.remove(teamCalCache.getCalendar(calId))); .getDeserializedUserPreferencesByUserId(ThreadLocalUserContext.getUserId(), "disableSnowEffectPermant", Boolean.class); final FieldsetPanel snowFieldSetSnow = gridBuilder.newFieldset(getString("user.myAccount.snow")); snowFieldSetSnow
return null; final Object userPrefsObj = userXmlPreferencesDao.deserialize(null, userPrefs, true); if (userPrefsObj == null || userPrefsObj instanceof Set == false) { return null; newIds.add(newId); userXmlPreferencesDao.serialize(userPrefs, newIds); return null;
/** * Throws AccessException if the context user is not admin user and not owner of the UserXmlPreferences, meaning the * given userId must be the id of the context user. * * @param userId */ @Transactional(readOnly = true, propagation = Propagation.SUPPORTS) public List<UserXmlPreferencesDO> getUserPreferencesByUserId(final Integer userId) { checkAccess(userId); return PfEmgrFactory.get().runInTrans((emgr) -> { return emgr.select(UserXmlPreferencesDO.class, "select u from UserXmlPreferencesDO u where u.user.id = :userid", "userid", userId); }); }
@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()); } }));
/** * Please use UserPreferenceHelper instead for correct handling of demo user's preferences! * * @param userId * @return */ public synchronized UserXmlPreferencesMap ensureAndGetUserPreferencesData(final Integer userId) { UserXmlPreferencesMap data = getUserPreferencesData(userId); if (data == null) { data = new UserXmlPreferencesMap(); data.setUserId(userId); final List<UserXmlPreferencesDO> userPrefs = userXmlPreferencesDao.getUserPreferencesByUserId(userId); for (final UserXmlPreferencesDO userPref : userPrefs) { final Object value = userXmlPreferencesDao.deserialize(userId, userPref, true); data.putEntry(userPref.getKey(), value, true); } this.allPreferences.put(userId, data); } return data; }
/** * Register converters before marshaling and unmarshaling by XStream. * * @param daoClass Class of the dao. * @param doClass Class of the DO which will be converted. * @param priority The priority needed by xtream for using converters in the demanded order. * @see UserXmlPreferencesBaseDOSingleValueConverter#UserXmlPreferencesBaseDOSingleValueConverter(Class, Class) */ public void registerUserXmlPreferencesConverter(final Class<? extends BaseDao<?>> daoClass, final Class<? extends BaseDO<?>> doClass, final int priority) { userXmlPreferencesDao.registerConverter(daoClass, doClass, priority); }