package com.constellio.app.ui.pages.base;
import com.constellio.app.ui.application.ConstellioUI;
import com.constellio.app.ui.entities.UserVO;
import com.vaadin.server.VaadinSession;
import java.security.Principal;
import java.util.*;
public class VaadinSessionContext extends BaseSessionContext {
public static final String CURRENT_USER_ATTRIBUTE = VaadinSessionContext.class.getName() + ".currentUser";
public static final String CURRENT_COLLECTION_ATTRIBUTE = VaadinSessionContext.class.getName() + ".currentCollection";
public static final String USER_PRINCIPAL_ATTRIBUTE = VaadinSessionContext.class.getName() + ".userPrincipal";
public static final String FORCED_SIGN_OUT_ATTRIBUTE = VaadinSessionContext.class.getName() + ".forcedSignOut";
public static final String SELECTED_RECORD_IDS_ATTRIBUTE = VaadinSessionContext.class.getName() + ".selectedRecordIds";
public static final String SELECTED_RECORD_SCHEMA_TYPE_CODES_ATTRIBUTE = VaadinSessionContext.class.getName() + ".selectedRecordSchemaTypeCodes";
public VaadinSessionContext() {
}
private Object getAttribute(String name) {
VaadinSession vaadinSession = VaadinSession.getCurrent();
return vaadinSession.getSession().getAttribute(name);
}
private void setAttribute(String name, Object object) {
VaadinSession vaadinSession = VaadinSession.getCurrent();
vaadinSession.getSession().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 VaadinSession.getCurrent().getLocale();
}
@Override
public void setCurrentLocale(Locale locale) {
VaadinSession.getCurrent().setLocale(locale);
}
@Override
public String getCurrentUserIPAddress() {
return ConstellioUI.getCurrent().getPage().getWebBrowser().getAddress();
}
@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;
}
}