Commit d553d02f by Tuomas Riihimäki

Merge branch 'master' into devel

2 parents 4c6805b9 a415a308
...@@ -13,11 +13,6 @@ import javax.resource.spi.IllegalStateException; ...@@ -13,11 +13,6 @@ import javax.resource.spi.IllegalStateException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.UserFacade;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LoggingBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.enums.apps.BillPermission; import fi.codecrew.moya.enums.apps.BillPermission;
import fi.codecrew.moya.enums.apps.CompoPermission; import fi.codecrew.moya.enums.apps.CompoPermission;
import fi.codecrew.moya.enums.apps.ContentPermission; import fi.codecrew.moya.enums.apps.ContentPermission;
...@@ -29,6 +24,8 @@ import fi.codecrew.moya.enums.apps.ShopPermission; ...@@ -29,6 +24,8 @@ import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.enums.apps.SpecialPermission; import fi.codecrew.moya.enums.apps.SpecialPermission;
import fi.codecrew.moya.enums.apps.TerminalPermission; import fi.codecrew.moya.enums.apps.TerminalPermission;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.UserFacade;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.User; import fi.codecrew.moya.model.User;
...@@ -176,8 +173,12 @@ public class PermissionBean implements PermissionBeanLocal { ...@@ -176,8 +173,12 @@ public class PermissionBean implements PermissionBeanLocal {
@Override @Override
public boolean isLoggedIn() { public boolean isLoggedIn() {
Principal principal = context.getCallerPrincipal();
return !getAnonEventUser().equals(getCurrentUser()) || getCurrentUser().getUser().isSuperadmin(); boolean ret = principal != null && !User.ANONYMOUS_LOGINNAME.equalsIgnoreCase(principal.getName());
logger.info("Checking principal {} against anon: {}", principal, ret);
return ret;
// return !getAnonEventUser().equals(getCurrentUser()) ||
// getCurrentUser().getUser().isSuperadmin();
} }
@Override @Override
......
...@@ -133,12 +133,13 @@ public class UserBean implements UserBeanLocal { ...@@ -133,12 +133,13 @@ public class UserBean implements UserBeanLocal {
EventUser ret = eventUserFacade.merge(user); EventUser ret = eventUserFacade.merge(user);
ctbean.checkPrintedCard(ret); ctbean.checkPrintedCard(ret);
currentEventuser = null;
return ret; return ret;
} }
@Override @Override
public List<Role> findUsersRoles(EventUser u) { public List<Role> findUsersRoles(EventUser u) {
EventUser currusr = permbean.getCurrentUser(); EventUser currusr = permbean.getCurrentUser();
if (!currusr.equals(u) && !permbean.hasPermission(UserPermission.MODIFY)) { if (!currusr.equals(u) && !permbean.hasPermission(UserPermission.MODIFY)) {
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "User tried to fetc another users roles: " + u); loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "User tried to fetc another users roles: " + u);
...@@ -149,7 +150,13 @@ public class UserBean implements UserBeanLocal { ...@@ -149,7 +150,13 @@ public class UserBean implements UserBeanLocal {
} }
private EventUser currentEventuser;
private ArrayList<Role> currentEventuserRoles;
public ArrayList<Role> localFindUsersRoles(EventUser u) { public ArrayList<Role> localFindUsersRoles(EventUser u) {
if (currentEventuser != null && u.equals(currentEventuser)) {
return currentEventuserRoles;
}
Set<Role> checkedRoles = new HashSet<Role>(); Set<Role> checkedRoles = new HashSet<Role>();
if (u != null) if (u != null)
{ {
...@@ -176,7 +183,9 @@ public class UserBean implements UserBeanLocal { ...@@ -176,7 +183,9 @@ public class UserBean implements UserBeanLocal {
} }
} }
} }
return new ArrayList<Role>(checkedRoles); currentEventuser = u;
currentEventuserRoles = new ArrayList<Role>(checkedRoles);
return currentEventuserRoles;
} }
private static void addRecursive(Set<Role> checkedRoles, Collection<Role> roles) { private static void addRecursive(Set<Role> checkedRoles, Collection<Role> roles) {
......
...@@ -9,17 +9,18 @@ import javax.ejb.LocalBean; ...@@ -9,17 +9,18 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.codecrew.moya.model.AccountEvent_;
import fi.codecrew.moya.model.Product_;
import fi.codecrew.moya.model.Role_;
import fi.codecrew.moya.beans.EventBeanLocal; import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.AccountEvent; import fi.codecrew.moya.model.AccountEvent;
import fi.codecrew.moya.model.AccountEvent_;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent; import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.Product; import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.model.Product_;
import fi.codecrew.moya.model.Role; import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.Role_;
@Stateless @Stateless
@LocalBean @LocalBean
...@@ -36,6 +37,27 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> { ...@@ -36,6 +37,27 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Role> cq = cb.createQuery(Role.class); CriteriaQuery<Role> cq = cb.createQuery(Role.class);
Root<AccountEvent> root = cq.from(AccountEvent.class);
Path<Role> role = root.get(AccountEvent_.product).get(Product_.provides);
cq.select(role);
cq.where(
cb.equal(role.get(Role_.event), event),
cb.equal(root.get(AccountEvent_.user), u)
);
// TypedQuery<Role> q =
// em.createQuery("select distinct ac.product.provides from AccountEvent ac where ac.id.eventId = :eventid and ac.user = :user and ac.product.provides is not null",
// Role.class);
// q.setParameter("eventid", event.getId());
// q.setParameter("user", u);
return getEm().createQuery(cq).getResultList();
}
public List<Role> findProvidedRoles_OLD(LanEvent event, EventUser u) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Role> cq = cb.createQuery(Role.class);
Root<Role> root = cq.from(Role.class); Root<Role> root = cq.from(Role.class);
cq.where( cq.where(
......
package fi.codecrew.moya.facade; package fi.codecrew.moya.facade;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
...@@ -12,6 +14,9 @@ import javax.persistence.criteria.CriteriaQuery; ...@@ -12,6 +14,9 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.From; import javax.persistence.criteria.From;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.enums.DatabaseHasCompare;
import fi.codecrew.moya.enums.DatabaseValueCompare;
import fi.codecrew.moya.facade.callbacks.EventLimiter; import fi.codecrew.moya.facade.callbacks.EventLimiter;
import fi.codecrew.moya.facade.callbacks.EventUserAccountSaldoPredicate; import fi.codecrew.moya.facade.callbacks.EventUserAccountSaldoPredicate;
import fi.codecrew.moya.facade.callbacks.EventUserPlacegroupPredicate; import fi.codecrew.moya.facade.callbacks.EventUserPlacegroupPredicate;
...@@ -19,15 +24,13 @@ import fi.codecrew.moya.facade.callbacks.EventUserRolefilter; ...@@ -19,15 +24,13 @@ import fi.codecrew.moya.facade.callbacks.EventUserRolefilter;
import fi.codecrew.moya.facade.callbacks.EventUserSearchPredicate; import fi.codecrew.moya.facade.callbacks.EventUserSearchPredicate;
import fi.codecrew.moya.facade.callbacks.FacadeCallback; import fi.codecrew.moya.facade.callbacks.FacadeCallback;
import fi.codecrew.moya.facade.callbacks.OrderCallback; import fi.codecrew.moya.facade.callbacks.OrderCallback;
import fi.codecrew.moya.model.EventUser_;
import fi.codecrew.moya.model.PrintedCard_;
import fi.codecrew.moya.model.User_;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.enums.DatabaseHasCompare;
import fi.codecrew.moya.enums.DatabaseValueCompare;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.EventUser_;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.PrintedCard_;
import fi.codecrew.moya.model.User; import fi.codecrew.moya.model.User;
import fi.codecrew.moya.model.User_;
import fi.codecrew.moya.util.UserSearchQuery; import fi.codecrew.moya.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchResult; import fi.codecrew.moya.utilities.SearchResult;
...@@ -45,29 +48,54 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> { ...@@ -45,29 +48,54 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> {
super(EventUser.class); super(EventUser.class);
} }
public EventUser findByLogin(String login) { private final Map<Integer, Map<String, Integer>> logincache = new HashMap<Integer, Map<String, Integer>>();
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<EventUser> cq = cb.createQuery(EventUser.class);
Root<EventUser> root = cq.from(EventUser.class);
cq.where(
cb.equal(root.get(EventUser_.user).get(User_.login), login),
cb.equal(root.get(EventUser_.event),
eventBean.getCurrentEvent()));
return getSingleNullableResult(getEm().createQuery(cq)); public EventUser findByLogin(final String login) {
LanEvent event = eventBean.getCurrentEvent();
EventUser ret;
if ((ret = checkCache(login, event)) == null)
{
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<EventUser> cq = cb.createQuery(EventUser.class);
Root<EventUser> root = cq.from(EventUser.class);
cq.where(
cb.equal(root.get(EventUser_.user).get(User_.login), login),
cb.equal(root.get(EventUser_.event),
event));
ret = getSingleNullableResult(getEm().createQuery(cq));
logincache.get(event.getId()).put(ret.getLogin(), ret.getId());
}
return ret;
} }
public EventUser find(User user) { private EventUser checkCache(final String login, final LanEvent event) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); if (!logincache.containsKey(event.getId()))
CriteriaQuery<EventUser> cq = cb.createQuery(EventUser.class); logincache.put(event.getId(), new HashMap<String, Integer>());
Root<EventUser> root = cq.from(EventUser.class); Integer euId = null;
cq.where( EventUser ret = null;
cb.equal(root.get(EventUser_.user), user), if ((euId = logincache.get(event.getId()).get(login)) != null) {
cb.equal(root.get(EventUser_.event), ret = find(euId);
eventBean.getCurrentEvent())); }
return ret;
return getSingleNullableResult(getEm().createQuery(cq)); }
public EventUser find(User user) {
LanEvent event = eventBean.getCurrentEvent();
EventUser ret;
if ((ret = checkCache(user.getLogin(), event)) == null)
{
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<EventUser> cq = cb.createQuery(EventUser.class);
Root<EventUser> root = cq.from(EventUser.class);
cq.where(
cb.equal(root.get(EventUser_.user), user),
cb.equal(root.get(EventUser_.event), event));
ret = getSingleNullableResult(getEm().createQuery(cq));
}
return ret;
} }
public List<EventUser> findAll() { public List<EventUser> findAll() {
......
...@@ -6,6 +6,7 @@ import java.io.IOException; ...@@ -6,6 +6,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.logging.Logger;
import javax.print.DocFlavor; import javax.print.DocFlavor;
import javax.print.DocPrintJob; import javax.print.DocPrintJob;
...@@ -32,6 +33,8 @@ public class CardPrinter { ...@@ -32,6 +33,8 @@ public class CardPrinter {
protected PrintService printService; protected PrintService printService;
private static final Logger log = LoggerFactory.getLogger(CardPrinter.class);
// private static final Logger logger = // private static final Logger logger =
// LoggerFactory.getLogger(CardPrinter.class); // LoggerFactory.getLogger(CardPrinter.class);
......
...@@ -50,6 +50,7 @@ public class Place extends GenericEntity { ...@@ -50,6 +50,7 @@ public class Place extends GenericEntity {
private String details = ""; private String details = "";
@Column(name = "place_code") @Column(name = "place_code")
private String code = ""; private String code = "";
@OneToOne(mappedBy = "placeReservation") @OneToOne(mappedBy = "placeReservation")
private GroupMembership placeReserver; private GroupMembership placeReserver;
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<composite:implementation> <composite:implementation>
<h:form id="shoppingcartform"> <h:form id="shoppingcartform">
<h:panelGrid columns="2"> <h:panelGrid columns="2" style="width:100%;" columnClasses="shopProductbuttons,topalign">
<h:panelGroup> <h:panelGroup>
<div id="shopItems"> <div id="shopItems">
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<h:outputText value="#{cart.product.price}"> <h:outputText value="#{cart.product.price}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" /> <f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText> </h:outputText>
eur
</div> </div>
</h:commandLink> </h:commandLink>
</ui:repeat> </ui:repeat>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['shop.actions']}" /> <h:outputText value="#{i18n['shop.actions']}" />
</f:facet> </f:facet>
<h:commandButton action="#{productShopView.removeBought()}" value="Poista" /> <p:commandButton action="#{productShopView.removeBought()}" update="@form" value="Poista" />
</p:column> </p:column>
</p:dataTable> </p:dataTable>
......
...@@ -38,7 +38,7 @@ td span span div.rating-cancel { ...@@ -38,7 +38,7 @@ td span span div.rating-cancel {
} }
#login { #login {
width: 385px; width: 388px;
height: 23px; height: 23px;
float: right; float: right;
margin-top: 10px; margin-top: 10px;
...@@ -57,22 +57,44 @@ td span span div.rating-cancel { ...@@ -57,22 +57,44 @@ td span span div.rating-cancel {
height: 23px; height: 23px;
color: #fff; color: #fff;
border: 0px; border: 0px;
padding-left: 10px; padding: 0 0 0 10px;
} }
#header #login .ui-state-default
{
/*color: #4f4f4f;*/
}
#header #login input
{
-webkit-box-shadow: none;
}
#header #login button
{
border-radius: 14px;
-webkit-border-radius: 14px;
}
#header #login span
{
padding: .4em .5em;
line-height: 1;
font-size: 12px;
}
.button { .button {
background: url('../img/button.png') no-repeat; /* background: url('../img/button.png') no-repeat;
width: 100px; width: 100px;
text-align: center; text-align: center;
border: 0px; border: 0px;
height: 23px; height: 23px;
color: #fff; color: #fff;
padding: 0px; padding: 0px;*/
} }
.button:hover { .button:hover {
background: url('../img/button2.png') no-repeat; /*background: url('../img/button2.png') no-repeat;
cursor: pointer; cursor: pointer;
*/
} }
#wrapper { #wrapper {
...@@ -258,4 +280,18 @@ table.border td,table.border th { ...@@ -258,4 +280,18 @@ table.border td,table.border th {
.nowrap { .nowrap {
white-space: nowrap; white-space: nowrap;
}
.shopProductbuttons
{
width: 320px;
vertical-align: top;
}
button.ui-button span
{
line-height: 1;
padding: .4em .5em;
} }
\ No newline at end of file
...@@ -121,8 +121,7 @@ public class PlaceMap extends HttpServlet { ...@@ -121,8 +121,7 @@ public class PlaceMap extends HttpServlet {
} }
} }
private void printPlaceMapToStream(OutputStream outputStream, private void printPlaceMapToStream(OutputStream outputStream, String filetype, EventMap map) throws IOException
String filetype, EventMap map) throws IOException
{ {
if (!permbean.hasPermission(MapPermission.VIEW)) if (!permbean.hasPermission(MapPermission.VIEW))
...@@ -152,8 +151,7 @@ public class PlaceMap extends HttpServlet { ...@@ -152,8 +151,7 @@ public class PlaceMap extends HttpServlet {
EventUser user = permbean.getCurrentUser(); EventUser user = permbean.getCurrentUser();
// List<Place> selectedPlaces = placemapBean.findSelectedPlaces(map); // List<Place> selectedPlaces = placemapBean.findSelectedPlaces(map);
BufferedImage image = ImageIO.read(new ByteArrayInputStream(map BufferedImage image = ImageIO.read(new ByteArrayInputStream(map.getMapData()));
.getMapData()));
Graphics2D g2d = image.createGraphics(); Graphics2D g2d = image.createGraphics();
for (Place place : places) { for (Place place : places) {
......
...@@ -54,7 +54,7 @@ public class MenuView extends GenericCDIView { ...@@ -54,7 +54,7 @@ public class MenuView extends GenericCDIView {
public List<PageContent> getPagecontent(String pagekey) public List<PageContent> getPagecontent(String pagekey)
{ {
String key = new StringBuilder(layoutview.getPagepath()).append(":").append(pagekey).toString(); String key = new StringBuilder(layoutview.getPagepath()).append(":").append(pagekey).toString();
// logger.debug("Getting pagecontent for key {}", key); logger.debug("Getting pagecontent for key {}. Matches: {}", key, contents.containsKey(key));
if (!contents.containsKey(key)) { if (!contents.containsKey(key)) {
contents.put(key, pagebean.findContentsForUser(key)); contents.put(key, pagebean.findContentsForUser(key));
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!