Commit f57f1ee3 by Tuukka Kivilahti

moar reader stuff

1 parent fab92223
package fi.codecrew.moya.beans;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.PrintedCardFacade;
import fi.codecrew.moya.model.PrintedCard;
/**
* Session Bean implementation class CardTemplateBean
*/
@Stateless
@LocalBean
@DeclareRoles({ UserPermission.S_WRITE_ROLES })
public class PrintedCardBean implements PrintedCardBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(PrintedCardBean.class);
/**
* Default constructor.
*/
public PrintedCardBean() {
// TODO Auto-generated constructor stub
}
@EJB
private PrintedCardFacade printedCardFacade;
@RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override
public PrintedCard save(PrintedCard card) {
return printedCardFacade.merge(card);
}
@Override
@RolesAllowed(UserPermission.S_WRITE_ROLES)
public PrintedCard find(Integer id) {
return printedCardFacade.find(id);
}
}
package fi.codecrew.moya.beans;
import javax.ejb.Local;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.utilities.jsf.EntityFinderBean;
@Local
public interface PrintedCardBeanLocal extends EntityFinderBean<PrintedCard> {
PrintedCard save(PrintedCard card);
}
<?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:login="http://java.sun.com/jsf/composite/cditools/login"
xmlns:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
>
<composite:interface>
<composite:attribute name="selectvalue" required="false" />
<composite:attribute name="selectaction" method-signature="java.lang.String action()" required="false" />
<composite:attribute name="linkvalue" required="false" />
<composite:attribute name="linkoutcome" required="false" />
</composite:interface>
<composite:implementation>
<reader:barcode selectvalue="#{cc.attrs.selectvalue}" selectaction="#{cc.attrs.selectaction}" /> <br />
<reader:rfid selectvalue="#{cc.attrs.selectvalue}" selectaction="#{cc.attrs.selectaction}" linkvalue="#{cc.attrs.linkvalue}" linkoutcome="#{cc.attrs.linkoutcome}" /> <br />
</composite:implementation>
</html>
\ 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" xmlns:p="http://primefaces.org/ui">
<composite:interface>
<composite:attribute name="selectvalue" required="false" />
<composite:attribute name="selectaction" method-signature="java.lang.String action()" required="false" />
<composite:attribute name="linkvalue" required="false" />
<composite:attribute name="linkoutcome" required="false" />
</composite:interface>
<composite:implementation>
<h:form>
<p:poll interval="3" />
<h:dataTable border="1" id="event" value="#{readerView.readerEvents}" var="event">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['readerevent.tagname']}" />
</f:facet>
<h:outputText rendered="#{!empty event.printedCard}" id="cardtag" value="#{event.printedCard.rfidUid}" />
<h:outputText rendered="#{empty event.printedCard}" id="newtag" value="#{event.value}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.user']}" />
</f:facet>
<h:outputText rendered="#{!empty event.printedCard}" value="#{event.printedCard.user.wholeName} (#{event.printedCard.user.nick})" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['readerevent.seenSince']}" />
</f:facet>
<h:outputText value="#{event.seenSince}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['gamepoints']}" />
</f:facet>
<h:outputText value="#{event.gamePoint}" />
</h:column>
<h:column>
<h:link rendered="#{!empty event.printedCard and !empty cc.attrs.linkoutcome}" outcome="#{cc.attrs.linkoutcome}" value="#{cc.attrs.linkvalue}">
<f:param name="userid" value="#{event.printedCard.user.user.id}" />
</h:link>
<h:commandLink rendered="#{!empty cc.attrs.selectaction}" action="#{cc.attrs.selectaction}" value="#{cc.attrs.selectvalue}" />
<h:link rendered="#{empty event.printedCard and !empty cc.attrs.showAssociateToUser}" outcome="/shop/assocToUser" value="#{i18n['readerevent.associateToUser']}">
<f:param name="eventid" value="#{event.id}" />
</h:link>
<!--
<h: link rendered="#{!empty event.printedCard} AND !empty cc.attrs.linkoutcome" outcome="/shop/shopToUser" value="#{i18n['readerevent.shopToUser']}">
<f:param name="userid" value="#{event.printedCard.user.user.id}" />
</h:link>
<h:commandButton action="#{cc.attrs.commitaction}" id="commitbutton-botton" value="#{cc.attrs.commitValue}" />
<h:link rendered="#{empty event.printedCard}" outcome="/shop/assocToUser" value="#{i18n['readerevent.associateToUser']}">
<f:param name="eventid" value="#{event.id}" />
</h:link> -->
</h:column>
</h:dataTable>
</h:form>
</composite:implementation>
</html>
<?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:dataTable id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr.identification}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.description']}" />
</f:facet>
<h:outputText value="#{rr.description}" />
</h:column>
<h:column>
<h:link outcome="/shop/showReaderEvents" value="#{i18n['reader.select']}">
<f:param value="#{rr.id}" name="readerId" />
</h:link>
</h:column>
<h:column>
<h:link outcome="/shop/editReader" value="#{i18n['reader.edit']}">
<f:param value="#{rr.id}" name="readerId" />
</h:link>
</h:column>
</h:dataTable>
</composite:implementation>
</html>
<?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"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form id="readerlist">
<h:dataTable id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr.identification}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.description']}" />
</f:facet>
<h:outputText value="#{rr.description}" />
</h:column>
<h:column>
<p:commandButton ajax="false" action="#{readerView.setReaderToId(rr.id)}" value="#{i18n['reader.select']}" />
</h:column>
</h:dataTable>
</h:form>
</composite:implementation>
</html>
<?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:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form>
<p:poll interval="3" />
<ui:repeat value="#{readerView.readerEvents}" var="event" >
<h:link styleClass="userimagetile" outcome="/admin/info/general"
rendered="#{!empty event.printedCard.user}">
<div>
<img
src="#{request.contextPath}/dydata/userimage/#{event.printedCard.user.currentImage.id}.img" />
<br />
<h:outputText styleClass="usertilenick"
value="#{event.printedCard.user.nick}" />
<br />
<h:outputText value="#{event.printedCard.user.wholeName}" />
<br />
<ui:repeat
value="#{readerView.getUserRoles(event.printedCard.user)}"
var="role">
<h:outputText value="#{role.name}" />
<br />
</ui:repeat>
</div>
<f:param name="userid" value="#{event.printedCard.user.user.id}" />
</h:link>
</ui:repeat>
</h:form>
</composite:implementation>
</html>
package fi.codecrew.moya.web.cdiview.reader;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.model.Reader;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named
@RequestScoped
public class ReaderListDataView extends GenericCDIView {
/**
*
*/
private static final long serialVersionUID = -601822388844764143L;
@EJB
private transient ReaderBeanLocal readerbean;
@Inject
private transient ReaderNameContainer readerNameContainer;
private transient ListDataModel<Reader> readers;
@SuppressWarnings("unused")
private static final Logger logger = LoggerFactory.getLogger(ReaderListDataView.class);
public void initView() {
super.requirePermissions(ShopPermission.SHOP_TO_OTHERS);
}
public ListDataModel<Reader> getReaders()
{
if (readers == null) {
readers = new ListDataModel<Reader>(readerbean.getReaders());
}
return readers;
}
public String selectReader() {
if(readers.isRowAvailable()) {
readerNameContainer.setReaderId(readers.getRowData().getId());
}
return null;
}
}
package fi.codecrew.moya.web.cdiview.reader;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class ReaderNameContainer implements Serializable {
private static final long serialVersionUID = 571747919767505523L;
private Integer readerId;
public Integer getReaderId() {
return readerId;
}
public void setReaderId(Integer readerId) {
this.readerId = readerId;
}
}
package fi.codecrew.moya.web.cdiview.reader;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.BarcodeBeanLocal;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.model.Reader;
import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.model.ReaderType;
import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.User;
import fi.codecrew.moya.utilities.SearchQuery;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.shop.UserCardWrapper;
import fi.codecrew.moya.web.cdiview.user.UserView;
@Named
@ConversationScoped
/**
* @author tuukka
*
*/
public class ReaderView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L;
private Integer eventid;
private String placecode;
private String usersearch;
private String barcode;
private Reader reader;
private transient ListDataModel<UserCardWrapper> userlist;
private ListDataModel<ReaderEvent> readerEventList;
@Inject
private ReaderNameContainer namecontainer;
@EJB
private transient ReaderBeanLocal readerbean;
private ReaderEvent event;
@EJB
private transient UserBeanLocal userbean;
@EJB
private transient BarcodeBeanLocal barcodebean;
private UserCardWrapper neighborUser;
private static final Logger logger = LoggerFactory.getLogger(ReaderView.class);
private Integer readerid;
@EJB
private ProductBeanLocal shopBean;
@Inject
private UserView userview;
public void initEditReader() {
if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS) && reader == null) {
reader = readerbean.getReader(readerid);
super.beginConversation();
}
}
public String createCardForUser() {
UserCardWrapper usr = userlist.getRowData();
logger.info("Creating card for user {} from event {}", usr, event);
ReaderEvent card = readerbean.createCard(event, usr.getUser());
// super.addFaceMessage("Created card for user with id: " +
// card.getPrintedCard());
return null;
}
public List<Role> getUserRoles(EventUser user) {
return userbean.findUsersRoles(user);
}
public void initCreateReader()
{
if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS) && reader == null)
{
reader = new Reader();
super.beginConversation();
}
}
public String createReader()
{
readerbean.createReader(reader);
namecontainer.setReaderId(reader.getId());
return "/shop/showReaderEvents";
}
public void initUserassocView() {
if (super.requirePermissions(UserPermission.CREATE_NEW) && event == null) {
event = readerbean.getEvent(eventid);
if (event.getPrintedCard() == null) {
User neigUser = readerbean.findTagFromAnyEvent(event.getValue());
setNeighborUser(new UserCardWrapper(neigUser, userbean));
}
super.beginConversation();
}
}
public boolean isReaderSelected() {
return this.readerid != null;
}
public String assocToCard()
{
UserCardWrapper user = userlist.getRowData();
PrintedCard card = user.getPrintedCards().getRowData();
ReaderEvent re = readerbean.assocTagToCard(event.getValue(), event.getReader().getIdentification(), card);
super.addFaceMessage("usercard.associated");
logger.info("re {}", re.getPrintedCard());
userview.setUser(re.getPrintedCard().getUser());
return "/useradmin/edit";
}
public String searchforuser()
{
if (usersearch == null || usersearch.length() < 2) {
super.addFaceMessage("user.tooShortSearch");
} else {
userlist = UserCardWrapper.initWrapper(userbean.getUsers(new SearchQuery(0, 0, null, usersearch, false)).getResults(), userbean);
}
return null;
}
public void initReaderList() {
if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS)) {
}
}
public List<Product> getAutoProducts() {
List<Product> ret = new ArrayList<Product>();
ret.add(Product.EMPTY_PRODUCT);
ret.addAll(shopBean.getProducts());
return ret;
}
public ReaderType[] getReadertypes()
{
return ReaderType.values();
}
public ListDataModel<ReaderEvent> getReaderEvents()
{
readerEventList = new ListDataModel<ReaderEvent>(readerbean.getReaderEvents(namecontainer.getReaderId()));
return readerEventList;
}
public String saveReader()
{
reader = readerbean.saveReader(reader);
return null;
}
public ReaderNameContainer getNamecontainer() {
return namecontainer;
}
public void setNamecontainer(ReaderNameContainer namecontainer) {
this.namecontainer = namecontainer;
}
public Integer getEventid() {
return eventid;
}
public void setEventid(Integer eventid) {
this.eventid = eventid;
}
public ReaderEvent getEvent() {
return event;
}
public void setEvent(ReaderEvent event) {
this.event = event;
}
public String getPlacecode() {
return placecode;
}
public void setPlacecode(String placecode) {
this.placecode = placecode;
}
public String getUsersearch() {
return usersearch;
}
public void setUsersearch(String usersearch) {
this.usersearch = usersearch;
}
public ListDataModel<UserCardWrapper> getUserlist() {
return userlist;
}
public void setUserlist(ListDataModel<UserCardWrapper> userlist) {
this.userlist = userlist;
}
public UserCardWrapper getNeighborUser() {
return neighborUser;
}
public void setNeighborUser(UserCardWrapper neighborUser) {
this.neighborUser = neighborUser;
}
public Integer getReaderid() {
return readerid;
}
public void setReaderid(Integer readerid) {
this.readerid = readerid;
}
public String setReaderToId(Integer readerid) {
this.readerid = readerid;
this.namecontainer.setReaderId(readerid);
reader = readerbean.getReader(readerid);
return "/admin/info/index";
}
public Reader getReader() {
return reader;
}
public void setReader(Reader reader) {
this.reader = reader;
}
public UserView getUserview() {
return userview;
}
public void setUserview(UserView userview) {
this.userview = userview;
}
public ReaderType[] getReaderTypes()
{
return ReaderType.values();
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public ReaderEvent getReaderEvent() {
if (readerEventList == null)
return null;
if (readerEventList.isRowAvailable()) {
return readerEventList.getRowData();
}
return null;
}
/**
* If last barcode or rfid was associated to user, get it
*
* @return
*/
public PrintedCard getPrintedCard() {
PrintedCard card = barcodebean.getPrintedCard(getBarcode());
if (card == null && readerEventList != null && readerEventList.isRowAvailable()) {
card = readerEventList.getRowData().getPrintedCard();
}
return card;
}
public void clearBarcode() {
this.barcode = null;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!