Commit c76e8049 by Juho Salli

Merge branch 'master' of dev.insomnia.fi:/data/bortal

2 parents 66f784a9 893660af
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;
}
}
...@@ -7,7 +7,10 @@ import javax.ejb.LocalBean; ...@@ -7,7 +7,10 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import fi.insomnia.bortal.facade.CompoFacade; import fi.insomnia.bortal.facade.CompoFacade;
import fi.insomnia.bortal.facade.VoteFacade;
import fi.insomnia.bortal.model.Compo; import fi.insomnia.bortal.model.Compo;
import fi.insomnia.bortal.model.CompoEntry;
import fi.insomnia.bortal.model.Vote;
/** /**
* Session Bean implementation class VotingBean * Session Bean implementation class VotingBean
...@@ -18,7 +21,8 @@ public class VotingBean implements VotingBeanLocal { ...@@ -18,7 +21,8 @@ public class VotingBean implements VotingBeanLocal {
@EJB @EJB
private CompoFacade compoFacade; private CompoFacade compoFacade;
@EJB
private VoteFacade voteFacade;
/** /**
* Default constructor. * Default constructor.
...@@ -27,6 +31,10 @@ public class VotingBean implements VotingBeanLocal { ...@@ -27,6 +31,10 @@ public class VotingBean implements VotingBeanLocal {
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
public void createVote(Vote v) {
voteFacade.create(v);
}
public void createCompo(Compo c) { public void createCompo(Compo c) {
compoFacade.create(c); compoFacade.create(c);
} }
......
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();
}
}
...@@ -13,5 +13,4 @@ public class VoteFacade extends IntegerPkGenericFacade<Vote> { ...@@ -13,5 +13,4 @@ public class VoteFacade extends IntegerPkGenericFacade<Vote> {
super(Vote.class); super(Vote.class);
} }
} }
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();
}
...@@ -50,6 +50,10 @@ public class Compo extends GenericEntity { ...@@ -50,6 +50,10 @@ public class Compo extends GenericEntity {
@Column(name = "compo_start") @Column(name = "compo_start")
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
private Calendar startTime; private Calendar startTime;
@Column(name = "compo_start")
@Temporal(TemporalType.TIMESTAMP)
private Calendar endTime;
/** /**
* When the voting should start * When the voting should start
...@@ -79,6 +83,8 @@ public class Compo extends GenericEntity { ...@@ -79,6 +83,8 @@ public class Compo extends GenericEntity {
@Column(name = "max_participant_count") @Column(name = "max_participant_count")
private int maxParticipantCount; private int maxParticipantCount;
/** /**
* If ( for some unimaginable reason ) compo is delayed hold voting can be * If ( for some unimaginable reason ) compo is delayed hold voting can be
* used to postpone the start of the voting from the time specified in * used to postpone the start of the voting from the time specified in
...@@ -198,4 +204,12 @@ public class Compo extends GenericEntity { ...@@ -198,4 +204,12 @@ public class Compo extends GenericEntity {
public void setEvent(LanEvent event) { public void setEvent(LanEvent event) {
this.event = event; this.event = event;
} }
public Calendar getEndTime() {
return endTime;
}
public void setEndTime(Calendar endTime) {
this.endTime = endTime;
}
} }
...@@ -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' ?>
<!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!