Skip to content
Snippets Groups Projects
Commit ce9987d5 authored by Barbara B. Frosik's avatar Barbara B. Frosik
Browse files

No commit message

No commit message
parent 38f0add3
No related branches found
No related tags found
No related merge requests found
Showing
with 550 additions and 287 deletions
......@@ -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;
......
......@@ -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
{
......
/*
* 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;
// }
}
......@@ -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);
......
......@@ -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;
......
......@@ -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;
}
}
......@@ -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;
}
}
......@@ -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
......
......@@ -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() {
}
......
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));
}
}
......@@ -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>
......@@ -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>
......
......@@ -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>
......@@ -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>
......
<?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>
......@@ -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>
<?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>
......@@ -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>
......@@ -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>
......
......@@ -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>
......
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