Commit 4d00867f by Tuukka Kivilahti

barcodebolling

1 parent 3d23047e
...@@ -205,6 +205,19 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -205,6 +205,19 @@ public class ReaderBean implements ReaderBeanLocal {
Reader reader = readerfacade.find(readerId); Reader reader = readerfacade.find(readerId);
return readerEventFacade.findLastEvents(reader, 20); return readerEventFacade.findLastEvents(reader, 20);
} }
@Override
public ReaderEvent getLastReaderEvent(Integer readerId) {
Reader reader = readerfacade.find(readerId);
List<ReaderEvent> list = readerEventFacade.findLastEvents(reader, 1);
if(list.size() > 0)
return list.get(0);
return null;
}
@Override @Override
public ReaderEvent getEvent(Integer eventid) { public ReaderEvent getEvent(Integer eventid) {
...@@ -271,4 +284,5 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -271,4 +284,5 @@ public class ReaderBean implements ReaderBeanLocal {
readerfacade.create(reader); readerfacade.create(reader);
} }
} }
...@@ -37,4 +37,6 @@ public interface ReaderBeanLocal { ...@@ -37,4 +37,6 @@ public interface ReaderBeanLocal {
void createReader(Reader reader); void createReader(Reader reader);
ReaderEvent getLastReaderEvent(Integer readerId);
} }
...@@ -8,13 +8,15 @@ ...@@ -8,13 +8,15 @@
<f:metadata> <f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" /> <f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{userView.initView}" /> <f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" />
<f:event type="preRenderView" listener="#{userView.prepareCardDownload}" />
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h:panelGrid columns="3"> <h:panelGrid columns="3">
<h:form>
<p:poll interval="1" listener="#{incomingView.polledRead}" />
</h:form>
<h:panelGroup> <h:panelGroup>
<user:edit commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" /> <user:edit commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" />
......
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
<h:outputLabel for="billnr" value="#{i18n['bill.billNumber']}:" /> <h:outputLabel for="billnr" value="#{i18n['bill.billNumber']}:" />
<h:outputText id="billnr" value="#{cc.attrs.bill.billNumber}" /> <h:outputText id="billnr" value="#{cc.attrs.bill.billNumber}" />
<h:outputLabel rendered="{!cc.attrs.bill.expired}" for="refnr" value="#{i18n['bill.referencenumber']}" /> <h:outputLabel rendered="{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') }" for="refnr" value="#{i18n['bill.referencenumber']}" />
<h:outputText rendered="{!cc.attrs.bill.expired}" id="refnr" value="#{cc.attrs.bill.referenceNumber}" /> <h:outputText rendered="{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') }" id="refnr" value="#{cc.attrs.bill.referenceNumber}" />
<h:outputLabel for="billAmount" value="#{i18n['bill.billAmount']}" /> <h:outputLabel for="billAmount" value="#{i18n['bill.billAmount']}" />
<h:outputText id="billAmount" value="#{cc.attrs.bill.totalPrice()}"> <h:outputText id="billAmount" value="#{cc.attrs.bill.totalPrice()}">
...@@ -28,11 +28,11 @@ ...@@ -28,11 +28,11 @@
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" /> <f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText> </h:outputText>
<h:outputLabel for="paymenttime" value="#{i18n['bill.paymentTime']}:" /> <h:outputLabel for="paymenttime" rendered=" #{sessionHandler.isEventBoolProperty('ALLOW_BILLING')}" value="#{i18n['bill.paymentTime']}:" />
<h:outputText id="paymenttime" value="#{cc.attrs.bill.paymentTime eq 0 ? i18n['bill.paymentTime.now'] : cc.attrs.bill.paymentTime}" /> <h:outputText id="paymenttime" rendered=" #{sessionHandler.isEventBoolProperty('ALLOW_BILLING')}" value="#{cc.attrs.bill.paymentTime eq 0 ? i18n['bill.paymentTime.now'] : cc.attrs.bill.paymentTime}" />
<h:outputLabel rendered="{!cc.attrs.bill.expired}" for="noticetime" value="#{i18n['bill.noticetime']}:" /> <h:outputLabel rendered="{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') }" for="noticetime" value="#{i18n['bill.noticetime']}:" />
<h:outputText rendered="{!cc.attrs.bill.expired}" id="noticetime" value="#{cc.attrs.bill.noticetime}" /> <h:outputText rendered="{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING')}" id="noticetime" value="#{cc.attrs.bill.noticetime}" />
<h:outputLabel rendered="#{cc.attrs.bill != null}" for="expires" value="#{i18n['bill.expires']}:" /> <h:outputLabel rendered="#{cc.attrs.bill != null}" for="expires" value="#{i18n['bill.expires']}:" />
<h:outputText rendered="#{cc.attrs.bill != null}" id="expires" value="#{cc.attrs.bill.expires.time}"> <h:outputText rendered="#{cc.attrs.bill != null}" id="expires" value="#{cc.attrs.bill.expires.time}">
......
...@@ -43,6 +43,9 @@ public class ReaderView extends GenericCDIView { ...@@ -43,6 +43,9 @@ public class ReaderView extends GenericCDIView {
private String usersearch; private String usersearch;
private String barcode; private String barcode;
private Reader reader; private Reader reader;
private boolean pollingMode = false;
private ReaderEvent lastReadEvent = null;
private transient ListDataModel<UserCardWrapper> userlist; private transient ListDataModel<UserCardWrapper> userlist;
private ListDataModel<ReaderEvent> readerEventList; private ListDataModel<ReaderEvent> readerEventList;
...@@ -272,6 +275,14 @@ public class ReaderView extends GenericCDIView { ...@@ -272,6 +275,14 @@ public class ReaderView extends GenericCDIView {
} }
public String getBarcode() { public String getBarcode() {
if(pollingMode) {
ReaderEvent event = readerbean.getLastReaderEvent(namecontainer.getReaderId());
if(!event.equals(lastReadEvent)) {
return event.getValue();
}
}
if(readerEventList != null && readerEventList.isRowAvailable()) { if(readerEventList != null && readerEventList.isRowAvailable()) {
if(readerEventList.getRowData().getReader().getType() == ReaderType.BARCODE) { if(readerEventList.getRowData().getReader().getType() == ReaderType.BARCODE) {
return readerEventList.getRowData().getValue(); return readerEventList.getRowData().getValue();
...@@ -314,6 +325,19 @@ public class ReaderView extends GenericCDIView { ...@@ -314,6 +325,19 @@ public class ReaderView extends GenericCDIView {
} }
public void initializeForPolling() {
// on polling mode, we do not use list, we use database and remember last readerEvent
this.pollingMode = true;
this.barcode = null;
lastReadEvent = readerbean.getLastReaderEvent(namecontainer.getReaderId());
}
public void pollingBarcodeHandled() {
lastReadEvent = readerbean.getLastReaderEvent(namecontainer.getReaderId());
}
public EventUser getUser() { public EventUser getUser() {
...@@ -336,4 +360,12 @@ public class ReaderView extends GenericCDIView { ...@@ -336,4 +360,12 @@ public class ReaderView extends GenericCDIView {
return null; return null;
} }
public boolean isNewBarcodes() {
if(!pollingMode)
return false;
return (!readerbean.getLastReaderEvent(namecontainer.getReaderId()).equals(lastReadEvent));
}
} }
...@@ -322,13 +322,13 @@ public class UserView extends GenericCDIView { ...@@ -322,13 +322,13 @@ public class UserView extends GenericCDIView {
if(readerView.getBarcode() != null && !readerView.getBarcode().isEmpty()) { if(readerView.getBarcode() != null && !readerView.getBarcode().isEmpty()) {
card.setBarcode(readerView.getBarcode()); card.setBarcode(readerView.getBarcode());
logger.debug("barcode {} to card {} ",readerView.getBarcode(),card.getUser().getNick());
printedCardBean.save(card); printedCardBean.save(card);
} } else if(readerView.getReaderEvent() != null) {
// todo: kato että liittäminen tukee kanssa "barcode" -lukijoita jne.
// kato kanssa korttihaku, että se tuklee niitä, kuitenkin tarvitaa ne
if(readerView.getReaderEvent() != null) {
readerbean.assocTagToCard(readerView.getReaderEvent().getValue(), readerView.getReaderEvent().getReader().getIdentification(), card); readerbean.assocTagToCard(readerView.getReaderEvent().getValue(), readerView.getReaderEvent().getReader().getIdentification(), card);
} }
return null; return null;
} }
......
...@@ -20,40 +20,84 @@ public class IncomingView extends GenericCDIView { ...@@ -20,40 +20,84 @@ public class IncomingView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L; private static final long serialVersionUID = 802344850073689859L;
private static final Logger logger = LoggerFactory.getLogger(IncomingView.class); private static final Logger logger = LoggerFactory.getLogger(IncomingView.class);
@Inject @Inject
@SelectedUser @SelectedUser
private transient EventUser user; private transient EventUser user;
@Inject @Inject
private UserView userview; private UserView userview;
@Inject @Inject
private ReaderView readerView; private ReaderView readerView;
public void initView() { public void initView() {
super.beginConversation();
}
private boolean initialized = false;
public void initPrintCardView() {
if (!initialized) {
logger.debug("INITIALIZING!!!!");
initializePoller();
initialized = true;
super.beginConversation(); super.beginConversation();
} }
}
public String saveUser() {
logger.info("Saving user in incomingView"); public String saveUser() {
userview.saveUser(); logger.info("Saving user in incomingView");
return null; userview.saveUser();
return null;
}
public void initializePoller() {
readerView.initializeForPolling();
}
public void polledRead() {
if (!readerView.isNewBarcodes()) {
return;
} }
public String selectUser() { logger.debug(":Barcode:");
EventUser user = readerView.getUser();
EventUser user = readerView.getUser();
if(user == null) { if (user != null) {
logger.debug("got no user from barcode"); if (!user.equals(userview.getUser())) {
return null; logger.info("found user {}, redirecting", user.getNick());
userview.setUser(user);
// userview.prepareCardDownload();
// PURKKAAA, sori tästä, koitan refaktoroida kauniiksi ku kerkiän -TKwtf
super.navihandler.redirectNavigation("printCard.jsf?userid="+user.getUser().getId());
} }
logger.debug("got user from barcode"); } else {
userview.setUser(user); // still there, it must be "clean" barcode
userview.prepareCardDownload(); if (userview.getUser() != null) {
return "printCard"; userview.attachBarcodeToCard();
}
} }
readerView.pollingBarcodeHandled();
}
public String selectUser() {
EventUser user = readerView.getUser();
if (user == null) {
logger.debug("got no user from barcode");
return null;
}
logger.debug("got user from barcode");
userview.setUser(user);
//userview.prepareCardDownload();
return "printCard";
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!