package com.constellio.app.ui.pages.base; import com.constellio.app.ui.entities.UserVO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.security.Principal; import java.util.*; import static com.constellio.app.ui.pages.base.VaadinSessionContext.*; public class HttpSessionContext extends BaseSessionContext { private Locale currentLocale; private HttpServletRequest request; private HttpSession session; public HttpSessionContext(HttpServletRequest request) { this.request = request; this.session = request.getSession(); } private Object getAttribute(String name) { return session.getAttribute(name); } private void setAttribute(String name, Object object) { session.setAttribute(name, object); } @Override public UserVO getCurrentUser() { return (UserVO) getAttribute(CURRENT_USER_ATTRIBUTE); } @Override public void setCurrentUser(UserVO user) { setAttribute(CURRENT_USER_ATTRIBUTE, user); } @Override public String getCurrentCollection() { return (String) getAttribute(CURRENT_COLLECTION_ATTRIBUTE); } @Override public void setCurrentCollection(String collection) { setAttribute(CURRENT_COLLECTION_ATTRIBUTE, collection); } @Override public Locale getCurrentLocale() { return currentLocale != null ? currentLocale : request.getLocale(); } @Override public void setCurrentLocale(Locale locale) { this.currentLocale = locale; } @Override public String getCurrentUserIPAddress() { return request.getRemoteAddr(); } @Override public Principal getUserPrincipal() { return (Principal) getAttribute(USER_PRINCIPAL_ATTRIBUTE); } @Override public boolean isForcedSignOut() { return Boolean.TRUE.equals(getAttribute(FORCED_SIGN_OUT_ATTRIBUTE)); } @Override public void setForcedSignOut(boolean forcedSignOut) { setAttribute(FORCED_SIGN_OUT_ATTRIBUTE, forcedSignOut); } @SuppressWarnings("unchecked") @Override protected List<String> ensureSelectedRecordIds() { List<String> selectedRecordIds = (List<String>) getAttribute(SELECTED_RECORD_IDS_ATTRIBUTE); if (selectedRecordIds == null) { selectedRecordIds = new ArrayList<>(); setAttribute(SELECTED_RECORD_IDS_ATTRIBUTE, selectedRecordIds); } return selectedRecordIds; } @SuppressWarnings("unchecked") @Override protected Map<String, Long> ensureSelectedRecordSchemaTypeCodes() { Map<String, Long> selectedRecordSchemaTypeCodes = (Map<String, Long>) getAttribute(SELECTED_RECORD_SCHEMA_TYPE_CODES_ATTRIBUTE); if (selectedRecordSchemaTypeCodes == null) { selectedRecordSchemaTypeCodes = new HashMap<>(); setAttribute(SELECTED_RECORD_SCHEMA_TYPE_CODES_ATTRIBUTE, selectedRecordSchemaTypeCodes); } return selectedRecordSchemaTypeCodes; } }