From 724ceca7b07368a201ac7f854c24712df724f49e Mon Sep 17 00:00:00 2001 From: "Barbara B. Frosik" <bfrosik@aps.anl.gov> Date: Mon, 6 Jul 2015 14:52:53 +0000 Subject: [PATCH] Changed CrudEntityCOntroller, ExperimentContro;;er and experiment/view.xhtml to show only the list of experiment that the logged in user is part of --- .../controllers/CrudEntityController.java | 53 -------------- .../controllers/ExperimentController.java | 73 ++++++++++++++++++- .../web/views/experiment/view.xhtml | 2 +- 3 files changed, 73 insertions(+), 55 deletions(-) diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java index f4e64d3e..cfa44ca3 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java @@ -26,13 +26,11 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F private DataModel listDataModel = null; private DataTable listDataTable = null; -// private boolean listDataModelReset = true; private List<EntityType> filteredObjectList = null; private DataModel selectDataModel = null; private DataTable selectDataTable = null; -// private boolean selectDataModelReset = false; private List<EntityType> selectedObjectList = null; @@ -73,7 +71,6 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F return current; } - public String resetList() { logger.debug("Resetting list"); return prepareList(); @@ -106,20 +103,6 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F this.selectDataTable = selectDataTable; } -// public boolean isAnyListFilterSet() { -// if (listDataTable == null) { -// return false; -// } -// Map<String, Object> filterMap = listDataTable.getFilters(); -// for (Object filter : filterMap.values()) { -// if ((String)filter != null && !((String)filter).isEmpty()) { -// return true; -// } -// } -// return false; -// } -// - public String prepareView(EntityType entity) { clear(); logger.debug("Preparing view"); @@ -140,23 +123,6 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F return "create?faces-redirect=true"; } -// public EntityType cloneEntityInstance(EntityType entity) { -// EntityType clonedEntity; -// try { -// clonedEntity = (EntityType) (entity.clone()); -// } -// catch (CloneNotSupportedException ex) { -// logger.error("Object cannot be cloned: " + ex); -// clonedEntity = createEntityInstance(); -// } -// return clonedEntity; -// } -// -// public String prepareClone(EntityType entity) { -// current = cloneEntityInstance(entity); -// return "create?faces-redirect=true"; -// } -// protected void prepareEntityInsert(EntityType entity) throws DmPortalException { } @@ -303,7 +269,6 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F public void resetListDataModel() { listDataModel = null; listDataTable = null; -// listDataModelReset = true; filteredObjectList = null; current = null; } @@ -312,7 +277,6 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F selectDataModel = null; selectDataTable = null; selectedObjectList = null; - // selectDataModelReset = true; } public List<EntityType> getAvailableItems() { @@ -340,21 +304,4 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F return CollectionUtility.displayItemListWithoutOutsideDelimiters(entityList, itemDelimiter); } - -// public boolean isListDataModelReset() { -// if (listDataModelReset) { -// listDataModelReset = false; -// return true; -// } -// return false; -// } -// -// public boolean isSelectDataModelReset() { -// if (selectDataModelReset) { -// selectDataModelReset = false; -// return true; -// } -// return false; -// } - } 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 059c0352..873bebb9 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 @@ -22,6 +22,7 @@ import gov.anl.aps.dm.portal.model.entities.PolicyType; 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.utilities.CollectionUtility; import gov.anl.aps.dm.portal.utilities.SessionUtility; import java.util.ArrayList; import java.util.Date; @@ -37,6 +38,9 @@ import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.FacesConverter; +import javax.faces.model.DataModel; +import javax.faces.model.ListDataModel; +import javax.faces.model.SelectItem; import org.apache.log4j.Logger; @Named("experimentController") @@ -391,9 +395,76 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper return ""; } + private boolean isAdmin(String username) { + return roleTypeFacade.findByName(RoleTypeName.ADMIN).isAdmin(username); + } + + @Override + public DataModel createListDataModel() { + UserInfo logged = (UserInfo) SessionUtility.getUser(); + if (logged == null) { + return null; + } + if (isAdmin(logged.getUsername())) { + return new ListDataModel(getFacade().findAll()); + } else { + return new ListDataModel(userInfoFacade.findExperimentsInUser(logged.getId())); + } + } + @Override public List<Experiment> getAvailableItems() { - return super.getAvailableItems(); + UserInfo logged = (UserInfo) SessionUtility.getUser(); + if (logged == null) { + return null; + } + if (isAdmin(logged.getUsername())) { + return getFacade().findAll(); + } else { + return userInfoFacade.findExperimentsInUser(logged.getId()); + } + } + + @Override + public DataModel createSelectDataModel() { + UserInfo logged = (UserInfo) SessionUtility.getUser(); + if (logged == null) { + return null; + } + List<Experiment> selectEntityList; + if (isAdmin(logged.getUsername())) { + selectEntityList = getFacade().findAll(); + } else { + selectEntityList = userInfoFacade.findExperimentsInUser(logged.getId()); + } + prepareEntityListForSelection(selectEntityList); + return new ListDataModel(selectEntityList); + } + + @Override + public SelectItem[] getAvailableItemsForSelectMany() { + UserInfo logged = (UserInfo) SessionUtility.getUser(); + if (logged == null) { + return null; + } + if (isAdmin(logged.getUsername())) { + return CollectionUtility.getSelectItems(getFacade().findAll(), false); + } else { + return CollectionUtility.getSelectItems(userInfoFacade.findExperimentsInUser(logged.getId()), false); + } + } + + @Override + public SelectItem[] getAvailableItemsForSelectOne() { + UserInfo logged = (UserInfo) SessionUtility.getUser(); + if (logged == null) { + return null; + } + if (isAdmin(logged.getUsername())) { + return CollectionUtility.getSelectItems(getFacade().findAll(), true); + } else { + return CollectionUtility.getSelectItems(userInfoFacade.findExperimentsInUser(logged.getId()), true); + } } @Override diff --git a/src/java/DmWebPortal/web/views/experiment/view.xhtml b/src/java/DmWebPortal/web/views/experiment/view.xhtml index 7840f741..1ab42ea6 100644 --- a/src/java/DmWebPortal/web/views/experiment/view.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/view.xhtml @@ -37,7 +37,7 @@ <p/> <div class="actionButton"> - <p:commandButton action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.admin or experimentController.canEditExperiment(experimentObject.id)}" value="Edit" alt="Edit" icon="ui-icon-pencil"/> + <p:commandButton action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.admin or experimentController.canEditExperiment(experimentObject)}" value="Edit" alt="Edit" icon="ui-icon-pencil"/> <p:commandButton action="#{experimentController.prepareList()}" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/> </div> -- GitLab