diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java index 6104a57a2c1ff2d48848bc19481224bee914cc12..ac019ebf470cba5f8885b7589e025321a0c993af 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java @@ -16,7 +16,7 @@ public abstract class DataTableController<EntityType extends CloneableEntity> im private static final Logger logger = Logger.getLogger(DataTableController.class.getName()); - protected EntityType current = null; + protected EntityType currentObject = null; private DataModel listDataModel = null; private DataTable listDataTable = null; @@ -34,12 +34,12 @@ public abstract class DataTableController<EntityType extends CloneableEntity> im public abstract String getClassName(); - public EntityType getCurrent() { - return current; + public EntityType getCurrentObject() { + return currentObject; } - public void setCurrent(EntityType current) { - this.current = current; + public void setCurrentObject(EntityType current) { + this.currentObject = current; } public DataModel createListDataModel() { @@ -54,20 +54,24 @@ public abstract class DataTableController<EntityType extends CloneableEntity> im } public abstract List<EntityType> findAll(); + + public String getTableName() { + return "deafault"; + } public void resetList() { - logger.debug("Resetting list"); + logger.debug("Resetting list"+" "+getTableName()); listDataModel = null; listDataTable = null; listDataModelReset = true; filteredObjectList = null; selectedObjectList = null; - current = null; + currentObject = null; } public DataTable getListDataTable() { if (listDataTable == null) { - logger.debug("Recreating data table"); + logger.debug("Recreating data table"+" "+getTableName()); listDataTable = new DataTable(); } return listDataTable; diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java index 227ff11e4211819d23712a0aa5a384d3203d54be..881850ce8974b1398ea0684781bf573644bd72d9 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java @@ -6,7 +6,19 @@ import gov.anl.aps.dm.portal.exceptions.InvalidDate; import gov.anl.aps.dm.portal.exceptions.MissingProperty; import gov.anl.aps.dm.portal.model.entities.Experiment; import gov.anl.aps.dm.portal.model.beans.ExperimentFacade; +import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade; +import gov.anl.aps.dm.portal.model.beans.UserExperimentRoleFacade; +import gov.anl.aps.dm.portal.model.beans.UserInfoFacade; +import gov.anl.aps.dm.portal.model.entities.RoleType; +import gov.anl.aps.dm.portal.model.entities.UserExperimentRole; +import gov.anl.aps.dm.portal.model.entities.UserInfo; +import gov.anl.aps.dm.portal.model.tempstorage.ExperimentUser; +import gov.anl.aps.dm.portal.utilities.SessionUtility; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.ejb.EJB; import javax.inject.Named; @@ -27,7 +39,109 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper @EJB private ExperimentFacade experimentFacade; + @EJB + private UserInfoFacade userInfoFacade; + + @EJB + private RoleTypeFacade roleTypeFacade; + + @EJB + private UserExperimentRoleFacade userExperimentRoleFacade; + + class ExperimentUsersTable extends DataTableController<ExperimentUser> { + + @Override + public String getClassName() { + return "ExperimentUser"; + } + + @Override + public List<ExperimentUser> findAll() { + try { + List<UserInfo> list = userInfoFacade.findUsersInExperiment(getCurrent().getId()); + List<ExperimentUser> tempUsersList = convertExperimentUsers(list); + return new ArrayList<>(tempUsersList); + } catch (NumberFormatException e) { + return null; + } + } + + List<ExperimentUser> convertExperimentUsers(List<UserInfo> list) { + List<RoleType> roleTypes = roleTypeFacade.findByRoleSystemType(false); + generateColumns(roleTypes); + for (UserInfo user : list) { + ExperimentUser eUser = new ExperimentUser(getCurrent().getId(), user.getId()); + eUser.setUsername(user.getUsername()); + eUser.setName(user.getLastName() + ", " + user.getFirstName()); + for (RoleType roleType : roleTypes) { + eUser.setIsInRole(roleType, user.inRole(roleType.getId(), getCurrent().getId())); + } + experimentUsers.put(eUser, eUser.getRoles()); + } + return new ArrayList<>(experimentUsers.keySet()); + } + + @Override + public String getTableName() { + return "experimentUsersTable"; + } + } + + static public class ColumnModel implements Serializable { + private String header; + private int property; + + public ColumnModel(String header, int property) { + this.header = header; + this.property = property; + } + + public String getHeader() { + return header; + } + + public void setHeader(String header) { + this.header = header; + } + + public int getProperty() { + return property; + } + + public void setProperty(int property) { + this.property = property; + } + } + + class NoExperimentUsersTypeTable extends DataTableController<UserInfo> { + + @Override + public String getClassName() { + return "UserInfo"; + } + + @Override + public List<UserInfo> findAll() { + resetList(); + return userInfoFacade.findNoUsersInExperiment(getCurrent().getId()); + } + + @Override + public String getTableName() { + return "noExperimentUsersTable"; + } + } + + private ExperimentController.ExperimentUsersTable experimentUsersListTable; + private ExperimentController.ExperimentUsersTable experimentUsersEditTable; + private ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable; + private List<ExperimentController.ColumnModel> columns = new ArrayList(); + final private Map<ExperimentUser, boolean[]> experimentUsers = new HashMap<>(); + public ExperimentController() { + this.experimentUsersListTable = new ExperimentController.ExperimentUsersTable(); + this.experimentUsersEditTable = new ExperimentController.ExperimentUsersTable(); + this.noExperimentUsersTypeTable = new ExperimentController.NoExperimentUsersTypeTable(); } @Override @@ -60,9 +174,16 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper @Override public String prepareEdit(Experiment experiment) { + clear(); return super.prepareEdit(experiment); } + @Override + public String prepareView(Experiment experiment) { + clear(); + return super.prepareView(experiment); + } + @Override public void prepareEntityInsert(Experiment experiment) throws ObjectAlreadyExists, InvalidDate, MissingProperty { if ((experiment.getName() == null) || (experiment.getName().length() == 0)){ @@ -104,8 +225,115 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper } } +// the methods for Experiment User + public List<ExperimentController.ColumnModel> getColumns() { + return columns; + } + + public void setColumns(List<ExperimentController.ColumnModel> columns) { + this.columns = columns; + } + + public void clear() { + experimentUsersListTable.resetList(); + experimentUsersEditTable.resetList(); + experimentUsers.clear(); + noExperimentUsersTypeTable.resetList(); + columns.clear(); + } + + public ExperimentController.ExperimentUsersTable getExperimentUsersListTable() { + return experimentUsersListTable; + } + + public void setExperimentUsersListTable(ExperimentController.ExperimentUsersTable experimentUsersTable) { + this.experimentUsersListTable = experimentUsersTable; + } + + public ExperimentController.ExperimentUsersTable getExperimentUsersEditTable() { + return experimentUsersEditTable; + } + + public void setExperimentUsersEditTable(ExperimentController.ExperimentUsersTable experimentUsersTable) { + this.experimentUsersEditTable = experimentUsersTable; + } + + public ExperimentController.NoExperimentUsersTypeTable getNoExperimentUsersTypeTable() { + return noExperimentUsersTypeTable; + } + + public void setNoExperimentUsersTypeTable(ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable) { + this.noExperimentUsersTypeTable = noExperimentUsersTypeTable; + } + + void generateColumns(List<RoleType> roleTypes) { + for (RoleType role : roleTypes) { + ExperimentController.ColumnModel column = new ExperimentController.ColumnModel(role.getName(), role.getId()); + columns.add(column); + } + } + + public boolean canAddUsers(String username) { + UserInfo user = userInfoFacade.findByUsername(username); + // optimally here it should find all system roles. The roles optimally would have a policy + // defining adding/removing users. For each of the role that allows adding users, + // the code that is for administartor role (below) would be added. + RoleType rt = roleTypeFacade.findById(1); // administrator role id + if (rt == null) { + return false; + } + if (rt.isAdmin(username)) { + return true; + } + return false; + // experiment type permission + // return experimentUsersMap.get(username).canAddUsers(); + } + + public String getRemovedUserName() { + return experimentUsersEditTable.getCurrentObject().getName(); + } + + public void removeUser() { + ExperimentUser user = experimentUsersEditTable.getCurrentObject(); + user.removeAllExperimentRoles(); + experimentUsers.remove(user); + } + + public String addExperimentUser() { + List<UserInfo> newUsers = noExperimentUsersTypeTable.getSelectedObjectList(); + if (newUsers == null) { + logger.debug("null selected list"); + return null; + } else if (newUsers.isEmpty()) { + logger.debug("empty selected list"); + return null; + } else { + try { + UserExperimentRole userExperimentRole; + for (UserInfo user : newUsers) { + userExperimentRole = new UserExperimentRole(user.getId(), current.getId(), 4); // set the User + userExperimentRoleFacade.create(userExperimentRole); + } + return edit(); + } catch (RuntimeException ex) { + SessionUtility.addErrorMessage("Error", "Could not update UserInfo" + ": " + ex.getMessage()); + return null; + } + } + } + +// @Override +// public String update() { +// logger.debug("current name "+current.getName()); +// logger.debug("current startDate "+current.getStartDate()); +// logger.debug("current endDate "+current.getEndDate()); +// String s = super.update(); +// logger.debug("redirecting to " + s); +// return s; +// } - @FacesConverter(forClass = Experiment.class) + @FacesConverter(forClass = Experiment.class) public static class ExperimentControllerConverter implements Converter { diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java deleted file mode 100644 index 0a63654a6c337300c8a2518327b242e6278a1409..0000000000000000000000000000000000000000 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ - -package gov.anl.aps.dm.portal.controllers; - - -import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade; -import gov.anl.aps.dm.portal.model.beans.UserExperimentRoleFacade; -import gov.anl.aps.dm.portal.model.beans.UserInfoFacade; -import gov.anl.aps.dm.portal.model.entities.Experiment; -import gov.anl.aps.dm.portal.model.entities.RoleType; -import gov.anl.aps.dm.portal.model.entities.UserInfo; -import gov.anl.aps.dm.portal.model.tempstorage.ExperimentUser; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; -import javax.inject.Named; -import org.apache.log4j.Logger; - -@Named("experimentUsersController") -@SessionScoped -public class ExperimentUsersController implements Serializable { - - private static final Logger logger = Logger.getLogger(ExperimentUsersController.class.getName()); - - @EJB - private UserExperimentRoleFacade userExperimentRoleFacade; - - @EJB - private UserInfoFacade userInfoFacade; - - @EJB - private RoleTypeFacade roleTypeFacade; - - public ExperimentUsersController() { - this.experimentUsersTable = new ExperimentUsersTable(); - } - - class ExperimentUsersTable extends DataTableController<ExperimentUser> { - -// @Override -// public String getClassName() { -// return "UserInfo"; -// } -// -// @Override -// public List<UserInfo> findAll() { -// try { -// return userInfoFacade.findUsersInExperiment(experiment.getId()); -// } catch (NumberFormatException e) { -// return null; -// } -// } - - @Override - public String getClassName() { - return "ExperimentUser"; - } - - @Override - public List<ExperimentUser> findAll() { - experimentUsers.clear(); - try { - List<UserInfo> list = userInfoFacade.findUsersInExperiment(experiment.getId()); - convertExperimentUsers(list); - return experimentUsers; - } catch (NumberFormatException e) { - return null; - } - } - - void convertExperimentUsers(List<UserInfo> list) { - List<RoleType> roleTypes = roleTypeFacade.findByRoleSystemType(false); - generateColumns(roleTypes); - for (UserInfo user : list) { - ExperimentUser eUser = new ExperimentUser(); - eUser.setUsername(user.getUsername()); - eUser.setName(user.getLastName() + ", " + user.getFirstName()); - for (RoleType roleType : roleTypes) { - eUser.setIsInRole(roleType, user.inRole(roleType.getId(), experiment.getId())); - } - experimentUsers.add(eUser); - } - } - } - - static class ColumnModel implements Serializable { - private String header; - private int property; - - public ColumnModel(String header, int property) { - this.header = header; - this.property = property; - } - - public String getHeader() { - return header; - } - - public int getProperty() { - return property; - } - } - - private ExperimentUsersTable experimentUsersTable; - private Experiment experiment; - private List<ExperimentUser> experimentUsers = new ArrayList<>(); - private List<ColumnModel> columns; - - public List<ColumnModel> getColumns() { - return columns; - } - - public void setColumns(List<ColumnModel> columns) { - this.columns = columns; - } - - public Experiment getExperiment() { - return experiment; - } - - public void setExperiment(Experiment experiment) { - experimentUsersTable.resetList(); - this.experiment = experiment; - } - - public ExperimentUsersTable getExperimentUsersTable() { - return experimentUsersTable; - } - - public void setExperimentUsersTable(ExperimentUsersTable experimentUsersTable) { - this.experimentUsersTable = experimentUsersTable; - } - - void generateColumns(List<RoleType> roleTypes) { - for (RoleType role : roleTypes) { - ColumnModel column = new ColumnModel(role.getName(), role.getId()); - columns.add(column); - } - } - -// public boolean getIsInRole() { -// -// } -// -// public void setIsInRole(boolean inRole) -// - - - - -// public String getCurrentEntityInstanceName() { -// return null; -// } -// -// public String remove() { -// return null; -// } -// -// public boolean canRemove(String removerUsername, UserInfo removee) { -// return false; -// } -// -// public boolean canAddUsers(String username) { -// return true; -// } -// -// public void setIsInRole(int roleId, String userId) { -// -// } -// -// public boolean canAssignManager(String userId) { -// return true; -// } -// -// public boolean canAssignPI(String userId) { -// return true; -// } -// -// public boolean canAssignUser(String userId) { -// return true; -// } - -} diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java index 3cf77a14c8350c350da34b5692732983759300fe..22cd4d0981afa5c3f08ad8a6057b6cd80f069824 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java @@ -177,7 +177,7 @@ public class UserSystemRoleController implements Serializable int id = Integer.parseInt(systemRoleId); RoleType rt = roleTypeFacade.findById(id); if (rt != null) { - rt.removeRoleTypeFromUser(systemRoleTable.current); + rt.removeRoleTypeFromUser(systemRoleTable.currentObject); } try { roleTypeFacade.edit(rt); diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java index 045470b7bb8f9ab763d16f0322bef013731925b3..f51b1bf6b00aa86ba3b437b55c6d4248fd1ac2a8 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java @@ -7,7 +7,6 @@ package gov.anl.aps.dm.portal.model.beans; import gov.anl.aps.dm.portal.model.entities.RoleType; -import gov.anl.aps.dm.portal.model.entities.UserInfo; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserExperimentRoleFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserExperimentRoleFacade.java index 67ea311b6898ac35da44959fa4cee0e90e503633..2b16116621f3c8b9c807036c02f1ced105152b57 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserExperimentRoleFacade.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserExperimentRoleFacade.java @@ -7,8 +7,10 @@ package gov.anl.aps.dm.portal.model.beans; import gov.anl.aps.dm.portal.model.entities.UserExperimentRole; +import gov.anl.aps.dm.portal.model.entities.UserInfo; import javax.ejb.Stateless; import javax.persistence.EntityManager; +import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; /** @@ -30,4 +32,16 @@ public class UserExperimentRoleFacade extends AbstractFacade<UserExperimentRole> super(UserExperimentRole.class); } + public UserExperimentRole findByUserExperimentRole(int userId, int experimentId, int roleId) { + try { + return (UserExperimentRole) em.createNamedQuery("UserExperimentRole.findByUserExperimentRole") + .setParameter("userId", userId) + .setParameter("experimentId", experimentId) + .setParameter(roleId, roleId) + .getSingleResult(); + } + catch (NoResultException ex) { + } + return null; + } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java index 4712ca736184ecdc1b7b61da6f55df2a81ea7081..91f0a1f4bff2d6f028f1dd21e931e2b6e1f27ffc 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java @@ -79,4 +79,14 @@ public class UserInfoFacade extends AbstractFacade<UserInfo> return null; } + public List<UserInfo> findNoUsersInExperiment(int experimentId) { + try { + return (List<UserInfo>) em.createNamedQuery("UserInfo.findNoUsersInExperiment") + .setParameter("experimentId", experimentId) + .getResultList(); + } catch (NoResultException ex) { + } + return null; + } + } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java index eb9c815dab6027fe2e5fca58a1cdf1bf7faad132..9377187847fb754662ac7b7fa82507cc73c15792 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java @@ -26,7 +26,9 @@ import javax.xml.bind.annotation.XmlRootElement; @NamedQuery(name = "UserExperimentRole.findAll", query = "SELECT u FROM UserExperimentRole u"), @NamedQuery(name = "UserExperimentRole.findByUserId", query = "SELECT u FROM UserExperimentRole u WHERE u.userExperimentRolePK.userId = :userId"), @NamedQuery(name = "UserExperimentRole.findByExperimentId", query = "SELECT u FROM UserExperimentRole u WHERE u.userExperimentRolePK.experimentId = :experimentId"), - @NamedQuery(name = "UserExperimentRole.findByRoleTypeId", query = "SELECT u FROM UserExperimentRole u WHERE u.userExperimentRolePK.roleTypeId = :roleTypeId")}) + @NamedQuery(name = "UserExperimentRole.findByRoleTypeId", query = "SELECT u FROM UserExperimentRole u WHERE u.userExperimentRolePK.roleTypeId = :roleTypeId"), + @NamedQuery(name = "UserExperimentRole.findByUserExperimentRole", query = "SELECT u FROM UserExperimentRole u WHERE u.userExperimentRolePK.userId = :userId AND u.userExperimentRolePK.experimentId = :experimentId AND u.userExperimentRolePK.roleTypeId = :roleTypeId")}) + public class UserExperimentRole extends CloneableEntity { @EmbeddedId diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java index 56a6b742a7a292dda2f195a4b243acb736af7739..455ef2ea333605607f7f7479fa47c1043e0e2d51 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java @@ -43,7 +43,8 @@ import javax.xml.bind.annotation.XmlTransient; @NamedQuery(name = "UserInfo.findByPassword", query = "SELECT u FROM UserInfo u WHERE u.password = :password"), @NamedQuery(name = "UserInfo.findNonAdmins", query = "SELECT u FROM UserInfo u WHERE u.id NOT IN (SELECT u2.id from UserInfo u2 JOIN u2.roleTypeList rt WHERE rt.id = :roleTypeId)"), @NamedQuery(name = "UserInfo.findUsersInRole", query = "SELECT u FROM UserInfo u WHERE u.id IN (SELECT u2.id from UserInfo u2 JOIN u2.roleTypeList rt WHERE rt.id = :roleTypeId)"), - @NamedQuery(name = "UserInfo.findUsersInExperiment", query = "SELECT DISTINCT u FROM UserInfo u WHERE u.id IN (SELECT u2.id from UserInfo u2 JOIN u2.userExperimentRoleList r WHERE r.experiment.id = :experimentId)")}) + @NamedQuery(name = "UserInfo.findUsersInExperiment", query = "SELECT DISTINCT u FROM UserInfo u WHERE u.id IN (SELECT u2.id from UserInfo u2 JOIN u2.userExperimentRoleList r WHERE r.experiment.id = :experimentId)"), + @NamedQuery(name = "UserInfo.findNoUsersInExperiment", query = "SELECT u FROM UserInfo u WHERE u.id NOT IN (SELECT u2.id from UserInfo u2 JOIN u2.userExperimentRoleList r WHERE r.experiment.id = :experimentId)")}) public class UserInfo extends CloneableEntity { @@ -86,6 +87,7 @@ public class UserInfo extends CloneableEntity private List<UserExperimentRole> userExperimentRoleList; @OneToMany(cascade = CascadeType.ALL, mappedBy = "userInfo") private List<UserSetting> userSettingList; + public UserInfo() { } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java index 3c629631efd0e531013975c6cfb927bbd448c684..47a7a704c4d45c0c739772b843222d1337c234a7 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java @@ -1,9 +1,11 @@ package gov.anl.aps.dm.portal.model.tempstorage; +import gov.anl.aps.dm.portal.model.beans.UserExperimentRoleFacade; import gov.anl.aps.dm.portal.model.entities.CloneableEntity; import gov.anl.aps.dm.portal.model.entities.RoleType; -import java.util.HashMap; -import java.util.Map; +import gov.anl.aps.dm.portal.model.entities.UserExperimentRole; +import gov.anl.aps.dm.portal.model.entities.UserInfo; +import javax.ejb.EJB; /** * @@ -11,10 +13,25 @@ import java.util.Map; */ public class ExperimentUser extends CloneableEntity { + @EJB + private UserExperimentRoleFacade userExperimentRoleFacade; + String username; String name; - Map<RoleType, Boolean> roles = new HashMap(); + int userId; + int experimentId; + private boolean [] roles; + static int maxRoleId = 4; // this is hardcoded, should be determined from the RoleType data table. + // for now leave it hardcoded + +// Map<RoleType, Boolean> roles = new HashMap(); + public ExperimentUser(int experimentId, int userId) { + roles = new boolean[maxRoleId+1]; + this.experimentId = experimentId; + this.userId = userId; + } + public String getUsername() { return username; } @@ -32,7 +49,64 @@ public class ExperimentUser extends CloneableEntity { } public void setIsInRole(RoleType role, boolean isInRole) { - roles.put(role, isInRole); + roles[role.getId()] = isInRole; + } + + public boolean getIsInRole(RoleType role) { + return roles[role.getId()]; + } + + public boolean[] getRoles() { + return roles; + } + + public void setRoles(boolean[] roles) { + UserExperimentRole userExperimentRole; + for (int i = 1; i <= maxRoleId; i++) { + if (roles[i] && !this.roles[i]) { + userExperimentRole = new UserExperimentRole(userId, experimentId, i); + userExperimentRoleFacade.create(userExperimentRole); + } else if (!roles[i] && this.roles[i]) { + userExperimentRole = new UserExperimentRole(userId, experimentId, i); + userExperimentRoleFacade.remove(userExperimentRole); + } + } + this.roles = roles; + } + + public void removeAllExperimentRoles() { + UserExperimentRole userExperimentRole; + for (int i = 1; i <= maxRoleId; i++) { + if (roles[i]) { + userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, i); + userExperimentRoleFacade.remove(userExperimentRole); + } + } + } + + public boolean canAddUsers() { + // this can be tied to permission. For now let's hardcode + if (roles[2] || roles[3]) { + return true; + } + else { + return false; + } + } + @Override + public int hashCode() { + return username.hashCode(); + } + + @Override + public boolean equals(Object object) { + // TODO: Warning - this method won't work in the case the id fields are not set + if (!(object instanceof UserInfo)) { + return false; + } + return (username.equals(((ExperimentUser)object).username)); + } + } diff --git a/src/java/DmWebPortal/web/WEB-INF/faces-config.xml b/src/java/DmWebPortal/web/WEB-INF/faces-config.xml index b8e4f061fb5737b0fd1748305200da1ec2622008..9a85cb2b4a27a70f73b0e9dbd4610791f6e52e8d 100644 --- a/src/java/DmWebPortal/web/WEB-INF/faces-config.xml +++ b/src/java/DmWebPortal/web/WEB-INF/faces-config.xml @@ -9,4 +9,8 @@ <var>resources</var> </resource-bundle> </application> +<validator> + <validator-id>checkboxValidator</validator-id> + <validator-class>gov.anl.aps.dm.portal.controllers.CheckboxValidator</validator-class> +</validator> </faces-config> diff --git a/src/java/DmWebPortal/web/views/experiment/edit.xhtml b/src/java/DmWebPortal/web/views/experiment/edit.xhtml index 00b14e432f1f181c37c5efbce0121328fb421630..4dc82894fd2bea6840f9b51baa38e36c19dfb025 100644 --- a/src/java/DmWebPortal/web/views/experiment/edit.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/edit.xhtml @@ -11,21 +11,32 @@ <ui:define name="middleCenter"> <h:form id="editExperimentForm"> - <div class="middleCenterLeftContent"> <div class="pageTitle"> <h1>Edit Experiment</h1> </div> - <ui:include src="experimentEditPanelGrid.xhtml"/> + <p:accordionPanel multiple="true" dynamic="true" cache="true" > + <p:tab title="Experiment Properties" id="detailsTab" > + + <div class="middleCenterLeftContent"> + <ui:include src="experimentEditPanelGrid.xhtml"/> + </div> + + </p:tab> + + <p:tab title="Experiment Users" id="usersTab"> + <ui:include src="experimentUsersEditDataTable.xhtml"/> + </p:tab> + </p:accordionPanel> + <p/> <div class="actionButton"> - <p:commandButton action="#{experimentController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/> + <p:commandButton action="#{experimentController.update()}" value="Save" alt="Save" icon="ui-icon-check"/> <p:commandButton action="#{experimentController.prepareList()}" immediate="true" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/> </div> - </div> - - </h:form> + <ui:include src="experimentUserRemoveDialog.xhtml" /> + </h:form> </ui:define> </ui:composition> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml index 62297e74854443af9246a2452e7412dc64d2b21f..8592664d047daa8c09f20646f15d4f8ec4bb2ab9 100644 --- a/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml @@ -6,7 +6,7 @@ xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core"> - <ui:param name="experimentObject" value="#{experimentController.selected}"/> + <ui:param name="experimentObject" value="#{experimentController.current}"/> <ui:param name="isFieldWriteable" value="#{loginController.loggedIn}"/> <p:panelGrid columns="2" > @@ -34,4 +34,6 @@ <p:calendar id="endDate" value="#{experimentObject.endDate}" mode="popup" showOn="button" /> </p:panelGrid> + + </ui:composition> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml index 55fc48b43418b6abf0d17c1dff13158ab6053cd8..4893d7d5dcf879d768349a762b26bb73d07cc5d9 100644 --- a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml @@ -56,10 +56,11 @@ <p:column headerText="Actions" > <div class="actionLink"> <p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View"> - <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentUsersController.experiment}"/> - <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/> + + </p:commandLink> + <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-pencil" title="Edit"> + </p:commandLink> - <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-pencil" title="Edit"/> <p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form"> <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/> </p:commandLink> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUserAddDialog.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUserAddDialog.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..bc486eac4fde9acda71329e1b4e539030268702e --- /dev/null +++ b/src/java/DmWebPortal/web/views/experiment/experimentUserAddDialog.xhtml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<ui:composition xmlns="http://www.w3.org/1999/xhtml" + xmlns:p="http://primefaces.org/ui" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" + xmlns:h="http://xmlns.jcp.org/jsf/html" + xmlns:f="http://xmlns.jcp.org/jsf/core" + xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"> + + + + + <p:dialog id="experimentUserAddDialog" + header="Add experiment users" widgetVar="experimentUserAddDialogWidget" dynamic="true" styleClass="dialog" width="800"> + + <div class="actionButton"> + <p:commandButton id="ResetFilters" actionListener="#{experimentController.noExperimentUsersTypeTable.resetFilterList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('experimentUserAddDialogWidget').show()" update="experimentUserAddDialog" > + <p:tooltip for="ResetFilters" value="Reset list filters."/> + </p:commandButton> + </div> + + <div> + <p:dataTable id="addExperimentUserList" + var="experimentUser" + value="#{experimentController.noExperimentUsersTypeTable.listDataModel}" + filteredValue="#{experimentController.noExperimentUsersTypeTable.filteredObjectList}" + paginator="true" + paginatorAlwaysVisible="false" + rows="25" + binding="#{experimentController.noExperimentUsersTypeTable.listDataTable}" + selection="#{experimentController.noExperimentUsersTypeTable.selectedObjectList}" + rowKey="#{experimentUser.username}" + widgetVar="experimentUserAddTableWidgetVar" + emptyMessage="No users to add." + rowSelectMode="true" + selectionMode="multiple" > + + <p:column sortBy="#{experimentUser.username}" headerText="Username" + filterBy="#{experimentUser.username}" filterMatchMode="contains" > + <h:outputText value="#{experimentUser.username}"/> + </p:column> + + <p:column sortBy="#{experimentUser.lastName}" headerText="Last Name" + filterBy="#{experimentUser.lastName}" filterMatchMode="contains" > + <h:outputText value="#{experimentUser.lastName}"/> + </p:column> + + <p:column sortBy="#{experimentUser.firstName}" headerText="First Name" + filterBy="#{experimentUser.firstName}" filterMatchMode="contains" > + <h:outputText value="#{experimentUser.firstName}"/> + </p:column> + + <p:column sortBy="#{experimentUser.email}" headerText="Email" + filterBy="#{experimentUser.email}" filterMatchMode="contains" > + <h:outputText value="#{experimentUser.email}"/> + </p:column> + + <f:facet name="footer"> + <p:commandButton value="Add" action="#{experimentController.addExperimentUser()}" oncomplete="PF('experimentUserAddDialogWidget').hide()" update="@form"/> + <p:commandButton value="Clear Selection" onclick="PF('experimentUserAddTableWidgetVar').unselectAllRows()" /> + </f:facet> + </p:dataTable> + </div> + </p:dialog> +</ui:composition> + + diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml index 6b5a7432c8e44d7b4b51064cbefa85b1a99c5d27..ad18cc0fc4adcc4747a5cf39e07252317220aefa 100644 --- a/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml @@ -4,10 +4,10 @@ xmlns:p="http://primefaces.org/ui" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - <p:confirmDialog id="experimentUserRemoveDialog" message="Remove user #{experimentUsersController.getCurrentEntityInstanceName()} from Experiment?" + <p:confirmDialog id="experimentUserRemoveDialog" message="Remove user from Experiment?" header="Remove User" severity="alert" widgetVar="experimentUserRemoveDialogWidget" styleClass="dialog"> - <p:commandButton value="Yes" oncomplete="experimentUserRemoveDialogWidget.hide()" action="#{experimentUsersController.remove()}"/> + <p:commandButton value="Yes" oncomplete="experimentUserRemoveDialogWidget.hide()" action="#{experimentController.removeUser()}"/> <p:commandButton value="No" onclick="PF('experimentUserRemoveDialogWidget').hide()" type="button" /> </p:confirmDialog> </ui:composition> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..bf78da68e0aa581f063e97ef9fe5a1f85513a905 --- /dev/null +++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<ui:composition xmlns="http://www.w3.org/1999/xhtml" + xmlns:h="http://java.sun.com/jsf/html" + xmlns:p="http://primefaces.org/ui" + xmlns:f="http://java.sun.com/jsf/core" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> + + + + <ui:include src="experimentUserAddDialog.xhtml" /> + + <p:commandButton id="experimentUserAddButton" value="Add" onclick="PF('experimentUserAddDialogWidget').show();" rendered="#{experimentController.canAddUsers(loginController.username)}" icon="ui-icon-plus" > + <p:tooltip for="experimentUserAddButton" value="Add new users." /> + </p:commandButton> + + <p:commandButton id="ResetFiltersButton" action="#{experimentController.experimentUsersEditTable.resetList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('experimentUsersEditWidget').clearFilters()" update="experimentUsersEditDataTable"> + <p:tooltip for="ResetFiltersButton" value="Reset filters."/> + </p:commandButton> + + <p:dataTable id="experimentUsersEditDataTable" + var="experimentUserObject" + value="#{experimentController.experimentUsersEditTable.listDataModel}" + filteredValue="#{experimentController.experimentUsersEditTable.filteredObjectList}" + paginator="true" + paginatorAlwaysVisible="false" + rows="25" + binding="#{experimentController.experimentUsersEditTable.listDataTable}" + widgetVar="experimentUsersEditWidget" + emptyMessage="No users found."> + + <ui:param name="experimentRoles" value="#{experimentUserObject.roles}" /> + + <p:column sortBy="#{experimentUserObject.username}" headerText="Username" + filterBy="#{experimentUserObject.username}" filterMatchMode="contains" > + <h:outputText value="#{experimentUserObject.username}"/> + </p:column> + + <p:column sortBy="#{experimentUserObject.name}" headerText="Last, First Name" + filterBy="#{experimentUserObject.name}" filterMatchMode="contains" > + <h:outputText value="#{experimentUserObject.name}"/> + </p:column> + + <p:columns value="#{experimentController.columns}" var="column"> + <ui:param name="columnId" value="#{column.property}" /> + + <f:facet name="header"> + <h:outputText value="#{column.header}" /> + </f:facet> + <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentRoles[columnId]}" /> + <p:selectBooleanCheckbox value="#{experimentRoles[columnId]}" rendered="true" /> + </p:columns> + + <p:column headerText="Actions" > + <div class="actionLink" > + <p:commandLink oncomplete="PF('experimentUserRemoveDialogWidget').show()" rendered="true" styleClass="ui-icon ui-icon-trash" title="Remove" > + <f:setPropertyActionListener value="#{experimentUserObject}" target="#{experimentController.experimentUsersEditTable.currentObject}" /> + </p:commandLink> + </div> + </p:column> + + </p:dataTable> + + +</ui:composition> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml index b75441349e53ef60440aa0db3b439064eca9c17d..6cc0abc41e08b6e44e2fef0a4df6cfd38f3c1196 100644 --- a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml @@ -4,71 +4,40 @@ xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core" - xmlns:ui="http://xmlns.jcp.org/jsf/facelets" - xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"> - - - - <p:commandButton id="experimentUserAddButton" value="Add" rendered="#{experimentUsersController.canAddUsers(loginController.username)}" icon="ui-icon-plus" > - <p:tooltip for="experimentUserAddButton" value="Add new Users." /> - </p:commandButton> - - <p:commandButton id="ResetFiltersButton" action="#{experimentUsersController.experimentUsersTable.resetList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('experimentUsersListWidget').clearFilters()" update="experimentUsersListDataTable"> - <p:tooltip for="ResetFiltersButton" value="Reset filters."/> - </p:commandButton> - - <p:dataTable id="experimentUsersListDataTable" - var="experimentUserObject" - value="#{experimentUsersController.experimentUsersTable.listDataModel}" - filteredValue="#{experimentUsersController.experimentUsersTable.filteredObjectList}" - paginator="true" - paginatorAlwaysVisible="false" - rows="25" - binding="#{experimentUsersController.experimentUsersTable.listDataTable}" - widgetVar="experimentUsersListWidget" - emptyMessage="No users found."> - - <p:column sortBy="#{experimentUserObject.username}" headerText="Username" - filterBy="#{experimentUserObject.username}" filterMatchMode="contains" > - <h:outputText value="#{experimentUserObject.username}"/> - </p:column> - - <p:column sortBy="#{experimentUserObject.name}" headerText="Last, First Name" - filterBy="#{experimentUserObject.name}" filterMatchMode="contains" > - <h:outputText value="#{experimentUserObject.name}"/> - </p:column> - - <p:columns value="#{experimentUsersController.columns}" var="column"> - <f:facet name=header"> - <h:outputText value="#{column.header}" /> - </f:facet> - <p:selectBooleanCheckbox value="#{experimentUsersController.isManager(experimentUserObject.id)}" rendered="true" /> - </p:columns> - -<!-- <p:column headerText="Manager" > - <p:selectBooleanCheckbox value="#{experimentUsersController.isManager(experimentUserObject.id)}" rendered="true" /> - </p:column> - - <p:column headerText="PI" > - <p:selectBooleanCheckbox value="#{experimentUsersController.isPI(experimentUserObject.id)}" rendered="true" /> - - </p:column> - - <p:column headerText="User" > - <p:selectBooleanCheckbox value="#{experimentUsersController.isUser(experimentUserObject.id)}" rendered="true" /> - - </p:column>--> - - - <p:column headerText="Actions" > - <div class="actionLink" > - <p:commandLink oncomplete="PF('experimentUserRemoveDialogWidget').show()" rendered="true" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" > - <f:setPropertyActionListener value="#{experimentUserObject}" target="#{experimentUsersController.experimentUsersTable.current}" /> - </p:commandLink> - </div> - </p:column> - - </p:dataTable> - + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> + + <p:commandButton id="ResetFiltersButton" action="#{experimentController.experimentUsersListTable.resetList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('experimentUsersListWidget').clearFilters()" update="experimentUsersListDataTable"> + <p:tooltip for="ResetFiltersButton" value="Reset filters."/> + </p:commandButton> + + <p:dataTable id="experimentUsersListDataTable" + var="experimentUserObject" + value="#{experimentController.experimentUsersListTable.listDataModel}" + filteredValue="#{experimentController.experimentUsersListTable.filteredObjectList}" + paginator="true" + paginatorAlwaysVisible="false" + rows="25" + binding="#{experimentController.experimentUsersListTable.listDataTable}" + widgetVar="experimentUsersListWidget" + emptyMessage="No users found."> + + <p:column sortBy="#{experimentUserObject.username}" headerText="Username" + filterBy="#{experimentUserObject.username}" filterMatchMode="contains" > + <h:outputText value="#{experimentUserObject.username}"/> + </p:column> + + <p:column sortBy="#{experimentUserObject.name}" headerText="Last, First Name" + filterBy="#{experimentUserObject.name}" filterMatchMode="contains" > + <h:outputText value="#{experimentUserObject.name}"/> + </p:column> + + <p:columns value="#{experimentController.columns}" var="column"> + <f:facet name="header"> + <h:outputText value="#{column.header}" /> + </f:facet> + <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.roles[column.property]}" /> + </p:columns> + + </p:dataTable> </ui:composition> diff --git a/src/java/DmWebPortal/web/views/experiment/view.xhtml b/src/java/DmWebPortal/web/views/experiment/view.xhtml index 329c53ad42114db9bff6287f214937f29b069815..4ca098c16a7dba0d19538efab53d847e20bb61a8 100644 --- a/src/java/DmWebPortal/web/views/experiment/view.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/view.xhtml @@ -30,12 +30,12 @@ <div class="actionButton"> <p:commandButton action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.loggedIn}" value="Edit" alt="Edit" icon="ui-icon-pencil"/> - <p:commandButton onclick="PF('experimentDestroyDialogWidget').show();" rendered="#{loginController.loggedIn}" value="Delete" alt="Delete" icon="ui-icon-trash"/> <p:commandButton action="#{experimentController.prepareList()}" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/> </div> - <ui:include src="experimentDestroyDialog.xhtml"/> + </h:form> </ui:define> + </ui:composition> diff --git a/src/java/DmWebPortal/web/views/experimentType/edit.xhtml b/src/java/DmWebPortal/web/views/experimentType/edit.xhtml index 2ece326ecd8436e9d613f2d84c80079809bc0452..53281c4d48f375926ef54cc3ed494f5dcce2e7c4 100644 --- a/src/java/DmWebPortal/web/views/experimentType/edit.xhtml +++ b/src/java/DmWebPortal/web/views/experimentType/edit.xhtml @@ -19,7 +19,7 @@ <ui:include src="experimentTypeEditPanelGrid.xhtml"/> <p/> <div class="actionButton"> - <p:commandButton action="#{experimentTypeController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/> + <p:commandButton action="#{experimentTypeController.update()}" value="Save" alt="Save" icon="ui-icon-check"/> <p:commandButton action="#{experimentTypeController.prepareList()}" immediate="true" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/> </div> </div> diff --git a/src/java/DmWebPortal/web/views/login.xhtml b/src/java/DmWebPortal/web/views/login.xhtml index 0c52069d95eb22c0358b261c084a3eccc4484112..82f994e16cbbc27f167e6b5a2b79b6d7b22ed4f0 100644 --- a/src/java/DmWebPortal/web/views/login.xhtml +++ b/src/java/DmWebPortal/web/views/login.xhtml @@ -39,11 +39,12 @@ <p:inputText id="username" value="#{loginController.username}" title="Username"/> <p:watermark for="username" value="Username"/> </div> + <p/> <div> <p:password id="password" value="#{loginController.password}" title="Password"/> <p:watermark for="password" value="Password"/> </div> - + <p/> <div> <p:commandButton value="Login" action="#{loginController.login()}" /> </div> diff --git a/src/java/DmWebPortal/web/views/roleType/view.xhtml b/src/java/DmWebPortal/web/views/roleType/view.xhtml index befa1674d5515efa5f323191e573d156004e0d55..417c6ea188e3cb226d8785481ae0383fea6399e5 100644 --- a/src/java/DmWebPortal/web/views/roleType/view.xhtml +++ b/src/java/DmWebPortal/web/views/roleType/view.xhtml @@ -19,8 +19,8 @@ <ui:include src="roleTypeViewPanelGrid.xhtml"/> <p/> - <c:set var="roleTypeObject" value="#{roleTypeController.selected}"/> - <c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/> + <ui:param name="roleTypeObject" value="#{roleTypeController.selected}"/> + <ui:param name="isEntityWriteable" value="#{loginController.loggedIn}"/> <div class="actionButton"> <p:commandButton action="#{roleTypeController.prepareEdit(roleTypeObject)}" rendered="#{isEntityWriteable}" value="Edit" alt="Edit" icon="ui-icon-pencil"/> <p:commandButton onclick="PF('roleTypeDestroyDialogWidget').show();" rendered="#{loginController.loggedIn}" value="Delete" alt="Delete" icon="ui-icon-trash"> diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml index c38ad452658c6b7e173f45ff7c87f97c3425ce79..b713cde16bfd61d4a53e264751e44594fc016fbd 100644 --- a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml +++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml @@ -47,7 +47,7 @@ <p:column headerText="Actions" > <div class="actionLink" > <p:commandLink oncomplete="PF('systemRoleRemoveDialogWidget').show()" rendered="#{userSystemRoleController.hasSystemRole(loginController.username) and (loginController.username != systemUserObject.username)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" > - <f:setPropertyActionListener value="#{systemUserObject}" target="#{userSystemRoleController.systemRoleTable.current}" /> + <f:setPropertyActionListener value="#{systemUserObject}" target="#{userSystemRoleController.systemRoleTable.currentObject}" /> </p:commandLink> </div> </p:column> diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleRemoveDialog.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleRemoveDialog.xhtml index 7ea624e101b78820cd34d39c40dccc740fc223e4..e446137d5c33be037b97f2e39ab430e6609ae6dc 100644 --- a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleRemoveDialog.xhtml +++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleRemoveDialog.xhtml @@ -5,7 +5,7 @@ xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - <p:confirmDialog id="systemRoleRemoveDialog" message="Remove #{userSystemRoleController.getSystemRoleName()} Role for user #{userSystemRoleController.systemRoleTable.current.username}?" + <p:confirmDialog id="systemRoleRemoveDialog" message="Remove #{userSystemRoleController.getSystemRoleName()} Role for user #{userSystemRoleController.systemRoleTable.currentObject.username}?" header="Remove System Role" severity="alert" widgetVar="systemRoleRemoveDialogWidget" styleClass="dialog"> <p:commandButton value="Yes" oncomplete="systemRoleRemoveDialogWidget.hide()" action="#{userSystemRoleController.removeSystemRole()}"/>