package com.openkm.module.direct; import javax.jcr.Node; import javax.jcr.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.openkm.core.AccessDeniedException; import com.openkm.core.Config; import com.openkm.core.DatabaseException; import com.openkm.core.JcrSessionManager; import com.openkm.core.RepositoryException; import com.openkm.dao.UserConfigDAO; import com.openkm.dao.bean.UserConfig; import com.openkm.jcr.JCRUtils; import com.openkm.module.UserConfigModule; import com.openkm.util.UserActivity; public class DirectUserConfigModule implements UserConfigModule { private static Logger log = LoggerFactory.getLogger(DirectUserConfigModule.class); @Override public void setHome(String token, String nodePath) throws AccessDeniedException, RepositoryException, DatabaseException { log.debug("setHome({}, {})", token, nodePath); Session session = null; if (Config.SYSTEM_READONLY) { throw new AccessDeniedException("System is in read-only mode"); } try { if (token == null) { session = JCRUtils.getSession(); } else { session = JcrSessionManager.getInstance().get(token); } Node rootNode = session.getRootNode(); Node node = rootNode.getNode(nodePath.substring(1)); UserConfig uc = new UserConfig(); uc.setHomePath(nodePath); uc.setHomeUuid(node.getUUID()); uc.setHomeType(JCRUtils.getNodeType(node)); uc.setUser(session.getUserID()); UserConfigDAO.setHome(uc); // Activity log UserActivity.log(session.getUserID(), "USER_CONFIG_SET_HOME", node.getUUID(), nodePath); } catch (javax.jcr.RepositoryException e) { throw new RepositoryException(e.getMessage(), e); } catch (DatabaseException e) { throw e; } finally { if (token == null) JCRUtils.logout(session); } log.debug("setHome: void"); } @Override public UserConfig getConfig(String token) throws RepositoryException, DatabaseException { log.debug("getConfig({})", token); UserConfig ret = new UserConfig(); Session session = null; try { if (token == null) { session = JCRUtils.getSession(); } else { session = JcrSessionManager.getInstance().get(token); } ret = UserConfigDAO.findByPk(session, session.getUserID()); // Activity log UserActivity.log(session.getUserID(), "USER_CONFIG_GET_CONFIG", null, null); } catch (javax.jcr.RepositoryException e) { throw new RepositoryException(e.getMessage(), e); } finally { if (token == null) JCRUtils.logout(session); } log.debug("getConfig: {}", ret); return ret; } }