Commit fe44ba6d by Tuukka Kivilahti

Merge branch 'acfix' into 'master'

Acfix

Korjaa nullpointterin käyttäjälle ostettaessa.

@tkfftk
2 parents 0b19ffe2 6669484c
...@@ -19,7 +19,6 @@ import fi.codecrew.moya.facade.ReaderEventFacade; ...@@ -19,7 +19,6 @@ import fi.codecrew.moya.facade.ReaderEventFacade;
import fi.codecrew.moya.facade.ReaderFacade; import fi.codecrew.moya.facade.ReaderFacade;
import fi.codecrew.moya.model.AccountEvent; import fi.codecrew.moya.model.AccountEvent;
import fi.codecrew.moya.model.CardCode; import fi.codecrew.moya.model.CardCode;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Place; import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
...@@ -39,11 +38,9 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -39,11 +38,9 @@ public class ReaderBean implements ReaderBeanLocal {
@EJB @EJB
private ReaderFacade readerfacade; private ReaderFacade readerfacade;
@EJB @EJB
private PrintedCardFacade cardfacade; private PrintedCardFacade cardfacade;
@EJB @EJB
private CardTemplateBeanLocal cardtemplatebean; private CardTemplateBeanLocal cardtemplatebean;
@EJB @EJB
...@@ -60,8 +57,6 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -60,8 +57,6 @@ public class ReaderBean implements ReaderBeanLocal {
@EJB @EJB
private CardCodeFacade cardCodeFacade; private CardCodeFacade cardCodeFacade;
@EJB @EJB
private BarcodeBeanLocal barcodeBean; private BarcodeBeanLocal barcodeBean;
...@@ -79,11 +74,14 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -79,11 +74,14 @@ public class ReaderBean implements ReaderBeanLocal {
*/ */
public ReaderEvent checkCode(Reader reader, String code) { public ReaderEvent checkCode(Reader reader, String code) {
if (reader == null || code == null || code.isEmpty()) {
return null;
}
logger.info("got code from reader {}", code); logger.info("got code from reader {}", code);
code = code.replace("\"\b", ""); code = code.replace("\"\b", "");
if (reader.getType() == ReaderType.RFID) { if (ReaderType.RFID.equals(reader.getType())) {
if (Pattern.matches("^.*000000$", code)) if (Pattern.matches("^.*000000$", code))
{ {
...@@ -97,18 +95,19 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -97,18 +95,19 @@ public class ReaderBean implements ReaderBeanLocal {
code = sb.toString(); code = sb.toString();
} }
ReaderEvent event = new ReaderEvent(new Date(), reader, code); ReaderEvent event = new ReaderEvent(new Date(), reader, code);
// first, check if dublicate, there is 30s timeout for dublicates, afther that it's ok to create dublicate // first, check if dublicate, there is 30s timeout for dublicates,
// that's bcause accident dublicates are bad, but otherwise it's probably bcause user want's to read it again // afther that it's ok to create dublicate
// that's bcause accident dublicates are bad, but otherwise it's
// probably bcause user want's to read it again
List<ReaderEvent> lastevents = readerEventFacade.findLastEvents(reader, 1); List<ReaderEvent> lastevents = readerEventFacade.findLastEvents(reader, 1);
if (!lastevents.isEmpty() && !reader.isAutoproduct()) if (!lastevents.isEmpty() && !reader.isAutoproduct())
{ {
ReaderEvent lastevent = lastevents.get(0); ReaderEvent lastevent = lastevents.get(0);
if(lastevent.getValue() == event.getValue() && (lastevent.getUpdatetime().getTime() + 60000l) > event.getTime().getTime()) { if (lastevent.getValue() == event.getValue() && (lastevent.getUpdatetime().getTime() + 60000l) > event.getTime().getTime()) {
lastevent = readerEventFacade.reload(lastevent); lastevent = readerEventFacade.reload(lastevent);
lastevent = readerEventFacade.merge(lastevent); lastevent = readerEventFacade.merge(lastevent);
...@@ -117,44 +116,41 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -117,44 +116,41 @@ public class ReaderBean implements ReaderBeanLocal {
} }
} }
// find stuff with barcode and set type // find stuff with barcode and set type
// IF we find 2 stuff with same barcode, it's just bad luck and things may be little random. // IF we find 2 stuff with same barcode, it's just bad luck and things
// may be little random.
EventUser user = barcodeBean.getUser(code); EventUser user = barcodeBean.getUser(code);
if(user != null) { if (user != null) {
event.setType(ReaderEventType.USER); event.setType(ReaderEventType.USER);
event.setUser(user); event.setUser(user);
} }
PrintedCard card = barcodeBean.getPrintedCard(code); PrintedCard card = barcodeBean.getPrintedCard(code);
if(card != null) { if (card != null) {
event.setType(ReaderEventType.CARD); event.setType(ReaderEventType.CARD);
event.setPrintedCard(card); event.setPrintedCard(card);
if(card.getUser() != null) { if (card.getUser() != null) {
event.setUser(card.getUser()); event.setUser(card.getUser());
} }
} }
Product product = barcodeBean.getProduct(code); Product product = barcodeBean.getProduct(code);
if(product != null) { if (product != null) {
event.setType(ReaderEventType.PRODUCT); event.setType(ReaderEventType.PRODUCT);
event.setProduct(product); event.setProduct(product);
} }
Place place = barcodeBean.getPlaceFromBarcode(code); Place place = barcodeBean.getPlaceFromBarcode(code);
if(place != null) { if (place != null) {
event.setType(ReaderEventType.PLACE); event.setType(ReaderEventType.PLACE);
event.setPlace(place); event.setPlace(place);
} }
event.setUpdatetime(new Date()); event.setUpdatetime(new Date());
// reader is in autoproduct-mode, create dat product // reader is in autoproduct-mode, create dat product
...@@ -173,7 +169,6 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -173,7 +169,6 @@ public class ReaderBean implements ReaderBeanLocal {
} }
@Override @Override
public ReaderEvent assocCodeToCard(ReaderEvent readerEvent, PrintedCard card) { public ReaderEvent assocCodeToCard(ReaderEvent readerEvent, PrintedCard card) {
...@@ -236,33 +231,24 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -236,33 +231,24 @@ public class ReaderBean implements ReaderBeanLocal {
return ret; return ret;
} }
// ok, let's comment this out, so I can see where this is used // ok, let's comment this out, so I can see where this is used
/* /*
@Override * @Override public ReaderEvent createCard(ReaderEvent event, EventUser
public ReaderEvent createCard(ReaderEvent event, EventUser user) { * user) { ReaderEvent ret = null;
ReaderEvent ret = null; * logger.info("Trying to create card for event {} with printed card {}",
logger.info("Trying to create card for event {} with printed card {}", event, event.getPrintedCard()); * event, event.getPrintedCard());
*
if (event.getPrintedCard() == null) * if (event.getPrintedCard() == null) { CardTemplate ct =
{ * cardTemplateBean.getUsersCardtype(user); logger.info("Card template {}",
CardTemplate ct = cardTemplateBean.getUsersCardtype(user); * ct); if (ct == null) { return null; } PrintedCard card = new
logger.info("Card template {}", ct); * PrintedCard(user, ct, null, true); card.setRfidUid(event.getValue());
if (ct == null) * cardfacade.create(card);
{ *
return null; * ret = new ReaderEvent(Calendar.getInstance(), card, event.getReader());
} * card.getReaderEvents().add(event);
PrintedCard card = new PrintedCard(user, ct, null, true); * ret.setNotes("User associated to a card");
card.setRfidUid(event.getValue()); *
cardfacade.create(card); * } return ret; }
ret = new ReaderEvent(Calendar.getInstance(), card, event.getReader());
card.getReaderEvents().add(event);
ret.setNotes("User associated to a card");
}
return ret;
}
*/ */
@Override @Override
......
...@@ -11,10 +11,10 @@ import javax.persistence.criteria.CriteriaBuilder; ...@@ -11,10 +11,10 @@ import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.codecrew.moya.model.Product_;
import fi.codecrew.moya.beans.EventBeanLocal; import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.Product; import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.model.ProductFlag; import fi.codecrew.moya.model.ProductFlag;
import fi.codecrew.moya.model.Product_;
@Stateless @Stateless
@LocalBean @LocalBean
...@@ -72,6 +72,7 @@ public class ProductFacade extends IntegerPkGenericFacade<Product> { ...@@ -72,6 +72,7 @@ public class ProductFacade extends IntegerPkGenericFacade<Product> {
Root<Product> root = cq.from(Product.class); Root<Product> root = cq.from(Product.class);
cq.where( cq.where(
cb.equal(root.get(Product_.event), eventbean.getCurrentEvent()),
cb.equal(root.get(Product_.barcode), barcode) cb.equal(root.get(Product_.barcode), barcode)
); );
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!