Commit e5f5f9ab by Tuomas Riihimäki

gamekikostusta

1 parent 0a657a99
Showing with 914 additions and 353 deletions
...@@ -99,16 +99,9 @@ public class AccountEventBean implements AccountEventBeanLocal { ...@@ -99,16 +99,9 @@ public class AccountEventBean implements AccountEventBeanLocal {
if (prodentry.getKey().isPrepaidInstant() && prodentry.getKey().getPlaces() != null && prodentry.getKey().getPlaces().size() > 0) { if (prodentry.getKey().isPrepaidInstant() && prodentry.getKey().getPlaces() != null && prodentry.getKey().getPlaces().size() > 0) {
logger.debug("Prepaidplace"); logger.debug("Prepaidplace");
placebean.lockPlaceProduct(shoppingUser, prodentry.getKey(), BigDecimal.ONE);
// for (Place p : prodentry.getKey().getPlaces()) {
// if (!p.isTaken()) {
// logger.debug("Locking user {} to place {}", shoppingUser,p);
// placebean.lockPlaces(shoppingUser, p);
// break;
// }
// }
placebean.lockPlaceProduct(shoppingUser, prodentry.getKey(), BigDecimal.ONE);
} }
ac.setSeller(seller); ac.setSeller(seller);
shoppingUser.getAccountEvents().add(ac); shoppingUser.getAccountEvents().add(ac);
......
...@@ -164,4 +164,9 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -164,4 +164,9 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
return printedcardfacade.merge(card); return printedcardfacade.merge(card);
} }
@Override
public List<PrintedCard> findActiveCards() {
return this.printedcardfacade.findAllEnabled(eventBean.getCurrentEvent());
}
} }
package fi.insomnia.bortal.beans;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.facade.FoodWaveTemplateFacade;
import fi.insomnia.bortal.model.FoodWaveTemplate;
/**
* Session Bean implementation class FoodWaveBean
*/
@Stateless
public class FoodWaveBean implements FoodWaveBeanLocal {
@EJB
private UserBeanLocal userbean;
@EJB
private FoodWaveTemplateFacade fwtFacade;
/**
* Default constructor.
*/
public FoodWaveBean() {
// TODO Auto-generated constructor stub
}
@Override
public void createTemplate(FoodWaveTemplate waveTemplate) {
userbean.fatalPermission(Permission.SHOP, RolePermission.WRITE, "Need SHOP:WRITE to create foodwave templates");
fwtFacade.create(waveTemplate);
}
@Override
public FoodWaveTemplate saveTemplate(FoodWaveTemplate waveTemplate) {
userbean.fatalPermission(Permission.SHOP, RolePermission.WRITE, "Need SHOP:WRITE to create foodwave templates");
return fwtFacade.merge(waveTemplate);
}
}
package fi.insomnia.bortal.beans;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.facade.NewsGroupFacade;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.News;
import fi.insomnia.bortal.model.NewsGroup;
/**
* Session Bean implementation class GameBean
*/
@Stateless
public class GameBean implements GameBeanLocal {
@EJB
private EventBeanLocal eventbean;
@EJB
private NewsGroupFacade ngfacade;
/**
* Default constructor.
*/
public GameBean() {
// TODO Auto-generated constructor stub
}
@Override
public List<News> getNews() {
ArrayList<News> retlist = new ArrayList<News>();
NewsGroup ng = ngfacade.findByName(eventbean.getCurrentEvent(), "game");
for (News n : ng.getNews()) {
if ((n.getPublish() == null || n.getPublish().after(Calendar.getInstance())) && (n.getExpire() == null || n.getExpire().before(Calendar.getInstance()))) {
retlist.add(n);
}
}
return retlist;
}
}
...@@ -211,7 +211,6 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -211,7 +211,6 @@ public class PlaceBean implements PlaceBeanLocal {
@Override @Override
public void lockPlaceProduct(User user, Product prod, BigDecimal quantity) { public void lockPlaceProduct(User user, Product prod, BigDecimal quantity) {
user = userbean.mergeChanges(user);
BigDecimal loop = BigDecimal.ZERO; BigDecimal loop = BigDecimal.ZERO;
LanEvent event = eventBean.getCurrentEvent(); LanEvent event = eventBean.getCurrentEvent();
...@@ -221,11 +220,11 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -221,11 +220,11 @@ public class PlaceBean implements PlaceBeanLocal {
for (Place p : prod.getPlaces()) { for (Place p : prod.getPlaces()) {
if (!p.isTaken()) { if (!p.isTaken()) {
// p.reserve(user);
p.buy(pg); p.buy(pg);
GroupMembership currgm = new GroupMembership(event, pg, p, gmemfacade.createInviteToken(event)); GroupMembership currgm = new GroupMembership(event, pg, p, gmemfacade.createInviteToken(event));
placeFacade.merge(p); placeFacade.merge(p);
currgm.setPlaceGroup(pg);
pg.getMembers().add(currgm); pg.getMembers().add(currgm);
loop = loop.add(BigDecimal.ONE); loop = loop.add(BigDecimal.ONE);
...@@ -239,6 +238,7 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -239,6 +238,7 @@ public class PlaceBean implements PlaceBeanLocal {
} }
if (!gmassoc) { if (!gmassoc) {
logger.debug("Group membership not found. Associating user {} to place {}", user.getNick(), currgm.getPlaceReservation().getName());
user.getGroupMemberships().add(currgm); user.getGroupMemberships().add(currgm);
currgm.setUser(user); currgm.setUser(user);
} }
...@@ -248,7 +248,7 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -248,7 +248,7 @@ public class PlaceBean implements PlaceBeanLocal {
} }
} }
} }
pgfacade.create(pg); user.getPlaceGroups().add(pg);
} }
...@@ -297,13 +297,11 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -297,13 +297,11 @@ public class PlaceBean implements PlaceBeanLocal {
user.getPlaceGroups().add(pg); user.getPlaceGroups().add(pg);
place.reserve(user); place.reserve(user);
place.buy(pg); place.buy(pg);
GroupMembership newgm = new GroupMembership(ev, pg, place, gmemfacade.createInviteToken(ev)); GroupMembership newgm = new GroupMembership(ev, pg, place, gmemfacade.createInviteToken(ev));
pg.getMembers().add(newgm); pg.getMembers().add(newgm);
boolean foundGm = false; boolean foundGm = false;
......
...@@ -5,6 +5,11 @@ import java.util.Calendar; ...@@ -5,6 +5,11 @@ import java.util.Calendar;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.BortalCatchableException; import fi.insomnia.bortal.exceptions.BortalCatchableException;
import fi.insomnia.bortal.facade.GroupMembershipFacade; import fi.insomnia.bortal.facade.GroupMembershipFacade;
import fi.insomnia.bortal.facade.PrintedCardFacade; import fi.insomnia.bortal.facade.PrintedCardFacade;
...@@ -34,13 +39,19 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -34,13 +39,19 @@ public class ReaderBean implements ReaderBeanLocal {
private GroupMembershipFacade gmfacade; private GroupMembershipFacade gmfacade;
@EJB @EJB
private CardTemplateBeanLocal cardtemplatebean; private CardTemplateBeanLocal cardtemplatebean;
@EJB
private UserBeanLocal userbean;
private static final Logger logger = LoggerFactory.getLogger(ReaderBean.class);
@Override @Override
public ReaderEvent checkTag(String ident, String tag, String hash) { public ReaderEvent checkTag(String ident, String tag, String hash) {
LanEvent ev = eventbean.getCurrentEvent(); LanEvent ev = eventbean.getCurrentEvent();
PrintedCard card = cardfacade.findByRfid(ev, tag); PrintedCard card = cardfacade.findByRfid(ev, tag);
ReaderEvent ret = null; ReaderEvent ret = null;
logger.debug("Found card by rfid: {}", card);
if (card != null) { if (card != null) {
ret = createReaderEvent(ident, card); ret = createReaderEvent(ident, card);
} }
...@@ -66,11 +77,34 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -66,11 +77,34 @@ public class ReaderBean implements ReaderBeanLocal {
} }
private ReaderEvent createReaderEvent(String readerIdent, PrintedCard card) { private ReaderEvent createReaderEvent(String readerIdent, PrintedCard card) {
LanEvent ev = eventbean.getCurrentEvent(); LanEvent ev = eventbean.getCurrentEvent();
Reader reader = readerfacade.findOrCreateByIdent(ev, readerIdent); Reader reader = readerfacade.findOrCreateByIdent(ev, readerIdent);
logger.debug("Creating new readerevent for reader {} and events {}", reader, reader.getMaxEvents());
logger.debug("maxevents for reder {}. readerevents at the moment {}", reader.getMaxEvents(), reader.getEvents().size());
if (reader.getMaxEvents() > 0 && reader.getMaxEvents() <= reader.getEvents().size()) {
logger.debug("Max events {} found. returning null");
return null;
}
if (reader.getGamepoints() > 0 && card.getUser() != null) {
logger.debug("Checking if user has been here");
for (ReaderEvent oldRe : card.getReaderEvents()) {
if (oldRe.getReader().getId().equals(reader.getId())) {
logger.debug("Found already an event for user! returning null");
return null;
}
}
}
ReaderEvent ret = new ReaderEvent(ev, Calendar.getInstance(), card, reader); ReaderEvent ret = new ReaderEvent(ev, Calendar.getInstance(), card, reader);
readerEventFacade.create(ret); ret.setGamePoint(reader.getGamepoints());
ret.setReader(reader);
reader.getEvents().add(ret);
card.getReaderEvents().add(ret);
cardfacade.merge(card);
return ret; return ret;
} }
...@@ -80,4 +114,10 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -80,4 +114,10 @@ public class ReaderBean implements ReaderBeanLocal {
return createReaderEvent(readerIdent, card); return createReaderEvent(readerIdent, card);
} }
@Override
public ReaderEvent merge(ReaderEvent e) {
userbean.fatalPermission(Permission.GAME, RolePermission.EXECUTE, "Tried to change readerevent");
return readerEventFacade.merge(e);
}
} }
...@@ -4,6 +4,9 @@ import javax.ejb.LocalBean; ...@@ -4,6 +4,9 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.NewsGroup; import fi.insomnia.bortal.model.NewsGroup;
@Stateless @Stateless
...@@ -21,4 +24,16 @@ public class NewsGroupFacade extends EventChildGenericFacade<NewsGroup> { ...@@ -21,4 +24,16 @@ public class NewsGroupFacade extends EventChildGenericFacade<NewsGroup> {
return em; return em;
} }
public NewsGroup findByName(LanEvent e, String name) {
TypedQuery<NewsGroup> q = em.createQuery("select ng from NewsGroup ng where ng.name = :name", NewsGroup.class);
q.setParameter("name", name);
NewsGroup ret = getSingleNullableResult(q);
if (ret == null) {
ret = new NewsGroup(e);
ret.setName(name);
this.create(ret);
}
return ret;
}
} }
...@@ -50,4 +50,11 @@ public class PrintedCardFacade extends EventChildGenericFacade<PrintedCard> { ...@@ -50,4 +50,11 @@ public class PrintedCardFacade extends EventChildGenericFacade<PrintedCard> {
q.setParameter("eventid", event.getId()); q.setParameter("eventid", event.getId());
return getSingleNullableResult(q); return getSingleNullableResult(q);
} }
public List<PrintedCard> findAllEnabled(LanEvent currentEvent) {
TypedQuery<PrintedCard> q = em.createQuery("select pc from PrintedCard pc where pc.id.eventId = :eventid and pc.enabled = true", PrintedCard.class);
q.setParameter("eventid", currentEvent.getId());
return q.getResultList();
}
} }
...@@ -6,11 +6,13 @@ import javax.ejb.LocalBean; ...@@ -6,11 +6,13 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
@Stateless @Stateless
...@@ -46,4 +48,5 @@ public class UserFacade extends GenericFacade<Integer, User> { ...@@ -46,4 +48,5 @@ public class UserFacade extends GenericFacade<Integer, User> {
return this.search(name, NAMEFIELDS, "login"); return this.search(name, NAMEFIELDS, "login");
} }
} }
...@@ -25,4 +25,6 @@ public interface CardTemplateBeanLocal { ...@@ -25,4 +25,6 @@ public interface CardTemplateBeanLocal {
PrintedCard setRfidUid(String tag, PrintedCard card); PrintedCard setRfidUid(String tag, PrintedCard card);
List<PrintedCard> findActiveCards();
} }
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.FoodWaveTemplate;
@Local
public interface FoodWaveBeanLocal {
void createTemplate(FoodWaveTemplate waveTemplate);
FoodWaveTemplate saveTemplate(FoodWaveTemplate waveTemplate);
}
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.News;
@Local
public interface GameBeanLocal {
List<News> getNews();
}
...@@ -19,4 +19,7 @@ public interface ReaderBeanLocal { ...@@ -19,4 +19,7 @@ public interface ReaderBeanLocal {
ReaderEvent assocTagToCard(String tag, String readerIdent, PrintedCard card); ReaderEvent assocTagToCard(String tag, String readerIdent, PrintedCard card);
ReaderEvent merge(ReaderEvent e);
} }
...@@ -22,7 +22,8 @@ public enum Permission { ...@@ -22,7 +22,8 @@ public enum Permission {
MAP("view maps(r), Modify(w), reserve places from maps(x)"), MAP("view maps(r), Modify(w), reserve places from maps(x)"),
ROLE_MANAGEMENT("User has right to view(r), modify(w) and assign(x) roles"), ROLE_MANAGEMENT("User has right to view(r), modify(w) and assign(x) roles"),
PRODUCT("View(r), modify(w), and shop(x) products"), PRODUCT("View(r), modify(w), and shop(x) products"),
SHOP("View shopped events(r), Modify AccountEvents() and Shop(x)"); SHOP("View shopped events(r), Modify AccountEvents() and Shop(x)"),
GAME("View(r) own, write(w) modify, view all(X)");
private String description; private String description;
private static final Logger logger = LoggerFactory.getLogger(Permission.class); private static final Logger logger = LoggerFactory.getLogger(Permission.class);
......
...@@ -39,12 +39,13 @@ import javax.persistence.TemporalType; ...@@ -39,12 +39,13 @@ import javax.persistence.TemporalType;
@NamedQuery(name = "AccountEvent.findByDelivered", query = "SELECT a FROM AccountEvent a WHERE a.delivered = :delivered") }) @NamedQuery(name = "AccountEvent.findByDelivered", query = "SELECT a FROM AccountEvent a WHERE a.delivered = :delivered") })
public class AccountEvent extends GenericEventChild { public class AccountEvent extends GenericEventChild {
/** /**
* *
*/ */
private static final long serialVersionUID = 2588419823225148100L; private static final long serialVersionUID = 2588419823225148100L;
@Column(name="cash", nullable=false) @Column(name = "cash", nullable = false)
private boolean cash = false; private boolean cash = false;
/** /**
* What 1 unit of this product costs. * What 1 unit of this product costs.
...@@ -110,7 +111,7 @@ public class AccountEvent extends GenericEventChild { ...@@ -110,7 +111,7 @@ public class AccountEvent extends GenericEventChild {
* What discounts user has for this account event. Some magic is applied to * What discounts user has for this account event. Some magic is applied to
* calculate these.. :) * calculate these.. :)
*/ */
@OneToMany(mappedBy = "accountEvent", cascade=CascadeType.ALL) @OneToMany(mappedBy = "accountEvent", cascade = CascadeType.ALL)
private List<DiscountInstance> discountInstances = new ArrayList<DiscountInstance>(); private List<DiscountInstance> discountInstances = new ArrayList<DiscountInstance>();
/** /**
......
...@@ -8,34 +8,36 @@ import java.util.Calendar; ...@@ -8,34 +8,36 @@ import java.util.Calendar;
import java.util.List; import java.util.List;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.Lob; import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import javax.persistence.Version;
/** /**
* *
*/ */
@Entity @Entity
@Table(name = "food_waves") @Table(name = "food_waves")
@NamedQueries( { @NamedQueries({
@NamedQuery(name = "FoodWave.findAll", query = "SELECT f FROM FoodWave f"), @NamedQuery(name = "FoodWave.findAll", query = "SELECT f FROM FoodWave f"),
@NamedQuery(name = "FoodWave.findByName", query = "SELECT f FROM FoodWave f WHERE f.name = :name"), @NamedQuery(name = "FoodWave.findByName", query = "SELECT f FROM FoodWave f WHERE f.name = :name"),
@NamedQuery(name = "FoodWave.findByDescription", query = "SELECT f FROM FoodWave f WHERE f.description = :description"), @NamedQuery(name = "FoodWave.findByDescription", query = "SELECT f FROM FoodWave f WHERE f.description = :description"),
@NamedQuery(name = "FoodWave.findByTime", query = "SELECT f FROM FoodWave f WHERE f.time = :time"), @NamedQuery(name = "FoodWave.findByTime", query = "SELECT f FROM FoodWave f WHERE f.time = :time"),
@NamedQuery(name = "FoodWave.findByClosed", query = "SELECT f FROM FoodWave f WHERE f.closed = :closed") }) @NamedQuery(name = "FoodWave.findByClosed", query = "SELECT f FROM FoodWave f WHERE f.closed = :closed") })
public class FoodWave implements EventChildInterface { public class FoodWave extends GenericEventChild {
private static final long serialVersionUID = 1L; /**
@EmbeddedId *
private EventPk id; */
private static final long serialVersionUID = 9221716203467295049L;
@Column(name = "wave_name", nullable = false) @Column(name = "wave_name", nullable = false)
private String name; private String name;
...@@ -54,19 +56,18 @@ public class FoodWave implements EventChildInterface { ...@@ -54,19 +56,18 @@ public class FoodWave implements EventChildInterface {
@OneToMany(mappedBy = "foodWave") @OneToMany(mappedBy = "foodWave")
private List<AccountEvent> accountEvents; private List<AccountEvent> accountEvents;
@Version @JoinColumns({
@Column(nullable = false) @JoinColumn(name = "template_id", referencedColumnName = "id", nullable = false),
private int jpaVersionField = 0; @JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@ManyToOne
private FoodWaveTemplate template;
public FoodWave() { public FoodWave() {
} super();
public FoodWave(LanEvent event) {
this.id = new EventPk(event);
} }
public FoodWave(LanEvent event, String waveName, boolean waveClosed) { public FoodWave(LanEvent event, String waveName, boolean waveClosed) {
this(event); super(event);
this.name = waveName; this.name = waveName;
this.closed = waveClosed; this.closed = waveClosed;
} }
...@@ -112,64 +113,15 @@ public class FoodWave implements EventChildInterface { ...@@ -112,64 +113,15 @@ public class FoodWave implements EventChildInterface {
} }
@Override @Override
public int hashCode() {
int hash = 0;
hash += (getId() != null ? getId().hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id
// fields are
// not set
if (!(object instanceof FoodWave)) {
return false;
}
FoodWave other = (FoodWave) object;
if ((this.getId() == null && other.getId() != null)
|| (this.getId() != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() { public String toString() {
return "fi.insomnia.bortal.model.FoodWave[id=" + getId() + "]"; return "fi.insomnia.bortal.model.FoodWave[id=" + getId() + "]";
} }
/** public void setTemplate(FoodWaveTemplate template) {
* @return the id this.template = template;
*/
@Override
public EventPk getId() {
return id;
}
/**
* @param id
* the id to set
*/
@Override
public void setId(EventPk id) {
this.id = id;
} }
/** public FoodWaveTemplate getTemplate() {
* @return the jpaVersionField return template;
*/
@Override
public int getJpaVersionField() {
return jpaVersionField;
}
/**
* @param jpaVersionField
* the jpaVersionField to set
*/
@Override
public void setJpaVersionField(int jpaVersionField) {
this.jpaVersionField = jpaVersionField;
} }
} }
...@@ -7,30 +7,27 @@ package fi.insomnia.bortal.model; ...@@ -7,30 +7,27 @@ package fi.insomnia.bortal.model;
import java.util.List; import java.util.List;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Lob; import javax.persistence.Lob;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Version;
/** /**
* *
*/ */
@Entity @Entity
@Table(name = "food_wave_templates") @Table(name = "food_wave_templates")
@NamedQueries( { @NamedQueries({
@NamedQuery(name = "FoodWaveTemplate.findAll", query = "SELECT f FROM FoodWaveTemplate f"), @NamedQuery(name = "FoodWaveTemplate.findAll", query = "SELECT f FROM FoodWaveTemplate f"),
@NamedQuery(name = "FoodWaveTemplate.findByName", query = "SELECT f FROM FoodWaveTemplate f WHERE f.name = :name"), @NamedQuery(name = "FoodWaveTemplate.findByName", query = "SELECT f FROM FoodWaveTemplate f WHERE f.name = :name"),
@NamedQuery(name = "FoodWaveTemplate.findByDescription", query = "SELECT f FROM FoodWaveTemplate f WHERE f.description = :description") }) @NamedQuery(name = "FoodWaveTemplate.findByDescription", query = "SELECT f FROM FoodWaveTemplate f WHERE f.description = :description") })
public class FoodWaveTemplate implements EventChildInterface { public class FoodWaveTemplate extends GenericEventChild {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@EmbeddedId
private EventPk id;
@Column(name = "template_name", nullable = false) @Column(name = "template_name", nullable = false)
private String name; private String name;
...@@ -42,19 +39,18 @@ public class FoodWaveTemplate implements EventChildInterface { ...@@ -42,19 +39,18 @@ public class FoodWaveTemplate implements EventChildInterface {
@ManyToMany(mappedBy = "foodWaveTemplates") @ManyToMany(mappedBy = "foodWaveTemplates")
private List<Product> products; private List<Product> products;
@Version @OneToMany(mappedBy = "template")
@Column(nullable = false) private List<FoodWave> foodwaves;
private int jpaVersionField = 0;
public FoodWaveTemplate() { public FoodWaveTemplate() {
} }
public FoodWaveTemplate(LanEvent event) { public FoodWaveTemplate(LanEvent event) {
this.id = new EventPk(event); super(event);
} }
public FoodWaveTemplate(LanEvent event, String templateName) { public FoodWaveTemplate(LanEvent event, String templateName) {
this(event); super(event);
this.name = templateName; this.name = templateName;
} }
...@@ -75,28 +71,6 @@ public class FoodWaveTemplate implements EventChildInterface { ...@@ -75,28 +71,6 @@ public class FoodWaveTemplate implements EventChildInterface {
} }
@Override @Override
public int hashCode() {
int hash = 0;
hash += (getId() != null ? getId().hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are
// not set
if (!(object instanceof FoodWaveTemplate)) {
return false;
}
FoodWaveTemplate other = (FoodWaveTemplate) object;
if ((this.getId() == null && other.getId() != null)
|| (this.getId() != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() { public String toString() {
return "fi.insomnia.bortal.model.FoodWaveTemplate[id=" + getId() + "]"; return "fi.insomnia.bortal.model.FoodWaveTemplate[id=" + getId() + "]";
} }
...@@ -116,37 +90,12 @@ public class FoodWaveTemplate implements EventChildInterface { ...@@ -116,37 +90,12 @@ public class FoodWaveTemplate implements EventChildInterface {
this.products = products; this.products = products;
} }
/** public void setFoodwaves(List<FoodWave> foodwaves) {
* @return the id this.foodwaves = foodwaves;
*/
@Override
public EventPk getId() {
return id;
} }
/** public List<FoodWave> getFoodwaves() {
* @param id return foodwaves;
* the id to set
*/
@Override
public void setId(EventPk id) {
this.id = id;
}
/**
* @return the jpaVersionField
*/
@Override
public int getJpaVersionField() {
return jpaVersionField;
} }
/**
* @param jpaVersionField
* the jpaVersionField to set
*/
@Override
public void setJpaVersionField(int jpaVersionField) {
this.jpaVersionField = jpaVersionField;
}
} }
...@@ -5,12 +5,11 @@ import javax.persistence.metamodel.ListAttribute; ...@@ -5,12 +5,11 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2010-10-28T16:55:24.736+0300") @Generated(value="Dali", date="2010-10-29T06:32:56.507+0300")
@StaticMetamodel(FoodWaveTemplate.class) @StaticMetamodel(FoodWaveTemplate.class)
public class FoodWaveTemplate_ { public class FoodWaveTemplate_ extends GenericEventChild_ {
public static volatile SingularAttribute<FoodWaveTemplate, EventPk> id;
public static volatile SingularAttribute<FoodWaveTemplate, String> name; public static volatile SingularAttribute<FoodWaveTemplate, String> name;
public static volatile SingularAttribute<FoodWaveTemplate, String> description; public static volatile SingularAttribute<FoodWaveTemplate, String> description;
public static volatile ListAttribute<FoodWaveTemplate, Product> products; public static volatile ListAttribute<FoodWaveTemplate, Product> products;
public static volatile SingularAttribute<FoodWaveTemplate, Integer> jpaVersionField; public static volatile ListAttribute<FoodWaveTemplate, FoodWave> foodwaves;
} }
...@@ -6,14 +6,13 @@ import javax.persistence.metamodel.ListAttribute; ...@@ -6,14 +6,13 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2010-10-28T16:55:24.730+0300") @Generated(value="Dali", date="2010-10-29T06:30:51.196+0300")
@StaticMetamodel(FoodWave.class) @StaticMetamodel(FoodWave.class)
public class FoodWave_ { public class FoodWave_ extends GenericEventChild_ {
public static volatile SingularAttribute<FoodWave, EventPk> id;
public static volatile SingularAttribute<FoodWave, String> name; public static volatile SingularAttribute<FoodWave, String> name;
public static volatile SingularAttribute<FoodWave, String> description; public static volatile SingularAttribute<FoodWave, String> description;
public static volatile SingularAttribute<FoodWave, Calendar> time; public static volatile SingularAttribute<FoodWave, Calendar> time;
public static volatile SingularAttribute<FoodWave, Boolean> closed; public static volatile SingularAttribute<FoodWave, Boolean> closed;
public static volatile ListAttribute<FoodWave, AccountEvent> accountEvents; public static volatile ListAttribute<FoodWave, AccountEvent> accountEvents;
public static volatile SingularAttribute<FoodWave, Integer> jpaVersionField; public static volatile SingularAttribute<FoodWave, FoodWaveTemplate> template;
} }
...@@ -4,10 +4,11 @@ ...@@ -4,10 +4,11 @@
*/ */
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import static javax.persistence.CascadeType.ALL;
import java.util.Calendar; import java.util.Calendar;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns; import javax.persistence.JoinColumns;
...@@ -19,9 +20,6 @@ import javax.persistence.Table; ...@@ -19,9 +20,6 @@ import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint; import javax.persistence.UniqueConstraint;
import javax.persistence.Version;
import fi.insomnia.bortal.utilities.PasswordFunctions;
/** /**
* *
...@@ -35,11 +33,9 @@ import fi.insomnia.bortal.utilities.PasswordFunctions; ...@@ -35,11 +33,9 @@ import fi.insomnia.bortal.utilities.PasswordFunctions;
@NamedQuery(name = "GroupMembership.findByInviteAccepted", query = "SELECT g FROM GroupMembership g WHERE g.inviteAccepted = :inviteAccepted"), @NamedQuery(name = "GroupMembership.findByInviteAccepted", query = "SELECT g FROM GroupMembership g WHERE g.inviteAccepted = :inviteAccepted"),
@NamedQuery(name = "GroupMembership.findByInviteEmail", query = "SELECT g FROM GroupMembership g WHERE g.inviteEmail = :inviteEmail"), @NamedQuery(name = "GroupMembership.findByInviteEmail", query = "SELECT g FROM GroupMembership g WHERE g.inviteEmail = :inviteEmail"),
@NamedQuery(name = "GroupMembership.findByInviteName", query = "SELECT g FROM GroupMembership g WHERE g.inviteName = :inviteName") }) @NamedQuery(name = "GroupMembership.findByInviteName", query = "SELECT g FROM GroupMembership g WHERE g.inviteName = :inviteName") })
public class GroupMembership implements EventChildInterface { public class GroupMembership extends GenericEventChild {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@EmbeddedId
private EventPk id;
@Column(name = "invite_token", unique = true, nullable = false) @Column(name = "invite_token", unique = true, nullable = false)
private String inviteToken; private String inviteToken;
...@@ -57,7 +53,7 @@ public class GroupMembership implements EventChildInterface { ...@@ -57,7 +53,7 @@ public class GroupMembership implements EventChildInterface {
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "group_id", referencedColumnName = "id", nullable = false), @JoinColumn(name = "group_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@ManyToOne(optional = false) @ManyToOne(optional = false, cascade = ALL)
private PlaceGroup placeGroup; private PlaceGroup placeGroup;
@JoinColumns({ @JoinColumns({
...@@ -74,15 +70,11 @@ public class GroupMembership implements EventChildInterface { ...@@ -74,15 +70,11 @@ public class GroupMembership implements EventChildInterface {
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
private Calendar enteredEvent; private Calendar enteredEvent;
@Version
@Column(nullable = false)
private int jpaVersionField = 0;
public GroupMembership() { public GroupMembership() {
} }
public GroupMembership(LanEvent event, PlaceGroup pg, Place p, String token) { public GroupMembership(LanEvent event, PlaceGroup pg, Place p, String token) {
this.id = new EventPk(event); super(event);
this.setPlaceGroup(pg); this.setPlaceGroup(pg);
this.setPlaceReservation(p); this.setPlaceReservation(p);
this.inviteToken = token; this.inviteToken = token;
...@@ -136,67 +128,13 @@ public class GroupMembership implements EventChildInterface { ...@@ -136,67 +128,13 @@ public class GroupMembership implements EventChildInterface {
this.user = usersId; this.user = usersId;
} }
@Override
public int hashCode() {
int hash = 0;
hash += (getId() != null ? getId().hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are
// not set
if (!(object instanceof GroupMembership)) {
return false;
}
GroupMembership other = (GroupMembership) object;
if ((this.getId() == null && other.getId() != null)
|| (this.getId() != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override @Override
public String toString() { public String toString() {
return "fi.insomnia.bortal.model.GroupMembership[id=" + getId() + "]"; return "fi.insomnia.bortal.model.GroupMembership[id=" + getId() + "]";
} }
/**
* @return the id
*/
@Override
public EventPk getId() {
return id;
}
/**
* @param id
* the id to set
*/
@Override
public void setId(EventPk id) {
this.id = id;
}
/**
* @return the jpaVersionField
*/
@Override
public int getJpaVersionField() {
return jpaVersionField;
}
/**
* @param jpaVersionField
* the jpaVersionField to set
*/
@Override
public void setJpaVersionField(int jpaVersionField) {
this.jpaVersionField = jpaVersionField;
}
/** /**
* @return the enteredEvent * @return the enteredEvent
*/ */
......
...@@ -5,10 +5,9 @@ import javax.annotation.Generated; ...@@ -5,10 +5,9 @@ import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2010-10-28T16:55:24.777+0300") @Generated(value="Dali", date="2010-10-29T15:29:20.473+0300")
@StaticMetamodel(GroupMembership.class) @StaticMetamodel(GroupMembership.class)
public class GroupMembership_ { public class GroupMembership_ extends GenericEventChild_ {
public static volatile SingularAttribute<GroupMembership, EventPk> id;
public static volatile SingularAttribute<GroupMembership, String> inviteToken; public static volatile SingularAttribute<GroupMembership, String> inviteToken;
public static volatile SingularAttribute<GroupMembership, Calendar> inviteAccepted; public static volatile SingularAttribute<GroupMembership, Calendar> inviteAccepted;
public static volatile SingularAttribute<GroupMembership, String> inviteEmail; public static volatile SingularAttribute<GroupMembership, String> inviteEmail;
...@@ -17,5 +16,4 @@ public class GroupMembership_ { ...@@ -17,5 +16,4 @@ public class GroupMembership_ {
public static volatile SingularAttribute<GroupMembership, Place> placeReservation; public static volatile SingularAttribute<GroupMembership, Place> placeReservation;
public static volatile SingularAttribute<GroupMembership, User> user; public static volatile SingularAttribute<GroupMembership, User> user;
public static volatile SingularAttribute<GroupMembership, Calendar> enteredEvent; public static volatile SingularAttribute<GroupMembership, Calendar> enteredEvent;
public static volatile SingularAttribute<GroupMembership, Integer> jpaVersionField;
} }
...@@ -17,6 +17,7 @@ import javax.persistence.ManyToMany; ...@@ -17,6 +17,7 @@ import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Version; import javax.persistence.Version;
...@@ -48,6 +49,7 @@ public class NewsGroup implements EventChildInterface { ...@@ -48,6 +49,7 @@ public class NewsGroup implements EventChildInterface {
@Column(name = "priority", nullable = false) @Column(name = "priority", nullable = false)
private int priority; private int priority;
@OrderBy("priority")
@OneToMany(cascade = CascadeType.ALL, mappedBy = "group") @OneToMany(cascade = CascadeType.ALL, mappedBy = "group")
private List<News> news; private List<News> news;
...@@ -66,6 +68,7 @@ public class NewsGroup implements EventChildInterface { ...@@ -66,6 +68,7 @@ public class NewsGroup implements EventChildInterface {
public NewsGroup() { public NewsGroup() {
} }
public NewsGroup(LanEvent event) { public NewsGroup(LanEvent event) {
this.id = new EventPk(event); this.id = new EventPk(event);
} }
...@@ -100,6 +103,7 @@ public class NewsGroup implements EventChildInterface { ...@@ -100,6 +103,7 @@ public class NewsGroup implements EventChildInterface {
this.priority = priority; this.priority = priority;
} }
@OrderBy("id")
public List<News> getNews() { public List<News> getNews() {
return news; return news;
} }
......
...@@ -72,7 +72,7 @@ public class Place extends GenericEventChild { ...@@ -72,7 +72,7 @@ public class Place extends GenericEventChild {
* Which group has bought the place * Which group has bought the place
*/ */
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "group_id", referencedColumnName = "id", updatable = true, insertable = true), @JoinColumn(name = "group_id", referencedColumnName = "id", nullable=false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@ManyToOne @ManyToOne
private PlaceGroup group; private PlaceGroup group;
......
package fi.insomnia.bortal.model;
import fi.insomnia.bortal.model.GenericEntity;
import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.*;
import static javax.persistence.TemporalType.TIMESTAMP;
/**
* Entity implementation class for Entity: Poll
*
*/
@Entity
public class Poll extends GenericEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5655775315722028984L;
@Temporal(TIMESTAMP)
private Calendar begin = Calendar.getInstance();
@Temporal(TIMESTAMP)
private Calendar end = Calendar.getInstance();
public Poll() {
super();
}
public Calendar getBegin() {
return begin;
}
public void setBegin(Calendar begin) {
this.begin = begin;
}
public Calendar getEnd() {
return end;
}
public void setEnd(Calendar end) {
this.end = end;
}
}
package fi.insomnia.bortal.model;
import java.util.Calendar;
import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2010-10-30T20:48:08.561+0300")
@StaticMetamodel(Poll.class)
public class Poll_ extends GenericEntity_ {
public static volatile SingularAttribute<Poll, Calendar> begin;
public static volatile SingularAttribute<Poll, Calendar> end;
}
...@@ -5,9 +5,12 @@ ...@@ -5,9 +5,12 @@
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Comparator;
import java.util.List; import java.util.List;
import javax.faces.model.ListDataModel;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
...@@ -20,8 +23,12 @@ import javax.persistence.OneToMany; ...@@ -20,8 +23,12 @@ import javax.persistence.OneToMany;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.persistence.UniqueConstraint; import javax.persistence.UniqueConstraint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** /**
* *
*/ */
...@@ -33,7 +40,6 @@ import javax.persistence.UniqueConstraint; ...@@ -33,7 +40,6 @@ import javax.persistence.UniqueConstraint;
@NamedQuery(name = "PrintedCard.findAll", query = "SELECT p FROM PrintedCard p"), @NamedQuery(name = "PrintedCard.findAll", query = "SELECT p FROM PrintedCard p"),
@NamedQuery(name = "PrintedCard.findByPrintTime", query = "SELECT p FROM PrintedCard p WHERE p.printTime = :printTime"), @NamedQuery(name = "PrintedCard.findByPrintTime", query = "SELECT p FROM PrintedCard p WHERE p.printTime = :printTime"),
@NamedQuery(name = "PrintedCard.findByBarcode", query = "SELECT p FROM PrintedCard p WHERE p.barcode = :barcode"),
@NamedQuery(name = "PrintedCard.findByEnabled", query = "SELECT p FROM PrintedCard p WHERE p.enabled = :enabled"), @NamedQuery(name = "PrintedCard.findByEnabled", query = "SELECT p FROM PrintedCard p WHERE p.enabled = :enabled"),
@NamedQuery(name = "PrintedCard.findByRfidUid", query = "SELECT p FROM PrintedCard p WHERE p.rfidUid = :rfidUid") }) @NamedQuery(name = "PrintedCard.findByRfidUid", query = "SELECT p FROM PrintedCard p WHERE p.rfidUid = :rfidUid") })
public class PrintedCard extends GenericEventChild { public class PrintedCard extends GenericEventChild {
...@@ -168,4 +174,53 @@ public class PrintedCard extends GenericEventChild { ...@@ -168,4 +174,53 @@ public class PrintedCard extends GenericEventChild {
return printCount; return printCount;
} }
@Transient
private Integer gamepoints = null;
private static final Logger logger = LoggerFactory.getLogger(PrintedCard.class);
public static final Comparator<PrintedCard> GAMEPOINT_COMPARATOR = new Comparator<PrintedCard>() {
@Override
public int compare(PrintedCard o1, PrintedCard o2) {
int ret = o2.getGamepoints().compareTo(o1.getGamepoints());
if (ret == 0 && o1.getUser().getNick() != null && o2.getUser().getNick() != null)
{
ret = o1.getUser().getNick().compareTo(o2.getUser().getNick());
}
return ret;
}
};
public Integer getGamepoints() {
if (gamepoints == null) {
synchronized (this) {
if (gamepoints == null) {
gamepoints = 0;
for (ReaderEvent re : this.getReaderEvents()) {
gamepoints += re.getGamePoint();
}
}
}
}
return gamepoints;
}
@Transient
private ListDataModel<ReaderEvent> revents;
public ListDataModel<ReaderEvent> getGameCards() {
if (revents == null) {
List<ReaderEvent> ev = this.getReaderEvents();
ArrayList<ReaderEvent> ret = new ArrayList<ReaderEvent>();
for (ReaderEvent e : ev) {
if (e.getGamePoint() > 0) {
ret.add(e);
}
}
revents = new ListDataModel<ReaderEvent>(ret);
}
return revents;
}
} }
...@@ -6,7 +6,7 @@ import javax.persistence.metamodel.ListAttribute; ...@@ -6,7 +6,7 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2010-10-28T16:55:25.010+0300") @Generated(value="Dali", date="2010-10-30T21:08:42.253+0300")
@StaticMetamodel(PrintedCard.class) @StaticMetamodel(PrintedCard.class)
public class PrintedCard_ extends GenericEventChild_ { public class PrintedCard_ extends GenericEventChild_ {
public static volatile SingularAttribute<PrintedCard, Calendar> printTime; public static volatile SingularAttribute<PrintedCard, Calendar> printTime;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.persistence.Column; import javax.persistence.Column;
...@@ -19,6 +20,7 @@ import javax.persistence.OneToMany; ...@@ -19,6 +20,7 @@ import javax.persistence.OneToMany;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Version; import javax.persistence.Version;
import javax.persistence.UniqueConstraint; import javax.persistence.UniqueConstraint;
import static javax.persistence.CascadeType.ALL;
/** /**
* *
...@@ -41,8 +43,10 @@ public class Reader extends GenericEventChild { ...@@ -41,8 +43,10 @@ public class Reader extends GenericEventChild {
this.identification = ident; this.identification = ident;
} }
private Integer gamepoints; @Column(nullable = false)
private Integer maxEvents; private Integer gamepoints = 0;
@Column(nullable = false)
private Integer maxEvents = 0;
/** /**
* *
...@@ -78,7 +82,7 @@ public class Reader extends GenericEventChild { ...@@ -78,7 +82,7 @@ public class Reader extends GenericEventChild {
private Integer mapY; private Integer mapY;
@OneToMany(mappedBy = "reader") @OneToMany(mappedBy = "reader")
private List<ReaderEvent> events; private List<ReaderEvent> events = new ArrayList<ReaderEvent>();
public String getIdentification() { public String getIdentification() {
return identification; return identification;
......
...@@ -4,10 +4,11 @@ ...@@ -4,10 +4,11 @@
*/ */
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import static javax.persistence.CascadeType.ALL;
import java.util.Calendar; import java.util.Calendar;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns; import javax.persistence.JoinColumns;
...@@ -17,7 +18,6 @@ import javax.persistence.NamedQuery; ...@@ -17,7 +18,6 @@ import javax.persistence.NamedQuery;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import javax.persistence.Version;
/** /**
* *
...@@ -40,7 +40,8 @@ public class ReaderEvent extends GenericEventChild { ...@@ -40,7 +40,8 @@ public class ReaderEvent extends GenericEventChild {
@Column(name = "value") @Column(name = "value")
private String value; private String value;
private Integer gaepoint; @Column(nullable = false)
private Integer gamePoint = 0;
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "printed_cards_id", referencedColumnName = "id", nullable = false, updatable = false), @JoinColumn(name = "printed_cards_id", referencedColumnName = "id", nullable = false, updatable = false),
...@@ -51,7 +52,7 @@ public class ReaderEvent extends GenericEventChild { ...@@ -51,7 +52,7 @@ public class ReaderEvent extends GenericEventChild {
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "readers_id", referencedColumnName = "id", nullable = false, updatable = false), @JoinColumn(name = "readers_id", referencedColumnName = "id", nullable = false, updatable = false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@ManyToOne(optional = false) @ManyToOne(optional = false, cascade = ALL)
private Reader reader; private Reader reader;
public ReaderEvent() { public ReaderEvent() {
...@@ -101,4 +102,12 @@ public class ReaderEvent extends GenericEventChild { ...@@ -101,4 +102,12 @@ public class ReaderEvent extends GenericEventChild {
return "fi.insomnia.bortal.model.ReaderEvent[id=" + getId() + "]"; return "fi.insomnia.bortal.model.ReaderEvent[id=" + getId() + "]";
} }
public void setGamePoint(Integer gamePoint) {
this.gamePoint = gamePoint;
}
public Integer getGamePoint() {
return gamePoint;
}
} }
...@@ -5,12 +5,12 @@ import javax.annotation.Generated; ...@@ -5,12 +5,12 @@ import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2010-10-28T21:00:17.154+0300") @Generated(value="Dali", date="2010-10-28T22:02:55.769+0300")
@StaticMetamodel(ReaderEvent.class) @StaticMetamodel(ReaderEvent.class)
public class ReaderEvent_ extends GenericEventChild_ { public class ReaderEvent_ extends GenericEventChild_ {
public static volatile SingularAttribute<ReaderEvent, Calendar> time; public static volatile SingularAttribute<ReaderEvent, Calendar> time;
public static volatile SingularAttribute<ReaderEvent, String> value; public static volatile SingularAttribute<ReaderEvent, String> value;
public static volatile SingularAttribute<ReaderEvent, Integer> gaepoint; public static volatile SingularAttribute<ReaderEvent, Integer> gamePoint;
public static volatile SingularAttribute<ReaderEvent, PrintedCard> printedCard; public static volatile SingularAttribute<ReaderEvent, PrintedCard> printedCard;
public static volatile SingularAttribute<ReaderEvent, Reader> reader; public static volatile SingularAttribute<ReaderEvent, Reader> reader;
} }
...@@ -39,7 +39,8 @@ import fi.insomnia.bortal.enums.Permission; ...@@ -39,7 +39,8 @@ import fi.insomnia.bortal.enums.Permission;
@ConversionValue(dataValue = "BILL", objectValue = "BILL"), @ConversionValue(dataValue = "BILL", objectValue = "BILL"),
@ConversionValue(dataValue = "ROLE_MANAGEMENT", objectValue = "ROLE_MANAGEMENT"), @ConversionValue(dataValue = "ROLE_MANAGEMENT", objectValue = "ROLE_MANAGEMENT"),
@ConversionValue(dataValue = "PRODUCT", objectValue = "PRODUCT"), @ConversionValue(dataValue = "PRODUCT", objectValue = "PRODUCT"),
@ConversionValue(dataValue = "SHOP", objectValue = "SHOP") @ConversionValue(dataValue = "SHOP", objectValue = "SHOP"),
@ConversionValue(dataValue = "GAME", objectValue = "GAME")
}) })
public class RoleRight implements EventChildInterface { public class RoleRight implements EventChildInterface {
......
...@@ -42,7 +42,6 @@ import org.slf4j.LoggerFactory; ...@@ -42,7 +42,6 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Gender; import fi.insomnia.bortal.enums.Gender;
import fi.insomnia.bortal.utilities.PasswordFunctions; import fi.insomnia.bortal.utilities.PasswordFunctions;
/** /**
* *
*/ */
...@@ -129,7 +128,7 @@ public class User implements ModelInterface { ...@@ -129,7 +128,7 @@ public class User implements ModelInterface {
@Column(name = "superadmin") @Column(name = "superadmin")
private boolean superadmin = false; private boolean superadmin = false;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "voter") @OneToMany( mappedBy = "voter", cascade = CascadeType.ALL)
private List<Vote> votes; private List<Vote> votes;
@ManyToMany() @ManyToMany()
...@@ -146,7 +145,7 @@ public class User implements ModelInterface { ...@@ -146,7 +145,7 @@ public class User implements ModelInterface {
@OrderBy @OrderBy
private List<UserImage> userImageList; private List<UserImage> userImageList;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user") @OneToMany( mappedBy = "user")
private List<CompoEntryParticipant> compoEntryParticipants; private List<CompoEntryParticipant> compoEntryParticipants;
@OneToMany(mappedBy = "creator") @OneToMany(mappedBy = "creator")
...@@ -199,6 +198,7 @@ public class User implements ModelInterface { ...@@ -199,6 +198,7 @@ public class User implements ModelInterface {
return ret; return ret;
} }
public User() { public User() {
} }
......
...@@ -7,7 +7,7 @@ import javax.persistence.metamodel.ListAttribute; ...@@ -7,7 +7,7 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2010-10-28T16:55:25.112+0300") @Generated(value="Dali", date="2010-10-28T22:16:50.549+0300")
@StaticMetamodel(User.class) @StaticMetamodel(User.class)
public class User_ { public class User_ {
public static volatile SingularAttribute<User, Integer> id; public static volatile SingularAttribute<User, Integer> id;
......
...@@ -43,7 +43,7 @@ public class Vote implements EventChildInterface { ...@@ -43,7 +43,7 @@ public class Vote implements EventChildInterface {
private Calendar time; private Calendar time;
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "entry_id", referencedColumnName = "id", nullable = false, updatable = false, insertable = false), @JoinColumn(name = "entry_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@ManyToOne(optional = false) @ManyToOne(optional = false)
private CompoEntry compoEntry; private CompoEntry compoEntry;
......
<!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:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:products="http://java.sun.com/jsf/composite/tools/products"
xmlns:foodwave="http://java.sun.com/jsf/composite/tools">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.product.create" />
<ui:define name="content">
<foodwave:modify />
</ui:define>
</ui:composition>
</h:body>
</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:products="http://java.sun.com/jsf/composite/tools/products"
xmlns:tools="http://java.sun.com/jsf/composite/tools" xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.game.list" />
<ui:define name="content">
#{gameView.initGamepoints()}
<h:form id="editform">
<h:dataTable border="0" id="gameinfolist" value="#{gameView.inforow}" var="card">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['printedCard.id']}" />
</f:facet>
<h:outputText value="#{card.id.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['user.nick']}" />
</f:facet>
<h:outputText value="#{card.user.nick}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['user.wholeName']}" />
</f:facet>
<h:outputText value="#{card.user.wholeName}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['user.wholeName']}" />
</f:facet>
<h:outputText value="#{card.user.wholeName}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.user']}" />
</f:facet>
<h:outputText value="#{card.gamepoints}" />
</h:column>
<h:column>
<h:dataTable value="#{card.gameCards}" var="event" id="gamecards">
<h:column>
#{event.reader.identification}
</h:column>
<h:column>
#{event.gamePoint}
</h:column>
<h:column>
<h:commandButton action="#{gameView.editReaderEvent()}" value="Muokkaa" />
</h:column>
</h:dataTable>
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</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:products="http://java.sun.com/jsf/composite/tools/products"
xmlns:tools="http://java.sun.com/jsf/composite/tools" xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.game.start" />
<ui:define name="content">
<h1>Insomnia Game</h1>
<h:outputText value="#{i18n['game.gamepoints']}" /> #{gameView.myPoints}
<h:dataTable border="0" id="event" value="#{gameView.gameNews}" var="news">
<h:column>
<h3>#{news.title}</h3>
<h:outputText escape="false" value="#{news.body}" />
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
</h:body>
</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:f="http://java.sun.com/jsf/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools" xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/insomnia1/sidebartemplate.xhtml">
<ui:param name="rendered" value="false" />
<ui:define name="sidebarcontent">
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -48,6 +48,9 @@ ...@@ -48,6 +48,9 @@
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'rfidshop'?'a':''}"><h:link <div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'rfidshop'?'a':''}"><h:link
outcome="/shop/showReaderEvents" value="#{i18n['topmenu.rfidshop']}" /></div> outcome="/shop/showReaderEvents" value="#{i18n['topmenu.rfidshop']}" /></div>
</tools:canRead> <tools:canRead target="GAME">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'game'?'a':''}"><h:link
outcome="/game/start" value="#{i18n['topmenu.game']}" /></div>
</tools:canRead></div> </tools:canRead></div>
</div> </div>
......
<?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:attribute name="billview" required="true" />
</composite:interface>
<composite:implementation>
<h:form id="modifyFwTemplate">
<h:inputHidden rendered="#{!empty foodwaveView.waveTemplate.id.id}" value="foodwaveView.waveTemplate.id.id}" />
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['foodwavetemplate']}:" />
<h:inputText value="#{foodwaveView.waveTemplate.name}" />
</h:panelGrid>
<h:selectManyCheckbox converter="#{productConverter}" layout="pageDirection" id="products"
value="#{foodwaveView.waveTemplate.products}">
<f:selectItems var="proditem" itemLabel="#{proditem.name}" value="#{productView.productlist}" />
</h:selectManyCheckbox>
<h:commandButton rendered="#{empty foodwaveView.waveTemplate.id.id}" action="#{foodwaveView.createTemplate()}"
value="Create" />
<h:commandButton rendered="#{!empty foodwaveView.waveTemplate.id.id}" action="#{foodwaveView.saveTemplate()}"
value="Save" />
</h:form>
</composite:implementation>
</html>
...@@ -45,11 +45,23 @@ ...@@ -45,11 +45,23 @@
<h:outputText value="#{event.seenSince}" /> <h:outputText value="#{event.seenSince}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header">
<h:outputText value="${i18n['gamepoints']}" />
</f:facet>
<h:outputText value="#{event.event.gamePoint}" />
</h:column>
<h:column>
<h:commandButton rendered="#{empty event.event}" action="#{readerView.selectEvent()}" <h:commandButton rendered="#{empty event.event}" action="#{readerView.selectEvent()}"
value="#{i18n['readerevent.associateToUser']}" /> value="#{i18n['readerevent.associateToUser']}" />
<h:commandButton rendered="#{!empty event.event}" action="#{readerView.selectEvent()}" <h:commandButton rendered="#{!empty event.event}" action="#{readerView.selectEvent()}"
value="#{i18n['readerevent.shopToUser']}" /> value="#{i18n['readerevent.shopToUser']}" />
</h:column> </h:column>
<h:column>
<h:commandButton rendered="#{!empty event.event}" action="#{readerView.editUser()}" value="#{i18n['user.edit']}" />
</h:column>
<h:column rendered="#{sessionHandler.hasPermission('GAME','WRITE')}">
<h:commandButton action="#{readerView.editGameEvent()}" value="Game" />
</h:column>
</h:dataTable> </h:dataTable>
......
<!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:f="http://java.sun.com/jsf/core"
xmlns:users="http://java.sun.com/jsf/composite/tools/user" xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.eventorg.list" />
<ui:define name="content">
<h:form id="editform">
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['rfidevent.reader']}:" />
<h:outputText value="#{readerView.rfidevent.reader}" />
<h:outputLabel value="#{i18n['rfidevent.tag']}:" />
<h:outputText value="#{readerView.rfidevent.tag}" />
<h:outputLabel value="#{i18n['user.wholename']}:" />
<h:outputText value="#{readerView.rfidevent.event.printedCard.user.wholeName}" />
<h:outputLabel value="#{i18n['user.nick']}:" />
<h:outputText value="#{readerView.rfidevent.event.printedCard.user.nick}" />
<h:outputLabel value="#{i18n['user.gamepoints']}:" />
<h:inputText value="#{readerView.rfidevent.event.gamePoint}" />
<h:commandButton action="#{readerView.saveEvent()}" value="#{i18n['readerevent.saveEvent']}" />
</h:panelGrid>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -20,24 +20,24 @@ ...@@ -20,24 +20,24 @@
</h:panelGrid> </h:panelGrid>
<users:sendImage /> <users:sendImage />
#{userView.initUserimagelist()} #{userView.initUserimagelist()}
<h:dataTable border="1" id="user" value="#{userView.userImageList}" var="img"> <h:form id="changeimageform">
<h:column> <h:dataTable border="1" id="user" value="#{userView.userImageList}" var="img">
<h:outputText value="#{img.name}" /> <h:column>
</h:column> <h:outputText value="#{img.name}" />
<h:column> </h:column>
<h:outputText value="#{img.mimeType}" /> <h:column>
</h:column> <h:outputText value="#{img.mimeType}" />
<h:column> </h:column>
<a href="#" <h:column>
onclick="window.open('#{request.contextPath}/Userimage?imageid=#{img.id}', 'imagesubmitpopup', 'height=240,width=320'); this.target='imagesubmitpopup'; return true; "> <a href="#"
Näytä kuva onclick="window.open('#{request.contextPath}/Userimage?imageid=#{img.id}', 'imagesubmitpopup', 'height=240,width=320'); this.target='imagesubmitpopup'; return true; ">
</a> Näytä kuva </a>
</h:column> </h:column>
<h:column> <h:column>
<h:commandButton action="#{userView.setDefaultImage()}" value="Set default image" /> <h:commandButton action="#{userView.setDefaultImage()}" value="Set default image" />
</h:column> </h:column>
</h:dataTable> </h:dataTable>
</h:form>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
......
package fi.insomnia.bortal.view;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.FoodWaveBeanLocal;
import fi.insomnia.bortal.model.FoodWaveTemplate;
@ManagedBean(name = "foodwaveView")
@SessionScoped
public class FoodwaveView extends GenericView {
@EJB
private EventBeanLocal eventbean;
private FoodWaveTemplate waveTemplate;
@EJB
private FoodWaveBeanLocal wavebean;
public void initEmptyTemplate() {
waveTemplate = new FoodWaveTemplate(eventbean.getCurrentEvent());
}
public String createTemplate() {
wavebean.createTemplate(waveTemplate);
return null;
}
public String saveTemplate() {
waveTemplate = wavebean.saveTemplate(waveTemplate);
return null;
}
public void setWaveTemplate(FoodWaveTemplate waveTemplate) {
this.waveTemplate = waveTemplate;
}
public FoodWaveTemplate getWaveTemplate() {
return waveTemplate;
}
}
package fi.insomnia.bortal.view;
import java.util.Collections;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.model.ListDataModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.CardTemplateBeanLocal;
import fi.insomnia.bortal.beans.GameBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.model.News;
import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.view.helpers.RfidEvent;
@ManagedBean(name = "gameView")
@SessionScoped
public class GameView extends GenericView {
private static final Logger logger = LoggerFactory.getLogger(GameView.class);
@EJB
private GameBeanLocal gamebean;
@EJB
private CardTemplateBeanLocal cdbean;
private ListDataModel<PrintedCard> inforow;
@EJB
private UserBeanLocal userbean;
@ManagedProperty(value = "#{readerView}")
private ReaderView readerView;
public String editReaderEvent() {
readerView.setRfidevent(new RfidEvent("unknown", "unknown", inforow.getRowData().getGameCards().getRowData()));
return "/shop/editGame";
}
public Integer getMyPoints() {
userbean.fatalNotLoggedIn();
PrintedCard currcard = null;
for (PrintedCard pc : userbean.getCurrentUser().getPrintedCards()) {
if (!pc.getEnabled()) {
continue;
}
if (currcard == null || currcard.getTemplate().getPower() < pc.getTemplate().getPower()) {
currcard = pc;
}
}
return currcard.getGamepoints();
}
public void initGamepoints() {
userbean.fatalPermission(Permission.GAME, RolePermission.EXECUTE, " need Game:X to init userlist at gameview");
List<PrintedCard> list = cdbean.findActiveCards();
Collections.sort(list, PrintedCard.GAMEPOINT_COMPARATOR);
setInforow(new ListDataModel<PrintedCard>(list));
}
public void setInforow(ListDataModel<PrintedCard> inforow) {
this.inforow = inforow;
}
public ListDataModel<PrintedCard> getInforow() {
return inforow;
}
public List<News> getGameNews() {
return gamebean.getNews();
}
public void setReaderView(ReaderView readerView) {
this.readerView = readerView;
}
public ReaderView getReaderView() {
return readerView;
}
}
...@@ -21,7 +21,7 @@ import fi.insomnia.bortal.model.LanEvent; ...@@ -21,7 +21,7 @@ import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.PrintedCard; import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.ReaderEvent; import fi.insomnia.bortal.model.ReaderEvent;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.view.RfidContainer.RfidEvent; import fi.insomnia.bortal.view.helpers.RfidEvent;
@ManagedBean(name = "readerView") @ManagedBean(name = "readerView")
@SessionScoped @SessionScoped
...@@ -37,7 +37,7 @@ public class ReaderView extends GenericView { ...@@ -37,7 +37,7 @@ public class ReaderView extends GenericView {
private RfidEvent rfidevent; private RfidEvent rfidevent;
private String placecode; private String placecode;
private String usersearch; private String usersearch;
@EJB @EJB
private ReaderBeanLocal readerBean; private ReaderBeanLocal readerBean;
...@@ -46,7 +46,9 @@ public class ReaderView extends GenericView { ...@@ -46,7 +46,9 @@ public class ReaderView extends GenericView {
@EJB @EJB
private EventBeanLocal eventbean; private EventBeanLocal eventbean;
private ListDataModel<UserCardWrapper> userlist; private ListDataModel<UserCardWrapper> userlist;
@ManagedProperty(value = "#{userView}")
private UserView userview;
private static final Logger logger = LoggerFactory.getLogger(ReaderView.class); private static final Logger logger = LoggerFactory.getLogger(ReaderView.class);
public String searchforuser() { public String searchforuser() {
...@@ -206,4 +208,32 @@ public class ReaderView extends GenericView { ...@@ -206,4 +208,32 @@ public class ReaderView extends GenericView {
return user; return user;
} }
} }
public String editGameEvent() {
rfidevent = readerevents.getRowData();
return "/shop/editGame";
}
public String saveEvent() {
ReaderEvent e = rfidevent.getEvent();
rfidevent.setEvent(readerBean.merge(e));
this.addFaceMessage("Pisteet Tallennettu");
return null;
}
public String editUser() {
getUserview().setUser(readerevents.getRowData().getEvent().getPrintedCard().getUser());
return "/user/edit";
}
public void setUserview(UserView userview) {
this.userview = userview;
}
public UserView getUserview() {
return userview;
}
} }
...@@ -15,6 +15,7 @@ import org.slf4j.Logger; ...@@ -15,6 +15,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.model.ReaderEvent; import fi.insomnia.bortal.model.ReaderEvent;
import fi.insomnia.bortal.view.helpers.RfidEvent;
@ApplicationScoped @ApplicationScoped
@ManagedBean @ManagedBean
...@@ -49,86 +50,5 @@ public class RfidContainer { ...@@ -49,86 +50,5 @@ public class RfidContainer {
return events; return events;
} }
public class RfidEvent {
RfidEvent(String reader, String tag, ReaderEvent revent) {
this.reader = reader;
this.tag = tag;
this.event = revent;
}
public void seen() {
time = Calendar.getInstance();
}
public String getSeenSince() {
long diffSec = (Calendar.getInstance().getTimeInMillis() - time.getTimeInMillis()) / 1000;
long secs = diffSec % 60;
long diffMin = diffSec / 60;
long mins = diffMin % 60;
long hours = diffMin / 60;
StringBuilder ret = new StringBuilder();
if (hours > 0) {
ret.append(hours).append(" h ");
}
if (hours > 0 || mins > 0) {
ret.append(mins).append(" min ");
}
ret.append(secs).append(" sec");
return ret.toString();
}
private Calendar time = Calendar.getInstance();
private String reader;
private String tag;
private ReaderEvent event;
private List<String> actions = new ArrayList<String>();
public Calendar getTime() {
return time;
}
public void setTime(Calendar time) {
this.time = time;
}
public String getReader() {
return reader;
}
public void setReader(String reader) {
this.reader = reader;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public ReaderEvent getEvent() {
return event;
}
public void setEvent(ReaderEvent event) {
this.event = event;
}
public List<String> getActions() {
return actions;
}
public void setActions(List<String> actions) {
this.actions = actions;
}
public void addMessage(String msg) {
this.actions.add(msg);
}
}
} }
...@@ -5,6 +5,9 @@ import javax.faces.bean.ManagedBean; ...@@ -5,6 +5,9 @@ import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty; import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped; import javax.faces.bean.RequestScoped;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.ReaderBeanLocal; import fi.insomnia.bortal.beans.ReaderBeanLocal;
import fi.insomnia.bortal.model.ReaderEvent; import fi.insomnia.bortal.model.ReaderEvent;
...@@ -14,15 +17,19 @@ public class RfidView extends GenericView { ...@@ -14,15 +17,19 @@ public class RfidView extends GenericView {
private String reader; private String reader;
private String tag; private String tag;
private String hash; private String hash;
@EJB @EJB
private ReaderBeanLocal readerbean; private ReaderBeanLocal readerbean;
@ManagedProperty(value = "#{rfidContainer}") @ManagedProperty(value = "#{rfidContainer}")
private RfidContainer container; private RfidContainer container;
private static final Logger logger = LoggerFactory.getLogger(RfidView.class);
public String readTag() { public String readTag() {
String ret = "Error"; String ret = "Error";
ReaderEvent revent = readerbean.checkTag(reader, tag, hash); ReaderEvent revent = readerbean.checkTag(reader, tag, hash);
logger.debug("at view Got revent from bean: {}", revent);
getContainer().foundTag(reader, tag, revent); getContainer().foundTag(reader, tag, revent);
if (revent != null) { if (revent != null) {
ret = "Ok"; ret = "Ok";
......
package fi.insomnia.bortal.view.helpers;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import fi.insomnia.bortal.model.ReaderEvent;
public class RfidEvent {
public RfidEvent(String reader, String tag, ReaderEvent revent) {
this.reader = reader;
this.tag = tag;
this.event = revent;
}
public void seen() {
time = Calendar.getInstance();
}
public String getSeenSince() {
long diffSec = (Calendar.getInstance().getTimeInMillis() - time.getTimeInMillis()) / 1000;
long secs = diffSec % 60;
long diffMin = diffSec / 60;
long mins = diffMin % 60;
long hours = diffMin / 60;
StringBuilder ret = new StringBuilder();
if (hours > 0) {
ret.append(hours).append(" h ");
}
if (hours > 0 || mins > 0) {
ret.append(mins).append(" min ");
}
ret.append(secs).append(" sec");
return ret.toString();
}
private Calendar time = Calendar.getInstance();
private String reader;
private String tag;
private ReaderEvent event;
private List<String> actions = new ArrayList<String>();
public Calendar getTime() {
return time;
}
public void setTime(Calendar time) {
this.time = time;
}
public String getReader() {
return reader;
}
public void setReader(String reader) {
this.reader = reader;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public ReaderEvent getEvent() {
return event;
}
public void setEvent(ReaderEvent event) {
this.event = event;
}
public List<String> getActions() {
return actions;
}
public void setActions(List<String> actions) {
this.actions = actions;
}
public void addMessage(String msg) {
this.actions.add(msg);
}
}
\ No newline at end of file
...@@ -92,4 +92,9 @@ page.auth.resetPassword.header=Salasanan resetointi ...@@ -92,4 +92,9 @@ page.auth.resetPassword.header=Salasanan resetointi
page.shop.readerevents.pagegroup=rfidshop page.shop.readerevents.pagegroup=rfidshop
page.shop.readerevents.header=RFID kauppa page.shop.readerevents.header=RFID kauppa
\ No newline at end of file
page.game.start.pagegroup=game
page.game.start.header=Insomnia Game
page.game.list.pagegroup=game
page.game.list.header=Insomnia Game
\ No newline at end of file
...@@ -68,6 +68,9 @@ role.description=Kuvaus ...@@ -68,6 +68,9 @@ role.description=Kuvaus
role.edit.save=Tallenna role.edit.save=Tallenna
topmenu.game=Insomnia Game
game.gamepoints=Insomnia Game pisteet:
topmenu.adminfront=Admintavaraa topmenu.adminfront=Admintavaraa
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!