![JAR search and dependency download from the Maven repository](/logo.png)
org.jresearch.flexess.client.context.UserContext Maven / Gradle / Ivy
package org.jresearch.flexess.client.context;
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.annotation.Nonnull;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
public class UserContext extends AbstractUserContext implements Serializable {
private static final long serialVersionUID = 2498167262395290752L;
private String userId;
private final Map serializableUserObjects = new HashMap<>();
private final transient Map userObjects = new HashMap<>();
private final transient Map> roles = new HashMap<>();
private final transient Map models = new HashMap<>();
public UserContext(final String userId) {
super();
this.userId = userId;
}
@Override
public List getRoles() {
final List result = new LinkedList<>();
final Collection> modelsRoles = roles.values();
for (final List modelRoles : modelsRoles) {
result.addAll(modelRoles);
}
return result;
}
@Override
@Nonnull
public List getRoles(final String modelId) {
final List result = roles.get(modelId);
if (result == null) {
return Collections.emptyList();
}
return result;
}
@Override
public void setRoles(final String modelId, final List roles) {
assert modelId != null && roles != null;
this.roles.put(modelId, Collections.unmodifiableList(roles));
}
@Override
public String getUserId() {
return userId;
}
@Override
public void setUserId(final String userId) {
assert userId != null;
this.userId = userId;
}
@Override
public boolean equals(final Object arg0) {
if (!(arg0 instanceof String)) {
return false;
}
final UserContext comparable = (UserContext) arg0;
if (comparable.getUserId() == null && getUserId() == null) {
return true;
}
if (comparable.getUserId() != null && getUserId() != null) {
return getUserId().equals(comparable.getUserId());
}
return false;
}
@Override
public int hashCode() {
if (getUserId() == null) {
return 1;
}
return getUserId().hashCode();
}
@Override
public boolean isEnrolled() {
final Collection> values = roles.values();
for (final List list : values) {
if (!list.isEmpty()) {
return true;
}
}
return false;
}
/**
* @return true
if model is unique
*/
public boolean addSecurityModels(final String id, final EPackage model) {
assert id != null && model != null;
return models.put(id, model) == null;
}
@Override
public List getSecurityModels() {
return new LinkedList<>(models.values());
}
@Override
public EPackage getSecurityModel(final String modelId) {
return models.get(modelId);
}
@Override
public Collection getModelIds() {
return Collections.unmodifiableSet(models.keySet());
}
@Override
public boolean isValid() {
return !models.isEmpty();
}
@Override
public void putUserObject(final String key, final U userObject) {
if (userObject instanceof Serializable) {
serializableUserObjects.put(key, (Serializable) userObject);
} else {
userObjects.put(key, userObject);
}
}
@SuppressWarnings("unchecked")
@Override
public U getUserObject(final String key) {
return ((Map) (serializableUserObjects.containsKey(key) ? serializableUserObjects : userObjects)).get(key);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy