Commit d553d02f by Tuomas Riihimäki

Merge branch 'master' into devel

2 parents 4c6805b9 a415a308
......@@ -13,11 +13,6 @@ import javax.resource.spi.IllegalStateException;
import org.slf4j.Logger;
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.CompoPermission;
import fi.codecrew.moya.enums.apps.ContentPermission;
......@@ -29,6 +24,8 @@ import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.enums.apps.SpecialPermission;
import fi.codecrew.moya.enums.apps.TerminalPermission;
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.User;
......@@ -176,8 +173,12 @@ public class PermissionBean implements PermissionBeanLocal {
@Override
public boolean isLoggedIn() {
return !getAnonEventUser().equals(getCurrentUser()) || getCurrentUser().getUser().isSuperadmin();
Principal principal = context.getCallerPrincipal();
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
......
......@@ -133,12 +133,13 @@ public class UserBean implements UserBeanLocal {
EventUser ret = eventUserFacade.merge(user);
ctbean.checkPrintedCard(ret);
currentEventuser = null;
return ret;
}
@Override
public List<Role> findUsersRoles(EventUser u) {
EventUser currusr = permbean.getCurrentUser();
if (!currusr.equals(u) && !permbean.hasPermission(UserPermission.MODIFY)) {
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "User tried to fetc another users roles: " + u);
......@@ -149,7 +150,13 @@ public class UserBean implements UserBeanLocal {
}
private EventUser currentEventuser;
private ArrayList<Role> currentEventuserRoles;
public ArrayList<Role> localFindUsersRoles(EventUser u) {
if (currentEventuser != null && u.equals(currentEventuser)) {
return currentEventuserRoles;
}
Set<Role> checkedRoles = new HashSet<Role>();
if (u != null)
{
......@@ -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) {
......
......@@ -9,17 +9,18 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
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.model.AccountEvent;
import fi.codecrew.moya.model.AccountEvent_;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.model.Product_;
import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.Role_;
@Stateless
@LocalBean
......@@ -36,6 +37,27 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
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);
cq.where(
......
package fi.codecrew.moya.facade;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
......@@ -12,6 +14,9 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.From;
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.EventUserAccountSaldoPredicate;
import fi.codecrew.moya.facade.callbacks.EventUserPlacegroupPredicate;
......@@ -19,15 +24,13 @@ import fi.codecrew.moya.facade.callbacks.EventUserRolefilter;
import fi.codecrew.moya.facade.callbacks.EventUserSearchPredicate;
import fi.codecrew.moya.facade.callbacks.FacadeCallback;
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.LanEvent;
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.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchResult;
......@@ -45,29 +48,54 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> {
super(EventUser.class);
}
public EventUser findByLogin(String login) {
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()));
private final Map<Integer, Map<String, Integer>> logincache = new HashMap<Integer, Map<String, Integer>>();
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) {
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),
eventBean.getCurrentEvent()));
private EventUser checkCache(final String login, final LanEvent event) {
if (!logincache.containsKey(event.getId()))
logincache.put(event.getId(), new HashMap<String, Integer>());
Integer euId = null;
EventUser ret = null;
if ((euId = logincache.get(event.getId()).get(login)) != null) {
ret = find(euId);
}
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() {
......
......@@ -6,6 +6,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Logger;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
......@@ -32,6 +33,8 @@ public class CardPrinter {
protected PrintService printService;
private static final Logger log = LoggerFactory.getLogger(CardPrinter.class);
// private static final Logger logger =
// LoggerFactory.getLogger(CardPrinter.class);
......
......@@ -50,6 +50,7 @@ public class Place extends GenericEntity {
private String details = "";
@Column(name = "place_code")
private String code = "";
@OneToOne(mappedBy = "placeReservation")
private GroupMembership placeReserver;
......
......@@ -17,7 +17,7 @@
<composite:implementation>
<h:form id="shoppingcartform">
<h:panelGrid columns="2">
<h:panelGrid columns="2" style="width:100%;" columnClasses="shopProductbuttons,topalign">
<h:panelGroup>
<div id="shopItems">
......@@ -30,7 +30,7 @@
<h:outputText value="#{cart.product.price}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText>
eur
</div>
</h:commandLink>
</ui:repeat>
......@@ -75,7 +75,7 @@
<f:facet name="header">
<h:outputText value="#{i18n['shop.actions']}" />
</f:facet>
<h:commandButton action="#{productShopView.removeBought()}" value="Poista" />
<p:commandButton action="#{productShopView.removeBought()}" update="@form" value="Poista" />
</p:column>
</p:dataTable>
......
......@@ -38,7 +38,7 @@ td span span div.rating-cancel {
}
#login {
width: 385px;
width: 388px;
height: 23px;
float: right;
margin-top: 10px;
......@@ -57,22 +57,44 @@ td span span div.rating-cancel {
height: 23px;
color: #fff;
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 {
background: url('../img/button.png') no-repeat;
/* background: url('../img/button.png') no-repeat;
width: 100px;
text-align: center;
border: 0px;
height: 23px;
color: #fff;
padding: 0px;
padding: 0px;*/
}
.button:hover {
background: url('../img/button2.png') no-repeat;
/*background: url('../img/button2.png') no-repeat;
cursor: pointer;
*/
}
#wrapper {
......@@ -258,4 +280,18 @@ table.border td,table.border th {
.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 {
}
}
private void printPlaceMapToStream(OutputStream outputStream,
String filetype, EventMap map) throws IOException
private void printPlaceMapToStream(OutputStream outputStream, String filetype, EventMap map) throws IOException
{
if (!permbean.hasPermission(MapPermission.VIEW))
......@@ -152,8 +151,7 @@ public class PlaceMap extends HttpServlet {
EventUser user = permbean.getCurrentUser();
// List<Place> selectedPlaces = placemapBean.findSelectedPlaces(map);
BufferedImage image = ImageIO.read(new ByteArrayInputStream(map
.getMapData()));
BufferedImage image = ImageIO.read(new ByteArrayInputStream(map.getMapData()));
Graphics2D g2d = image.createGraphics();
for (Place place : places) {
......
......@@ -54,7 +54,7 @@ public class MenuView extends GenericCDIView {
public List<PageContent> getPagecontent(String pagekey)
{
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)) {
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!