Commit 3f90060f by Antti Tönkyrä

Merge branch 'devel' of codecrew.fi:bortal into devel

2 parents 9a83aed1 6db7f37d
Showing with 1972 additions and 431 deletions
Manifest-Version: 1.0
Class-Path: MoyaBeansClient.jar
MoyaUtilities.jar
Class-Path: lib/commons-imaging-1.0-SNAPSHOT.jar
lib/MoyaUtilities.jar
lib/MoyaBeansClient.jar
package fi.codecrew.moya.beans;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageTypeSpecifier;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.metadata.IIOInvalidTreeException;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import javax.imageio.stream.ImageOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.pdfjet.CoreFont;
import com.pdfjet.Image;
......@@ -26,6 +40,7 @@ import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.util.MassPrintResult;
import fi.codecrew.moya.utilities.BarcodeUtils;
/**
* Session Bean implementation class CardPrintBean
......@@ -46,6 +61,7 @@ public class CardPrintBean implements CardPrintBeanLocal {
private UserFacade userfacade;
@EJB
private BarcodeBean barcodeBean;
private static final Logger logger = LoggerFactory.getLogger(CardPrintBean.class);
/**
* Default constructor.
......@@ -208,6 +224,94 @@ public class CardPrintBean implements CardPrintBeanLocal {
return mpr;
}
@Override
public byte[] constructPNG(EventUser user) throws Exception {
PrintedCard card = cardTemplateBean.checkPrintedCard(user);
logger.info("Printing card {}", card);
BufferedImage face = ImageIO.read(new ByteArrayInputStream(user.getUser().getCurrentImage().getImageData()));
BufferedImage base = ImageIO.read(new ByteArrayInputStream(card.getTemplate().getImage()));
BufferedImage outimage = new BufferedImage(base.getWidth(), base.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = outimage.createGraphics();
// g.drawImage(org, AffineTransform.getScaleInstance(0.31, 0.31), null);
g.drawImage(base, 0, 0, base.getWidth(), base.getHeight(), null);
// g.drawImage(face, AffineTransform.getScaleInstance(0.31, 0.31),
// null);
g.drawImage(face, 60, 300, 320, 400, null);
g.setFont(new Font("Century gothic", Font.PLAIN, 70));
// g.drawString(nick, 595 -
// g.getFontMetrics().charsWidth(nick.toCharArray(), 0, nick.length()),
// 840);
g.drawString(user.getUser().getNick(), 50, 810);
g.setFont(new Font("Century gothic", Font.BOLD, 45));
StringBuilder wholeName = new StringBuilder();
wholeName.append(user.getUser().getFirstnames()).append(" ").append(user.getUser().getLastname());
// g.setFont(new Font("Arial", Font.BOLD, 35));
// g.drawString(name, 595 -
// g.getFontMetrics().charsWidth(name.toCharArray(), 0, name.length()),
// 890);
//
// g.drawString(owner.getId().toString(), 60, 948);
g.drawString(wholeName.toString(), 60, 865);
g.drawString(card.getTemplate().getName(), 60, 915);
String barcodeString = String.valueOf(user.getUser().getCreated().getTime().getTime());
barcodeString = barcodeString.substring(barcodeString.length() - 12);
BufferedImage image = ImageIO.read(BarcodeUtils.getBarcodeEAN(barcodeString));
g.drawImage(image, 0, base.getHeight() - 120, base.getWidth(), 120, null);
g.dispose();
ByteArrayOutputStream ostr = new ByteArrayOutputStream();
for (Iterator<ImageWriter> pngWriter = ImageIO.getImageWritersByFormatName("png"); pngWriter.hasNext();)
{
ImageWriter writer = pngWriter.next();
logger.info("Trying to write with writer {}", writer);
ImageWriteParam writeParam = writer.getDefaultWriteParam();
ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported()) {
continue;
}
setDPI(metadata);
final ImageOutputStream stream = ImageIO.createImageOutputStream(ostr);
try {
writer.setOutput(stream);
writer.write(metadata, new IIOImage(outimage, null, metadata), writeParam);
} finally {
stream.close();
}
break;
}
// ImageIO.write(outimage, "png", ostr);
byte[] ret = ostr.toByteArray();
logger.info("Returning {} bytes for pngimage", ret.length);
// double meter2inchRatio = 1d / 0.0254d;
// int dpi = 300;
// int dim = (int) (dpi * meter2inchRatio) + 1;
return ret;
}
private ByteArrayInputStream convertBufferedImageToPng(BufferedImage img)
throws IOException {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
......@@ -216,4 +320,25 @@ public class CardPrintBean implements CardPrintBeanLocal {
return new ByteArrayInputStream(outStream.toByteArray());
}
private static void setDPI(IIOMetadata metadata) throws IIOInvalidTreeException {
// for PMG, it's dots per millimeter
double dotsPerMilli = 1.0 * 300 / 10 / 2.54;
IIOMetadataNode horiz = new IIOMetadataNode("HorizontalPixelSize");
horiz.setAttribute("value", Double.toString(dotsPerMilli));
IIOMetadataNode vert = new IIOMetadataNode("VerticalPixelSize");
vert.setAttribute("value", Double.toString(dotsPerMilli));
IIOMetadataNode dim = new IIOMetadataNode("Dimension");
dim.appendChild(horiz);
dim.appendChild(vert);
IIOMetadataNode root = new IIOMetadataNode("javax_imageio_1.0");
root.appendChild(dim);
metadata.mergeTree("javax_imageio_1.0", root);
}
}
package fi.codecrew.moya.beans;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import fi.codecrew.moya.facade.NewsGroupFacade;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.GameBeanLocal;
/**
* 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
}
}
......@@ -120,6 +120,8 @@ public class JaasBean implements MoyaRealmBeanRemote {
}
if (!usr.getUser().isAnonymous()) {
// all logged in users should be able to logout :)
roleset.add(UserPermission.LOGOUT.name());
roleset.add(SpecialPermission.USER.name());
}
// TODO: EI NÄIN!!!!! Superadmin ei saa kaikkia oikkia!!
......
package fi.codecrew.moya.beans;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.facade.LicenseCodeFacade;
import fi.codecrew.moya.facade.LicenseTargetFacade;
import fi.codecrew.moya.facade.UserFacade;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.LicenseCode;
import fi.codecrew.moya.model.LicenseTarget;
import fi.codecrew.moya.model.User;
/**
* Session Bean implementation class GameBean
*/
@Stateless
public class LicenseBean implements LicenseBeanLocal {
@EJB
LicenseCodeFacade licenseCodeFacade;
@EJB
UserFacade userFacade;
@EJB
LicenseTargetFacade licenseTargetFacade;
@EJB
EventBeanLocal eventBean;
@EJB
PlaceBeanLocal placeBean;
private static final Logger logger = LoggerFactory.getLogger(LicenseBean.class);
/**
* Check, and if needed generate code for gamecode.
*
* @param code
*/
private LicenseCode generateCode(LicenseCode code) throws GenerationException {
if (code.getCode() == null || code.getCode().trim().equals("")) {
if (code.getLicenseTarget().getCodeUrl() == null || code.getLicenseTarget().getCodeUrl().trim().equals("")) {
throw new GenerationException("Code generate failed");
}
try {
URL url = new URL(code.getLicenseTarget().getCodeUrl());
URLConnection uc;
uc = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String codeString = "";
String tmpLine;
while ((tmpLine = in.readLine()) != null) {
if (!codeString.equals("")) {
codeString += "\n";
}
codeString += tmpLine;
}
if(codeString.trim().equals("0") || codeString.trim().equals("")) {
throw new GenerationException("Code generate failed");
}
code.setCode(codeString);
code = licenseCodeFacade.merge(code);
return code;
} catch (IOException e) {
logger.warn("Code generate failed", e);
throw new GenerationException("Code generate failed");
}
}
throw new RuntimeException("LOL, what?");
}
public LicenseCode accessCode(LicenseCode code) throws GenerationException {
code = generateCode(code);
if (!code.isAccessed()) {
code.setAccessed(Calendar.getInstance());
code = licenseCodeFacade.merge(code);
}
return code;
}
public List<LicenseTarget> findAll(LanEvent event) {
return event.getGames();
}
public void saveOrCreateLicense(LicenseTarget target) {
if (target.getId() == null) {
target.setEvent(eventBean.getCurrentEvent());
eventBean.getCurrentEvent().getGames().add(target);
licenseTargetFacade.create(target);
target = licenseTargetFacade.merge(target);
}
else {
target = licenseTargetFacade.merge(target);
}
}
/**
* Default constructor.
*/
public LicenseBean() {
// TODO Auto-generated constructor stub
}
@Override
public List<LicenseTarget> findUserGames(EventUser user) {
ArrayList<LicenseTarget> returnLicenses = new ArrayList<LicenseTarget>();
if(user.getGroupMemberships() != null) {
for(GroupMembership memberShip : user.getGroupMemberships()) {
if(memberShip.getPlaceReservation() == null)
continue;
for(LicenseTarget license : memberShip.getPlaceReservation().getProduct().getLicenseTargets()) {
if(license.isActive()) {
returnLicenses.add(license);
}
}
}
}
return returnLicenses;
}
@Override
public List<LicenseTarget> findUnopenedUserGames(EventUser user) {
List<LicenseTarget> returnLicenses = findUserGames(user);
for(LicenseCode code : user.getUser().getLicenseCodes()) {
returnLicenses.remove(code.getLicenseTarget());
}
return returnLicenses;
}
@Override
public LicenseCode createAndAccessCode(LicenseTarget target, User user) throws GenerationException {
user = userFacade.reload(user);
LicenseCode code = new LicenseCode(target);
user.getLicenseCodes().add(code);
code.setUser(user);
licenseCodeFacade.create(code);
code = accessCode(code);
return code;
}
}
......@@ -14,6 +14,8 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.apps.BillPermission;
import fi.codecrew.moya.enums.apps.CompoPermission;
import fi.codecrew.moya.enums.apps.ContentPermission;
import fi.codecrew.moya.enums.apps.EventPermission;
import fi.codecrew.moya.enums.apps.LicensePermission;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.enums.apps.PollPermission;
import fi.codecrew.moya.enums.apps.ShopPermission;
......@@ -126,17 +128,21 @@ public class MenuBean implements MenuBeanLocal {
navifacade.create(usermenu);
MenuNavigation adminmenu = new MenuNavigation(ev, "topnavi.adminnavi", menusort = +10);
//
// Admin menu
//
MenuNavigation adminmenu = new MenuNavigation(ev, "topnavi.adminnavi", menusort = +10);
//user management
MenuNavigation adminuser = adminmenu.addPage(null, null);
adminuser.setKey("topnavi.usermgmt");
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL);
adminuser.setKey("topnavi.usermgmt");
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/edit"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/changePassword"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/accountEvents"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/place/adminInsertToken"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/accountEvents"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/foodwaveshop"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/foodwaveProducts"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/showTakePicture"), UserPermission.VIEW_ALL).setVisible(false);
......@@ -147,13 +153,32 @@ public class MenuBean implements MenuBeanLocal {
adminroles.addPage(menuitemfacade.findOrCreate("/role/create"), UserPermission.WRITE_ROLES);
adminroles.addPage(menuitemfacade.findOrCreate("/role/edit"), null).setVisible(false);
MenuNavigation adminEventCards = adminuser.addPage(null, null);
adminEventCards.setKey("subnavi.cards");
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplates"), UserPermission.READ_ROLES);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTemplate"), null).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/shop/shopToUser"), null).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/shop/assocToUser"), null).setVisible(false);
// shop
MenuNavigation adminshop = adminmenu.addPage(null, null);
adminshop.setKey("topnavi.adminshop");
MenuNavigation adminShopProducts = adminshop.addPage(null, null);
adminShopProducts.setKey("subnavi.products");
adminShopProducts.addPage(menuitemfacade.findOrCreate("/product/create"), ShopPermission.MANAGE_PRODUCTS);
adminShopProducts.addPage(menuitemfacade.findOrCreate("/product/list"), ShopPermission.LIST_ALL_PRODUCTS);
MenuNavigation foodnavi = adminshop.addPage(null, null);
foodnavi.setKey("topnavi.foodwave");
foodnavi.addPage(menuitemfacade.findOrCreate("/foodmanager/listFoodwaves"), ShopPermission.MANAGE_FOODWAVES);
foodnavi.addPage(menuitemfacade.findOrCreate("/foodmanager/listOrders"), ShopPermission.MANAGE_FOODWAVES).setVisible(false);
foodnavi.addPage(menuitemfacade.findOrCreate("/foodadmin/listTemplates"), ShopPermission.MANAGE_FOODWAVES);
foodnavi.addPage(menuitemfacade.findOrCreate("/foodadmin/createTemplate"), ShopPermission.MANAGE_FOODWAVES);
foodnavi.addPage(menuitemfacade.findOrCreate("/foodadmin/editTemplate"), ShopPermission.MANAGE_FOODWAVES).setVisible(false);
MenuNavigation adminShopReaders = adminshop.addPage(null, null);
adminShopReaders.setKey("subnavi.readers");
adminShopReaders.addPage(menuitemfacade.findOrCreate("/shop/showReaderEvents"), ShopPermission.SHOP_TO_OTHERS);
......@@ -164,16 +189,30 @@ public class MenuBean implements MenuBeanLocal {
adminShopBilling.addPage(menuitemfacade.findOrCreate("/bill/billSummary"), BillPermission.READ_ALL);
adminShopBilling.addPage(menuitemfacade.findOrCreate("/bill/listAll"), BillPermission.WRITE_ALL);
// computer places
MenuNavigation adminPlaces = adminmenu.addPage(null, null);
adminPlaces.setKey("topnavi.userplaces");
adminPlaces.addPage(menuitemfacade.findOrCreate("/place/adminPlacemap"), UserPermission.VIEW_ALL);
// adminPlaces.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL); // todo: make new view for managing
// event
MenuNavigation adminevent = adminmenu.addPage(null, null);
adminevent.setKey("topnavi.event");
MenuNavigation adminEventCards = adminevent.addPage(null, null);
adminEventCards.setKey("subnavi.cards");
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplates"), UserPermission.READ_ROLES);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTemplate"), null).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/shop/shopToUser"), null).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/shop/assocToUser"), null).setVisible(false);
MenuNavigation contentnavi = adminevent.addPage(null, null);
contentnavi.setKey("topnavi.contents");
contentnavi.addPage(menuitemfacade.findOrCreate("/pages/list"), ContentPermission.MANAGE_PAGES);
contentnavi.addPage(menuitemfacade.findOrCreate("/pages/create"), ContentPermission.MANAGE_PAGES);
contentnavi.addPage(menuitemfacade.findOrCreate("/pages/edit"), null).setVisible(false);
MenuNavigation lognavi = adminevent.addPage(null, null);
lognavi.setKey("topnavi.log");
lognavi.addPage(menuitemfacade.findOrCreate("/actionlog/messagelist"), UserPermission.VIEW_ALL);
lognavi.addPage(menuitemfacade.findOrCreate("/actionlog/taskview"), UserPermission.VIEW_ALL).setVisible(false);
adminevent.addPage(menuitemfacade.findOrCreate("/eventorg/list"), EventPermission.MANAGE_PROPERTIES);
navifacade.create(adminmenu);
MenuNavigation shopmenu = new MenuNavigation(ev, "topnavi.shopnavi", menusort = +10);
......@@ -273,6 +312,7 @@ public class MenuBean implements MenuBeanLocal {
userTopnavi.addPage(menuitemfacade.findOrCreate("/user/accountEvents"), UserPermission.VIEW_SELF);
userTopnavi.addPage(menuitemfacade.findOrCreate("/place/myGroups"), UserPermission.VIEW_SELF);
userTopnavi.addPage(menuitemfacade.findOrCreate("/user/sendPicture"), UserPermission.VIEW_SELF);
MenuNavigation placemapTopmenu = usernavi.addPage(null, null);
placemapTopmenu.setKey("topnavi.placemap");
......@@ -305,6 +345,11 @@ public class MenuBean implements MenuBeanLocal {
// ShopPermission.SHOP_FOODWAVE);
foodwaveTopmenu.addPage(menuitemfacade.findOrCreate("/foodwave/listProducts"), ShopPermission.SHOP_FOODWAVE).setVisible(false);
foodwaveTopmenu.addPage(menuitemfacade.findOrCreate("/foodwave/ThanksForOrderingFromCounter"), ShopPermission.SHOP_FOODWAVE).setVisible(false);
MenuNavigation gameTopmenu = usernavi.addPage(null, null);
gameTopmenu.setKey("topnavi.license");
gameTopmenu.addPage(menuitemfacade.findOrCreate("/license/viewCodes"), LicensePermission.VIEW_OWN_CODES);
MenuNavigation pollTopmenu = usernavi.addPage(null, null);
pollTopmenu.setKey("topnavi.poll");
......@@ -393,6 +438,9 @@ public class MenuBean implements MenuBeanLocal {
foodnavi.addPage(menuitemfacade.findOrCreate("/foodadmin/createTemplate"), ShopPermission.MANAGE_FOODWAVES);
foodnavi.addPage(menuitemfacade.findOrCreate("/foodadmin/editTemplate"), ShopPermission.MANAGE_FOODWAVES).setVisible(false);
MenuNavigation gamenavi = adminnavi.addPage(null, null);
gamenavi.setKey("topnavi.license");
gamenavi.addPage(menuitemfacade.findOrCreate("/license/manageCodes"), LicensePermission.MANAGE);
}
@Override
......
......@@ -17,6 +17,7 @@ import fi.codecrew.moya.enums.apps.BillPermission;
import fi.codecrew.moya.enums.apps.CompoPermission;
import fi.codecrew.moya.enums.apps.ContentPermission;
import fi.codecrew.moya.enums.apps.EventPermission;
import fi.codecrew.moya.enums.apps.LicensePermission;
import fi.codecrew.moya.enums.apps.IAppPermission;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.enums.apps.PollPermission;
......@@ -91,7 +92,9 @@ import fi.codecrew.moya.model.User;
EventPermission.S_MANAGE_PRIVATE_PROPERTIES,
EventPermission.S_MANAGE_PROPERTIES,
LicensePermission.S_MANAGE,
LicensePermission.S_VIEW_OWN_CODES
})
@LocalBean
public class PermissionBean implements PermissionBeanLocal {
......@@ -113,11 +116,6 @@ public class PermissionBean implements PermissionBeanLocal {
@EJB
private EventBeanLocal eventbean;
//
// @Override
// public boolean hasPermission(String perm) {
// return context.isCallerInRole(perm);
// }
@Override
public boolean hasPermission(IAppPermission perm) {
......@@ -130,36 +128,7 @@ public class PermissionBean implements PermissionBeanLocal {
}
// @Override
// public boolean fatalPermission(IAppPermission permission, Object...
// failmessage) {
// boolean ret = hasPermission(permission);
// if (!ret) {
// StringBuilder message = new
// StringBuilder().append(" permission: ").append(permission);
// if (failmessage == null || failmessage.length == 0) {
// message.append(" MSG: SessionHandler mbean permission exception: Permission: ")
// .append(permission);
// } else {
// for (Object part : failmessage) {
// message.append(part == null ? "NULL" : part.toString());
// }
// }
// // throw new SecurityException("Foobar");
//
// throw new PermissionDeniedException(loggingbean, getCurrentUser(),
// message.toString());
// }
// return true;
// }
//
// @Override
// public void fatalNotLoggedIn() throws PermissionDeniedException {
// if (!isLoggedIn()) {
// throw new PermissionDeniedException(loggingbean, getCurrentUser(),
// "User is not logged in!");
// }
// }
@Override
public boolean isCurrentUser(User user) {
......@@ -178,8 +147,6 @@ public class PermissionBean implements PermissionBeanLocal {
// logger.info("Checking principal {} against anon: {}", principal,
// ret);
return ret;
// return !getAnonEventUser().equals(getCurrentUser()) ||
// getCurrentUser().getUser().isSuperadmin();
}
@Override
......
......@@ -2,6 +2,7 @@ package fi.codecrew.moya.beans;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.HashSet;
......@@ -19,6 +20,8 @@ import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.bortal.views.BillSummary;
import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.facade.AccountEventFacade;
import fi.codecrew.moya.facade.BillLineFacade;
import fi.codecrew.moya.facade.DiscountFacade;
......@@ -26,13 +29,6 @@ import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.InventoryEventFacade;
import fi.codecrew.moya.facade.ProductFacade;
import fi.codecrew.moya.facade.UserFacade;
import fi.codecrew.moya.beans.BillBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.bortal.views.BillSummary;
import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.model.AccountEvent;
import fi.codecrew.moya.model.Discount;
import fi.codecrew.moya.model.EventUser;
......@@ -365,4 +361,18 @@ public class ProductBean implements ProductBeanLocal {
public List<Product> findProductsForEvent() {
return productFacade.findAll();
}
@Override
public List<Product> findPlaceProducts() {
ArrayList<Product> returnProducts = new ArrayList<Product>();
for(Product product : findProductsForEvent()) {
if(product.getPlaces() != null && product.getPlaces().size() > 0) {
returnProducts.add(product);
}
}
return returnProducts;
}
}
......@@ -274,7 +274,6 @@ public class UserBean implements UserBeanLocal {
public void createNewUser(EventUser user, String password) {
user.getUser().resetPassword(password);
// todo add barcode
user.setEvent(eventBean.getCurrentEvent());
// Tallennetaan olio kantaan...
eventUserFacade.create(user);
......
package fi.codecrew.moya.facade;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import fi.codecrew.moya.model.LicenseCode;
@Stateless
@LocalBean
public class LicenseCodeFacade extends IntegerPkGenericFacade<LicenseCode> {
public LicenseCodeFacade() {
super(LicenseCode.class);
}
}
package fi.codecrew.moya.facade;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import fi.codecrew.moya.model.LicenseTarget;
@Stateless
@LocalBean
public class LicenseTargetFacade extends IntegerPkGenericFacade<LicenseTarget> {
public LicenseTargetFacade() {
super(LicenseTarget.class);
}
}
......@@ -88,9 +88,9 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
// }
@Override
public void create(User user) {
public User create(User user) {
user.setLogin(user.getLogin().toLowerCase().trim());
super.create(user);
return super.create(user);
}
@Override
......
......@@ -4,11 +4,16 @@ import java.util.List;
import javax.ejb.Local;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.util.MassPrintResult;
@Local
public interface CardPrintBeanLocal {
public MassPrintResult getUserCardsAsPrintablePdf(List<Integer> userIdList) throws Exception;
public MassPrintResult getUserCardAsPrintablePdf(Integer userId) throws Exception;
public void acceptMassPrintResult(MassPrintResult mpr);
byte[] constructPNG(EventUser user) throws Exception;
}
package fi.codecrew.moya.beans;
import javax.ejb.Local;
@Local
public interface GameBeanLocal {
}
package fi.codecrew.moya.beans;
import java.util.List;
import javax.ejb.ApplicationException;
import javax.ejb.Local;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.LicenseCode;
import fi.codecrew.moya.model.LicenseTarget;
import fi.codecrew.moya.model.User;
@Local
public interface LicenseBeanLocal {
public LicenseCode accessCode(LicenseCode code) throws GenerationException;
public List<LicenseTarget> findAll(LanEvent event);
public void saveOrCreateLicense(LicenseTarget game);
public List<LicenseTarget> findUserGames(EventUser user);
public List<LicenseTarget> findUnopenedUserGames(EventUser user);
public LicenseCode createAndAccessCode(LicenseTarget target, User user) throws GenerationException;
@ApplicationException(rollback=true)
public static class GenerationException extends Exception {
public GenerationException() {
super();
}
public GenerationException(String message) {
super(message);
}
/**
*
*/
private static final long serialVersionUID = 1L;
}
}
\ No newline at end of file
......@@ -55,5 +55,7 @@ public interface ProductBeanLocal {
void saveInventoryEvent(InventoryEvent ie);
List<Product> findProductsForEvent();
List<Product> findPlaceProducts();
}
......@@ -26,12 +26,14 @@ org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
......@@ -69,6 +71,7 @@ org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
......@@ -160,12 +163,14 @@ org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invoca
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
......@@ -189,6 +194,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invoc
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
......@@ -244,6 +250,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invoc
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
......@@ -253,6 +260,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=inser
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
......@@ -279,4 +287,5 @@ org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
#Sun Mar 07 12:30:58 EET 2010
cleanup_settings_version=2
eclipse.preferences.version=1
formatter_profile=_InsomniaConventions
formatter_settings_version=11
formatter_settings_version=12
......@@ -61,7 +61,7 @@ public class AccountEvent extends GenericEntity {
private Calendar delivered;
@Column(name = "delivered_count", nullable = false, precision = 24, scale = 4)
private BigDecimal deliveredCount;
private BigDecimal deliveredCount = new BigDecimal(0);
/**
* If this AccountEvent is a product in foodwace, this field is a reference
......
......@@ -104,6 +104,9 @@ public class EventUser extends GenericEntity {
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "createtime", nullable = false, updatable = false)
private Date eventuserCreated;
public EventUser getCreator() {
return creator;
......@@ -443,4 +446,5 @@ public class EventUser extends GenericEntity {
}
}
......@@ -58,6 +58,7 @@ public class GroupMembership extends GenericEntity {
private Place placeReservation;
@JoinColumn(name = EVENTUSER_ID, referencedColumnName = EventUser.ID_COLUMN)
@ManyToOne
private EventUser user;
......
......@@ -73,6 +73,9 @@ public class LanEvent extends GenericEntity {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "event")
private List<Compo> compos;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "event")
private List<LicenseTarget> games;
@OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
private List<CardTemplate> cardTemplates;
......@@ -281,4 +284,14 @@ public class LanEvent extends GenericEntity {
this.properties = properties;
}
public List<LicenseTarget> getGames() {
if(games == null)
games = new ArrayList<LicenseTarget>();
return games;
}
public void setGames(List<LicenseTarget> games) {
this.games = games;
}
}
......@@ -12,7 +12,9 @@ public enum LanEventPropertyKey {
PLACECODE_FROM_USER(Type.BOOL, null),
PLACECODE_PRINT_ONLY_OWN(Type.BOOL, null),
CHECK_BILL_STATS_PERMISSION(Type.BOOL, null),
GATHER_OTHER_BILL_INFO(Type.BOOL, null), ;
GATHER_OTHER_BILL_INFO(Type.BOOL, null),
ALLOW_BILLING(Type.BOOL, null);
;
private enum Type {
TEXT, DATE, DATA, BOOL
......
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fi.codecrew.moya.model;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
/**
*
*/
@Entity
@Table(name = "licensecodes")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class LicenseCode extends GenericEntity {
private static final long serialVersionUID = 1L;
@Column(name = "accessed", nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Calendar accessed = null;
@Column(name = "code")
private String code;
@JoinColumn(name = "game_id", referencedColumnName = "id")
@ManyToOne
private LicenseTarget licenseTarget;
@JoinColumn(name = "user_id", referencedColumnName = "id")
@ManyToOne
private User user;
public LicenseCode() {
super();
}
public LicenseCode(LicenseTarget target) {
this();
this.licenseTarget = target;
}
public boolean isAccessed() {
return (accessed != null);
}
public Calendar getAccessed() {
return accessed;
}
public void setAccessed(Calendar accessed) {
this.accessed = accessed;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public LicenseTarget getLicenseTarget() {
return licenseTarget;
}
public void setLicenseTarget(LicenseTarget licenseTarget) {
this.licenseTarget = licenseTarget;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fi.codecrew.moya.model;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
/**
*
*/
@Entity
@Table(name = "licenseTargets")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class LicenseTarget extends GenericEntity {
private static final long serialVersionUID = 1L;
@Column(name = "active")
private boolean active = false;
@Column(name = "name")
private String name;
@Column(name = "service")
private String service;
@Column(name = "description")
private String description;
@Column(name = "code_url")
private String codeUrl;
@JoinColumn(name = "event_id", referencedColumnName = "id")
@ManyToOne
private LanEvent event;
@OneToMany(mappedBy = "licenseTarget", fetch = FetchType.LAZY)
@OrderBy()
private List<LicenseCode> licenseCodes;
@JoinColumn(name = "product_id", referencedColumnName = "id")
@ManyToOne
private Product product;
public LicenseTarget() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCodeUrl() {
return codeUrl;
}
public void setCodeUrl(String codeUrl) {
this.codeUrl = codeUrl;
}
public LanEvent getEvent() {
return event;
}
public void setEvent(LanEvent event) {
this.event = event;
}
public String getService() {
return service;
}
public void setService(String service) {
this.service = service;
}
public List<LicenseCode> getGameCodes() {
return licenseCodes;
}
public void setGameCodes(List<LicenseCode> gameCodes) {
this.licenseCodes = gameCodes;
}
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public boolean isActive() {
return active;
}
public boolean getActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public List<LicenseCode> getLicenseCodes() {
return licenseCodes;
}
public void setLicenseCodes(List<LicenseCode> licenseCodes) {
this.licenseCodes = licenseCodes;
}
}
package fi.codecrew.moya.model;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
......
......@@ -70,6 +70,11 @@ public class Product extends GenericEntity {
@Column(name = "barcode")
private String barcode;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "product")
private List<LicenseTarget> licenseTargets;
@Enumerated(EnumType.STRING)
@PrivateOwned
@ElementCollection()
......@@ -332,4 +337,12 @@ public class Product extends GenericEntity {
this.inventoryEvents = inventoryEvents;
}
public List<LicenseTarget> getLicenseTargets() {
return licenseTargets;
}
public void setLicenseTargets(List<LicenseTarget> licenseTargets) {
this.licenseTargets = licenseTargets;
}
}
package fi.codecrew.moya.model;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
......@@ -9,6 +10,7 @@ import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
......@@ -108,6 +110,10 @@ public class User extends GenericEntity implements IUser {
@OrderBy
@PrivateOwned
private List<UserImage> userImageList;
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
@OrderBy()
private List<LicenseCode> licenseCodes;
@Transient
private static final Logger logger = LoggerFactory.getLogger(User.class);
......@@ -353,5 +359,17 @@ public class User extends GenericEntity implements IUser {
}
return isAnon;
}
public List<LicenseCode> getLicenseCodes() {
if(licenseCodes == null)
licenseCodes = new ArrayList<LicenseCode>();
return licenseCodes;
}
public void setLicenseCodes(List<LicenseCode> codes) {
this.licenseCodes = codes;
}
}
Manifest-Version: 1.0
Class-Path: commons-codec-1.6.jar
barcode4j.jar
PDFjet.jar
PDFjet.jar
commons-imaging-1.0-SNAPSHOT.jar
......@@ -4,6 +4,7 @@ import fi.codecrew.moya.enums.apps.BillPermission;
import fi.codecrew.moya.enums.apps.CompoPermission;
import fi.codecrew.moya.enums.apps.ContentPermission;
import fi.codecrew.moya.enums.apps.EventPermission;
import fi.codecrew.moya.enums.apps.LicensePermission;
import fi.codecrew.moya.enums.apps.IAppPermission;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.enums.apps.PollPermission;
......@@ -23,6 +24,7 @@ public enum BortalApplication {
SALESPOINT(SalespointPermission.class),
COMPO(CompoPermission.class),
EVENT(EventPermission.class),
LICENSE(LicensePermission.class),
;
......
package fi.codecrew.moya.enums.apps;
import fi.codecrew.moya.enums.BortalApplication;
public enum LicensePermission implements IAppPermission {
MANAGE,
VIEW_OWN_CODES,
;
public static final String S_MANAGE = "LICENSE/MANAGE";
public static final String S_VIEW_OWN_CODES = "LICENSE/VIEW_OWN_CODES";
private final String fullName;
private final String key;
private static final String I18N_HEADER = "bortalApplication.license.";
private LicensePermission() {
fullName = new StringBuilder().append(getParent().toString()).append(DELIMITER).append(toString()).toString();
key = I18N_HEADER + name();
}
@Override
public BortalApplication getParent() {
return BortalApplication.LICENSE;
}
@Override
public String getFullName() {
return fullName;
}
@Override
public String getI18nKey() {
return key;
}
}
......@@ -17,8 +17,9 @@ public enum UserPermission implements IAppPermission {
MANAGE_HTTP_SESSION, // ("Manage http sessions"),
INVITE_USERS, // ("Invite users"),
READ_ORGROLES, // ("View organization roles"),
WRITE_ORGROLES, VITUTTAAKO, // ("Modify organization roles"),
;
WRITE_ORGROLES, // ("Modify organization roles"),
VITUTTAAKO,
LOGGED_IN_USER;
public static final String S_VIEW_ALL = "USER/VIEW_ALL";
public static final String S_MODIFY = "USER/MODIFY";
......
package fi.codecrew.moya.utilities;
import java.awt.color.ColorSpace;
import java.awt.color.ICC_ColorSpace;
import java.awt.color.ICC_Profile;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.imageio.IIOException;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import org.apache.commons.imaging.ImageReadException;
import org.apache.commons.imaging.Imaging;
import org.apache.commons.imaging.common.bytesource.ByteSource;
import org.apache.commons.imaging.common.bytesource.ByteSourceFile;
import org.apache.commons.imaging.formats.jpeg.JpegImageParser;
import org.apache.commons.imaging.formats.jpeg.segments.Segment;
import org.apache.commons.imaging.formats.jpeg.segments.UnknownSegment;
public class JpegReader {
public static final int COLOR_TYPE_RGB = 1;
public static final int COLOR_TYPE_CMYK = 2;
public static final int COLOR_TYPE_YCCK = 3;
private int colorType = COLOR_TYPE_RGB;
private boolean hasAdobeMarker = false;
public BufferedImage readImage(File file) throws IOException, ImageReadException {
colorType = COLOR_TYPE_RGB;
hasAdobeMarker = false;
ImageInputStream stream = ImageIO.createImageInputStream(file);
Iterator<ImageReader> iter = ImageIO.getImageReaders(stream);
while (iter.hasNext()) {
ImageReader reader = iter.next();
reader.setInput(stream);
BufferedImage image;
ICC_Profile profile = null;
try {
image = reader.read(0);
} catch (IIOException e) {
colorType = COLOR_TYPE_CMYK;
checkAdobeMarker(file);
profile = Imaging.getICCProfile(file);
WritableRaster raster = (WritableRaster) reader.readRaster(0, null);
if (colorType == COLOR_TYPE_YCCK)
convertYcckToCmyk(raster);
if (hasAdobeMarker)
convertInvertedColors(raster);
image = convertCmykToRgb(raster, profile);
}
return image;
}
return null;
}
public void checkAdobeMarker(File file) throws IOException, ImageReadException {
JpegImageParser parser = new JpegImageParser();
ByteSource byteSource = new ByteSourceFile(file);
@SuppressWarnings("rawtypes")
List<Segment> segments = parser.readSegments(byteSource, new int[] { 0xffee }, true);
if (segments != null && segments.size() >= 1) {
UnknownSegment app14Segment = (UnknownSegment) segments.get(0);
byte[] data = app14Segment.bytes;
if (data.length >= 12 && data[0] == 'A' && data[1] == 'd' && data[2] == 'o' && data[3] == 'b' && data[4] == 'e')
{
hasAdobeMarker = true;
int transform = app14Segment.bytes[11] & 0xff;
if (transform == 2)
colorType = COLOR_TYPE_YCCK;
}
}
}
public static void convertYcckToCmyk(WritableRaster raster) {
int height = raster.getHeight();
int width = raster.getWidth();
int stride = width * 4;
int[] pixelRow = new int[stride];
for (int h = 0; h < height; h++) {
raster.getPixels(0, h, width, 1, pixelRow);
for (int x = 0; x < stride; x += 4) {
int y = pixelRow[x];
int cb = pixelRow[x + 1];
int cr = pixelRow[x + 2];
int c = (int) (y + 1.402 * cr - 178.956);
int m = (int) (y - 0.34414 * cb - 0.71414 * cr + 135.95984);
y = (int) (y + 1.772 * cb - 226.316);
if (c < 0)
c = 0;
else if (c > 255)
c = 255;
if (m < 0)
m = 0;
else if (m > 255)
m = 255;
if (y < 0)
y = 0;
else if (y > 255)
y = 255;
pixelRow[x] = 255 - c;
pixelRow[x + 1] = 255 - m;
pixelRow[x + 2] = 255 - y;
}
raster.setPixels(0, h, width, 1, pixelRow);
}
}
public static void convertInvertedColors(WritableRaster raster) {
int height = raster.getHeight();
int width = raster.getWidth();
int stride = width * 4;
int[] pixelRow = new int[stride];
for (int h = 0; h < height; h++) {
raster.getPixels(0, h, width, 1, pixelRow);
for (int x = 0; x < stride; x++)
pixelRow[x] = 255 - pixelRow[x];
raster.setPixels(0, h, width, 1, pixelRow);
}
}
public static BufferedImage convertCmykToRgb(Raster cmykRaster, ICC_Profile cmykProfile) throws IOException {
if (cmykProfile == null)
cmykProfile = ICC_Profile.getInstance(JpegReader.class.getResourceAsStream("ISOcoated_v2_300_eci.icc"));
ICC_ColorSpace cmykCS = new ICC_ColorSpace(cmykProfile);
BufferedImage rgbImage = new BufferedImage(cmykRaster.getWidth(), cmykRaster.getHeight(), BufferedImage.TYPE_INT_RGB);
WritableRaster rgbRaster = rgbImage.getRaster();
ColorSpace rgbCS = rgbImage.getColorModel().getColorSpace();
ColorConvertOp cmykToRgb = new ColorConvertOp(cmykCS, rgbCS, null);
cmykToRgb.filter(cmykRaster, rgbRaster);
return rgbImage;
}
}
......@@ -38,8 +38,10 @@ public abstract class GenericFacade<C extends ModelInterface> {
protected abstract EntityManager getEm();
public void create(C entity) {
public C create(C entity) {
getEm().persist(entity);
return entity;
}
public void remove(C entity) {
......@@ -52,8 +54,8 @@ public abstract class GenericFacade<C extends ModelInterface> {
}
public void refresh(C usr) {
getEm().refresh(usr);
public void refresh(C entity) {
getEm().refresh(entity);
}
public C find(Integer id) {
......
......@@ -12,27 +12,34 @@
<f:event type="preRenderView" listener="#{userView.prepareCardDownload}" />
</f:metadata>
<ui:define name="content">
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<user:edit commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" />
<br />
<br />
<br />
<h:form>
<p:imageCropper value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.user.currentImage.id}.jpg" />
<h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" />
</h:form>
<br />
<br />
<h:form>
<user:previewAndPrintCard />
<p:commandButton action="#{userView.acceptPrintedCard()}" value="accept printed card" />
</h:form>
<h:panelGrid columns="3">
<h:panelGroup>
<user:edit commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" />
</h:panelGroup>
<h:panelGroup>
<h:form>
<p:imageCropper value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.user.currentImage.id}.jpg" />
<h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" />
</h:form>
</h:panelGroup>
<h:panelGroup>
<h:form>
<user:previewAndPrintCard />
<p:commandButton action="#{userView.acceptPrintedCard()}" value="accept printed card" />
</h:form>
</h:panelGroup>
</h:panelGrid>
</ui:define>
<ui:define name="sidebar">
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
......@@ -22,7 +22,7 @@
<ui:define name="topbar">
<h:link outcome="/admin/info/general" class="userbackbutton" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/arrow.png" />
<img src="#{request.contextPath}/resources/templates/blipview/img/arrow.png" />
</div>
</h:link>
......
<!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:p="http://primefaces.org/ui"
xmlns:user="http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools="http://java.sun.com/jsf/composite/cditools">
<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:p="http://primefaces.org/ui" xmlns:user="http://java.sun.com/jsf/composite/cditools/user" xmlns:tools="http://java.sun.com/jsf/composite/cditools">
<h:body>
<ui:composition
template="/resources/templates/#{sessionHandler.fullscreen}/template.xhtml">
<ui:composition template="/resources/templates/#{sessionHandler.fullscreen}/template.xhtml">
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{userView.initView}" />
</f:metadata>
<ui:define name="topbar">
<h:link outcome="/admin/info/index" class="userbackbutton" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/arrow.png" />
<img src="#{request.contextPath}/resources/templates/blipview/img/arrow.png" />
</div>
</h:link>
</ui:define>
......@@ -29,15 +21,15 @@
<h:link outcome="/admin/info/shop" class="usertile" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/shop.png" />
<img src="#{request.contextPath}/resources/templates/blipview/img/shop.png" />
<h:outputText value="#{i18n['infoview.shop']}" />
</div>
<f:param name="userid" value="#{userView.user.id}" />
</h:link>
<h:link outcome="/admin/info/computerplaces" class="usertile" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/computer.png" />
<img src="#{request.contextPath}/resources/templates/blipview/img/computer.png" />
<h:outputText value="#{i18n['infoview.computerplace']}" />
</div>
</h:link>
......
<!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:p="http://primefaces.org/ui"
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
<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:p="http://primefaces.org/ui" xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop" xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
xmlns:tools="http://java.sun.com/jsf/composite/cditools">
<h:body>
<ui:composition
template="/resources/templates/#{sessionHandler.fullscreen}/template.xhtml">
<ui:composition template="/resources/templates/#{sessionHandler.fullscreen}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{infoView.initView}" />
</f:metadata>
<f:metadata>
<f:event type="preRenderView" listener="#{readerListDataView.initView}" />
<f:event type="preRenderView" listener="#{readerList.initReaderList}" />
<f:event type="preRenderView" listener="#{readerList.initReaderList}" />
</f:metadata>
<ui:define name="content">
<br />
<br />
<reader:readeventtiles />
</ui:define>
<ui:define name="sidebar">
<reader:readerlisttiles />
<br />
<h:form>
<h:form>
<reader:barcode selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{infoView.selectUser}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
......@@ -21,7 +21,7 @@
<ui:define name="topbar">
<h:link outcome="/admin/info/general" class="userbackbutton" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/arrow.png" />
<img src="#{request.contextPath}/resources/templates/blipview/img/arrow.png" />
</div>
</h:link>
</ui:define>
......
......@@ -19,6 +19,7 @@
<h:inputText id="paidDate" value="#{billEditView.bill.paidDate}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:inputText>
<h:outputLabel for="billnr" value="#{i18n['bill.billNumber']}:" />
<h:inputText id="billnr" value="#{billEditView.bill.billNumber}" />
......
......@@ -2,7 +2,7 @@
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:tools="http://java.sun.com/jsf/composite/tools"
xmlns:bill="http://java.sun.com/jsf/composite/cditools/bills" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core">
xmlns:bill="http://java.sun.com/jsf/composite/cditools/bills" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core">
<h:body>
......@@ -23,7 +23,7 @@
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</ui:fragment>
<br />
<bill:showBill bill="#{billEditView.bill}" />
......@@ -58,19 +58,19 @@
</tr>
</table>
</ui:fragment>
<ui:fragment rendered="#{!billEditView.bill.paid and !billEditView.bill.expired}">
<h:form>
<p:commandButton id="cancelbtn" onclick="confirmation.show()" value="#{i18n['bill.cancel']}" />
<p:commandButton id="cancelbtn" onclick="confirmation.show()" value="#{i18n['bill.cancel']}" />
<p:confirmDialog id="confirmDialog" message="#{i18n['generic.sure.message']}" header="#{i18n['generic.sure.header']}" severity="alert" widgetVar="confirmation">
<p:commandButton value="#{i18n['generic.sure.yes']}" onclick="confirmation.hide()" actionListener="#{billEditView.expireBill()}" ajax="false" />
<p:commandButton value="#{i18n['generic.sure.no']}" onclick="confirmation.hide()" type="button" />
<p:commandButton value="#{i18n['generic.sure.yes']}" onclick="confirmation.hide()" actionListener="#{billEditView.expireBill()}" ajax="false" />
<p:commandButton value="#{i18n['generic.sure.no']}" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
</h:form>
</ui:fragment>
</ui:define>
......
No preview for this file type
<!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" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{licenseView.initAdminView}" />
</f:metadata>
<ui:param name="thispage" value="page.license.manageCodes" />
<ui:define name="content">
<h:form id="licenseForm">
<p:dataTable border="1" id="games" value="#{licenseView.licenses}" var="license">
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['game.name']}" />
</f:facet>
<h:outputText value="#{license.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="edit" />
</f:facet>
<p:commandButton value="muokkaa" update=":editgame" >
<f:setPropertyActionListener value="#{license}" target="#{licenseView.currentLicense}" />
</p:commandButton>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['game.codecount']}" />
</f:facet>
<h:outputText value="#{license.licenseCodes.size()}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['game.active']}" />
</f:facet>
<h:outputText rendered="#{license.active}" value="X" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['game.product']}" />
</f:facet>
<h:outputText value="#{license.product.name}" />
</p:column>
</p:dataTable>
</h:form>
<br /><br />
<h:form id="editgame" >
<p:panelGrid columns="2">
<f:facet name="header">
<h:outputLabel rendered="#{licenseView.currentLicense.id == null}" value="#{i18n['game.create']}" />
<h:outputLabel rendered="#{licenseView.currentLicense.id != null}" value="#{i18n['game.edit']}" />
</f:facet>
<h:outputLabel value="service" />
<p:inputText value="#{licenseView.currentLicense.service}" />
<h:outputLabel value="name" />
<p:inputText value="#{licenseView.currentLicense.name}" />
<h:outputLabel value="description" />
<p:inputText value="#{licenseView.currentLicense.description}" />
<h:outputLabel value="url" />
<p:inputText value="#{licenseView.currentLicense.codeUrl}" />
<h:outputLabel value="active" />
<p:selectBooleanCheckbox value="#{licenseView.currentLicense.active}" />
<h:outputLabel value="product" />
<h:selectOneMenu converter="#{productConverter}" value="#{licenseView.currentLicense.product}">
<f:selectItems var="product" itemLabel="#{product.name}" value="#{licenseView.productsForLicenses}" />
</h:selectOneMenu>
<p:commandButton action="#{licenseView.saveCurrentLicense}" update=":licenseForm" value="save" />
</p:panelGrid>
</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" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="#{sessionHandler.template}">
<ui:param name="thispage" value="page.gamecode.viewCodes" />
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{licenseView.initUserView}" />
</f:metadata>
<ui:define name="content">
<h:form>
<h1><h:outputLabel value="#{i18n['game.codes.opened']}" /></h1>
<h:outputLabel rendered="#{licenseView.noLicenseCodes}" value="#{i18n['game.noGameCodes']}" />
<p:dataTable rendered="#{not licenseView.noLicenseCodes}" columnClasses="nowrap,numalign,numalign,nowrap,numalign" styleClass="bordertable" id="codes" value="#{licenseView.licenseCodes}" var="code">
<p:column sortBy="#{code.license.service}">
<f:facet name="header">
<h:outputText value="#{i18n['game.service']}" />
</f:facet>
<h:outputText value="#{code.licenseTarget.service}" />
</p:column>
<p:column sortBy="#{code.license.name}">
<f:facet name="header">
<h:outputText value="#{i18n['game.name']}" />
</f:facet>
<h:outputText value="#{code.licenseTarget.name}" />
</p:column>
<p:column sortBy="#{code.license.description}">
<f:facet name="header">
<h:outputText value="#{i18n['game.description']}" />
</f:facet>
<h:outputText value="#{code.licenseTarget.description}" />
</p:column>
<p:column sortBy="#{code.code}">
<f:facet name="header">
<h:outputText value="#{i18n['game.code']}" />
</f:facet>
<h:outputText rendered="#{code.accessed}" value="#{code.code}" />
<h:outputText rendered="#{not code.accessed}" value="ei avattu, ota yhteyttä ylläpitoon" />
</p:column>
</p:dataTable>
</h:form>
<br /><br /><br />
<h:form>
<h1><h:outputLabel rendered="#{not licenseView.noLicenses}" value="#{i18n['game.codes.available']}" /></h1>
<p:dataTable rendered="#{not licenseView.noLicenses}" columnClasses="nowrap,numalign,numalign,nowrap,numalign" styleClass="bordertable" id="codes" value="#{licenseView.licenses}" var="license">
<p:column sortBy="#{license.service}">
<f:facet name="header">
<h:outputText value="#{i18n['game.service']}" />
</f:facet>
<h:outputText value="#{license.service}" />
</p:column>
<p:column sortBy="#{license.name}">
<f:facet name="header">
<h:outputText value="#{i18n['game.name']}" />
</f:facet>
<h:outputText value="#{license.name}" />
</p:column>
<p:column sortBy="#{license.description}">
<f:facet name="header">
<h:outputText value="#{i18n['game.description']}" />
</f:facet>
<h:outputText value="#{license.description}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['game.open']}" />
</f:facet>
<h:commandButton value="#{i18n['game.open']}" action="#{licenseView.openSelectedCode}" />
</p:column>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
......@@ -7,7 +7,9 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui"
xmlns:orgrole="http://java.sun.com/jsf/composite/cditools/orgrole"
>
<h:body>
<ui:composition
template="#{sessionHandler.template}">
......
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
xmlns:map="http://java.sun.com/jsf/composite/cditools/map" xmlns:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:event type="preRenderView" listener="#{mapView.initViewMap()}" />
<f:viewParam name="userid" value="#{userView.userid}" />
</f:metadata>
<ui:param name="thispage" value="page.place.placemap" />
<ui:define name="content">
<map:placeSelect />
<!-- <h:panelGroup rendered="#{ !mapView.canUserBuy()}">
<img class="imgcenter" src="#{request.contextPath}#{mapView.selectPlaceMapUrl}" alt="placeimage" />
</h:panelGroup >
-->
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
......@@ -2,7 +2,7 @@
<!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:p="http://primefaces.org/ui" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tools="http://java.sun.com/jsf/composite/tools">
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tools="http://java.sun.com/jsf/composite/tools">
<composite:interface>
</composite:interface>
......@@ -10,17 +10,18 @@
<composite:implementation>
<h:outputText rendered="#{billListView.bills.rowCount le 0}" value="#{i18n['bills.noBills']}" />
<!-- koyhan miehen confirmaationappi: -->
<input type="button" class="ui-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" style="padding: 3px;" value="#{i18n['bill.markPaid.show']}" onclick="showMarkPaidButtons();" />
<ui:fragment rendered="#{billListView.canWriteBill}">
<!-- koyhan miehen confirmaationappi: -->
<input type="button" class="ui-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" style="padding: 3px;" value="#{i18n['bill.markPaid.show']}"
onclick="showMarkPaidButtons();" />
</ui:fragment>
<h:form rendered="#{billListView.bills.rowCount gt 0}">
<p:dataTable styleClass="bordertable" id="billList" value="#{billListView.bills}" var="bill"
rowStyleClass="#{bill.expired ? 'expired' : (bill.paidDate != null ? 'paid' : null)}" >
<p:dataTable styleClass="bordertable" id="billList" value="#{billListView.bills}" var="bill" rowStyleClass="#{bill.expired ? 'expired' : (bill.paidDate != null ? 'paid' : null)}">
<p:column rendered="#{billListView.canWriteBill}">
<f:facet name="header">
<h:outputText value="#{i18n['bill.payer']}" />
......@@ -35,7 +36,7 @@
<h:outputText value="${i18n['bill.sentDate']}" />
</f:facet>
<h:outputText value="#{bill.sentDateTime}">
<f:convertDateTime pattern="#{sessionHandler.dateFormat}" timeZone="#{sessionHandler.timezone}" />
<f:convertDateTime pattern="#{sessionHandler.dateFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</p:column>
<p:column>
......@@ -60,9 +61,8 @@
<f:convertNumber currencyCode="EUR" maxFractionDigits="2" minFractionDigits="2" type="currency" />
</h:outputText>
</p:column>
<p:column>
<ui:fragment rendered="#{!bill.expired}">
<p:column rendered="#{(!bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING')) or billListView.canWriteBill}">
<ui:fragment>
<a href="#{request.contextPath}/PrintBill?billid=#{bill.id}" target="_blank">#{i18n['bill.printBill']}</a>
</ui:fragment>
</p:column>
......@@ -87,7 +87,7 @@
</h:form>
<script type="text/javascript">
<script type="text/javascript">
function showMarkPaidButtons() {
$(".markPaidButton").removeAttr('disabled');
}
......
......@@ -43,6 +43,7 @@
<h:outputText rendered="#{cc.attrs.bill.expired}" id="expired" value="#{i18n['bill.isExpired']}" />
</h:panelGrid>
<h:panelGrid columns="2" columnClasses="topalign,topalign">
<h:outputLabel for="address" value="#{i18n['bill.address']}:" />
<h:panelGroup id="address">
......@@ -66,15 +67,15 @@
<h:outputText rendered="#{!empty cc.attrs.bill.event.organiser.billAddress4}" value="&lt;br />" escape="false" />
<h:outputText id="recAddr4" value="#{cc.attrs.bill.event.organiser.billAddress4}" />
</h:panelGroup>
<h:outputLabel rendered="#{!cc.attrs.bill.expired and !empty cc.attrs.bill.event.organiser.bankName1}" for="bankname1" value="#{i18n['eventorg.bankName1']}" />
<h:outputText rendered="#{!cc.attrs.bill.expired and !empty cc.attrs.bill.event.organiser.bankName1}" id="bankname1" value="#{cc.attrs.bill.event.organiser.bankName1}" />
<h:outputLabel rendered="#{!cc.attrs.bill.expired and !empty cc.attrs.bill.event.organiser.bankNumber1}" for="banknumber1" value="#{i18n['eventorg.bankNumber1']}" />
<h:outputText rendered="#{!cc.attrs.bill.expired and !empty cc.attrs.bill.event.organiser.bankNumber1}" id="banknumber1" value="#{cc.attrs.bill.event.organiser.bankNumber1}" />
<h:outputLabel rendered="#{!cc.attrs.bill.expired and !empty cc.attrs.bill.event.organiser.bankName2}" for="bankname2" value="#{i18n['eventorg.bankName2']}" />
<h:outputText rendered="#{!cc.attrs.bill.expired and !empty cc.attrs.bill.event.organiser.bankName2}" id="bankname2" value="#{cc.attrs.bill.event.organiser.bankName2}" />
<h:outputLabel rendered="#{!cc.attrs.bill.expired and !empty cc.attrs.bill.event.organiser.bankNumber2}" for="banknumber2" value="#{i18n['eventorg.bankNumber2']}" />
<h:outputText rendered="#{!cc.attrs.bill.expired and !empty cc.attrs.bill.event.organiser.bankNumber2}" id="banknumber2" value="#{cc.attrs.bill.event.organiser.bankNumber2}" />
<h:outputLabel rendered="#{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') and !empty cc.attrs.bill.event.organiser.bankName1}" for="bankname1" value="#{i18n['eventorg.bankName1']}" />
<h:outputText rendered="#{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') and !empty cc.attrs.bill.event.organiser.bankName1}" id="bankname1" value="#{cc.attrs.bill.event.organiser.bankName1}" />
<h:outputLabel rendered="#{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') and !empty cc.attrs.bill.event.organiser.bankNumber1}" for="banknumber1" value="#{i18n['eventorg.bankNumber1']}" />
<h:outputText rendered="#{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') and !empty cc.attrs.bill.event.organiser.bankNumber1}" id="banknumber1" value="#{cc.attrs.bill.event.organiser.bankNumber1}" />
<h:outputLabel rendered="#{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') and !empty cc.attrs.bill.event.organiser.bankName2}" for="bankname2" value="#{i18n['eventorg.bankName2']}" />
<h:outputText rendered="#{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') and !empty cc.attrs.bill.event.organiser.bankName2}" id="bankname2" value="#{cc.attrs.bill.event.organiser.bankName2}" />
<h:outputLabel rendered="#{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') and !empty cc.attrs.bill.event.organiser.bankNumber2}" for="banknumber2" value="#{i18n['eventorg.bankNumber2']}" />
<h:outputText rendered="#{!cc.attrs.bill.expired and sessionHandler.isEventBoolProperty('ALLOW_BILLING') and !empty cc.attrs.bill.event.organiser.bankNumber2}" id="banknumber2" value="#{cc.attrs.bill.event.organiser.bankNumber2}" />
</h:panelGrid>
......
......@@ -41,17 +41,7 @@
<h:selectManyCheckbox id="permissions" layout="pageDirection" value="#{bapp.selected}">
<f:selectItems value="#{bapp.permissions}" var="per" itemLabel="#{i18n[per.i18nKey]}" />
</h:selectManyCheckbox>
<!-- <ui:repeat id="permDescs" var="perm" value="#{bapp.permissions}"> -->
<!-- <div>#{perm.name} / #{perm.description}</div> -->
<!-- </ui:repeat> -->
</h:column>
<!-- <h:column> -->
<!-- <ui:repeat id="permissions" var="perm" value="#{bapp.permissions}"> -->
<!-- <div> -->
<!-- <h:selectBooleanCheckbox value="#{perm.canHas}" /> -->
<!-- </div> -->
<!-- </ui:repeat> -->
<!-- </h:column> -->
</h:dataTable>
<h:commandButton id="save2" value="#{i18n['role.savePermissions']}" action="#{roleView.savePermissions}" />
......
......@@ -19,17 +19,17 @@
<h:panelGroup>
<ui:fragment rendered="#{not empty userView.user.id}">
<p:overlayPanel id="chartPanel" for="webcamButton" dynamic="true">
<p:dialog id="chartPanel" for="webcamButton" modal="true" dynamic="true" widgetVar="webcamDialog">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="pc.capture()" />
</p:overlayPanel>
</p:dialog>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.user.currentImage}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.img" alt="image" />
</ui:fragment>
<br />
<p:commandButton id="webcamButton" value="#{i18n['userimage.webcam']}" type="button" />
<p:commandButton id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="webcamDialog.show()" type="button" />
<br />
<br />
......
......@@ -10,12 +10,12 @@
<h:outputStylesheet library="templates/#{sessionHandler.templateName}/css" name="tabnav.css" />
<h2>
<h3>
<h:outputText value="#{i18n['usertitle.managingUser']}: #{userView.user.nick} / #{userView.user.wholeName} " />
</h2>
<h2>
</h3>
<h3>
<h:outputText value="#{i18n['user.cardPower']}: #{userView.usersCardtemplate.name}" />
</h2>
</h3>
<div id="#{cc.attrs.tabId}">
<ul id="usertabnav">
......
* {padding:0; margin:0;}
body {
margin: 0em; font-size:62.5%; background-color: #fff; font-family:verdana,arial,sans-serif;} /*Font-size: 1.0em = 10px when browser default size is 16px*/
* {
padding: 0;
margin: 0;
}
body {
margin: 0em;
font-size: 62.5%;
background-color: #fff;
font-family: verdana, arial, sans-serif;
} /*Font-size: 1.0em = 10px when browser default size is 16px*/
#page-container {
width: 900px;
margin: 0 auto;
......@@ -9,11 +16,16 @@ body {
margin-top: 10px;
background: white;
border-radius: 12px;
background:rgb(255,255,255) url("../img/bg_main_nav.jpg");
background: rgb(255, 255, 255) url("../img/bg_main_nav.jpg");
}
#page-header {height:80px; background:rgb(240,240,240) url("../img/bg_head_top.jpg"); overflow:visible !important /*Firefox*/; overflow:hidden /*IE6*/; border-radius: 12px 12px 0 0; }
#page-header {
height: 80px;
background: rgb(240, 240, 240) url("../img/bg_head_top.jpg");
overflow: visible !important /*Firefox*/;
overflow: hidden /*IE6*/;
border-radius: 12px 12px 0 0;
}
#login {
margin-top: 10px;
......@@ -22,45 +34,150 @@ body {
text-align: right;
}
#login a, #login a:visited {
#login a,#login a:visited {
text-decoration: none;
color: black;
font-weight: bold;
}
#login a:hover {
color: red;
}
#top-menu {position:relative; z-index:0; top: 2em;}
#top-menu ul { float:left; width: 100%; padding-left: 25px; border:1px solid rgba(200,200,200,0); background:rgba(200,200,200,0); border-radius: 16px 16px 0 0; }
#top-menu li {display:inline; list-style:none; }
#top-menu li a {display:block; line-height: 1.7em; float:left; padding:2px 5px 2px 5px; color:rgb(125,125,125); text-decoration:none; font-size:120%; background-color:rgba(100,100,100,0.1); color: rgba(0,0,0,0.3); border-radius: 12px 12px 0 0; border: 1px solid rgba(0,0,0,0.1); border-bottom: none;}
#top-menu a:hover {text-decoration:none; color:rgb(50,50,50);}
#top-menu li .active {font-weight: bold; background-color:rgba(250,250,250,0.4); color: rgba(0,0,0,1); border-radius: 12px 12px 0 0; border: 1px solid black; border-bottom: none }
#top-menu {
position: relative;
z-index: 0;
top: 2em;
}
#top-menu ul {
float: left;
width: 100%;
padding-left: 25px;
border: 1px solid rgba(200, 200, 200, 0);
background: rgba(200, 200, 200, 0);
border-radius: 16px 16px 0 0;
}
#top-menu li {
display: inline;
list-style: none;
}
#top-menu li a {
display: block;
line-height: 1.7em;
float: left;
padding: 2px 5px 2px 5px;
color: rgb(125, 125, 125);
text-decoration: none;
font-size: 120%;
background-color: rgba(100, 100, 100, 0.1);
color: rgba(0, 0, 0, 0.3);
border-radius: 12px 12px 0 0;
border: 1px solid rgba(0, 0, 0, 0.1);
border-bottom: none;
}
#top-menu a:hover {
text-decoration: none;
color: rgb(50, 50, 50);
}
#top-menu li .active {
font-weight: bold;
background-color: rgba(250, 250, 250, 0.4);
color: rgba(0, 0, 0, 1);
border-radius: 12px 12px 0 0;
border: 1px solid black;
border-bottom: none
}
#pageheader {
background: red;
}
#main {
clear: both;
clear: both;
}
#main-nav {float:left; width: 100%; border-top:1px solid #bbb; border-bottom:1px solid #bbb; background:rgb(220,220,220) url("../img/bg_head_bottom_nav.jpg") repeat-x; color:rgb(75,75,75); font-size:130%;}
#main-nav ul {list-style-type:none;}
#main-nav ul li {float:left; position:relative; z-index:auto !important /*Non-IE6*/; z-index:1000 /*IE6*/; }
#main-nav ul li a {float:none !important /*Non-IE6*/; float:left /*IE-6*/; display:block; height:3.1em; line-height:3.1em; padding:0 16px 0 16px; text-decoration:none; font-weight:bold; color: rgb(100,100,100);}
#main-nav ul li ul {display:none; border:none;}
#main-nav {
float: left;
width: 100%;
border-top: 1px solid #bbb;
border-bottom: 1px solid #bbb;
background: rgb(220, 220, 220) url("../img/bg_head_bottom_nav.jpg")
repeat-x;
color: rgb(75, 75, 75);
font-size: 130%;
}
#main-nav ul {
list-style-type: none;
}
#main-nav ul li .active { font-weight: bold; background-color:rgba(0,150,250,0.35); color: rgba(255,255,250,0.8); }
#main-nav ul li:hover a { background-color:rgba(0,150,250,0.1); text-decoration:none; } /*Color main cells hovering mode*/
#main-nav ul li:hover ul {display:block; width:10.0em; position:absolute; z-index:999; top:3.0em; margin-top:0.1em; left:0;}
#main-nav ul li:hover ul li a {display:block; width:10.0em; height:auto; line-height:1.3em; margin-left:-1px; padding:4px 16px 4px 16px; border-left:solid 1px rgb(175,175,175); border-bottom: solid 1px rgb(175,175,175); background-color:rgb(237,237,237); font-weight:normal; color:rgb(50,50,50);} /*Color subcells normal mode*/
#main-nav ul li:hover ul li a:hover {background-color:rgb(210,210,210); text-decoration:none;} /*Color subcells hovering mode*/
#main-nav ul li {
float: left;
position: relative;
z-index: auto !important /*Non-IE6*/;
z-index: 1000 /*IE6*/;
}
.container.top, .container.bottom {
#main-nav ul li a {
float: none !important /*Non-IE6*/;
float: left /*IE-6*/;
display: block;
height: 3.1em;
line-height: 3.1em;
padding: 0 16px 0 16px;
text-decoration: none;
font-weight: bold;
color: rgb(100, 100, 100);
}
#main-nav ul li ul {
display: none;
border: none;
}
#main-nav ul li .active {
font-weight: bold;
background-color: rgba(0, 150, 250, 0.35);
color: rgba(255, 255, 250, 0.8);
}
#main-nav ul li:hover a {
background-color: rgba(0, 150, 250, 0.1);
text-decoration: none;
} /*Color main cells hovering mode*/
#main-nav ul li:hover ul {
display: block;
width: 10.0em;
position: absolute;
z-index: 999;
top: 3.0em;
margin-top: 0.1em;
left: 0;
}
#main-nav ul li:hover ul li a {
display: block;
width: 10.0em;
height: auto;
line-height: 1.3em;
margin-left: -1px;
padding: 4px 16px 4px 16px;
border-left: solid 1px rgb(175, 175, 175);
border-bottom: solid 1px rgb(175, 175, 175);
background-color: rgb(237, 237, 237);
font-weight: normal;
color: rgb(50, 50, 50);
} /*Color subcells normal mode*/
#main-nav ul li:hover ul li a:hover {
background-color: rgb(210, 210, 210);
text-decoration: none;
} /*Color subcells hovering mode*/
.container.top,.container.bottom {
clear: both;
text-align: center;
margin-bottom: 2em;
......@@ -68,17 +185,32 @@ body {
padding-left: 2em;
}
.container.top a, .container.bottom a {
.container.top a,.container.bottom a {
font-size: 90%;
color: #aaa;
text-decoration: none;
}
#right {display:inline /*Fix IE floating margin bug*/; float:right; overflow:visible !important /*Firefox*/; overflow:hidden /*IE6*/;}
#right {width: 400px; float-left: 1px solid black; }
#right {
display: inline /*Fix IE floating margin bug*/;
float: right;
overflow: visible !important /*Firefox*/;
overflow: hidden /*IE6*/;
}
#right {
width: 400px;
float-left: 1px solid black;
}
#left {display:inline; /*Fix IE floating margin bug*/; float:left; width:660px; margin: 0 20px; overflow:visible !important /*Firefox*/; overflow:hidden /*IE6*/;}
#left {
display: inline; /*Fix IE floating margin bug*/;
float: left;
width: 660px;
margin: 0 20px;
overflow: visible !important /*Firefox*/;
overflow: hidden /*IE6*/;
}
#left h1 {
margin-bottom: 1em;
......@@ -93,8 +225,8 @@ body {
color: blue;
}
#left h1, #left h2, #left p {
margin-bottom: 1.5em;
#left h1,#left h2,#left p {
margin-bottom: 1.5em;
}
.container.bottom {
......@@ -102,35 +234,55 @@ margin-bottom: 1.5em;
}
table {
border: none;
border-spacing: 0;
width: 100%;
text-align: left;
margin-bottom: 1.5em;
border: none;
border-spacing: 0;
width: 100%;
text-align: left;
margin-bottom: 1.5em;
}
table thead th {
border: none;
font-size: 120%;
border: none;
font-size: 120%;
}
table thead th {
border-bottom: 1px solid black;
padding: 5px;
padding-left: 1em;
border-bottom: 1px solid black;
padding: 5px;
padding-left: 1em;
}
table tbody td {
border: none;
padding: 5px;
padding-left: 1em;
vertical-align: top;
border: none;
padding: 5px;
padding-left: 1em;
vertical-align: top;
}
label {
}
.expired {
}
.expired {
color: #c0c0c0;
}
.bgColor1 {
background-color: #68A3C2;
}
#header {
clear: both;
float: left;
width: 100%;
border-bottom: 4px solid #333;
}
#header a {
color: white;
text-decoration: none;
}
#header_right {
text-align: right;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.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:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui">
<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:tools="http://java.sun.com/jsf/composite/cditools" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html" locale="#{sessionHandler.locale}">
......@@ -17,63 +11,52 @@
<meta name="description" content="Lippukauppa" />
<meta name="author" content="CodeCrew ry" />
<meta http-equiv="Content-Language" content="fi" />
<link rel="stylesheet" type="text/css"
href="#{request.contextPath}/resources/templates/blipview/css/style.css" />
<link rel="stylesheet" type="text/css"
href="#{request.contextPath}/resources/templates/blipview/css/general.css" />
<link rel="icon" href="#{request.contextPath}/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/blipview/css/style.css" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/blipview/css/general.css" />
<ui:insert name="headerdata" />
</h:head>
<h:body>
<p:menubar model="#{primeMenuView.menuModel}">
</p:menubar>
<div id="header" class="bgColor1">
<div id="header_left">
<h:link outcome="/index">
<c:choose>
<c:when test="#{sessionHandler.isInDevelopmentMode()}">
<img src="#{request.contextPath}/resources/templates/insomnia2/img/devel_logo.png" />
</c:when>
<c:otherwise>
<p:graphicImage rendered="#{!empty layoutView.headerimage}" value="#{layoutView.headerimage}" />
<ui:fragment rendered="#{empty layoutView.headerimage}">
<h1>
<h:outputText value="#{layoutView.headertext}" />
</h1>
</ui:fragment>
</c:otherwise>
</c:choose>
</h:link>
</div>
<div id="header_right">
<img src="#{request.contextPath}/resources/templates/template1/img/moya_logo.png" />
</div>
</div>
<div class="container top">
<ui:insert name="topbar" />
<p:messages showDetail="false" autoUpdate="true" />
</div>
<div class="container clearfix">
<div id="right">
<ui:insert name="sidebar" />
</div>
<div id="left">
<div class="clearfix"></div>
<div>
<ui:insert name="content" />
</div>
</div>
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://jolez.pingtimeout.net/piwik/"
: "http://jolez.pingtimeout.net/piwik/");
document.write(unescape("%3Cscript src='" + pkBaseURL
+ "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 5);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch (err) {
}
</script>
<noscript>
<p>
<img src="http://jolez.pingtimeout.net/piwik/piwik.php?idsite=5"
style="border: 0" alt="" />
</p>
</noscript>
<!-- End Piwik Tracking Code -->
</h:body>
</f:view>
......
......@@ -24,7 +24,7 @@
<div id="navigation">
<div id="topheadercontainer">
<img id="head" src="#{request.contextPath}/resources/style/insomnia1/img/header.gif" alt="headerimage" />
<img id="head" src="#{request.contextPath}/resources/templates/insomnia1/img/header.gif" alt="headerimage" />
<div style="float: left">
<div id="headerbox">
......
......@@ -7,8 +7,7 @@
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><h:outputText value="#{layoutView.getHeader()}" /></title>
<meta name="description" content="Insomnia lippukauppa" />
<meta name="author" content="Niko Juusela, csharp" />
<meta name="description" content="#{layoutView.getHeader()}" />
<meta http-equiv="Content-Language" content="fi" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/insomnia2/css/tyyli.css" />
......@@ -32,7 +31,7 @@
<h:outputText value="#{layoutView.headertext}" />
</h1>
</ui:fragment>
<!-- <img src="#{request.contextPath}/resources/style/insomnia2/img/logo.png" />
<!-- <img src="#{request.contextPath}/resources/templates/insomnia2/img/logo.png" />
<h1>STREAM INTRA</h1> -->
</c:otherwise>
</c:choose>
......@@ -87,7 +86,7 @@
</ui:fragment>
<div id="left">
<ui:insert name="title" />
<p:messages />
<p:messages showDetail="false" autoUpdate="true" />
<ui:repeat var="cont1" value="#{menuView.getPagecontent('top')}">
<h:outputText value="#{cont1.content}" escape="false" />
</ui:repeat>
......
......@@ -27,7 +27,7 @@
<!-- <tools:loginLogout /> -->
</div>
<h:link outcome="/index">
<img src="#{request.contextPath}/resources/style/skynett17/img/header.jpg" />
<img src="#{request.contextPath}/resources/templates/skynett17/img/header.jpg" />
</h:link>
</div>
......
......@@ -20,7 +20,7 @@
</h:head>
<h:body>
<div id="topheader">
<img src="#{request.contextPath}/resources/style/stream10/header.png" />
<img src="#{request.contextPath}/resources/templates/stream10/header.png" />
</div>
<div id="container">
<div id="page">
......
......@@ -34,6 +34,13 @@
padding-left: 0.5em;
}
.center h3 {
font-family: Oxygen, Calibri;
font-size: 11pt;
color: #101D27;
font-weight: lighter;
}
.center {
font-family: Oxygen, Calibri;
font-size: 10pt;
......@@ -276,6 +283,7 @@ h1 {
#main a {
color: #2694e8;
}
.bgColor1 {
background-color: #68A3C2;
}
......
#edit { float: left; width:100%; border-bottom: 1px solid black; }
#usertabnav { font-size: 90%; }
ul#usertabnav { float:left; width: 100%; border:1px solid rgba(200,200,200,0); background:rgba(200,200,200,0); border-radius: 16px 16px 0 0; }
ul#usertabnav li {display:inline; list-style:none; }
ul#usertabnav li a {display:block; line-height: 1.7em; float:left; padding:2px 5px 2px 5px; color:rgb(125,125,125); text-decoration:none; font-size:120%; background-color:rgba(100,100,100,0.3); color: rgba(0,0,0,1); border-radius: 12px 12px 0 0; border: 1px solid rgba(0,0,0,0.1); border-bottom: none;}
ul#usertabnava:hover {text-decoration:none; color:rgb(50,50,50);}
ul#usertabnav li.active {font-weight: bold; background-color:rgba(250,250,250,0.4); color: rgba(0,0,0,1); border-radius: 12px 12px 0 0; border: 1px solid black; border-bottom: none }
#edit {
clear: both;
}
\ No newline at end of file
......@@ -11,7 +11,7 @@
<meta name="description" content="Lippukauppa" />
<meta name="author" content="CodeCrew ry" />
<meta http-equiv="Content-Language" content="fi" />
<link rel="icon" href="#{request.contextPath}/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/template1/css/style.css" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/template1/css/general.css" />
<ui:insert name="headerdata" />
......@@ -26,7 +26,7 @@
<h:link outcome="/index">
<c:choose>
<c:when test="#{sessionHandler.isInDevelopmentMode()}">
<img src="#{request.contextPath}/resources/style/insomnia2/img/devel_logo.png" />
<img src="#{request.contextPath}/resources/templates/insomnia2/img/devel_logo.png" />
</c:when>
<c:otherwise>
<p:graphicImage rendered="#{!empty layoutView.headerimage}" value="#{layoutView.headerimage}" />
......
......@@ -5,6 +5,7 @@
*/
package fi.codecrew.moya.handler;
import java.util.EnumMap;
import java.util.TimeZone;
import javax.ejb.EJB;
......@@ -22,6 +23,7 @@ import fi.codecrew.moya.beans.RoleBeanLocal;
import fi.codecrew.moya.clientutils.BortalLocalContextHolder;
import fi.codecrew.moya.enums.apps.IAppPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEventProperty;
import fi.codecrew.moya.model.LanEventPropertyKey;
/**
......@@ -94,6 +96,30 @@ public class SessionHandler {
return getTemplatePath() + "/template.xhtml";
}
private EnumMap<LanEventPropertyKey, Boolean> boolPropertyCache = new EnumMap<>(LanEventPropertyKey.class);
public boolean isEventBoolProperty(String property)
{
LanEventPropertyKey prop = LanEventPropertyKey.valueOf(property);
if (!prop.isBoolean()) {
throw new RuntimeException("Trying to fetch boolean value for non-boolean property!");
}
boolean value = false;
if (boolPropertyCache.containsKey(prop)) {
value = boolPropertyCache.get(prop);
} else {
LanEventProperty propertyValue = eventbean.getProperty(prop);
if (propertyValue == null) {
if (prop.getDefaultvalue() != null && prop.getDefaultvalue().equals("1"))
value = true;
} else {
value = propertyValue.isBooleanValue();
}
boolPropertyCache.put(prop, value);
}
return value;
}
// public boolean hasPermission(String target, String permission) {
// RolePermission perm = RolePermission.valueOf(permission.toUpperCase());
// // RolePermission perm = null;
......
......@@ -86,6 +86,15 @@ error.error = You have encountered an error.
eventorg.create = Create
game.active = Aktiivinen
game.codecount = Avattuja
game.codes.available = Lisenssikoodit
game.codes.opened = Avatut lisenssikoodit
game.create = Create
game.edit = Edit
game.out = Gamecodes are out, pleace contact administration
game.product = Tuote
generic.sure.header = Confirmation
generic.sure.message = Are you sure?
generic.sure.no = No
......@@ -158,4 +167,6 @@ resetmailSent.header = Email sent
subnavi.cards = \u0009\u0009
topnavi.license = Lisenssikoodit
user.unauthenticated = Kirjautumaton
......@@ -277,7 +277,21 @@ foodwavetemplate.selectproducts = Products
foodwavetemplate.startTime = Foodwave time
foodwavetemplate.waveName = Wave name
game.gamepoints = Game points
game.active = Active
game.code = Code
game.codecount = Opened
game.codes.available = Licensecodes
game.codes.opened = Opened licensecodes
game.create = Create
game.description = Description
game.edit = Edit
game.gamepoints = Game points
game.name = Name
game.noGameCodes = You have no opened gamecodes
game.open = Open code
game.out = Please contact out customer service
game.product = Product
game.service = Game service
gamepoints = Gamepoints
......@@ -692,6 +706,7 @@ sitepage.save = Save
sitepagelist.header = Site pages
submenu.actionlog.messagelist = ActionLog
submenu.auth.login = Login
submenu.auth.logout = Logout
submenu.auth.logoutResponse = Logout successfull
......@@ -699,6 +714,7 @@ submenu.auth.sendResetMail = Password reset
submenu.bill.billSummary = Bill summary
submenu.bill.list = My bills
submenu.bill.listAll = All bills
submenu.eventorg.list = Manage Event
submenu.feedback.index = Feedback
submenu.foodadmin.createTemplate = Create foodwave template
submenu.foodadmin.listTemplates = List foodwave templates
......@@ -712,6 +728,7 @@ submenu.orgrole.create = Create organisationrole
submenu.orgrole.list = Organisation roles
submenu.pages.create = Create content
submenu.pages.list = List pages
submenu.place.adminPlacemap = Placemap
submenu.place.insertToken = Insert placecode
submenu.place.myGroups = Place reservations
submenu.place.placemap = Placemap
......@@ -719,7 +736,7 @@ submenu.poll.index = Polls
submenu.product.create = Create product
submenu.product.list = List products
submenu.role.create = Create role
submenu.role.list = Roles
submenu.role.list = Show Roles
submenu.shop.createBill = Purchase
submenu.shop.listReaders = List readers
submenu.shop.showReaderEvents = Reader events
......@@ -737,7 +754,7 @@ submenu.user.shop = Shop
submenu.user.userlinks = User information
submenu.useradmin.create = Create user
submenu.useradmin.createCardTemplate = Create cardtemplate
submenu.useradmin.list = List users
submenu.useradmin.list = Search Users
submenu.useradmin.listCardTemplates = Card templates
submenu.useradmin.showTakePicture = Show webcam
submenu.useradmin.validateUser = Validate user
......@@ -764,6 +781,10 @@ svm.success.successMessage = Payment was successfull. You can now your credits i
template.loggedInAs = Logged in as
topmenu.admin = Admin View
topmenu.helpdesk = Helpdesk
topmenu.user = User View
topnavi.adminshop = Adminshop
topnavi.billing = Billing
topnavi.competitions = Competitions
......@@ -773,6 +794,8 @@ topnavi.createuser = Create user
topnavi.event = Event
topnavi.foodwave = Food
topnavi.frontpage = Front page
topnavi.game = Gamecodes
topnavi.license = Licensecodes
topnavi.log = Log
topnavi.login = Login
topnavi.maps = Maps
......
......@@ -277,7 +277,21 @@ foodwavetemplate.selectproducts = Tuotteet
foodwavetemplate.startTime = Tilausaika
foodwavetemplate.waveName = Tilauksen nimi
game.gamepoints = Insomnia Game pisteet:
game.active = Aktiivinen
game.code = Koodi
game.codecount = Avattuja
game.codes.available = Lisenssikoodit
game.codes.opened = Avatut lisenssikoodit
game.create = Luo
game.description = Kuvaus
game.edit = Muokkaa
game.gamepoints = Insomnia Game pisteet:
game.name = Nimi
game.noGameCodes = Sinulla ei ole avattuja pelikoodeja.
game.open = Ota koodi k\u00E4ytt\u00F6\u00F6n
game.out = Ei voitu avata pelikoodia, ota yhteytt\u00E4 asiakaspalveluun.
game.product = Tuote
game.service = Pelipalvelu
gamepoints = Pelipisteit\u00E4
......@@ -675,6 +689,7 @@ sitepage.save = Tallenna
sitepagelist.header = Sivuston sis\u00E4ll\u00F6t
submenu.actionlog.messagelist = ActionLog
submenu.auth.login = Kirjaudu
submenu.auth.logout = Kirjaudu ulos
submenu.auth.logoutResponse = Uloskirjautuminen onnistui
......@@ -682,6 +697,7 @@ submenu.auth.sendResetMail = Salasanan palautus
submenu.bill.billSummary = Laskujen yhteenveto
submenu.bill.list = N\u00E4yt\u00E4 omat laskut
submenu.bill.listAll = Kaikki laskut
submenu.eventorg.list = Organisaation hallinta
submenu.feedback.index = Palaute
submenu.foodadmin.createTemplate = Luo tilauspohja
submenu.foodadmin.listTemplates = Muokkaa tilauspohjia
......@@ -694,6 +710,7 @@ submenu.orgrole.create = Luo j\u00E4rjest\u00E4j\u00E4rooli
submenu.orgrole.list = J\u00E4rjest\u00E4j\u00E4roolit
submenu.pages.create = Luo sis\u00E4lt\u00F6\u00E4
submenu.pages.list = N\u00E4yt\u00E4 sis\u00E4ll\u00F6t
submenu.place.adminPlacemap = Konepaikat
submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi
submenu.place.myGroups = Omat paikkavaraukset
submenu.place.placemap = Paikkakartta
......@@ -701,7 +718,7 @@ submenu.poll.index = Kyselyt
submenu.product.create = Uusi tuote
submenu.product.list = Listaa tuotteet
submenu.role.create = Luo rooli
submenu.role.list = Roolit
submenu.role.list = N\u00E4yt\u00E4 roolit
submenu.shop.createBill = Osta tuotteita
submenu.shop.listReaders = N\u00E4yt\u00E4 lukijat
submenu.shop.showReaderEvents = Lukijan tapahtumat
......@@ -722,7 +739,7 @@ submenu.user.shop = Kauppaan
submenu.user.userlinks = Muokkaa tietoja
submenu.useradmin.create = Luo uusi k\u00E4ytt\u00E4j\u00E4
submenu.useradmin.createCardTemplate = Luo uusi korttipohja
submenu.useradmin.list = Listaa k\u00E4ytt\u00E4j\u00E4t
submenu.useradmin.list = Etsi K\u00E4ytt\u00E4ji\u00E4
submenu.useradmin.listCardTemplates = Listaa korttipohjat
submenu.useradmin.showTakePicture = N\u00E4yt\u00E4 webcam
submenu.useradmin.validateUser = Validoi k\u00E4ytt\u00E4j\u00E4
......@@ -749,6 +766,10 @@ svm.success.successMessage = Verkkomaksu onnistui.
template.loggedInAs = Kirjautunut tunnuksella
topmenu.admin = Yll\u00E4piton\u00E4kym\u00E4
topmenu.helpdesk = Helpdesk
topmenu.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4
topnavi.adminshop = Kauppa
topnavi.billing = Laskutus
topnavi.competitions = Kilpailut
......@@ -758,6 +779,8 @@ topnavi.createuser = Luo k\u00E4ytt\u00E4j\u00E4
topnavi.event = Tapahtuma
topnavi.foodwave = Ruokatilaus
topnavi.frontpage = Etusivu
topnavi.game = Pelikoodit
topnavi.license = Lisenssikoodit
topnavi.log = Logi
topnavi.login = Kirjaudu sis\u00E4\u00E4n
topnavi.maps = Kartat
......
......@@ -63,7 +63,7 @@ public abstract class GenericImageServlet extends HttpServlet {
}
@SuppressWarnings("unused")
private static final Logger logger = LoggerFactory.getLogger(UserImageServlet.class);
private static final Logger logger = LoggerFactory.getLogger(GenericImageServlet.class);
protected abstract ImageMover getImagedata();
......
package fi.codecrew.moya.servlet;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.ejb.EJB;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.UserImage;
/**
* Servlet implementation class UploadServlet
*/
public class UserCardPngServlet extends GenericImageServlet {
/**
*
*/
private static final long serialVersionUID = -3359999630873773508L;
@EJB
private transient UserBeanLocal userbean;
@EJB
private transient PermissionBeanLocal permbean;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
// private final Pattern lhMatcher =
// Pattern.compile("^(10|127).[0-9.]*|(0:)*1%0");
private static final Logger logger = LoggerFactory.getLogger(UserCardPngServlet.class);
private static final Pattern URLPATTERN = Pattern.compile("([^./]+)");
// /dydata/(userimage|...)/stuff...
@Override
protected ImageMover getImagedata() {
ImageMover ret = new ImageMover();
List<String> urlparts = new ArrayList<String>();
if (super.request.getPathInfo() != null)
{
Matcher matcher = URLPATTERN.matcher(super.request.getPathInfo());
logger.info("urlparts {}", urlparts);
while (matcher.find()) {
urlparts.add(matcher.group());
}
}
if (urlparts.isEmpty()) {
ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
} else if (urlparts.get(0).equals("userimage") && urlparts.size() > 2) {
int imageid = Integer.parseInt(urlparts.get(1));
UserImage image = userbean.findUserimageFORCE(imageid);
if (image != null)
{
ret.setData(image.getImageData());
ret.setImagetype(image.getMimeType());
}
}
if (ret.getImagetype() == null) {
ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
}
return ret;
}
// protected ImageMover getImagedata2() {
// ImageMover ret = new ImageMover();
// UserImage image =
// userbean.findUserimageFORCE(super.getIdParam("imageid"));
// if (image != null) { // &&
// // if (permbean.isCurrentUser(image.getUser()) ||
// // permbean.hasPermission(UserPermission.MODIFY) ||
// // lhMatcher.matcher(request.getLocalAddr()).matches())
// // {
// ret.setData(image.getImageData());
// ret.setImagetype(image.getMimeType());
// // }
// // else
// // {
// // ret.setResponse(HttpServletResponse.SC_FORBIDDEN);
// // }
//
// } else
// {
// ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
// }
// return ret;
//
// }
}
package fi.codecrew.moya.servlet;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
......@@ -17,7 +15,6 @@ import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.pdfjet.Box;
import com.pdfjet.CoreFont;
import com.pdfjet.Image;
import com.pdfjet.ImageType;
......@@ -94,66 +91,6 @@ public class UserCardServlet extends GenericImageServlet {
}
private byte[] mkCardJpeg(PrintedCard card) throws IOException {
EventUser user = card.getUser();
BufferedImage face = ImageIO.read(new ByteArrayInputStream(user
.getUser().getCurrentImage().getImageData()));
BufferedImage base = ImageIO.read(new ByteArrayInputStream(card
.getTemplate().getImage()));
BufferedImage outimage = new BufferedImage(base.getWidth(),
base.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = outimage.createGraphics();
// g.drawImage(org, AffineTransform.getScaleInstance(0.31, 0.31), null);
g.drawImage(base, 0, 0, base.getWidth(), base.getHeight(), null);
// g.drawImage(face, AffineTransform.getScaleInstance(0.31, 0.31),
// null);
g.drawImage(face, 60, 300, 320, 400, null);
g.setFont(new Font("Century gothic", Font.PLAIN, 70));
// g.drawString(nick, 595 -
// g.getFontMetrics().charsWidth(nick.toCharArray(), 0, nick.length()),
// 840);
g.drawString(user.getUser().getNick(), 50, 810);
g.setFont(new Font("Century gothic", Font.BOLD, 45));
StringBuilder wholeName = new StringBuilder();
wholeName.append(user.getUser().getFirstnames()).append(" ")
.append(user.getUser().getLastname());
// g.setFont(new Font("Arial", Font.BOLD, 35));
// g.drawString(name, 595 -
// g.getFontMetrics().charsWidth(name.toCharArray(), 0, name.length()),
// 890);
//
// g.drawString(owner.getId().toString(), 60, 948);
g.drawString(wholeName.toString(), 60, 865);
g.drawString(card.getTemplate().getName(), 60, 915);
String barcodeString = String.valueOf(user.getUser().getCreated()
.getTime().getTime());
barcodeString = barcodeString.substring(barcodeString.length() - 12);
BufferedImage image = ImageIO.read(BarcodeUtils
.getBarcodeEAN(barcodeString));
g.drawImage(image, 0, base.getHeight() - 120, base.getWidth(), 120,
null);
g.dispose();
ByteArrayOutputStream ostr = new ByteArrayOutputStream();
ImageIO.write(outimage, "jpeg", ostr);
return ostr.toByteArray();
}
// 300 dpi, 1016 px pituus, 648 px leveys,
// 85,5 mm x 54,0 mm
private byte[] mkCard(PrintedCard card) throws Exception {
......@@ -190,7 +127,7 @@ public class UserCardServlet extends GenericImageServlet {
Image faceImage = new Image(pdf,
convertBufferedImageToPng(faceBufferedImage), ImageType.PNG);
faceImage.setPosition(15.5, 70.0);
faceImage.scaleBy((410.0/faceImage.getHeight()));
faceImage.scaleBy((410.0 / faceImage.getHeight()));
faceImage.drawOn(page);
// Render texts
......@@ -202,27 +139,27 @@ public class UserCardServlet extends GenericImageServlet {
TextLine nickTextLine = new TextLine(nickFont);
nickTextLine.setText(user.getUser().getNick());
nickTextLine.setPosition(19.0, 193.0);
nickTextLine.setColor(new double[] {1.0, 1.0, 1.0});
nickTextLine.setColor(new double[] { 1.0, 1.0, 1.0 });
nickTextLine.drawOn(page);
// Smaller font
com.pdfjet.Font font = new com.pdfjet.Font(pdf, CoreFont.HELVETICA);
font.setSize(10.0);
// Full name text
String wholeName = user.getUser().getFirstnames() + " "
+ user.getUser().getLastname();
TextLine wholeNameText = new TextLine(font);
wholeNameText.setText(wholeName);
wholeNameText.setPosition(17.0, 212.0);
wholeNameText.setColor(new double[] {1.0, 1.0, 1.0});
wholeNameText.setColor(new double[] { 1.0, 1.0, 1.0 });
wholeNameText.drawOn(page);
// Role text
TextLine roleTextLine = new TextLine(font);
roleTextLine.setText(card.getTemplate().getName());
roleTextLine.setPosition(17.0, 223.0);
roleTextLine.setColor(new double[] {1.0, 1.0, 1.0});
roleTextLine.setColor(new double[] { 1.0, 1.0, 1.0 });
roleTextLine.drawOn(page);
// Barcode
......
package fi.codecrew.moya.servlet;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.ejb.EJB;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardPrintBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.UserImage;
import fi.codecrew.moya.model.EventUser;
/**
* Servlet implementation class UploadServlet
*/
public class UserImageServlet extends GenericImageServlet {
@WebServlet(urlPatterns = "/png")
public class UserPngImageServlet extends GenericImageServlet {
public UserPngImageServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
*
......@@ -32,40 +34,33 @@ public class UserImageServlet extends GenericImageServlet {
@EJB
private transient PermissionBeanLocal permbean;
@EJB
private CardPrintBeanLocal cardprint;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
// private final Pattern lhMatcher =
// Pattern.compile("^(10|127).[0-9.]*|(0:)*1%0");
private static final Logger logger = LoggerFactory.getLogger(UserImageServlet.class);
private static final Pattern URLPATTERN = Pattern.compile("([^./]+)");
private static final Logger logger = LoggerFactory.getLogger(UserPngImageServlet.class);
// /dydata/(userimage|...)/stuff...
@Override
protected ImageMover getImagedata() {
EventUser usr = permbean.getCurrentUser();
logger.info("Trying to print imagedata for user {}", usr);
ImageMover ret = new ImageMover();
Matcher matcher = URLPATTERN.matcher(super.request.getPathInfo());
List<String> urlparts = new ArrayList<String>();
logger.info("urlparts {}", urlparts);
while (matcher.find()) {
urlparts.add(matcher.group());
}
if (usr != null) {
try {
if (urlparts.isEmpty()) {
ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
} else if (urlparts.get(0).equals("userimage") && urlparts.size() > 2) {
int imageid = Integer.parseInt(urlparts.get(1));
UserImage image = userbean.findUserimageFORCE(imageid);
if (image != null)
{
ret.setData(image.getImageData());
ret.setImagetype(image.getMimeType());
byte[] img = cardprint.constructPNG(usr);
if (img.length > 0)
{
ret.setData(img);
ret.setImagetype("image/png");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
......@@ -75,7 +70,6 @@ public class UserImageServlet extends GenericImageServlet {
return ret;
}
// protected ImageMover getImagedata2() {
// ImageMover ret = new ImageMover();
// UserImage image =
......
package fi.codecrew.moya.web.cdiview.license;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Named;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LicenseBeanLocal;
import fi.codecrew.moya.beans.LicenseBeanLocal.GenerationException;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.enums.apps.LicensePermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LicenseCode;
import fi.codecrew.moya.model.LicenseTarget;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named
@ConversationScoped
public class LicenseView extends GenericCDIView {
private static final long serialVersionUID = -8346420143750551402L;
private EventUser currentUser;
@EJB
private PermissionBeanLocal permissionBean;
@EJB
private EventBeanLocal eventBean;
@EJB
private LicenseBeanLocal licenseBean;
@EJB
private ProductBeanLocal productBean;
private ListDataModel<LicenseTarget> licenses;
private ListDataModel<LicenseCode> licenseCodes;
private LicenseTarget currentLicense;
public void initAdminView() {
if (super.requirePermissions(LicensePermission.MANAGE)) {
if (licenses == null) {
this.currentLicense = new LicenseTarget();
this.currentLicense.setEvent(eventBean.getCurrentEvent());
this.licenses = new ListDataModel<LicenseTarget>(licenseBean.findAll(eventBean.getCurrentEvent()));
this.beginConversation();
}
}
}
public void initUserView() {
if (super.requirePermissions(LicensePermission.VIEW_OWN_CODES)) {
if (licenseCodes == null) {
currentUser = permissionBean.getCurrentUser();
this.licenseCodes = new ListDataModel<LicenseCode>(currentUser.getUser().getLicenseCodes());
this.licenses = new ListDataModel<LicenseTarget>(licenseBean.findUnopenedUserGames(currentUser));
this.beginConversation();
}
}
}
public String saveCurrentLicense() {
licenseBean.saveOrCreateLicense(currentLicense);
this.licenses = new ListDataModel<LicenseTarget>(licenseBean.findAll(eventBean.getCurrentEvent()));
return null;
}
public String editSelected() {
return null;
}
public String openSelectedCode() {
if(this.licenses != null && this.licenses.isRowAvailable()) {
LicenseTarget license = this.licenses.getRowData();
try {
LicenseCode code = licenseBean.createAndAccessCode(license, currentUser.getUser());
} catch(GenerationException x) {
this.addFaceMessage("game.out");
}
licenseCodes = null;
initUserView();
}
return null;
}
public boolean isNoLicenseCodes() {
return (getLicenseCodes().getRowCount() <= 0);
}
public boolean isNoLicenses() {
return (getLicenses().getRowCount() <= 0);
}
public ListDataModel<LicenseCode> getLicenseCodes() {
return licenseCodes;
}
public void setLicenseCodes(ListDataModel<LicenseCode> licenseCodes) {
this.licenseCodes = licenseCodes;
}
public ListDataModel<LicenseTarget> getLicenses() {
return licenses;
}
public void setLicenses(ListDataModel<LicenseTarget> licenses) {
this.licenses = licenses;
}
public LicenseTarget getCurrentLicense() {
return currentLicense;
}
public void setCurrentLicense(LicenseTarget currentLicense) {
this.currentLicense = currentLicense;
}
public List<Product> getProductsForLicenses() {
return productBean.findPlaceProducts();
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!