Commit 31418a0f by Juho Juopperi

Salespoint List View

1 parent c1253309
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.annotation.security.DeclareRoles;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.SalespointPermission;
import fi.insomnia.bortal.facade.SalespointFacade;
import fi.insomnia.bortal.model.salespoint.Salespoint;
/**
* Session Bean implementation class SalespointBean
*/
@Stateless
@LocalBean
@DeclareRoles({ SalespointPermission.S_VIEW, SalespointPermission.S_MODIFY })
public class SalespointBean implements SalespointBeanLocal {
private static final Logger logger = LoggerFactory
.getLogger(SalespointBean.class);
@EJB
SalespointFacade salespointFacade;
public SalespointBean() {
}
@Override
public List<Salespoint> findAll() {
List<Salespoint> list = salespointFacade.findAll();
if (list != null)
logger.debug("Found {} salespoints", list.size());
return list;
}
}
package fi.insomnia.bortal.facade;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.salespoint.Salespoint;
import fi.insomnia.bortal.model.salespoint.Salespoint_;
/**
* Session Bean implementation class SalespointFacade
*/
@Stateless
@LocalBean
public class SalespointFacade extends IntegerPkGenericFacade<Salespoint> {
@EJB
private EventBeanLocal eventbean;
public SalespointFacade() {
super(Salespoint.class);
}
public List<Salespoint> findAll() {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Salespoint> cq = cb.createQuery(Salespoint.class);
Root<Salespoint> root = cq.from(Salespoint.class);
cq.where(cb.equal(root.get(Salespoint_.event),
eventbean.getCurrentEvent()));
return getEm().createQuery(cq).getResultList();
}
}
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.salespoint.Salespoint;
@Local
public interface SalespointBeanLocal {
List<Salespoint> findAll();
}
...@@ -6,6 +6,7 @@ import fi.insomnia.bortal.enums.apps.IAppPermission; ...@@ -6,6 +6,7 @@ import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.enums.apps.LayoutPermission; import fi.insomnia.bortal.enums.apps.LayoutPermission;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission; import fi.insomnia.bortal.enums.apps.PollPermission;
import fi.insomnia.bortal.enums.apps.SalespointPermission;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.TerminalPermission; import fi.insomnia.bortal.enums.apps.TerminalPermission;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
...@@ -19,6 +20,7 @@ public enum BortalApplication { ...@@ -19,6 +20,7 @@ public enum BortalApplication {
CONTENT("News, pages and other dynamic content", ContentPermission.class), CONTENT("News, pages and other dynamic content", ContentPermission.class),
TERMINAL("Sales and self help terminal roles", TerminalPermission.class), TERMINAL("Sales and self help terminal roles", TerminalPermission.class),
LAYOUT("Layoutstuff", LayoutPermission.class), LAYOUT("Layoutstuff", LayoutPermission.class),
SALESPOINT("Managing salespoints", SalespointPermission.class),
; ;
......
package fi.insomnia.bortal.enums.apps;
import fi.insomnia.bortal.enums.BortalApplication;
public enum SalespointPermission implements IAppPermission {
VIEW("View salespoints"), MODIFY("Modify salespoints");
public static final String S_VIEW = "SALESPOINT/VIEW";
public static final String S_MODIFY = "SALESPOINT/MODIFY";
private final String description;
private final String fullName;
private SalespointPermission(String desc) {
description = desc;
fullName = new StringBuilder().append(getParent().toString())
.append(DELIMITER).append(toString()).toString();
}
@Override
public BortalApplication getParent() {
return BortalApplication.SALESPOINT;
}
@Override
public String getDescription() {
return description;
}
@Override
public String getFullName() {
return fullName;
}
}
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>LanBortalWeb</display-name> <display-name>LanBortalWeb</display-name>
<session-config> <session-config>
<session-timeout>30</session-timeout> <session-timeout>30</session-timeout>
</session-config> </session-config>
<context-param> <context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name> <param-name>javax.faces.PROJECT_STAGE</param-name>
<!--<param-value>Development</param-value> -->
<param-value>Production</param-value> <param-value>Production</param-value>
</context-param> </context-param>
<context-param> <context-param>
...@@ -55,7 +51,6 @@ ...@@ -55,7 +51,6 @@
<servlet-name>UserCardServlet</servlet-name> <servlet-name>UserCardServlet</servlet-name>
<url-pattern>/UserCard</url-pattern> <url-pattern>/UserCard</url-pattern>
</servlet-mapping> </servlet-mapping>
<servlet> <servlet>
<servlet-name>CardTemplateServlet</servlet-name> <servlet-name>CardTemplateServlet</servlet-name>
<servlet-class>fi.insomnia.bortal.servlet.CardTemplateServlet</servlet-class> <servlet-class>fi.insomnia.bortal.servlet.CardTemplateServlet</servlet-class>
...@@ -64,8 +59,6 @@ ...@@ -64,8 +59,6 @@
<servlet-name>CardTemplateServlet</servlet-name> <servlet-name>CardTemplateServlet</servlet-name>
<url-pattern>/CardTemplate</url-pattern> <url-pattern>/CardTemplate</url-pattern>
</servlet-mapping> </servlet-mapping>
<servlet> <servlet>
<servlet-name>PlaceMap</servlet-name> <servlet-name>PlaceMap</servlet-name>
<servlet-class>fi.insomnia.bortal.servlet.PlaceMap</servlet-class> <servlet-class>fi.insomnia.bortal.servlet.PlaceMap</servlet-class>
...@@ -76,7 +69,6 @@ ...@@ -76,7 +69,6 @@
<url-pattern>*.wtf</url-pattern> <url-pattern>*.wtf</url-pattern>
<url-pattern>/faces/*</url-pattern> <url-pattern>/faces/*</url-pattern>
</servlet-mapping> </servlet-mapping>
<filter> <filter>
<display-name>PrimefacesFileupload</display-name> <display-name>PrimefacesFileupload</display-name>
<filter-name>PrimeFacesFileupload</filter-name> <filter-name>PrimeFacesFileupload</filter-name>
...@@ -86,7 +78,6 @@ ...@@ -86,7 +78,6 @@
<filter-name>PrimeFacesFileupload</filter-name> <filter-name>PrimeFacesFileupload</filter-name>
<servlet-name>Faces Servlet</servlet-name> <servlet-name>Faces Servlet</servlet-name>
</filter-mapping> </filter-mapping>
<filter> <filter>
<display-name>HostnameFilter</display-name> <display-name>HostnameFilter</display-name>
<filter-name>HostnameFilter</filter-name> <filter-name>HostnameFilter</filter-name>
...@@ -129,12 +120,6 @@ ...@@ -129,12 +120,6 @@
<servlet-name>PrintBill</servlet-name> <servlet-name>PrintBill</servlet-name>
<url-pattern>/PrintBill</url-pattern> <url-pattern>/PrintBill</url-pattern>
</servlet-mapping> </servlet-mapping>
<!-- <error-page> <error-code>401</error-code> <location>/permissionDeniedRedirect.jsp</location>
</error-page> <error-page> <error-code>403</error-code> <location>/permissionDeniedRedirect.jsp</location>
</error-page> <error-page> <exception-type>fi.insomnia.bortal.exceptions.PermissionDeniedException</exception-type>
<location>/permissionDeniedRedirect.jsp</location> </error-page> <error-page>
<exception-type>javax.servlet.ServletException</exception-type> <location>/permissionDeniedRedirect.jsp</location>
</error-page> -->
<persistence-unit-ref> <persistence-unit-ref>
<persistence-unit-ref-name>BortalEMF</persistence-unit-ref-name> <persistence-unit-ref-name>BortalEMF</persistence-unit-ref-name>
</persistence-unit-ref> </persistence-unit-ref>
...@@ -148,7 +133,4 @@ ...@@ -148,7 +133,4 @@
<servlet-name>PlaceGroupPdf</servlet-name> <servlet-name>PlaceGroupPdf</servlet-name>
<url-pattern>/PlaceGroupPdf</url-pattern> <url-pattern>/PlaceGroupPdf</url-pattern>
</servlet-mapping> </servlet-mapping>
</web-app> </web-app>
\ No newline at end of file
<?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">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:outputText
rendered="#{salespointListView.salespoints.rowCount le 0}"
value="#{i18n['salespoint.noSalespoints']}" />
<h:form rendered="#{salespointListView.salespoints.rowCount gt 0}">
<h:dataTable styleClass="bordertable" id="salespointList"
value="#{salespointListView.salespoints}" var="salespoint">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['salespoint.name']}" />
</f:facet>
<h:outputText value="#{salespoint.name}" />
</h:column>
<h:column rendered="#{billListView.canEditSalespoint}">
<h:link outcome="/salespoint/edit"
value="#{i18n['salespoint.edit']}">
<f:param name="salespointid" value="#{salespoint.id}" />
</h:link>
</h:column>
</h:dataTable>
</h:form>
</composite:implementation>
</html>
\ No newline at end of file
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:salespoint="http://java.sun.com/jsf/composite/cditools/salespoint"
xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<ui:composition
template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{salespointListView.init}" />
</f:metadata>
<ui:define name="content">
<salespoint:list />
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
package fi.insomnia.bortal.web.cdiview.shop;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Named;
import fi.insomnia.bortal.beans.SalespointBeanLocal;
import fi.insomnia.bortal.enums.apps.SalespointPermission;
import fi.insomnia.bortal.model.salespoint.Salespoint;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
/**
* Session Bean implementation class SalespointListView
*/
@Named
@ConversationScoped
public class SalespointListView extends GenericCDIView {
@EJB
private SalespointBeanLocal salespointBean;
private static final long serialVersionUID = -8990414681240360892L;
private ListDataModel<Salespoint> salespoints;
private boolean modifySalespoint;
public SalespointListView() {
}
public void init() {
if (super.requirePermissions(SalespointPermission.VIEW)) {
beginConversation();
salespoints = new ListDataModel<Salespoint>(
salespointBean.findAll());
modifySalespoint = permbean
.hasPermission(SalespointPermission.MODIFY);
}
}
public ListDataModel<Salespoint> getSalespoints() {
return salespoints;
}
public void setSalespoints(ListDataModel<Salespoint> salespoints) {
this.salespoints = salespoints;
}
public boolean canEditSalespoint() {
return modifySalespoint;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!