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 {
if (prodentry.getKey().isPrepaidInstant() && prodentry.getKey().getPlaces() != null && prodentry.getKey().getPlaces().size() > 0) {
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);
shoppingUser.getAccountEvents().add(ac);
......
......@@ -164,4 +164,9 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
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 {
@Override
public void lockPlaceProduct(User user, Product prod, BigDecimal quantity) {
user = userbean.mergeChanges(user);
BigDecimal loop = BigDecimal.ZERO;
LanEvent event = eventBean.getCurrentEvent();
......@@ -221,11 +220,11 @@ public class PlaceBean implements PlaceBeanLocal {
for (Place p : prod.getPlaces()) {
if (!p.isTaken()) {
// p.reserve(user);
p.buy(pg);
GroupMembership currgm = new GroupMembership(event, pg, p, gmemfacade.createInviteToken(event));
placeFacade.merge(p);
currgm.setPlaceGroup(pg);
pg.getMembers().add(currgm);
loop = loop.add(BigDecimal.ONE);
......@@ -239,6 +238,7 @@ public class PlaceBean implements PlaceBeanLocal {
}
if (!gmassoc) {
logger.debug("Group membership not found. Associating user {} to place {}", user.getNick(), currgm.getPlaceReservation().getName());
user.getGroupMemberships().add(currgm);
currgm.setUser(user);
}
......@@ -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 {
user.getPlaceGroups().add(pg);
place.reserve(user);
place.buy(pg);
GroupMembership newgm = new GroupMembership(ev, pg, place, gmemfacade.createInviteToken(ev));
pg.getMembers().add(newgm);
boolean foundGm = false;
......
......@@ -5,6 +5,11 @@ import java.util.Calendar;
import javax.ejb.EJB;
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.facade.GroupMembershipFacade;
import fi.insomnia.bortal.facade.PrintedCardFacade;
......@@ -34,13 +39,19 @@ public class ReaderBean implements ReaderBeanLocal {
private GroupMembershipFacade gmfacade;
@EJB
private CardTemplateBeanLocal cardtemplatebean;
@EJB
private UserBeanLocal userbean;
private static final Logger logger = LoggerFactory.getLogger(ReaderBean.class);
@Override
public ReaderEvent checkTag(String ident, String tag, String hash) {
LanEvent ev = eventbean.getCurrentEvent();
PrintedCard card = cardfacade.findByRfid(ev, tag);
ReaderEvent ret = null;
logger.debug("Found card by rfid: {}", card);
if (card != null) {
ret = createReaderEvent(ident, card);
}
......@@ -66,11 +77,34 @@ public class ReaderBean implements ReaderBeanLocal {
}
private ReaderEvent createReaderEvent(String readerIdent, PrintedCard card) {
LanEvent ev = eventbean.getCurrentEvent();
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);
readerEventFacade.create(ret);
ret.setGamePoint(reader.getGamepoints());
ret.setReader(reader);
reader.getEvents().add(ret);
card.getReaderEvents().add(ret);
cardfacade.merge(card);
return ret;
}
......@@ -80,4 +114,10 @@ public class ReaderBean implements ReaderBeanLocal {
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;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.NewsGroup;
@Stateless
......@@ -21,4 +24,16 @@ public class NewsGroupFacade extends EventChildGenericFacade<NewsGroup> {
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> {
q.setParameter("eventid", event.getId());
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;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.User;
@Stateless
......@@ -46,4 +48,5 @@ public class UserFacade extends GenericFacade<Integer, User> {
return this.search(name, NAMEFIELDS, "login");
}
}
......@@ -25,4 +25,6 @@ public interface CardTemplateBeanLocal {
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 {
ReaderEvent assocTagToCard(String tag, String readerIdent, PrintedCard card);
ReaderEvent merge(ReaderEvent e);
}
......@@ -22,7 +22,8 @@ public enum Permission {
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"),
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 static final Logger logger = LoggerFactory.getLogger(Permission.class);
......
......@@ -39,12 +39,13 @@ import javax.persistence.TemporalType;
@NamedQuery(name = "AccountEvent.findByDelivered", query = "SELECT a FROM AccountEvent a WHERE a.delivered = :delivered") })
public class AccountEvent extends GenericEventChild {
/**
*
*/
private static final long serialVersionUID = 2588419823225148100L;
@Column(name="cash", nullable=false)
@Column(name = "cash", nullable = false)
private boolean cash = false;
/**
* What 1 unit of this product costs.
......@@ -110,7 +111,7 @@ public class AccountEvent extends GenericEventChild {
* What discounts user has for this account event. Some magic is applied to
* calculate these.. :)
*/
@OneToMany(mappedBy = "accountEvent", cascade=CascadeType.ALL)
@OneToMany(mappedBy = "accountEvent", cascade = CascadeType.ALL)
private List<DiscountInstance> discountInstances = new ArrayList<DiscountInstance>();
/**
......
......@@ -8,34 +8,36 @@ import java.util.Calendar;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;
/**
*
*/
@Entity
@Table(name = "food_waves")
@NamedQueries( {
@NamedQueries({
@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.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.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)
private String name;
......@@ -54,19 +56,18 @@ public class FoodWave implements EventChildInterface {
@OneToMany(mappedBy = "foodWave")
private List<AccountEvent> accountEvents;
@Version
@Column(nullable = false)
private int jpaVersionField = 0;
@JoinColumns({
@JoinColumn(name = "template_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@ManyToOne
private FoodWaveTemplate template;
public FoodWave() {
}
public FoodWave(LanEvent event) {
this.id = new EventPk(event);
super();
}
public FoodWave(LanEvent event, String waveName, boolean waveClosed) {
this(event);
super(event);
this.name = waveName;
this.closed = waveClosed;
}
......@@ -112,64 +113,15 @@ public class FoodWave implements EventChildInterface {
}
@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() {
return "fi.insomnia.bortal.model.FoodWave[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;
public void setTemplate(FoodWaveTemplate template) {
this.template = template;
}
/**
* @return the jpaVersionField
*/
@Override
public int getJpaVersionField() {
return jpaVersionField;
}
/**
* @param jpaVersionField
* the jpaVersionField to set
*/
@Override
public void setJpaVersionField(int jpaVersionField) {
this.jpaVersionField = jpaVersionField;
public FoodWaveTemplate getTemplate() {
return template;
}
}
......@@ -7,30 +7,27 @@ package fi.insomnia.bortal.model;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Version;
/**
*
*/
@Entity
@Table(name = "food_wave_templates")
@NamedQueries( {
@NamedQueries({
@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.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;
@EmbeddedId
private EventPk id;
@Column(name = "template_name", nullable = false)
private String name;
......@@ -42,19 +39,18 @@ public class FoodWaveTemplate implements EventChildInterface {
@ManyToMany(mappedBy = "foodWaveTemplates")
private List<Product> products;
@Version
@Column(nullable = false)
private int jpaVersionField = 0;
@OneToMany(mappedBy = "template")
private List<FoodWave> foodwaves;
public FoodWaveTemplate() {
}
public FoodWaveTemplate(LanEvent event) {
this.id = new EventPk(event);
super(event);
}
public FoodWaveTemplate(LanEvent event, String templateName) {
this(event);
super(event);
this.name = templateName;
}
......@@ -75,28 +71,6 @@ public class FoodWaveTemplate implements EventChildInterface {
}
@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() {
return "fi.insomnia.bortal.model.FoodWaveTemplate[id=" + getId() + "]";
}
......@@ -116,37 +90,12 @@ public class FoodWaveTemplate implements EventChildInterface {
this.products = products;
}
/**
* @return the id
*/
@Override
public EventPk getId() {
return id;
public void setFoodwaves(List<FoodWave> foodwaves) {
this.foodwaves = foodwaves;
}
/**
* @param id
* the id to set
*/
@Override
public void setId(EventPk id) {
this.id = id;
}
/**
* @return the jpaVersionField
*/
@Override
public int getJpaVersionField() {
return jpaVersionField;
public List<FoodWave> getFoodwaves() {
return foodwaves;
}
/**
* @param jpaVersionField
* the jpaVersionField to set
*/
@Override
public void setJpaVersionField(int jpaVersionField) {
this.jpaVersionField = jpaVersionField;
}
}
......@@ -5,12 +5,11 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute;
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)
public class FoodWaveTemplate_ {
public static volatile SingularAttribute<FoodWaveTemplate, EventPk> id;
public class FoodWaveTemplate_ extends GenericEventChild_ {
public static volatile SingularAttribute<FoodWaveTemplate, String> name;
public static volatile SingularAttribute<FoodWaveTemplate, String> description;
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;
import javax.persistence.metamodel.SingularAttribute;
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)
public class FoodWave_ {
public static volatile SingularAttribute<FoodWave, EventPk> id;
public class FoodWave_ extends GenericEventChild_ {
public static volatile SingularAttribute<FoodWave, String> name;
public static volatile SingularAttribute<FoodWave, String> description;
public static volatile SingularAttribute<FoodWave, Calendar> time;
public static volatile SingularAttribute<FoodWave, Boolean> closed;
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 @@
*/
package fi.insomnia.bortal.model;
import static javax.persistence.CascadeType.ALL;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
......@@ -19,9 +20,6 @@ import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;
import javax.persistence.Version;
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.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") })
public class GroupMembership implements EventChildInterface {
public class GroupMembership extends GenericEventChild {
private static final long serialVersionUID = 1L;
@EmbeddedId
private EventPk id;
@Column(name = "invite_token", unique = true, nullable = false)
private String inviteToken;
......@@ -57,7 +53,7 @@ public class GroupMembership implements EventChildInterface {
@JoinColumns({
@JoinColumn(name = "group_id", referencedColumnName = "id", nullable = 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;
@JoinColumns({
......@@ -74,15 +70,11 @@ public class GroupMembership implements EventChildInterface {
@Temporal(TemporalType.TIMESTAMP)
private Calendar enteredEvent;
@Version
@Column(nullable = false)
private int jpaVersionField = 0;
public GroupMembership() {
}
public GroupMembership(LanEvent event, PlaceGroup pg, Place p, String token) {
this.id = new EventPk(event);
super(event);
this.setPlaceGroup(pg);
this.setPlaceReservation(p);
this.inviteToken = token;
......@@ -136,67 +128,13 @@ public class GroupMembership implements EventChildInterface {
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
public String toString() {
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
*/
......
......@@ -5,10 +5,9 @@ import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute;
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)
public class GroupMembership_ {
public static volatile SingularAttribute<GroupMembership, EventPk> id;
public class GroupMembership_ extends GenericEventChild_ {
public static volatile SingularAttribute<GroupMembership, String> inviteToken;
public static volatile SingularAttribute<GroupMembership, Calendar> inviteAccepted;
public static volatile SingularAttribute<GroupMembership, String> inviteEmail;
......@@ -17,5 +16,4 @@ public class GroupMembership_ {
public static volatile SingularAttribute<GroupMembership, Place> placeReservation;
public static volatile SingularAttribute<GroupMembership, User> user;
public static volatile SingularAttribute<GroupMembership, Calendar> enteredEvent;
public static volatile SingularAttribute<GroupMembership, Integer> jpaVersionField;
}
......@@ -17,6 +17,7 @@ import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.Version;
......@@ -48,6 +49,7 @@ public class NewsGroup implements EventChildInterface {
@Column(name = "priority", nullable = false)
private int priority;
@OrderBy("priority")
@OneToMany(cascade = CascadeType.ALL, mappedBy = "group")
private List<News> news;
......@@ -66,6 +68,7 @@ public class NewsGroup implements EventChildInterface {
public NewsGroup() {
}
public NewsGroup(LanEvent event) {
this.id = new EventPk(event);
}
......@@ -100,6 +103,7 @@ public class NewsGroup implements EventChildInterface {
this.priority = priority;
}
@OrderBy("id")
public List<News> getNews() {
return news;
}
......
......@@ -72,7 +72,7 @@ public class Place extends GenericEventChild {
* Which group has bought the place
*/
@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) })
@ManyToOne
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 @@
package fi.insomnia.bortal.model;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Comparator;
import java.util.List;
import javax.faces.model.ListDataModel;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
......@@ -20,8 +23,12 @@ import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.persistence.UniqueConstraint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
*/
......@@ -33,7 +40,6 @@ import javax.persistence.UniqueConstraint;
@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.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.findByRfidUid", query = "SELECT p FROM PrintedCard p WHERE p.rfidUid = :rfidUid") })
public class PrintedCard extends GenericEventChild {
......@@ -168,4 +174,53 @@ public class PrintedCard extends GenericEventChild {
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;
import javax.persistence.metamodel.SingularAttribute;
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)
public class PrintedCard_ extends GenericEventChild_ {
public static volatile SingularAttribute<PrintedCard, Calendar> printTime;
......
......@@ -4,6 +4,7 @@
*/
package fi.insomnia.bortal.model;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
......@@ -19,6 +20,7 @@ import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Version;
import javax.persistence.UniqueConstraint;
import static javax.persistence.CascadeType.ALL;
/**
*
......@@ -41,8 +43,10 @@ public class Reader extends GenericEventChild {
this.identification = ident;
}
private Integer gamepoints;
private Integer maxEvents;
@Column(nullable = false)
private Integer gamepoints = 0;
@Column(nullable = false)
private Integer maxEvents = 0;
/**
*
......@@ -78,7 +82,7 @@ public class Reader extends GenericEventChild {
private Integer mapY;
@OneToMany(mappedBy = "reader")
private List<ReaderEvent> events;
private List<ReaderEvent> events = new ArrayList<ReaderEvent>();
public String getIdentification() {
return identification;
......
......@@ -4,10 +4,11 @@
*/
package fi.insomnia.bortal.model;
import static javax.persistence.CascadeType.ALL;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
......@@ -17,7 +18,6 @@ import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;
/**
*
......@@ -40,7 +40,8 @@ public class ReaderEvent extends GenericEventChild {
@Column(name = "value")
private String value;
private Integer gaepoint;
@Column(nullable = false)
private Integer gamePoint = 0;
@JoinColumns({
@JoinColumn(name = "printed_cards_id", referencedColumnName = "id", nullable = false, updatable = false),
......@@ -51,7 +52,7 @@ public class ReaderEvent extends GenericEventChild {
@JoinColumns({
@JoinColumn(name = "readers_id", referencedColumnName = "id", nullable = false, updatable = 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;
public ReaderEvent() {
......@@ -101,4 +102,12 @@ public class ReaderEvent extends GenericEventChild {
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;
import javax.persistence.metamodel.SingularAttribute;
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)
public class ReaderEvent_ extends GenericEventChild_ {
public static volatile SingularAttribute<ReaderEvent, Calendar> time;
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, Reader> reader;
}
......@@ -39,7 +39,8 @@ import fi.insomnia.bortal.enums.Permission;
@ConversionValue(dataValue = "BILL", objectValue = "BILL"),
@ConversionValue(dataValue = "ROLE_MANAGEMENT", objectValue = "ROLE_MANAGEMENT"),
@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 {
......
......@@ -42,7 +42,6 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Gender;
import fi.insomnia.bortal.utilities.PasswordFunctions;
/**
*
*/
......@@ -129,7 +128,7 @@ public class User implements ModelInterface {
@Column(name = "superadmin")
private boolean superadmin = false;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "voter")
@OneToMany( mappedBy = "voter", cascade = CascadeType.ALL)
private List<Vote> votes;
@ManyToMany()
......@@ -146,7 +145,7 @@ public class User implements ModelInterface {
@OrderBy
private List<UserImage> userImageList;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
@OneToMany( mappedBy = "user")
private List<CompoEntryParticipant> compoEntryParticipants;
@OneToMany(mappedBy = "creator")
......@@ -199,6 +198,7 @@ public class User implements ModelInterface {
return ret;
}
public User() {
}
......
......@@ -7,7 +7,7 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute;
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)
public class User_ {
public static volatile SingularAttribute<User, Integer> id;
......
......@@ -43,7 +43,7 @@ public class Vote implements EventChildInterface {
private Calendar time;
@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) })
@ManyToOne(optional = false)
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 @@
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'rfidshop'?'a':''}"><h:link
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>
</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 @@
<h:outputText value="#{event.seenSince}" />
</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()}"
value="#{i18n['readerevent.associateToUser']}" />
<h:commandButton rendered="#{!empty event.event}" action="#{readerView.selectEvent()}"
value="#{i18n['readerevent.shopToUser']}" />
</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>
......
<!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 @@
</h:panelGrid>
<users:sendImage />
#{userView.initUserimagelist()}
<h:dataTable border="1" id="user" value="#{userView.userImageList}" var="img">
<h:column>
<h:outputText value="#{img.name}" />
</h:column>
<h:column>
<h:outputText value="#{img.mimeType}" />
</h:column>
<h:column>
<a href="#"
onclick="window.open('#{request.contextPath}/Userimage?imageid=#{img.id}', 'imagesubmitpopup', 'height=240,width=320'); this.target='imagesubmitpopup'; return true; ">
Näytä kuva
</a>
</h:column>
<h:column>
<h:commandButton action="#{userView.setDefaultImage()}" value="Set default image" />
</h:column>
</h:dataTable>
<h:form id="changeimageform">
<h:dataTable border="1" id="user" value="#{userView.userImageList}" var="img">
<h:column>
<h:outputText value="#{img.name}" />
</h:column>
<h:column>
<h:outputText value="#{img.mimeType}" />
</h:column>
<h:column>
<a href="#"
onclick="window.open('#{request.contextPath}/Userimage?imageid=#{img.id}', 'imagesubmitpopup', 'height=240,width=320'); this.target='imagesubmitpopup'; return true; ">
Näytä kuva </a>
</h:column>
<h:column>
<h:commandButton action="#{userView.setDefaultImage()}" value="Set default image" />
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</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;
import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.ReaderEvent;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.view.RfidContainer.RfidEvent;
import fi.insomnia.bortal.view.helpers.RfidEvent;
@ManagedBean(name = "readerView")
@SessionScoped
......@@ -37,7 +37,7 @@ public class ReaderView extends GenericView {
private RfidEvent rfidevent;
private String placecode;
private String usersearch;
@EJB
private ReaderBeanLocal readerBean;
......@@ -46,7 +46,9 @@ public class ReaderView extends GenericView {
@EJB
private EventBeanLocal eventbean;
private ListDataModel<UserCardWrapper> userlist;
@ManagedProperty(value = "#{userView}")
private UserView userview;
private static final Logger logger = LoggerFactory.getLogger(ReaderView.class);
public String searchforuser() {
......@@ -206,4 +208,32 @@ public class ReaderView extends GenericView {
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;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.model.ReaderEvent;
import fi.insomnia.bortal.view.helpers.RfidEvent;
@ApplicationScoped
@ManagedBean
......@@ -49,86 +50,5 @@ public class RfidContainer {
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;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.ReaderBeanLocal;
import fi.insomnia.bortal.model.ReaderEvent;
......@@ -14,15 +17,19 @@ public class RfidView extends GenericView {
private String reader;
private String tag;
private String hash;
@EJB
private ReaderBeanLocal readerbean;
@ManagedProperty(value = "#{rfidContainer}")
private RfidContainer container;
private static final Logger logger = LoggerFactory.getLogger(RfidView.class);
public String readTag() {
String ret = "Error";
ReaderEvent revent = readerbean.checkTag(reader, tag, hash);
logger.debug("at view Got revent from bean: {}", revent);
getContainer().foundTag(reader, tag, revent);
if (revent != null) {
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
page.shop.readerevents.pagegroup=rfidshop
page.shop.readerevents.header=RFID kauppa
\ No newline at end of file
page.shop.readerevents.header=RFID kauppa
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
role.edit.save=Tallenna
topmenu.game=Insomnia Game
game.gamepoints=Insomnia Game pisteet:
topmenu.adminfront=Admintavaraa
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!