Skip to content
Snippets Groups Projects
Commit 6b3b3237 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

UserView class removed

parent dcb2d26b
No related branches found
No related tags found
1 merge request!207Resolve "remove unused JSF code"
Showing with 28 additions and 1387 deletions
......@@ -4,7 +4,6 @@ import java.awt.Color;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Random;
......@@ -37,10 +36,6 @@ import lcsb.mapviewer.services.interfaces.IConfigurationService;
import lcsb.mapviewer.services.interfaces.ILogService;
import lcsb.mapviewer.services.interfaces.ILogService.LogParams;
import lcsb.mapviewer.services.interfaces.IUserService;
import lcsb.mapviewer.services.view.PrivilegeView;
import lcsb.mapviewer.services.view.UserView;
import lcsb.mapviewer.services.view.UserView.UserProjectPrivilegeView;
import lcsb.mapviewer.services.view.UserViewFactory;
/**
* Implementation of the service that manages users.
......@@ -77,12 +72,6 @@ public class UserService implements IUserService {
@Autowired
private SessionRegistry sessionRegistry;
/**
* Factory object for {@link UserView} elements.
*/
@Autowired
private UserViewFactory userViewFactory;
/**
* Service that provides password encoding.
*/
......@@ -175,79 +164,6 @@ public class UserService implements IUserService {
return result;
}
@Override
public List<UserView> getAllUserRows() {
List<Project> projects = projectDao.getAll();
List<UserView> result = new ArrayList<>();
List<User> fullList = userDao.getAll();
for (User user : fullList) {
result.add(userViewFactory.create(user, projects));
}
return result;
}
@Override
public UserView getUserRow(User user) {
List<Project> projects = projectDao.getAll();
return userViewFactory.create(user, projects);
}
@Override
public void updateUser(UserView userRow) {
User user = null;
if (userRow.getIdObject() == null || userRow.getIdObject() == 0) {
user = new User();
user.setLogin(userRow.getLogin());
} else {
user = getUserById(userRow.getIdObject());
}
if (userRow.getPassword() != null && !userRow.getPassword().trim().equals("")) {
user.setCryptedPassword(passwordEncoder.encode(userRow.getPassword()));
}
user.setEmail(userRow.getEmail());
user.setName(userRow.getName());
user.setSurname(userRow.getSurname());
if (user.getId() == null) {
addUser(user);
} else {
updateUser(user);
}
userRow.setIdObject(user.getId());
for (PrivilegeView pRow : userRow.getBasicPrivileges()) {
if (pRow.getNumeric()) {
setUserPrivilege(user, new BasicPrivilege(pRow.getLevel(), pRow.getType(), user));
} else if (pRow.getSelected()) {
setUserPrivilege(user, new BasicPrivilege(1, pRow.getType(), user));
} else {
setUserPrivilege(user, new BasicPrivilege(0, pRow.getType(), user));
}
}
for (UserProjectPrivilegeView upRow : userRow.getProjectPrivileges()) {
for (PrivilegeView pRow : upRow.getProjectPrivileges()) {
Project project = projectDao.getById(upRow.getIdObject());
if (pRow.getNumeric()) {
setUserPrivilege(user, new ObjectPrivilege(project, pRow.getLevel(), pRow.getType(), user));
} else if (pRow.getSelected()) {
setUserPrivilege(user, new ObjectPrivilege(project, 1, pRow.getType(), user));
} else {
setUserPrivilege(user, new ObjectPrivilege(project, 0, pRow.getType(), user));
}
}
}
}
@Override
public void deleteUser(UserView selectedUser) {
if (selectedUser.getIdObject() != null && selectedUser.getIdObject() != 0) {
deleteUser(getUserById(selectedUser.getIdObject()));
}
}
@Override
public void dropPrivilegesForObjectType(PrivilegeType type, int id) {
IntegerComparator integerComparator = new IntegerComparator();
......@@ -324,11 +240,6 @@ public class UserService implements IUserService {
return -1;
}
@Override
public void addUser(UserView userRow) {
updateUser(userRow);
}
@Override
public void setUserPrivilege(User user, PrivilegeType type, Integer value) {
BasicPrivilege privilege = new BasicPrivilege(value, type, user);
......@@ -417,18 +328,6 @@ public class UserService implements IUserService {
this.passwordEncoder = passwordEncoder;
}
@Override
public UserView createEmptyUserRow() {
return userViewFactory.create(null);
}
@Override
public void updateUsers(Collection<UserView> users) {
for (UserView user : users) {
updateUser(user);
}
}
/**
* @param password
* input password
......
package lcsb.mapviewer.services.interfaces;
import java.util.Collection;
import java.util.List;
import lcsb.mapviewer.commands.ColorExtractor;
......@@ -8,7 +7,6 @@ import lcsb.mapviewer.model.user.BasicPrivilege;
import lcsb.mapviewer.model.user.PrivilegeType;
import lcsb.mapviewer.model.user.User;
import lcsb.mapviewer.services.SecurityException;
import lcsb.mapviewer.services.view.UserView;
/**
* Service that manages users.
......@@ -130,48 +128,6 @@ public interface IUserService {
*/
User getUserById(int id);
/**
* Returns user views for all users.
*
* @return list of user {@link lcsb.mapviewer.services.view.AbstractView views}
* for all users
*/
List<UserView> getAllUserRows();
/**
* @param user
* user that will have view.
* @return view for one user.
*/
UserView getUserRow(User user);
/**
* Updates user from user {@link lcsb.mapviewer.services.view.AbstractView
* view}.
*
* @param selectedUser
* user {@link lcsb.mapviewer.services.view.AbstractView view} to
* update
*/
void updateUser(UserView selectedUser);
/**
* Removes user based on user {@link lcsb.mapviewer.services.view.AbstractView
* view}.
*
* @param selectedUser
* user {@link lcsb.mapviewer.services.view.AbstractView view} to be
* removed
*/
void deleteUser(UserView selectedUser);
/**
* Creates empty view.
*
* @return empty user {@link lcsb.mapviewer.services.view.AbstractView view} .
*/
UserView createEmptyUserRow();
/**
* Drops privileges for every user on the given object and type.
*
......@@ -182,14 +138,6 @@ public interface IUserService {
*/
void dropPrivilegesForObjectType(PrivilegeType type, int objectId);
/**
* Adds user from user view.
*
* @param selectedUser
* user view representation that should be added
*/
void addUser(UserView selectedUser);
/**
* Adds privilege to the user.
*
......@@ -200,16 +148,6 @@ public interface IUserService {
*/
void setUserPrivilege(User user, PrivilegeType type, Integer value);
/**
* Updates users from list of user
* {@link lcsb.mapviewer.services.view.AbstractView view}.
*
* @param users
* user {@link lcsb.mapviewer.services.view.AbstractView views} to
* update
*/
void updateUsers(Collection<UserView> users);
/**
* @param password
* input password
......
package lcsb.mapviewer.services.view;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.ListDataModel;
import lcsb.mapviewer.common.comparator.IntegerComparator;
import lcsb.mapviewer.model.Project;
import lcsb.mapviewer.model.map.layout.Layout;
import lcsb.mapviewer.model.user.PrivilegeType;
import lcsb.mapviewer.model.user.User;
import org.apache.log4j.Logger;
import org.primefaces.model.SelectableDataModel;
/**
* This class represents view of the {@link User} that is available on the
* client side.
*
* @author Piotr Gawron
*
*/
public class UserView extends AbstractView<User> implements Comparable<UserView>, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Default class logger.
*/
private static Logger logger = Logger.getLogger(UserView.class);
/**
* This data model is extension of faces {@link ListDataModel} and implements
* {@link SelectableDataModel} from primefaces library. It allows client to
* create a table (in xhtml) that allows to select element on it and call select
* event associated with the row. The model operates on
* {@link UserProjectPrivilegeView} that describe set of privileges to single
* project.
*
* @author Piotr Gawron
*
*/
public class ProjectDataModel extends ListDataModel<UserProjectPrivilegeView>
implements SelectableDataModel<UserProjectPrivilegeView>, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public ProjectDataModel() {
}
/**
* Constructor that initialize the data.
*
* @param data
* data used in the model
*/
public ProjectDataModel(List<UserProjectPrivilegeView> data) {
super(data);
}
@Override
public Object getRowKey(UserProjectPrivilegeView object) {
return object.toString();
}
@SuppressWarnings("unchecked")
@Override
public UserProjectPrivilegeView getRowData(String rowKey) {
List<UserProjectPrivilegeView> privileges = (List<UserProjectPrivilegeView>) getWrappedData();
for (UserProjectPrivilegeView privilege : privileges) {
if ((privilege.toString()).equals(rowKey)) {
return privilege;
}
}
return null;
}
}
/**
* Class representing prvileges to the specific project.
*
* @author Piotr Gawron
*
*/
public class UserProjectPrivilegeView extends AbstractView<Project> implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* {@link Project#projectId Project identifier}.
*/
private String projectId;
/**
* List of privileges to the project.
*/
private List<PrivilegeView> projectPrivileges = new ArrayList<PrivilegeView>();
/**
* List of layouts with privileges.
*/
private List<UserLayoutPrivilege> layoutPrivileges = new ArrayList<UserLayoutPrivilege>();
/**
* Constructor that creates view for the project.
*
* @param project
* originasl project
*/
public UserProjectPrivilegeView(Project project) {
super(project);
this.projectId = project.getProjectId();
}
/**
* Default constructor.
*/
public UserProjectPrivilegeView() {
super(null);
}
/**
* @return the projectId
* @see #projectId
*/
public String getProjectId() {
return projectId;
}
/**
* @param projectId
* the projectId to set
* @see #projectId
*/
public void setProjectId(String projectId) {
this.projectId = projectId;
}
/**
* @return the projectPrivileges
* @see #projectPrivileges
*/
public List<PrivilegeView> getProjectPrivileges() {
return projectPrivileges;
}
/**
* @param projectPrivileges
* the projectPrivileges to set
* @see #projectPrivileges
*/
public void setProjectPrivileges(List<PrivilegeView> projectPrivileges) {
this.projectPrivileges = projectPrivileges;
}
/**
* @return the layoutPrivileges
* @see #layoutPrivileges
*/
public List<UserLayoutPrivilege> getLayoutPrivileges() {
return layoutPrivileges;
}
/**
* @param layoutPrivileges
* the layoutPrivileges to set
* @see #layoutPrivileges
*/
public void setLayoutPrivileges(List<UserLayoutPrivilege> layoutPrivileges) {
this.layoutPrivileges = layoutPrivileges;
}
/**
* Returns view of the {@link Privilege} for a given {@link PrivilegeType}.
*
* @param pt
* ttype of privilege
* @return view of the {@link Privilege} for a given {@link PrivilegeType}
*/
public PrivilegeView getProjectPrivilegeByPrivilegeType(PrivilegeType pt) {
for (PrivilegeView pv : projectPrivileges) {
if (pv.getType() == pt) {
return pv;
}
}
logger.warn("Cannot find " + pt + " for projectID: " + this.getIdObject() + " (" + this.getProjectId()
+ "). UserId: " + UserView.this.getIdObject() + " (" + UserView.this.getLogin() + ")");
return null;
}
}
/**
* Class representing prvileges to the specific
* {@link lcsb.mapviewer.db.model.map.layout.Layout Layout}.
*
* @author Piotr Gawron
*
*/
public class UserLayoutPrivilege extends AbstractView<Layout> {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Name of the layout.
*/
private String layoutName;
/**
* List of privileges for the layout.
*/
private List<PrivilegeView> layoutPrivileges = new ArrayList<PrivilegeView>();
/**
* Default constructor.
*
* @param layout
* object for which the privilege set is created
*/
protected UserLayoutPrivilege(Layout layout) {
super(layout);
}
/**
* Default constructor. Should be used only for deserialization.
*/
protected UserLayoutPrivilege() {
}
/**
* @return the layoutName
* @see #layoutName
*/
public String getLayoutName() {
return layoutName;
}
/**
* @param layoutName
* the layoutName to set
* @see #layoutName
*/
public void setLayoutName(String layoutName) {
this.layoutName = layoutName;
}
/**
* @return the layoutPrivileges
* @see #layoutPrivileges
*/
public List<PrivilegeView> getLayoutPrivileges() {
return layoutPrivileges;
}
/**
* @param layoutPrivileges
* the layoutPrivileges to set
* @see #layoutPrivileges
*/
public void setLayoutPrivileges(List<PrivilegeView> layoutPrivileges) {
this.layoutPrivileges = layoutPrivileges;
}
}
/**
* Use login.
*/
private String login;
/**
* User password (can be set only by the client side, when view is created
* password should be set to empty, simple precaution not to reveal passwords).
*/
private String password;
/**
* User password 2.
*/
private String password2;
/**
* Old password.
*/
private String oldPassword;
/**
* Old Encrypted password.
*/
private String cryptedPassword;
/**
* Name of the user.
*/
private String name;
/**
* Family name of the user.
*/
private String surname;
/**
* User email address.
*/
private String email;
/**
* List of general privielges.
*/
private List<PrivilegeView> basicPrivileges = new ArrayList<PrivilegeView>();
/**
* List of privileges divided by the projects.
*/
private List<UserProjectPrivilegeView> projectPrivileges = new ArrayList<UserProjectPrivilegeView>();
/**
* Data model used for managing project privileges.
*/
private ProjectDataModel pdm = null;
/**
* Constructor that create user view from the user data.
*
* @param user
* orignal user
*/
protected UserView(User user) {
super(user);
this.login = user.getLogin();
this.password = "";
this.password2 = "";
this.oldPassword = "";
this.cryptedPassword = user.getCryptedPassword();
this.name = user.getName();
this.surname = user.getSurname();
this.email = user.getEmail();
}
/**
* Default constructor.
*/
protected UserView() {
super(null);
}
/**
* Returns object with privileges for the given project.
*
* @param projectId
* identifier of the project
* @return object with privileges for the given project
*/
public UserProjectPrivilegeView getProjectPrivilegeByProjectId(Integer projectId) {
IntegerComparator comparator = new IntegerComparator();
for (UserProjectPrivilegeView projectPrivilege : getProjectPrivileges()) {
if (comparator.compare(projectPrivilege.getIdObject(), projectId) == 0) {
return projectPrivilege;
}
}
if (projectId == null) {
logger.warn("Cannot find default project privileges. User: " + getIdObject() + " (" + getLogin() + ").");
} else if (projectId != 0) {
logger.warn("Cannot find project privileges for projectID: " + projectId + ". User: " + getIdObject() + " ("
+ getLogin() + ").");
}
return null;
}
/**
*
* @return {@link #pdm}
*/
public ProjectDataModel getPdm() {
if (pdm == null) {
pdm = new ProjectDataModel(projectPrivileges);
}
return pdm;
}
/**
*
* @param pdm
* new {@link #pdm} object
*/
public void setPdm(ProjectDataModel pdm) {
this.pdm = pdm;
}
/**
* Return object with privileges for layout given in the parameter.
*
* @param layoutId
* identifier of the layout
* @return object with privileges for layout
*/
public UserLayoutPrivilege getLayoutPrivilegeByLayoutId(int layoutId) {
for (UserProjectPrivilegeView projectPrivilege : getProjectPrivileges()) {
for (UserLayoutPrivilege layoutPrivilege : projectPrivilege.getLayoutPrivileges()) {
if (layoutPrivilege.getIdObject() == layoutId) {
return layoutPrivilege;
}
}
}
logger.warn("Cannot find project privileges for layoutID: " + layoutId);
return null;
}
@Override
public int compareTo(UserView o) {
IntegerComparator comparator = new IntegerComparator();
if (o == null) {
comparator.compare(getIdObject(), null);
}
return comparator.compare(getIdObject(), o.getIdObject());
}
/**
* @return the login
* @see #login
*/
public String getLogin() {
return login;
}
/**
* @param login
* the login to set
* @see #login
*/
public void setLogin(String login) {
this.login = login;
}
/**
* @return the password
* @see #password
*/
public String getPassword() {
return password;
}
/**
* @param password
* the password to set
* @see #password
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return the name
* @see #name
*/
public String getName() {
return name;
}
/**
* @param name
* the name to set
* @see #name
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the surname
* @see #surname
*/
public String getSurname() {
return surname;
}
/**
* @param surname
* the surname to set
* @see #surname
*/
public void setSurname(String surname) {
this.surname = surname;
}
/**
* @return the email
* @see #email
*/
public String getEmail() {
return email;
}
/**
* @param email
* the email to set
* @see #email
*/
public void setEmail(String email) {
this.email = email;
}
/**
* @return the basicPrivileges
* @see #basicPrivileges
*/
public List<PrivilegeView> getBasicPrivileges() {
return basicPrivileges;
}
/**
* @param basicPrivileges
* the basicPrivileges to set
* @see #basicPrivileges
*/
public void setBasicPrivileges(List<PrivilegeView> basicPrivileges) {
this.basicPrivileges = basicPrivileges;
}
/**
* @return the projectPrivileges
* @see #projectPrivileges
*/
public List<UserProjectPrivilegeView> getProjectPrivileges() {
return projectPrivileges;
}
/**
* @param projectPrivileges
* the projectPrivileges to set
* @see #projectPrivileges
*/
public void setProjectPrivileges(List<UserProjectPrivilegeView> projectPrivileges) {
this.projectPrivileges = projectPrivileges;
}
/**
* @return old password as typed by the user.
*/
public String getOldPassword() {
return oldPassword;
}
/**
* @param oldPassword
* the field for the user to put in the old password,
*/
public void setOldPassword(String oldPassword) {
this.oldPassword = oldPassword;
}
/**
* @return password crypted and stored in DB.
*/
public String getCryptedPassword() {
return cryptedPassword;
}
/**
* @param cryptedPassword
* crypted password stored in DB
*/
public void setCryptedPassword(String cryptedPassword) {
this.cryptedPassword = cryptedPassword;
}
/**
* @return password2.
*/
public String getPassword2() {
return password2;
}
/**
* @param password2
* to verify that the password match.
*/
public void setPassword2(String password2) {
this.password2 = password2;
}
}
package lcsb.mapviewer.services.view;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import lcsb.mapviewer.model.Project;
import lcsb.mapviewer.model.map.layout.Layout;
import lcsb.mapviewer.model.user.BasicPrivilege;
import lcsb.mapviewer.model.user.ObjectPrivilege;
import lcsb.mapviewer.model.user.PrivilegeType;
import lcsb.mapviewer.model.user.User;
import lcsb.mapviewer.persist.dao.ProjectDao;
import lcsb.mapviewer.services.utils.InvalidPrivilegeException;
import lcsb.mapviewer.services.view.UserView.UserLayoutPrivilege;
import lcsb.mapviewer.services.view.UserView.UserProjectPrivilegeView;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import lcsb.mapviewer.common.exception.NotImplementedException;
import com.google.gson.Gson;
/**
* Factory class for {@link UserView} class.
*
* @author Piotr Gawron
*
*/
public class UserViewFactory extends AbstractViewFactory<User, UserView> {
/**
* Default class logger.
*/
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(UserViewFactory.class);
/**
* Data access object for projects.
*/
@Autowired
private ProjectDao projectDao;
/**
* Factory object for {@link PrivilegeView} elements.
*/
@Autowired
private PrivilegeViewFactory privilegeViewFactory;
@Override
public UserView create(User user) {
return create(user, projectDao.getAll());
}
/**
* Creates {@link UserView} obejct for given user and given list of projects.
*
* @param user
* object for which {@link UserView} element will be created
* @param projects
* list of project for which privileges will be created as
* {@link PrivilegeView} elements in the result
* @return {@link UserView} obejct for given user
*/
public UserView create(User user, List<Project> projects) {
UserView result = null;
if (user == null) {
result = new UserView();
for (Project project : projects) {
result.getProjectPrivileges().add(result.new UserProjectPrivilegeView(project));
}
for (PrivilegeType type : getBasicTypes()) {
result.getBasicPrivileges().add(privilegeViewFactory.create(type));
}
for (UserProjectPrivilegeView projectPrivilege : result.getProjectPrivileges()) {
for (PrivilegeType type : getObjectTypes()) {
if (type.getPrivilegeObjectType().equals(Project.class)) {
projectPrivilege.getProjectPrivileges().add(privilegeViewFactory.create(type));
}
}
}
} else {
result = new UserView(user);
for (Project project : projects) {
result.getProjectPrivileges().add(result.new UserProjectPrivilegeView(project));
}
setPrivilegeStatusFromDb(user, result);
createUnknownPrivileges(result);
}
Collections.sort(result.getBasicPrivileges());
for (UserProjectPrivilegeView row1 : result.getProjectPrivileges()) {
Collections.sort(row1.getProjectPrivileges());
}
return result;
}
/**
* Creates privileges for user that doesn't exists in database.
*
* @param row
* user for which we want to add missing privileges
*/
private void createUnknownPrivileges(UserView row) {
Set<PrivilegeType> knownPrivileges = new HashSet<PrivilegeType>();
for (PrivilegeView privilege : row.getBasicPrivileges()) {
knownPrivileges.add(privilege.getType());
}
for (PrivilegeType type : getBasicTypes()) {
if (!knownPrivileges.contains(type)) {
row.getBasicPrivileges().add(privilegeViewFactory.create(type));
}
}
for (UserProjectPrivilegeView projectPrivilege : row.getProjectPrivileges()) {
knownPrivileges.clear();
for (PrivilegeView privilege : projectPrivilege.getProjectPrivileges()) {
knownPrivileges.add(privilege.getType());
}
for (PrivilegeType type : getObjectTypes()) {
if (type.getPrivilegeObjectType().equals(Project.class)) {
if (!knownPrivileges.contains(type)) {
projectPrivilege.getProjectPrivileges().add(privilegeViewFactory.create(type));
}
}
}
}
}
/**
* Method that assigns privileges from original user object into view
* representation userView.
*
* @param user
* original object retrieved from database
* @param userView
* representation of the user passed later on to higher layer
*/
private void setPrivilegeStatusFromDb(User user, UserView userView) {
for (BasicPrivilege privilege : user.getPrivileges()) {
if (privilege.getClass().equals(BasicPrivilege.class)) {
userView.getBasicPrivileges().add(privilegeViewFactory.create(privilege));
} else if (privilege.getClass().equals(ObjectPrivilege.class)) {
if (privilege.getType().getPrivilegeObjectType().equals(Project.class)) {
Integer projectId = ((ObjectPrivilege) privilege).getIdObject();
UserProjectPrivilegeView projectPrivilege = userView.getProjectPrivilegeByProjectId(projectId);
if (projectPrivilege != null) {
projectPrivilege.getProjectPrivileges().add(privilegeViewFactory.create(privilege));
}
} else if (privilege.getType().getPrivilegeObjectType().equals(Layout.class)) {
int layoutId = ((ObjectPrivilege) privilege).getIdObject();
UserLayoutPrivilege layoutPrivilege = userView.getLayoutPrivilegeByLayoutId(layoutId);
if (layoutPrivilege != null) {
layoutPrivilege.getLayoutPrivileges().add(privilegeViewFactory.create(privilege));
}
} else {
throw new InvalidPrivilegeException(
"Unknown class for object privilege: " + privilege.getType().getPrivilegeObjectType());
}
} else {
throw new InvalidPrivilegeException("Unknown privilege type: " + privilege.getType());
}
}
}
/**
* Returns list of basic privilege types (privileges that doesn't refer to
* another object).
*
* @return list of basic privilege types
*/
public List<PrivilegeType> getBasicTypes() {
if (basicTypes == null) {
fillTypeList();
}
return basicTypes;
}
/**
* List of type privileges that refers to {@link BasicPrivilege} class.
*/
private List<PrivilegeType> basicTypes = null;
/**
* List of type privileges that refers to {@link ObjectPrivilege} class.
*/
private List<PrivilegeType> objectTypes = null;
/**
* Returns list of object privilege types (privileges that refer to another
* object).
*
* @return list of object privilege types
*/
public List<PrivilegeType> getObjectTypes() {
if (objectTypes == null) {
fillTypeList();
}
return objectTypes;
}
/**
* This method initializes {@link #basicTypes} and {@link #objectTypes} lists.
*/
private void fillTypeList() {
basicTypes = new ArrayList<PrivilegeType>();
objectTypes = new ArrayList<PrivilegeType>();
PrivilegeType[] types = PrivilegeType.values();
for (PrivilegeType privilegeType : types) {
if (privilegeType.getPrivilegeClassType().equals(BasicPrivilege.class)) {
basicTypes.add(privilegeType);
} else if (privilegeType.getPrivilegeClassType().equals(ObjectPrivilege.class)) {
objectTypes.add(privilegeType);
} else {
throw new InvalidPrivilegeException("Unknown privilege type: " + privilegeType.getPrivilegeClassType());
}
}
}
@Override
public String createGson(UserView object) {
return new Gson().toJson(object);
}
@Override
public User viewToObject(UserView view) {
throw new NotImplementedException();
}
}
......@@ -62,7 +62,6 @@
<bean id="PubmedAnnotatedElementsViewFactory" class="lcsb.mapviewer.services.view.PubmedAnnotatedElementsViewFactory"/>
<bean id="ReferenceGenomeViewFactory" class="lcsb.mapviewer.services.view.ReferenceGenomeViewFactory"/>
<bean id="ReferenceGenomeGeneMappingViewFactory" class="lcsb.mapviewer.services.view.ReferenceGenomeGeneMappingViewFactory"/>
<bean id="UserViewFactory" class="lcsb.mapviewer.services.view.UserViewFactory"/>
<bean id="FullAliasViewFactory" class="lcsb.mapviewer.services.search.data.FullAliasViewFactory"/>
<bean id="FullReactionViewFactory" class="lcsb.mapviewer.services.search.data.FullReactionViewFactory"/>
......
......@@ -7,35 +7,23 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.test.annotation.Rollback;
import lcsb.mapviewer.common.exception.InvalidArgumentException;
import lcsb.mapviewer.model.Project;
import lcsb.mapviewer.model.user.BasicPrivilege;
import lcsb.mapviewer.model.user.ObjectPrivilege;
import lcsb.mapviewer.model.user.PrivilegeType;
import lcsb.mapviewer.model.user.User;
import lcsb.mapviewer.services.ServiceTestFunctions;
import lcsb.mapviewer.services.view.PrivilegeView;
import lcsb.mapviewer.services.view.UserView;
import lcsb.mapviewer.services.view.UserView.UserProjectPrivilegeView;
import lcsb.mapviewer.services.view.UserViewFactory;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
@Rollback(true)
public class UserServiceTest extends ServiceTestFunctions {
static Logger logger = Logger.getLogger(UserServiceTest.class);
@Autowired
UserViewFactory userViewFactory;
@Before
public void setUp() throws Exception {
createUser();
......@@ -175,274 +163,4 @@ public class UserServiceTest extends ServiceTestFunctions {
throw e;
}
}
@Test
public void testGetAllUserList() throws Exception {
try {
User user2 = new User();
user2.setLogin("login");
userService.addUser(user2);
Project project = new Project();
projectDao.add(project);
ObjectPrivilege privilege = new ObjectPrivilege();
privilege.setLevel(1);
privilege.setType(PrivilegeType.VIEW_PROJECT);
privilege.setIdObject(project.getId());
userService.setUserPrivilege(user2, privilege);
List<UserView> list = userService.getAllUserRows();
UserView currentUser = null;
for (UserView userRow : list) {
if (userRow.getIdObject() == user2.getId()) {
currentUser = userRow;
}
}
assertNotNull(currentUser);
assertEquals(user2.getLogin(), currentUser.getLogin());
PrivilegeType types[] = PrivilegeType.values();
List<BasicPrivilege> basicTypes = new ArrayList<BasicPrivilege>();
List<ObjectPrivilege> projectObjectTypes = new ArrayList<ObjectPrivilege>();
for (PrivilegeType privilegeType : types) {
if (privilegeType.getPrivilegeClassType().equals(BasicPrivilege.class)) {
basicTypes.add(privilegeType.getPrivilegeClassType().newInstance());
} else if (privilegeType.getPrivilegeClassType().equals(ObjectPrivilege.class)) {
if (privilegeType.getPrivilegeObjectType().equals(Project.class)) {
projectObjectTypes.add((ObjectPrivilege) privilegeType.getPrivilegeClassType().newInstance());
}
}
}
assertEquals(basicTypes.size(), currentUser.getBasicPrivileges().size());
long projectCount = projectDao.getCount();
assertEquals(projectCount, currentUser.getProjectPrivileges().size());
UserProjectPrivilegeView currentProject = null;
for (UserProjectPrivilegeView projectPrivilege : currentUser.getProjectPrivileges()) {
assertEquals(projectObjectTypes.size(), projectPrivilege.getProjectPrivileges().size());
if (projectPrivilege.getIdObject() == project.getId()) {
currentProject = projectPrivilege;
}
}
assertNotNull(currentProject);
PrivilegeView currentPrivilege = null;
for (PrivilegeView row : currentProject.getProjectPrivileges()) {
if (row.getType() == PrivilegeType.VIEW_PROJECT) {
currentPrivilege = row;
}
}
assertNotNull(currentPrivilege);
assertTrue(currentPrivilege.getSelected());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
/**
* Test update of a user that doesn't exist in db
*/
@Test
public void testUpdateUserRow() {
try {
Project project = new Project();
projectDao.add(project);
UserView userRow = userService.createEmptyUserRow();
for (PrivilegeView pRow : userRow.getBasicPrivileges()) {
if (pRow.getType().equals(PrivilegeType.ADD_MAP)) {
pRow.setSelected(true);
}
}
for (PrivilegeView pRow : userRow.getProjectPrivilegeByProjectId(project.getId()).getProjectPrivileges()) {
if (pRow.getType().equals(PrivilegeType.VIEW_PROJECT)) {
pRow.setSelected(true);
}
}
userService.updateUser(userRow);
assertNotNull(userRow.getIdObject());
assertTrue(userRow.getIdObject() != 0);
User user2 = userDao.getById(userRow.getIdObject());
assertTrue(userService.userHasPrivilege(user2, PrivilegeType.ADD_MAP));
assertFalse(userService.userHasPrivilege(user2, PrivilegeType.PROJECT_MANAGEMENT));
assertTrue(userService.userHasPrivilege(user2, PrivilegeType.VIEW_PROJECT, project));
for (PrivilegeView pRow : userRow.getBasicPrivileges()) {
if (pRow.getType().equals(PrivilegeType.ADD_MAP)) {
pRow.setSelected(false);
}
}
for (PrivilegeView pRow : userRow.getProjectPrivilegeByProjectId(project.getId()).getProjectPrivileges()) {
if (pRow.getType().equals(PrivilegeType.VIEW_PROJECT)) {
pRow.setSelected(false);
}
}
userService.updateUser(userRow);
assertFalse(userService.userHasPrivilege(user2, PrivilegeType.ADD_MAP));
assertFalse(userService.userHasPrivilege(user2, PrivilegeType.VIEW_PROJECT, project));
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
/**
* Test update of a user that exist in the db
*
* @throws Exception
*/
@Test
public void testUpdateUserRow2() throws Exception {
String cryptedPassword = "passwd";
try {
Project project = new Project();
projectDao.add(project);
User user2 = new User();
user2.setLogin("login");
user2.setCryptedPassword(cryptedPassword);
userService.addUser(user2);
List<UserView> rows = userService.getAllUserRows();
UserView userRow = null;
for (UserView userRow2 : rows) {
if (userRow2.getIdObject() == user2.getId())
userRow = userRow2;
}
assertNotNull(userRow);
assertFalse(userService.userHasPrivilege(user2, PrivilegeType.ADD_MAP));
assertFalse(userService.userHasPrivilege(user2, PrivilegeType.VIEW_PROJECT, project));
for (PrivilegeView pRow : userRow.getBasicPrivileges()) {
if (pRow.getType().equals(PrivilegeType.ADD_MAP)) {
pRow.setSelected(true);
}
}
for (PrivilegeView pRow : userRow.getProjectPrivilegeByProjectId(project.getId()).getProjectPrivileges()) {
if (pRow.getType().equals(PrivilegeType.VIEW_PROJECT)) {
pRow.setSelected(true);
}
}
userRow.setPassword("");
userService.updateUser(userRow);
User user3 = userDao.getById(user2.getId());
// check if password didn't change
assertEquals(cryptedPassword, user3.getCryptedPassword());
assertTrue(userService.userHasPrivilege(user2, PrivilegeType.ADD_MAP));
assertTrue(userService.userHasPrivilege(user2, PrivilegeType.VIEW_PROJECT, project));
for (PrivilegeView pRow : userRow.getBasicPrivileges()) {
if (pRow.getType().equals(PrivilegeType.ADD_MAP)) {
pRow.setSelected(false);
}
}
for (PrivilegeView pRow : userRow.getProjectPrivilegeByProjectId(project.getId()).getProjectPrivileges()) {
if (pRow.getType().equals(PrivilegeType.VIEW_PROJECT)) {
pRow.setSelected(false);
}
}
userRow.setPassword("new passwd");
userService.updateUser(userRow);
user3 = userDao.getById(user2.getId());
// check if password changed
assertFalse(cryptedPassword.equals(user3.getCryptedPassword()));
assertFalse(userService.userHasPrivilege(user2, PrivilegeType.ADD_MAP));
assertFalse(userService.userHasPrivilege(user2, PrivilegeType.VIEW_PROJECT, project));
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testRemoveUserRow() throws Exception {
try {
UserView userRow = userService.createEmptyUserRow();
userService.deleteUser(userRow);
User user2 = new User();
user2.setLogin("login");
userService.addUser(user2);
List<UserView> rows = userService.getAllUserRows();
userRow = null;
for (UserView userRow2 : rows) {
if (userRow2.getIdObject() == user2.getId())
userRow = userRow2;
}
assertNotNull(userRow);
userService.deleteUser(userRow);
rows = userService.getAllUserRows();
userRow = null;
for (UserView userRow2 : rows) {
if (userRow2.getIdObject() == user2.getId())
userRow = userRow2;
}
assertNull(userRow);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testCreateEmptyUserRow() {
try {
Project project = new Project();
projectDao.add(project);
UserView row = userService.createEmptyUserRow();
assertNotNull(row);
long projectCount = projectDao.getCount();
assertEquals(projectCount, row.getProjectPrivileges().size());
assertNotNull(row.getProjectPrivilegeByProjectId(project.getId()));
for (UserProjectPrivilegeView upRow : row.getProjectPrivileges()) {
assertTrue(userViewFactory.getObjectTypes().size() >= upRow.getProjectPrivileges().size());
}
assertEquals(userViewFactory.getBasicTypes().size(), row.getBasicPrivileges().size());
} catch (Exception e) {
e.printStackTrace();
fail("Unknown exception");
}
}
}
......@@ -6,31 +6,29 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({ AnnotationViewFactoryTest.class, //
AnnotationViewTest.class, //
CommentViewFactoryTest.class, //
CommentViewTest.class, //
ConfigurationViewFactoryTest.class, //
ConfigurationViewTest.class, //
DataMiningSetViewTest.class, //
DataMiningViewFactoryTest.class, //
DataMiningViewTest.class, //
FrameworkVersionViewTest.class, //
LayoutViewFactoryTest.class, //
LayoutViewTest.class, //
ModelViewFactoryTest.class, //
ModelViewTest.class, //
OverviewImageViewFactoryTest.class, //
OverviewImageViewTest.class, //
OverviewLinkViewFactoryTest.class, //
OverviewLinkViewTest.class, //
PrivilegeViewFactoryTest.class, //
PrivilegeViewTest.class, //
ProjectViewFactoryTest.class, //
ProjectViewTest.class, //
ReferenceGenomeViewFactoryTest.class, //
ReferenceGenomeGeneMappingViewFactoryTest.class, //
UserViewFactoryTest.class, //
UserViewTest.class, //
AnnotationViewTest.class, //
CommentViewFactoryTest.class, //
CommentViewTest.class, //
ConfigurationViewFactoryTest.class, //
ConfigurationViewTest.class, //
DataMiningSetViewTest.class, //
DataMiningViewFactoryTest.class, //
DataMiningViewTest.class, //
FrameworkVersionViewTest.class, //
LayoutViewFactoryTest.class, //
LayoutViewTest.class, //
ModelViewFactoryTest.class, //
ModelViewTest.class, //
OverviewImageViewFactoryTest.class, //
OverviewImageViewTest.class, //
OverviewLinkViewFactoryTest.class, //
OverviewLinkViewTest.class, //
PrivilegeViewFactoryTest.class, //
PrivilegeViewTest.class, //
ProjectViewFactoryTest.class, //
ProjectViewTest.class, //
ReferenceGenomeViewFactoryTest.class, //
ReferenceGenomeGeneMappingViewFactoryTest.class, //
})
public class AllViewTests {
......
package lcsb.mapviewer.services.view;
import static org.junit.Assert.*;
import lcsb.mapviewer.services.ServiceTestFunctions;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class UserViewFactoryTest extends ServiceTestFunctions{
@Autowired
UserViewFactory userViewFactory;
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testCreateEmpty() throws Exception {
try {
Object object = userViewFactory.create(null);
assertNotNull(object);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Test
public void testCreateGson() throws Exception {
try {
UserView object = userViewFactory.create(null);
assertNotNull(userViewFactory.createGson(object));
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
package lcsb.mapviewer.services.view;
import org.apache.commons.lang3.SerializationUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class UserViewTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testSerialization() {
try {
SerializationUtils.serialize(new UserView());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment