From bb0882b44d94c787b1341ece81f8a23a3ce026b5 Mon Sep 17 00:00:00 2001
From: "Barbara B. Frosik" <bfrosik@aps.anl.gov>
Date: Tue, 21 Oct 2014 20:31:08 +0000
Subject: [PATCH] Added Role Type pages

---
 .../controllers/RoleTypeController.java       | 120 ++++++++++++++++++
 .../dm/portal/model/beans/RoleTypeFacade.java |  16 +++
 .../templates/contentViewTemplate4x3.xhtml    |   1 +
 .../web/templates/homeViewTemplate.xhtml      |   2 +-
 .../web/views/roleType/create.xhtml           |  30 +++++
 .../DmWebPortal/web/views/roleType/edit.xhtml |  30 +++++
 .../DmWebPortal/web/views/roleType/list.xhtml |  31 +++++
 .../roleType/roleTypeCreatePanelGrid.xhtml    |  25 ++++
 .../roleType/roleTypeDestroyDialog.xhtml      |  13 ++
 .../roleType/roleTypeEditPanelGrid.xhtml      |  27 ++++
 .../roleType/roleTypeListDataTable.xhtml      |  48 +++++++
 .../roleType/roleTypeViewPanelGrid.xhtml      |  24 ++++
 .../DmWebPortal/web/views/roleType/view.xhtml |  42 ++++++
 13 files changed, 408 insertions(+), 1 deletion(-)
 create mode 100644 src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
 create mode 100644 src/java/DmWebPortal/web/views/roleType/create.xhtml
 create mode 100644 src/java/DmWebPortal/web/views/roleType/edit.xhtml
 create mode 100644 src/java/DmWebPortal/web/views/roleType/list.xhtml
 create mode 100644 src/java/DmWebPortal/web/views/roleType/roleTypeCreatePanelGrid.xhtml
 create mode 100644 src/java/DmWebPortal/web/views/roleType/roleTypeDestroyDialog.xhtml
 create mode 100644 src/java/DmWebPortal/web/views/roleType/roleTypeEditPanelGrid.xhtml
 create mode 100644 src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
 create mode 100644 src/java/DmWebPortal/web/views/roleType/roleTypeViewPanelGrid.xhtml
 create mode 100644 src/java/DmWebPortal/web/views/roleType/view.xhtml

diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
new file mode 100644
index 00000000..8528a790
--- /dev/null
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
@@ -0,0 +1,120 @@
+package gov.anl.aps.dm.portal.controllers;
+
+import gov.anl.aps.dm.portal.exceptions.DmPortalException;
+import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists;
+import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade;
+import gov.anl.aps.dm.portal.model.entities.RoleType;
+import gov.anl.aps.dm.portal.utilities.SessionUtility;
+import java.util.List;
+import javax.ejb.EJB;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
+import javax.inject.Named;
+import org.apache.log4j.Logger;
+
+@Named("roleTypeController")
+@SessionScoped
+public class RoleTypeController extends CrudEntityController<RoleType, RoleTypeFacade>
+{
+
+    private static final Logger logger = Logger.getLogger(RoleTypeController.class.getName());
+
+    @EJB
+    private RoleTypeFacade roleTypeFacade;
+
+    public RoleTypeController() {
+    }
+
+    @Override
+    protected RoleTypeFacade getFacade() {
+        return roleTypeFacade;
+    }
+
+    @Override
+    protected RoleType createEntityInstance() {
+        return new RoleType();
+    }
+
+    @Override
+    public String getEntityTypeName() {
+        return "roleType";
+    }
+
+    @Override
+    public String getCurrentEntityInstanceName() {
+        if (getCurrent() != null) {
+            return getCurrent().getName();
+        }
+        return "";
+    }
+
+    @Override
+    public List<RoleType> getAvailableItems() {
+        return super.getAvailableItems();
+    }
+
+    @Override
+    public String prepareEdit(RoleType roleType) {
+        return super.prepareEdit(roleType);
+    }
+
+    @Override
+    public void prepareEntityInsert(RoleType roleType) throws ObjectAlreadyExists {
+        RoleType existingRoleType = roleTypeFacade.findByName(roleType.getName());
+        if (existingRoleType != null) {
+            throw new ObjectAlreadyExists("Role Type " + roleType.getName() + " already exists.");
+        }
+        logger.debug("Inserting new roleType " + roleType.getName());
+    }
+
+    @Override
+    public void prepareEntityUpdate(RoleType roleType) throws DmPortalException {
+        super.prepareEntityUpdate(roleType);
+    }
+    
+    @FacesConverter(forClass = RoleType.class)
+    public static class RoleTypeControllerConverter implements Converter
+    {
+
+        @Override
+        public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
+            if (value == null || value.length() == 0) {
+                return null;
+            }
+            RoleTypeController controller = (RoleTypeController) facesContext.getApplication().getELResolver().
+                    getValue(facesContext.getELContext(), null, "roleTypeController");
+            return controller.getEntity(getKey(value));
+        }
+
+        java.lang.Integer getKey(String value) {
+            java.lang.Integer key;
+            key = Integer.valueOf(value);
+            return key;
+        }
+
+        String getStringKey(java.lang.Integer value) {
+            StringBuilder sb = new StringBuilder();
+            sb.append(value);
+            return sb.toString();
+        }
+
+        @Override
+        public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
+            if (object == null) {
+                return null;
+            }
+            if (object instanceof RoleType) {
+                RoleType o = (RoleType) object;
+                return getStringKey(o.getId());
+            }
+            else {
+                throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + RoleType.class.getName());
+            }
+        }
+
+    }
+
+}
\ No newline at end of file
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 ea68e624..04a018b2 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
@@ -9,6 +9,7 @@ package gov.anl.aps.dm.portal.model.beans;
 import gov.anl.aps.dm.portal.model.entities.RoleType;
 import javax.ejb.Stateless;
 import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
 
 /**
@@ -30,4 +31,19 @@ public class RoleTypeFacade extends AbstractFacade<RoleType>
         super(RoleType.class);
     }
     
+    public RoleType findByName(String name) {
+        try {
+            return (RoleType) em.createNamedQuery("RoleType.findByName")
+                    .setParameter("name", name)
+                    .getSingleResult();
+        }
+        catch (NoResultException ex) {
+        }
+        return null;
+    }
+
+    public boolean checkIfNameExists(String name) {
+        return findByName(name) != null;
+    }
+
 }
diff --git a/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml b/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml
index 5193ff00..d99b808b 100644
--- a/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml
+++ b/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml
@@ -57,6 +57,7 @@
                                 <p:menubar>
                                     <p:menuitem value="Home" url="/views/home.xhtml" icon="ui-icon-home"/>
                                     <p:menuitem value="Experiment Types" url="/views/experimentType/list.xhtml"/>
+                                    <p:menuitem value="Role Types" url="/views/roleType/list.xhtml"/>
                                     <p:menuitem value="Users" url="/views/userInfo/list.xhtml"/>
                                     <p:menuitem value="Login" onclick="PF('loginDialog').show();" rendered="#{!loginController.loggedIn}" icon="ui-icon-person"/>
                                     <p:menuitem value="Logout" action="#{loginController.logout()}" rendered="#{loginController.loggedIn}" icon="ui-icon-close"/>                                </p:menubar>
diff --git a/src/java/DmWebPortal/web/templates/homeViewTemplate.xhtml b/src/java/DmWebPortal/web/templates/homeViewTemplate.xhtml
index 8297d01a..83cb4d25 100644
--- a/src/java/DmWebPortal/web/templates/homeViewTemplate.xhtml
+++ b/src/java/DmWebPortal/web/templates/homeViewTemplate.xhtml
@@ -11,7 +11,6 @@
     <h:head>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
         <link href="../resources/css/portal.css" rel="stylesheet" type="text/css" />
-        <link href="../../resources/css/portal.css" rel="stylesheet" type="text/css" />
         <title>Data Management System Portal</title>
     </h:head>
 
@@ -59,6 +58,7 @@
                                 <p:menubar>
                                     <p:menuitem value="Home" url="/views/home.xhtml" icon="ui-icon-home"/>
                                     <p:menuitem value="Experiment Types" url="/views/experimentType/list.xhtml"/>
+                                    <p:menuitem value="Role Types" url="/views/roleType/list.xhtml"/>
                                     <p:menuitem value="Users" url="/views/userInfo/list.xhtml"/>
                                     <p:menuitem value="Login" onclick="PF('loginDialog').show();" rendered="#{!loginController.loggedIn}" icon="ui-icon-person"/>
                                     <p:menuitem value="Logout" action="#{loginController.logout()}" rendered="#{loginController.loggedIn}" icon="ui-icon-close"/>                                </p:menubar>
diff --git a/src/java/DmWebPortal/web/views/roleType/create.xhtml b/src/java/DmWebPortal/web/views/roleType/create.xhtml
new file mode 100644
index 00000000..5a30bfce
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/create.xhtml
@@ -0,0 +1,30 @@
+<?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"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+                template="../../templates/contentViewTemplate4x3.xhtml">
+
+    <ui:define name="middleCenter">
+        <div class="pageTitle">
+            <h1>Add Role</h1>
+        </div>
+
+        <h:form id="addRoleTypeForm">
+
+            <ui:include src="roleTypeCreatePanelGrid.xhtml"/>
+
+            <p/>
+            <div class="actionButton">
+                <p:commandButton action="#{roleTypeController.create()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
+                <p:commandButton action="#{roleTypeController.prepareList()}" immediate="true" value="Cancel" alt="Cancel" icon="ui-icon-cancel"/>
+            </div>
+        </h:form>
+
+    </ui:define>
+</ui:composition>
+
+
diff --git a/src/java/DmWebPortal/web/views/roleType/edit.xhtml b/src/java/DmWebPortal/web/views/roleType/edit.xhtml
new file mode 100644
index 00000000..93d36536
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/edit.xhtml
@@ -0,0 +1,30 @@
+<?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"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+                template="../../templates/contentViewTemplate4x3.xhtml">
+
+    <ui:define name="middleCenter">
+        <h:form id="editRoleTypeForm">
+
+            <div class="middleCenterLeftContent">
+                <div class="pageTitle">
+                    <h1>Edit Role Type</h1>
+                </div>
+
+                <ui:include src="roleTypeEditPanelGrid.xhtml"/>
+                <p/>
+                <div class="actionButton">
+                    <p:commandButton action="#{roleTypeController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
+                    <p:commandButton action="#{roleTypeController.prepareList()}" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                </div>
+            </div>
+
+        </h:form>
+
+    </ui:define>
+</ui:composition>
diff --git a/src/java/DmWebPortal/web/views/roleType/list.xhtml b/src/java/DmWebPortal/web/views/roleType/list.xhtml
new file mode 100644
index 00000000..4241dd77
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/list.xhtml
@@ -0,0 +1,31 @@
+<?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"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+                template="../../templates/contentViewTemplate4x3.xhtml">
+
+    <ui:define name="middleCenter">
+        <div class="pageTitle">
+            <h1>Role Types</h1>
+        </div>
+
+        <h:form id="viewRoleTypeListForm">
+            <c:set var="entityController" value="#{roleTypeController}"/>
+            <ui:include src="../common/commonListActionButtons.xhtml"/>
+
+            <h:panelGroup>  
+                <ui:include src="roleTypeListDataTable.xhtml"/>
+            </h:panelGroup>
+
+            <ui:include src="roleTypeDestroyDialog.xhtml"/>
+
+            <h:outputScript library="js/roleType" name="list.filter.js" rendered="#{loginController.loggedIn}"/>
+
+        </h:form>
+
+    </ui:define>
+</ui:composition>
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeCreatePanelGrid.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeCreatePanelGrid.xhtml
new file mode 100644
index 00000000..5da17868
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeCreatePanelGrid.xhtml
@@ -0,0 +1,25 @@
+<?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:ui="http://xmlns.jcp.org/jsf/facelets"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+    <c:set var="roleTypeObject" value="#{roleTypeController.selected}"/>
+
+    <p:panelGrid columns="3" styleClass="createEntityDetails">
+
+        <h:outputLabel for="name" value="Role Name" styleClass="entityDataEmphasizedLabel"/>
+        <h:inputText id="name" value="#{roleTypeObject.name}" title="Role Name" required="true" styleClass="entityDataEmphasizedText"/>
+        <p:message for="name"/> 
+
+        <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
+        <h:inputText id="description" value="#{roleTypeObject.description}" title="Description" styleClass="entityDataText"/>
+        <p:message for="description"/>        
+        
+    </p:panelGrid>
+
+</ui:composition>
+
+
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeDestroyDialog.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeDestroyDialog.xhtml
new file mode 100644
index 00000000..80ac67fd
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeDestroyDialog.xhtml
@@ -0,0 +1,13 @@
+<?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">
+
+    <p:confirmDialog id="roleTypeDestroyDialog" message="Destroy role #{roleTypeController.getCurrentEntityInstanceName()}?"
+                     header="Destroy RoleType" severity="alert" widgetVar="roleTypeDestroyDialogWidget"
+                     styleClass="dialog">
+        <p:commandButton value="Yes" oncomplete="roleTypeDestroyDialogWidget.hide()" action="#{roleTypeController.destroy()}"/>
+        <p:commandButton value="No" onclick="roleTypeDestroyDialogWidget.hide()" type="button" />
+    </p:confirmDialog>  
+</ui:composition>
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeEditPanelGrid.xhtml
new file mode 100644
index 00000000..0341b7e5
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeEditPanelGrid.xhtml
@@ -0,0 +1,27 @@
+<?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:ui="http://xmlns.jcp.org/jsf/facelets"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+    <c:set var="roleTypeObject" value="#{roleTypeController.selected}"/>
+    <c:set var="isFieldWriteable" value="#{loginController.loggedIn}"/>
+
+    <p:panelGrid columns="3" styleClass="editEntityDetails"> 
+
+        <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
+        <h:inputText id="name" value="#{roleTypeObject.name}" title="Name" required="true" styleClass="entityDataEmphasizedText"/>
+        <p:message for="name"/> 
+
+        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
+        <h:outputText id="id" value="#{roleTypeObject.id}" title="Id" styleClass="entityDataText"/>
+        <p:message for="id"/>
+
+        <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
+        <h:inputText id="description" value="#{roleTypeObject.description}" title="Description" styleClass="entityDataText"/>
+        <p:message for="description"/>     
+        
+    </p:panelGrid>
+</ui:composition>
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
new file mode 100644
index 00000000..672cf7dc
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
@@ -0,0 +1,48 @@
+<?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"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+    <p:dataTable id="roleTypeListDataTable"                              
+                 var="roleTypeObject" 
+                 value="#{roleTypeController.listDataModel}" 
+                 filteredValue="#{roleTypeController.filteredObjectList}"
+                 paginator="true" 
+                 paginatorAlwaysVisible="false" 
+                 rows="25"
+                 binding="#{roleTypeController.listDataTable}"
+                 widgetVar="roleTypeListWidget" 
+                 emptyMessage="No role types found.">
+
+
+        <p:column sortBy="#{roleTypeObject.id}" headerText="Id">
+            <h:outputText value="#{roleTypeObject.id}"/>
+        </p:column>
+
+        <p:column sortBy="#{roleTypeObject.name}" headerText="Role Type" 
+                  filterBy="#{roleTypeObject.name}" filterMatchMode="contains">
+            <h:outputText value="#{roleTypeObject.name}"/>
+        </p:column>
+
+        <p:column sortBy="#{roleTypeObject.description}" headerText="Description" 
+                  filterBy="#{roleTypeObject.description}" filterMatchMode="contains">
+            <h:outputText value="#{roleTypeObject.description}"/>
+        </p:column>
+        
+        <c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/>
+        <p:column headerText="Actions">
+            <div class="actionLink">
+                <p:commandLink action="#{roleTypeController.prepareView(roleTypeObject)}" styleClass="ui-icon ui-icon-info" title="View"/>
+                <p:commandLink action="#{roleTypeController.prepareEdit(roleTypeObject)}" rendered="#{isEntityWriteable}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
+                <p:commandLink oncomplete="roleTypeDestroyDialogWidget.show()" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
+                    <f:setPropertyActionListener value="#{roleTypeObject}" target="#{roleTypeController.current}"/>
+                </p:commandLink>
+            </div>
+        </p:column>
+    </p:dataTable>
+
+</ui:composition>
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeViewPanelGrid.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeViewPanelGrid.xhtml
new file mode 100644
index 00000000..0c64446c
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeViewPanelGrid.xhtml
@@ -0,0 +1,24 @@
+<?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:ui="http://xmlns.jcp.org/jsf/facelets"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+    <c:set var="roleTypeObject" value="#{roleTypeController.selected}"/>
+
+    <p:panelGrid columns="2" styleClass="viewEntityDetails">
+
+        <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
+        <h:outputText id="name" value="#{roleTypeObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
+
+        <h:outputLabel for="id" value="Id" styleClass="entityDataLabel"/>
+        <h:outputText id="id" value="#{roleTypeObject.id}" title="Id" styleClass="entityDataText"/>
+
+        <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
+        <h:outputText id="description" value="#{roleTypeObject.description}" title="Description" styleClass="entityDataText"/>
+        
+    </p:panelGrid>
+
+</ui:composition>
\ No newline at end of file
diff --git a/src/java/DmWebPortal/web/views/roleType/view.xhtml b/src/java/DmWebPortal/web/views/roleType/view.xhtml
new file mode 100644
index 00000000..72fbd0e7
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/roleType/view.xhtml
@@ -0,0 +1,42 @@
+<?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"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+                template="../../templates/contentViewTemplate4x3.xhtml">
+
+    <ui:define name="middleCenter">
+        <h:form id="viewRoleTypeForm">
+
+            <div class="middleCenterLeftContent">
+                <div class="pageTitle">
+                    <h1>Role Type Details</h1>
+                </div>
+
+                <ui:include src="roleTypeViewPanelGrid.xhtml"/>
+                
+                <p/>
+                    <c:set var="roleTypeObject" value="#{roleTypeController.selected}"/>
+                <c:set var="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">
+                        <f:setPropertyActionListener value="#{roleTypeObject}" target="#{roleTypeController.current}"/>
+                    </p:commandButton>  
+                    <p:commandButton action="#{roleTypeController.prepareList()}" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
+                </div>
+
+                <ui:include src="roleTypeDestroyDialog.xhtml"/>
+                
+            </div>
+
+        </h:form>
+
+    </ui:define>
+
+</ui:composition>
+
+
-- 
GitLab