Commit e20e7522 by Liv Haapala

- kortin generointi korttidatan pohjalta

- viilailuja käyttäjien tarkastusnäkymään
1 parent 2a309d21
......@@ -179,6 +179,10 @@ public class BootstrapBean implements BootstrapBeanLocal {
"ALTER TABLE card_text_data ALTER COLUMN size TYPE double precision;",
"ALTER TABLE card_object_data ALTER COLUMN size TYPE double precision;"
});
dbUpdates.add(new String[] {
"ALTER TABLE card_text_data DROP COLUMN font_style;",
"ALTER TABLE card_text_data ADD COLUMN font_style TEXT NOT NULL DEFAULT 'PLAIN';"
});
}
......
......@@ -3,6 +3,7 @@ package fi.codecrew.moya.beans;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
......@@ -36,6 +37,7 @@ import com.pdfjet.Page;
import com.pdfjet.TextLine;
import fi.codecrew.moya.enums.CardObjectDataType;
import fi.codecrew.moya.enums.CardTextAlignment;
import fi.codecrew.moya.enums.CardTextDataType;
import fi.codecrew.moya.enums.CardTextStyle;
import fi.codecrew.moya.facade.CardTemplateFacade;
......@@ -123,79 +125,54 @@ public class CardPrintBean implements CardPrintBeanLocal {
float pagex = 155.52f; // 54,0 mm
float pagey = 243.84f; // 85,5 mm
MassPrintResult mpr = new MassPrintResult();
HashMap<CardTemplate, List<GenericEntity>> templateHash = new HashMap<CardTemplate, List<GenericEntity>>();
logger.info("constructPdf() users:");
for (EventUser user : users) {
logger.info("User: {}", user.getWholeName());
PrintedCard printedCard = cardTemplateBean.checkPrintedCard(user);
if (printedCard == null)
continue;
logger.info("PrintedCard {}", printedCard);
CardTemplate cardTemplate = printedCard.getTemplate();
if(!templateHash.containsKey(cardTemplate)) {
List<CardTextData> textDatas = cardTemplateBean.findCardTextDatas(cardTemplate);
List<CardObjectData> objectDatas = cardTemplateBean.findCardObjectDatas(cardTemplate);
if(textDatas == null)
textDatas = new ArrayList<CardTextData>();
if(objectDatas == null)
objectDatas = new ArrayList<CardObjectData>();
List<GenericEntity> objects = new ArrayList<GenericEntity>();
while(objectDatas.size() > 0 || textDatas.size() > 0) {
CardObjectData biggestObjectZ = null;
CardTextData biggestTextZ = null;
for(CardObjectData obj : objectDatas) {
if(biggestObjectZ == null)
biggestObjectZ = obj;
else if(obj.getzIndex() > biggestObjectZ.getzIndex())
biggestObjectZ = obj;
}
for(CardTextData obj : textDatas) {
if(biggestTextZ == null)
biggestTextZ = obj;
else if(obj.getzIndex() > biggestTextZ.getzIndex())
biggestTextZ = obj;
}
if(biggestObjectZ != null && biggestTextZ != null) {
if(biggestObjectZ.getzIndex() > biggestTextZ.getzIndex()) {
objects.add(biggestObjectZ);
objectDatas.remove(biggestObjectZ);
} else {
objects.add(biggestTextZ);
objectDatas.remove(biggestTextZ);
}
}
else if(biggestObjectZ != null) {
objects.add(biggestObjectZ);
objectDatas.remove(biggestObjectZ);
}
else if(biggestTextZ != null) {
objects.add(biggestTextZ);
textDatas.remove(biggestTextZ);
}
}
templateHash.put(cardTemplate, objects);
}
logger.info("CardTemplate {}", cardTemplate);
boolean containsKey = templateHash.containsKey(cardTemplate);
logger.info("Containskey {}", containsKey);
if(!containsKey) {
logger.info("getting objects...");
List<GenericEntity> objects = sortCardTemplateDatas(cardTemplate);
logger.info("objects {}", objects);
templateHash.put(cardTemplate, objects);
}
BufferedImage cardBackground = ImageIO.read(new ByteArrayInputStream(cardTemplate.getImage()));
float k = pagey / (float)cardBackground.getHeight();
logger.info("Scale k {}", k);
logger.info("cardBackground {}", cardBackground);
BufferedImage faceBufferedImage = null;
if(user.getCurrentImage() != null && user.getCurrentImage().getImageData() != null)
faceBufferedImage = ImageIO.read(new ByteArrayInputStream(user.getCurrentImage().getImageData()));
logger.info("faceBufferedImage {}", faceBufferedImage);
/*
* if (faceBufferedImage.getWidth() > 1024 ||
* faceBufferedImage.getHeight() > 1024) { throw new
......@@ -217,6 +194,7 @@ public class CardPrintBean implements CardPrintBeanLocal {
objects = new ArrayList<GenericEntity>();
for(GenericEntity obj : objects) {
logger.info("GenericEntity {}", obj);
// force image aspect ratio.
//for (CardObjectData cardObjectData : objectDatas) {
CardTextData textData = null;
......@@ -228,47 +206,75 @@ public class CardPrintBean implements CardPrintBeanLocal {
objectData = (CardObjectData) obj;
}
if(textData != null) {
logger.info("TextData {}", textData);
logger.info("TextData type is {}", textData.getTextDataType());
com.pdfjet.Font font;
if(textData.getFontStyle() == CardTextStyle.BOLD) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.BOLD);
}else if(textData.getFontStyle() == CardTextStyle.ITALIC) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.ITALIC);
} else if(textData.getFontStyle() == CardTextStyle.BOLDITALIC) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.BOLD + Font.ITALIC);
} else {
font = new com.pdfjet.Font(pdf, textData.getFontName());
try {
if(textData.getFontStyle() == CardTextStyle.BOLD) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.BOLD);
}else if(textData.getFontStyle() == CardTextStyle.ITALIC) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.ITALIC);
} else if(textData.getFontStyle() == CardTextStyle.BOLDITALIC) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.BOLD + Font.ITALIC);
} else {
font = new com.pdfjet.Font(pdf, textData.getFontName());
}
} catch(Exception ex) {
font = new com.pdfjet.Font(pdf, CoreFont.HELVETICA);
}
font.setSize(textData.getSize().doubleValue());
font.setSize(textData.getSize().doubleValue()*k);
int[] textColor = new int[] { textData.getFontColorR(), textData.getFontColorG(), textData.getFontColorB()};
TextLine text = new TextLine(font);
text.setPosition(textData.getX(), textData.getY());
text.setPosition(textData.getX()*k, textData.getY()*k);
text.setColor(textColor);
if(textData.getTextDataType() == CardTextDataType.NICK) {
CardTextDataType textDataType = textData.getTextDataType();
if(textDataType == CardTextDataType.NICK) {
text.setText(user.getUser().getNick());
} else if(textData.getTextDataType() == CardTextDataType.FIRSTNAME) {
} else if(textDataType == CardTextDataType.FIRSTNAME) {
text.setText(user.getUser().getFirstnames());
} else if(textData.getTextDataType() == CardTextDataType.LASTNAME) {
} else if(textDataType == CardTextDataType.LASTNAME) {
text.setText(user.getUser().getLastname());
} else if(textData.getTextDataType() == CardTextDataType.WHOLENAME) {
} else if(textDataType == CardTextDataType.WHOLENAME) {
text.setText(user.getUser().getFirstnames() + " " + user.getUser().getLastname());
} else if(textData.getTextDataType() == CardTextDataType.ROLE) {
} else if(textDataType == CardTextDataType.ROLE) {
text.setText(cardTemplate.getName());
} else if(textData.getTextDataType() == CardTextDataType.AGE){
} else if(textDataType == CardTextDataType.AGE){
text.setText(user.getBirthday().toString());
} else if(textData.getTextDataType() == CardTextDataType.STATIC) {
} else if(textDataType == CardTextDataType.STATIC) {
text.setText(textData.getText());
}
CardTextAlignment alignment = textData.getTextAlignment();
if(alignment == CardTextAlignment.CENTER) {
float x = k*textData.getX() - text.getWidth() / 2f;
text.setPosition(x, textData.getY()*k);
} else if(alignment == CardTextAlignment.RIGHT) {
float x = textData.getX()*k - text.getWidth();
text.setPosition(x, textData.getY()*k);
}
text.drawOn(page);
logger.info("Draw TextLine on page");
}
else if(objectData != null) {
logger.info("ObjectData {}", objectData);
logger.info("ObjectDatas type is {}", objectData.getObjectDataType());
if(objectData.getObjectDataType() == CardObjectDataType.USERS_PICTURE) {
if(faceBufferedImage != null) {
/*
int originalWidth = faceBufferedImage.getWidth();
int originalHeight = faceBufferedImage.getHeight();
......@@ -295,21 +301,24 @@ public class CardPrintBean implements CardPrintBeanLocal {
offsety = (originalHeight - height) / 2;
faceBufferedImage = faceBufferedImage.getSubimage(offsetx, offsety, width, height);
*/
// Render face image
logger.info("Creating image of face");
Image faceImage = new Image(pdf, convertBufferedImageToPng(faceBufferedImage), ImageType.PNG);
faceImage.setPosition(objectData.getX(), objectData.getY());
//faceImage.setPosition(175, 222);
// faceImage.scaleBy(0.32);
faceImage.scaleBy(((410.0 * 0.245) / faceImage.getHeight()));
faceImage.setPosition((float)objectData.getX()*k, (float)objectData.getY()*k);
logger.info("Set position of image {}, {}", objectData.getX(), objectData.getY());
faceImage.scaleBy(k*objectData.getSize().floatValue()/faceImage.getWidth());
logger.info("Scaled image");
faceImage.drawOn(page);
logger.info("drawing image of face on page");
}
} else if(objectData.getObjectDataType() == CardObjectDataType.CARDS_BARCODE) {
BufferedImage barCodeBufferedImage = ImageIO.read(barcodeBean.getCardBarcode(printedCard));
Image barCodeImage = new Image(pdf, convertBufferedImageToPng(barCodeBufferedImage), ImageType.PNG);
barCodeImage.setPosition(objectData.getX(), objectData.getY());
barCodeImage.scaleBy(0.7);
barCodeImage.setPosition((float)objectData.getX()*k, (float)objectData.getY()*k);
barCodeImage.scaleBy(k*objectData.getSize().floatValue()/barCodeImage.getWidth());
barCodeImage.drawOn(page);
logger.info("Draw Cards barcode on page");
}
}
......@@ -332,6 +341,77 @@ public class CardPrintBean implements CardPrintBeanLocal {
return mpr;
}
private List<GenericEntity> sortCardTemplateDatas(CardTemplate cardTemplate) {
logger.info("getting datas...");
List<CardTextData> textDatas = cardTemplateBean.findCardTextDatas(cardTemplate);
logger.info("got cardtextDatas for template {}", cardTemplate);
List<CardObjectData> objectDatas = cardTemplateBean.findCardObjectDatas(cardTemplate);
logger.info("got cardObjectDatas for template {}", cardTemplate);
if(textDatas == null)
textDatas = new ArrayList<CardTextData>();
if(objectDatas == null)
objectDatas = new ArrayList<CardObjectData>();
List<GenericEntity> objects = new ArrayList<GenericEntity>();
CardObjectData objectZ = null;
CardTextData textZ = null;
while(objectDatas.size() > 0 || textDatas.size() > 0) {
logger.info("objectDatas.size() {}, textDatas.size() {}", objectDatas.size(), textDatas.size());
objectZ = null;
textZ = null;
for(CardObjectData obj : objectDatas) {
if(objectZ == null) {
objectZ = obj;
logger.info("biggestObjectZ is {} ", objectZ);
}
else if(obj.getzIndex() < objectZ.getzIndex()) {
objectZ = obj;
logger.info("biggestObjectZ is {} ", objectZ);
}
}
for(CardTextData obj : textDatas) {
if(textZ == null) {
textZ = obj;
logger.info("biggestTextZ is {} ", textZ);
}
else if(obj.getzIndex() < textZ.getzIndex()) {
textZ = obj;
logger.info("biggestTextZ is {} ", textZ);
}
}
if(objectZ != null && textZ != null) {
if(objectZ.getzIndex() >= textZ.getzIndex()) {
objects.add(objectZ);
objectDatas.remove(objectZ);
logger.info("remove objectData {} ", objectZ);
} else {
objects.add(textZ);
textDatas.remove(textZ);
logger.info("remove textData {} ", textZ);
}
}
else if(objectZ != null) {
objects.add(objectZ);
objectDatas.remove(objectZ);
logger.info("remove objectData {} ", objectZ);
}
else if(textZ != null) {
objects.add(textZ);
textDatas.remove(textZ);
logger.info("remove textData {} ", textZ);
}
}
logger.info("return {} ", objects);
return objects;
}
@Override
public byte[] constructPNG(PrintedCard card) throws Exception {
if (card == null) {
......@@ -343,62 +423,132 @@ public class CardPrintBean implements CardPrintBeanLocal {
// card.getTemplate(), card.getTemplate().getImage());
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, 250, 300, 301, 410, null);
BufferedImage face = ImageIO.read(new ByteArrayInputStream(user.getUser().getCurrentImage().getImageData()));
//Font nickfont = new Font("Century gothic", Font.BOLD, 65);
BufferedImage base = ImageIO.read(new ByteArrayInputStream(card.getTemplate().getImage()));
//Font font = new Font("Century gothic", Font.BOLD, 45);
BufferedImage outimage = new BufferedImage(base.getWidth(), base.getHeight(), BufferedImage.TYPE_INT_RGB);
//int nickWidth = g.getFontMetrics(font).stringWidth(user.getUser().getNick());
//int nickX = (646 / 2) - (nickWidth / 2);
List<GenericEntity> objects = sortCardTemplateDatas(card.getTemplate());
Graphics2D g = outimage.createGraphics();
g.drawImage(base, 0, 0, base.getWidth(), base.getHeight(), null);
for(GenericEntity entity : objects) {
CardTextData textData = null;
CardObjectData objectData = null;
if(entity.getClass().equals(CardTextData.class)) {
textData = (CardTextData) entity;
} else if(entity.getClass().equals(CardObjectData.class)) {
objectData = (CardObjectData) entity;
}
if(textData != null) {
Color color = new Color(textData.getFontColorR(), textData.getFontColorG(), textData.getFontColorB());
//Font font = textData.getFont();
Font font;
if(textData.getFontStyle() == CardTextStyle.BOLD) {
font = new Font(textData.getFontName(),Font.BOLD, textData.getSize().intValue());
}else if(textData.getFontStyle() == CardTextStyle.ITALIC) {
font = new Font(textData.getFontName(),Font.ITALIC, textData.getSize().intValue());
} else if(textData.getFontStyle() == CardTextStyle.BOLDITALIC) {
font = new Font(textData.getFontName(),Font.BOLD + Font.ITALIC, textData.getSize().intValue());
} else {
font = new Font(textData.getFontName(), Font.PLAIN, textData.getSize().intValue());
}
g.setColor(color);
g.setFont(font);
int x = textData.getX();
int y = textData.getY();
if(textData.getTextAlignment() == CardTextAlignment.CENTER) {
int width = g.getFontMetrics().charsWidth(user.getUser().getNick().toCharArray(), 0, user.getUser().getNick().length());
x -= width/2;
} else if(textData.getTextAlignment() == CardTextAlignment.RIGHT) {
int width = g.getFontMetrics().charsWidth(user.getUser().getNick().toCharArray(), 0, user.getUser().getNick().length());
x -= width;
}
if(textData.getTextDataType() == CardTextDataType.NICK) {
logger.info("Drawing nick to card.");
g.drawString(user.getUser().getNick(), x, y);
} else if(textData.getTextDataType() == CardTextDataType.FIRSTNAME) {
logger.info("Drawing firstname to card.");
g.drawString(user.getUser().getFirstnames(), x, y);
} else if(textData.getTextDataType() == CardTextDataType.LASTNAME) {
logger.info("Drawing lastname to card.");
g.drawString(user.getUser().getLastname(), x, y);
} else if(textData.getTextDataType() == CardTextDataType.WHOLENAME) {
logger.info("Drawing wholename to card.");
String wholename = user.getUser().getFirstnames() + " " + user.getUser().getLastname();
g.drawString(wholename, x, y);
} else if(textData.getTextDataType() == CardTextDataType.AGE) {
logger.info("Drawing age to card.");
g.drawString(user.getUser().getAge().toString(), x, y);
} else if(textData.getTextDataType() == CardTextDataType.ROLE) {
logger.info("Drawing cards templates name to card.");
g.drawString(card.getTemplate().getName(), x, y);
} else if(textData.getTextDataType() == CardTextDataType.STATIC) {
logger.info("Drawing static text '" + textData.getText() + "' to card.");
g.drawString(textData.getText(), x, y);
}
} else if(objectData != null) {
if(objectData.getObjectDataType() == CardObjectDataType.USERS_PICTURE) {
logger.info("Drawing user's picture to card.");
//g.drawImage(face, AffineTransform.getScaleInstance(0.31, 0.31),null);
int height = (int) Math.round(objectData.getSize().intValue() * (1 / ASPECT_RATIO));
g.drawImage(face, objectData.getX(), objectData.getY(), objectData.getSize().intValue(), height, null);
} else if(objectData.getObjectDataType() == CardObjectDataType.CARDS_BARCODE) {
logger.info("Drawing card's barcode to card.");
BufferedImage barCodeBufferedImage = null;
PrintedCard printedCard = cardTemplateBean.checkPrintedCard(user);
if (printedCard != null) {
barCodeBufferedImage = ImageIO.read(barcodeBean.getCardBarcode(printedCard));
g.drawImage(barCodeBufferedImage, objectData.getX(), objectData.getY(), objectData.getSize().intValue(), barCodeBufferedImage.getHeight(), null);
g.setColor(Color.white);
}
} else if(objectData.getObjectDataType() == CardObjectDataType.USERS_BARCODE) {
}
}
//g.drawImage(org, AffineTransform.getScaleInstance(0.31, 0.31), null);
//int nickX = 60;
//int nickY = 800;
/*
Color transparentWhite = new Color(255, 255, 255, 140);
g.setColor(transparentWhite);
g.fillRect(nickX - 20, nickY - 50, nickWidth + 40, 50);
int[] nickTextColor = new int[] { 197, 220, 85 };
*/
//SKynett printCOlor
//Color transparentWhite = new Color(255, 255, 255, 140);
//g.setColor(transparentWhite);
//g.fillRect(nickX - 20, nickY - 50, nickWidth + 40, 50);
// int[] nickTextColor = new int[] { 197, 220, 85 };
/*
g.setFont(new Font("Arial", Font.BOLD, 35));
g.drawString(name, 595 -
g.getFontMetrics().charsWidth(name.toCharArray(), 0, name.length()),890);
//SKynett printCOlor
/*
Color nickColor = new Color(197, 220, 85);
g.setColor(nickColor);
g.setFont(nickfont);
g.drawString(user.getUser().getNick(), nickX, nickY);
g.drawString(owner.getId().toString(), 60, 948);
g.setFont(font);
g.setFont(new Font("Century gothic", Font.BOLD, 40));
g.drawString(wholeName.toString(), 60, 865);
g.drawString(card.getTemplate().getName(), 60, 915);
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.setFont(new Font("Century gothic", Font.BOLD, 40));
g.drawString(wholeName.toString(), 60, 865);
g.drawString(card.getTemplate().getName(), 60, 915);
g.drawString(card.getTemplate().getName(), 60, 915);
*/
//g.drawString(card.getTemplate().getName(), 60, 915);
//PrintedCard printedCard = cardTemplateBean.checkPrintedCard(user);
/* Ei insomniassa
/* Ei insomniassa
g.setFont(new Font("Century gothic", Font.PLAIN, 30));
g.setColor(Color.white);
BufferedImage barCodeBufferedImage = null;
......@@ -410,11 +560,15 @@ public class CardPrintBean implements CardPrintBeanLocal {
g.drawImage(barCodeBufferedImage, barcodeX, barcodeY, 400, barCodeBufferedImage.getHeight(), null);
g.setColor(Color.white);
}
*/
/*
g.fillRect(0, base.getHeight() - 20, base.getWidth(), base.getHeight());
g.dispose();
*/
//g.fillRect(0, base.getHeight() - 20, base.getWidth(), base.getHeight());
}
g.dispose();
ByteArrayOutputStream ostr = new ByteArrayOutputStream();
for (Iterator<ImageWriter> pngWriter = ImageIO.getImageWritersByFormatName("png"); pngWriter.hasNext();)
......@@ -440,204 +594,19 @@ public class CardPrintBean implements CardPrintBeanLocal {
}
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;
/*
PrintedCard printedCard = cardTemplateBean.checkPrintedCard(user);
if (printedCard == null)
continue;
CardTemplate cardTemplate = printedCard.getTemplate();
//if(!templateHash.containsKey(cardTemplate)) {
List<CardTextData> textDatas = cardTemplateBean.findCardTextDatas(cardTemplate.getId());
List<CardObjectData> objectDatas = cardTemplateBean.findCardObjectDatas(cardTemplate.getId());
if(textDatas == null)
textDatas = new ArrayList<CardTextData>();
if(objectDatas == null)
objectDatas = new ArrayList<CardObjectData>();
List<GenericEntity> objects = new ArrayList<GenericEntity>();
while(objectDatas.size() > 0 || textDatas.size() > 0) {
CardObjectData biggestObjectZ = null;
CardTextData biggestTextZ = null;
for(CardObjectData obj : objectDatas) {
if(biggestObjectZ == null)
biggestObjectZ = obj;
else if(obj.getzIndex() > biggestObjectZ.getzIndex())
biggestObjectZ = obj;
}
for(CardTextData obj : textDatas) {
if(biggestTextZ == null)
biggestTextZ = obj;
else if(obj.getzIndex() > biggestTextZ.getzIndex())
biggestTextZ = obj;
}
if(biggestObjectZ != null && biggestTextZ != null) {
if(biggestObjectZ.getzIndex() > biggestTextZ.getzIndex()) {
objects.add(biggestObjectZ);
objectDatas.remove(biggestObjectZ);
} else {
objects.add(biggestTextZ);
objectDatas.remove(biggestTextZ);
}
}
else if(biggestObjectZ != null) {
objects.add(biggestObjectZ);
objectDatas.remove(biggestObjectZ);
}
else if(biggestTextZ != null) {
objects.add(biggestTextZ);
textDatas.remove(biggestTextZ);
}
}
//templateHash.put(cardTemplate, objects);
//}
BufferedImage cardBackground = ImageIO.read(new ByteArrayInputStream(cardTemplate.getImage()));
BufferedImage faceBufferedImage = null;
if(user.getCurrentImage() != null && user.getCurrentImage().getImageData() != null)
faceBufferedImage = ImageIO.read(new ByteArrayInputStream(user.getCurrentImage().getImageData()));
}
/*
* if (faceBufferedImage.getWidth() > 1024 ||
* faceBufferedImage.getHeight() > 1024) { throw new
* Exception("Image dimensions too large, please take/upload smaller!"
* ); }
*/
ImageIO.write(outimage, "png", ostr);
//Page page = new Page(pdf, new float[] { pagex, pagey });
byte[] ret = ostr.toByteArray();
logger.info("Returning {} bytes for pngimage", ret.length);
// Render background image
/*
Image templateImage = new Image(pdf, convertBufferedImageToPng(cardBackground), ImageType.PNG);
templateImage.setPosition(0, 0);
templateImage.scaleBy(0.245);
templateImage.drawOn(page);
List<GenericEntity> objects = templateHash.get(cardTemplate);
if(objects == null)
objects = new ArrayList<GenericEntity>();
for(GenericEntity obj : objects) {
// force image aspect ratio.
//for (CardObjectData cardObjectData : objectDatas) {
CardTextData textData = null;
CardObjectData objectData = null;
if(obj.getClass().equals(CardTextData.class)) {
textData = (CardTextData) obj;
} else if(obj.getClass().equals(CardObjectData.class)) {
objectData = (CardObjectData) obj;
}
if(textData != null) {
com.pdfjet.Font font;
if(textData.getFontStyle() == CardTextStyle.BOLD) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.BOLD);
}else if(textData.getFontStyle() == CardTextStyle.ITALIC) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.ITALIC);
} else if(textData.getFontStyle() == CardTextStyle.BOLDITALIC) {
font = new com.pdfjet.Font(pdf, textData.getFontName(), Font.BOLD + Font.ITALIC);
} else {
font = new com.pdfjet.Font(pdf, textData.getFontName());
}
font.setSize(textData.getSize());
int[] textColor = new int[] { textData.getFontColorR(), textData.getFontColorG(), textData.getFontColorB()};
TextLine text = new TextLine(font);
text.setPosition(textData.getX(), textData.getY());
text.setColor(textColor);
if(textData.getTextDataType() == CardTextDataType.NICK) {
text.setText(user.getUser().getNick());
} else if(textData.getTextDataType() == CardTextDataType.FIRSTNAME) {
text.setText(user.getUser().getFirstnames());
} else if(textData.getTextDataType() == CardTextDataType.LASTNAME) {
text.setText(user.getUser().getLastname());
} else if(textData.getTextDataType() == CardTextDataType.WHOLENAME) {
text.setText(user.getUser().getFirstnames() + " " + user.getUser().getLastname());
} else if(textData.getTextDataType() == CardTextDataType.ROLE) {
text.setText(cardTemplate.getName());
} else if(textData.getTextDataType() == CardTextDataType.AGE){
text.setText(user.getBirthday().toString());
} else if(textData.getTextDataType() == CardTextDataType.STATIC) {
text.setText(textData.getText());
}
text.drawOn(page);
}
else if(objectData != null) {
if(objectData.getObjectDataType() == CardObjectDataType.USERS_PICTURE) {
if(faceBufferedImage != null) {
int originalWidth = faceBufferedImage.getWidth();
int originalHeight = faceBufferedImage.getHeight();
int width = (int)objectData.getSize();
if(objectData.getSize() == 0)
width = originalWidth;
int height = (int) Math.round(width * (1 / ASPECT_RATIO));
if (height > originalHeight) {
height = originalHeight;
width = (int) Math.round(originalHeight * ASPECT_RATIO);
}
int offsetx = 0;
int offsety = 0;
if(objectData.getSize() == 0)
offsetx = (originalWidth - width) / 2;
else
offsetx = ((int)objectData.getSize() - width) / 2;
offsety = (originalHeight - height) / 2;
faceBufferedImage = faceBufferedImage.getSubimage(offsetx, offsety, width, height);
// Render face image
Image faceImage = new Image(pdf, convertBufferedImageToPng(faceBufferedImage), ImageType.PNG);
faceImage.setPosition(objectData.getX(), objectData.getY());
//faceImage.setPosition(175, 222);
// faceImage.scaleBy(0.32);
faceImage.scaleBy(((410.0 * 0.245) / faceImage.getHeight()));
faceImage.drawOn(page);
}
} else if(objectData.getObjectDataType() == CardObjectDataType.CARDS_BARCODE) {
BufferedImage barCodeBufferedImage = ImageIO.read(barcodeBean.getCardBarcode(printedCard));
Image barCodeImage = new Image(pdf, convertBufferedImageToPng(barCodeBufferedImage), ImageType.PNG);
barCodeImage.setPosition(objectData.getX(), objectData.getY());
barCodeImage.scaleBy(0.7);
barCodeImage.drawOn(page);
}
}
*/
//return ret;
return null;
double meter2inchRatio = 1d / 0.0254d;
int dpi = 300;
int dim = (int) (dpi * meter2inchRatio) + 1;
*/
return ret;
}
private ByteArrayInputStream convertBufferedImageToPng(BufferedImage img)
......
......@@ -25,12 +25,12 @@ import fi.codecrew.moya.util.MailMessage;
* Message-Driven Bean implementation class for: MailMessageBean
*
*/
@MessageDriven(mappedName = "jms/moyaMailQueue",
/*@MessageDriven(mappedName = "jms/moyaMailQueue",
activationConfig = {
@ActivationConfigProperty(
propertyName = "destinationType",
propertyValue = "javax.jms.Queue")
})
})*/
public class MailMessageBean implements MessageListener {
@Resource(name = "mail/moya")
......
......@@ -168,6 +168,7 @@ public class MenuBean implements MenuBeanLocal {
MenuNavigation adminuser = adminmenu.addPage(null, null);
adminuser.setKey("topnavi.usermgmt");
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/overview"), UserPermission.VIEW_ALL).setVisible(false);;
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/sendPicture"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL).setVisible(false);
......@@ -192,6 +193,8 @@ public class MenuBean implements MenuBeanLocal {
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/editCardTextData"), UserPermission.WRITE_ROLES).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplateData"), UserPermission.READ_ROLES).setVisible(false);
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);
......
......@@ -466,7 +466,7 @@ public class UserBean implements UserBeanLocal {
return true;
}
public PrintedCard rejectPrintedCard(PrintedCard card) {
public PrintedCard rejectPrintedCard(PrintedCard card, MailMessage mail) {
if(card != null) {
......@@ -474,8 +474,6 @@ public class UserBean implements UserBeanLocal {
card = cardTemplateBean.saveCard(card);
logger.info("rejectPrintedCard(): Rejected card {}, state {}", card, card.getCardState() );
MailMessage mail = new MailMessage();
User user = null;
if(card.getUser() != null && card.getUser().getUser() != null)
user = card.getUser().getUser();
......
......@@ -18,6 +18,7 @@ import fi.codecrew.moya.model.TournamentGame;
import fi.codecrew.moya.model.User;
import fi.codecrew.moya.model.UserApproval;
import fi.codecrew.moya.model.UserImage;
import fi.codecrew.moya.util.MailMessage;
import fi.codecrew.moya.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchQuery;
import fi.codecrew.moya.utilities.SearchResult;
......@@ -99,7 +100,7 @@ public interface UserBeanLocal {
boolean initPasswordResetForEmail(String email, String url);
PrintedCard rejectPrintedCard(PrintedCard card);
PrintedCard rejectPrintedCard(PrintedCard card, MailMessage mail);
boolean initPasswordResetForUsername(String username, String url);
......
package fi.codecrew.moya.model;
import java.awt.Color;
import java.awt.Font;
import java.math.BigDecimal;
......@@ -55,6 +56,7 @@ public class CardTextData extends GenericEntity{
private String fontName;
@Column(name = "font_style", nullable = false)
@Enumerated(EnumType.STRING)
private CardTextStyle fontStyle;
@Column(name = "text", nullable = true)
......@@ -68,6 +70,12 @@ public class CardTextData extends GenericEntity{
@JoinColumn(nullable = false, name = "card_templates_id")
private CardTemplate cardTemplate;
public boolean isTypeStatic() {
if(this.textDataType == CardTextDataType.STATIC)
return true;
return false;
}
public void setTextDataType(CardTextDataType field) {
this.textDataType = field;
}
......@@ -207,4 +215,24 @@ public class CardTextData extends GenericEntity{
this.fontColorG = g;
this.fontColorB = b;
}
public String getColorHexCode() {
String r = Integer.toHexString(fontColorR);
String g = Integer.toHexString(fontColorG);
String b = Integer.toHexString(fontColorB);
return r + g + b;
}
public void setColorHexCode(String colorHexCode) {
Color color = null;
try {
color = Color.decode("#"+colorHexCode);
fontColorR = color.getRed();
fontColorG = color.getGreen();
fontColorB = color.getBlue();
}catch(Exception ex) {
}
}
}
package fi.codecrew.moya.enums;
public enum CardTemplateDataType {
UNKNOWN,
TEXT_DATA,
OBJECT_DATA;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
......@@ -8,13 +8,13 @@
<ui:define name="content">
<f:metadata>
<f:viewParam name="textdataid" value="#{cardTemplateDataEditView.cardTextDataId}" />
<f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCardTextData}" />
<!-- <f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCardTextData}" /> -->
<f:viewParam name="objectdataid" value="#{cardTemplateDataEditView.cardObjectDataId}" />
<f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCardObjectData}" />
<!-- <f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCardObjectData}" /> -->
<f:viewParam name="createobjecttype" value="#{cardTemplateDataEditView.createObjectType}" />
<f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCreateObjectType}" />
<!-- <f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCreateObjectType}" /> -->
<f:viewParam name="templateid" value="#{cardTemplateDataEditView.templateId}" />
<f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCardTemplate}" />
<f:event type="preRenderView" listener="#{cardTemplateDataEditView.initView()}" />
</f:metadata>
<h:form id="cardTemplateData">
<h:panelGrid columns="3">
......@@ -25,15 +25,25 @@
-->
<h:outputLabel for="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.type']}:" />
<h:outputLabel for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.type']}:" />
<p:selectOneMenu id="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.textDataType}">
<f:selectItems var="textDataType" itemLabel="#{i18n['cardTextData.type.#{textDataType}']}" itemValue="#{cardTemplateDataEditView.cardTextDataTypes}" />
<p:ajax event="change" update="staticTextPanel"/>
<f:selectItems var="textDataType" itemLabel="#{cardTemplateDataEditView.localisedLabel('cardTextData.type.', textDataType)}" value="#{cardTemplateDataEditView.cardTextDataTypes}"/>
</p:selectOneMenu>
<h:message for="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
</h:panelGrid>
<p:panel id="staticTextPanel" collapsed="#{(empty cardTemplateDataEditView.cardTextData) or !cardTemplateDataEditView.cardTextData.typeStatic}" style="border:0px">
<h:panelGrid columns = "3" rendered="#{cardTemplateDataEditView.cardTextData.typeStatic}">
<h:outputText for="staticText" rendered="#{cardTemplateDataEditView.cardTextData.typeStatic}" value="#{i18n['cardTextData.text']}"/>
<h:inputText id="staticText" rendered="#{cardTemplateDataEditView.cardTextData.typeStatic}" value="#{cardTemplateDataEditView.cardTextData.text}"/>
<h:message for="staticText" rendered="#{cardTemplateDataEditView.cardTextData.typeStatic}" />
</h:panelGrid>
</p:panel>
<h:panelGrid columns="3">
<h:outputLabel for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.type']}:" />
<p:selectOneMenu id="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.objectDataType}">
<f:selectItems var="objectDataType" itemLabel="#{i18n['cardObjectData.type.#{objectDataType}']}" itemValue="#{cardTemplateDataEditView.cardObjectDataTypes}" />
<f:selectItems var="objectDataType" itemLabel="#{cardTemplateDataEditView.localisedLabel('cardObjectData.type.', objectDataType)}" value="#{cardTemplateDataEditView.cardObjectDataTypes}" />
</p:selectOneMenu>
<h:message for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
......@@ -75,16 +85,21 @@
<h:message for="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:outputLabel for="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontstyle']}:" />
<f:selectItems var="fontStyle" itemLabel="#{i18n['cardTextData.fontstyle.#{fontStyle}']}" itemValue="#{cardTemplateDataEditView.fontStyles}" />
<p:selectOneMenu id="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.fontStyle}">
<f:selectItems var="fontStyle" itemLabel="#{cardTemplateDataEditView.localisedLabel('cardTextData.fontstyle.', fontStyle)}" value="#{cardTemplateDataEditView.fontStyles}"/>
</p:selectOneMenu>
<h:message for="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:outputLabel for="fontAlignmentTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontalignment']}:" />
<p:selectOneMenu id="fontAlignmentTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.textAlignment}">
<f:selectItems var="fontAlignment" itemLabel="#{i18n['cardTextData.fontalignment.#{fontAlignment}']}" itemValue="#{cardTemplateDataEditView.textAlignments}" />
</p:selectOneMenu>
<h:outputLabel for="textAlignmentTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.textalignment']}:" />
<p:selectOneMenu id="textAlignmentTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.textAlignment}">
<f:selectItems var="textAlignment" itemLabel="#{cardTemplateDataEditView.localisedLabel('cardTextData.textalignment.', textAlignment)}" value="#{cardTemplateDataEditView.textAlignments}"/>
</p:selectOneMenu>
<h:message for="fontAlignmentTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:outputLabel for="fontColorTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontcolor']}:" />
<p:colorPicker id="fontColorTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.colorHexCode}" />
</h:panelGrid>
<h:commandButton rendered="#{!empty cardTemplateDataEditView.cardTextData}" action="#{cardTemplateDataEditView.saveTextData()}" value="#{i18n['cardTextData.save']}" />
......
......@@ -87,7 +87,7 @@
<h:commandButton value="#{i18n['usercart.downloadExport']}">
<p:fileDownload value="#{userCartView.userExport}" />
</h:commandButton>
<h:commandButton action="#{userCartView.showOverview(i18n['rejectcard.mailSubject'], i18n['rejectcard.mailBody'])}" value="#{i18n['usercart.showoverview']}" />
<h:commandButton action="#{userCartView.showOverview()}" value="#{i18n['usercart.showoverview']}" />
<h:commandButton rendered="#{creditTransferView.transferPermissions}" action="#{userCartView.transferCredits}" value="#{i18n['usercart.transferCredits']}" />
......
......@@ -49,13 +49,13 @@
<h:column>
<h:link outcome="/useradmin/editCardTextData" value="#{i18n['cardTextData.create']}">
<f:param name="templateid" value="#{card.id}" />
<f:param name="createobjecttype" value="1" />
<f:param name="createobjecttype" value="#{cardView.textDataType}" />
</h:link>
</h:column>
<h:column>
<h:link outcome="/useradmin/editCardTextData" value="#{i18n['cardObjectData.create']}">
<f:param name="templateid" value="#{card.id}" />
<f:param name="createobjecttype" value="2" />
<f:param name="templateid" value="#{card.id}"/>
<f:param name="createobjecttype" value="#{cardView.objectDataType}" />
</h:link>
</h:column>
<h:column>
......
......@@ -6,7 +6,7 @@
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:event type="preRenderView" listener="#{userOverviewView.initView(#{i18n['rejectcard.mailSubject']}, #{i18n['rejectcard.mailBody']})}" />
<f:event type="preRenderView" listener="#{userOverviewView.initView()}" />
</f:metadata>
<ui:define name="content">
......@@ -14,19 +14,33 @@
<p:dataTable value="#{userOverviewView.userOverviewItems}" var="cartItem" binding="#{table}" id="cartOverviewTable">
<p:column style="#{cartItem.printedCard == null ? 'background:grey;' : ''}">
<h:panelGroup layout="block" id="schneider" style="background: red;" styleClass="cardstatus-#{cartItem.printedCard == null ? 'nonprintable' : cartItem.printedCard.cardState.toStringLower()}">
<ui:fragment rendered="#{!empty cartItem.eventUser.currentImage}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{cartItem.eventUser.currentImage.id}.img" alt="image" />
<ui:fragment rendered="#{(!empty cartItem.eventUser.currentImage) and (!empty cartItem.eventUser.currentImage.imageData)}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{cartItem.eventUser.currentImage.id}.img" alt="image" onclick="PF('cropDialog#{table.rowIndex}').show();"/>
</ui:fragment>
<p:dialog id="imageCropperDialog" for="image" widgetVar="cropDialog#{table.rowIndex}" width="300" position="left">
<h:panelGrid>
<p:imageCropper value="#{cartItem.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{cartItem.eventUser.currentImage.id}.img" />
<h:commandButton action="#{userOverviewView.crop}" value="#{i18n['user.cropImage']}" oncomplete="PF('cropDialog#{table.rowIndex}').hide()"/>
</h:panelGrid>
</p:dialog>
<ui:fragment rendered="#{empty cartItem.eventUser.currentImage}">
<h:outputText value="#{i18n['overview.noimage']}" />
</ui:fragment>
</h:panelGroup>
</p:column>
<p:column id="cardinfo" style="#{cartItem.printedCard == null ? 'background:grey;' : ''}">
<h2>
<h:outputText value="#{cartItem.eventUser.nick}" />
</h2>
<h:panelGrid columns="2" border="0">
<p:panel id="userInfo">
<h:panelGrid columns="2" border="0">
<h:outputText value="#{i18n['user.wholeName']}" />
<h:outputText value="#{cartItem.eventUser.firstnames} #{cartItem.eventUser.lastname}" />
......@@ -46,36 +60,50 @@
<!-- <button onclick="location.replace('#{request.contextPath}/useradmin/edit.jsf?userid=#{user.user.id}')">#{i18n['user.edit']}</button> -->
</h:panelGrid>
</p:panel>
</p:column>
<p:column styleClass="cardstatus-#{cartItem.printedCard == null ? 'nonprintable' : cartItem.printedCard.cardState.toStringLower()}">
<p:commandButton value="OK #{table.rowIndex}" actionListener="#{userOverviewView.acceptCard()}" ajax="true" onerror="location.reload(true);" update="schneider cardinfo">
<!-- <f:ajax execute="uov-items" render="@all"></f:ajax> -->
<p:commandButton value="OK #{table.rowIndex}" actionListener="#{userOverviewView.acceptCard()}" ajax="true" onerror="location.reload(true);" update=":form:cartOverviewTable:userInfo">
<!-- <f:ajax event="click" update="userInfo"></f:ajax>-->
</p:commandButton>
<p:commandButton id="Reject#{table.rowIndex}" value="Reject" onclick="PF('dialog#{table.rowIndex}').show();" type="button" onerror="location.reload(true);"/>
<p:dialog id="rejectDialog" widgetVar="dialog#{table.rowIndex}">
<h:selectManyCheckbox>
<f:selectItem value="#{cardItem.sendRejectionMail}" itemLabel="#{i18n['rejectcard.sendRejectionMail']}"></f:selectItem>
</h:selectManyCheckbox>
<h:panelGrid columns="2" border="0" >
<p:commandButton id="Reject#{table.rowIndex}" value="Reject" onclick="PF('dialog#{table.rowIndex}').show();" type="button" onerror="location.reload(true);" />
<p:dialog id="rejectDialog" widgetVar="dialog#{table.rowIndex}" width="600">
<h:selectBooleanCheckbox id="sendRejectionMail" value="#{cartItem.sendRejectionMail}">
<p:ajax event="change" update="sendMailPanel"/>
<h:outputLabel for="sendRejectionMail" value="#{i18n['rejectcard.sendRejectionMail']}" />
</h:selectBooleanCheckbox>
<h:outputText value="#{i18n['rejectcard.toAddr']}:" />
<h:inputText value="#{cardItem.rejectionMsgToAddr}"/>
<h:panelGrid id="sendMailPanel" columns="1">
<h:outputText value="#{i18n['rejectcard.toName']}:" />
<h:inputText value="#{cardItem.rejectionMsgToName}"/>
<h:panelGroup>
<h:outputText value="#{i18n['rejectcard.toAddr']}:" rendered="#{cartItem.sendRejectionMail}"/>
<h:inputText value="#{cartItem.rejectionMsgToAddr}" rendered="#{cartItem.sendRejectionMail}"/>
</h:panelGroup>
<h:outputText value="#{i18n['rejectcard.subject']}:" />
<h:inputText value="#{cardItem.rejectionMsgSubject}"/>
<h:panelGroup>
<h:outputText value="#{i18n['rejectcard.toName']}:" rendered="#{cartItem.sendRejectionMail}"/>
<h:inputText value="#{cartItem.rejectionMsgToName}" rendered="#{cartItem.sendRejectionMail}"/>
</h:panelGroup>
<h:outputText value="#{i18n['rejectcard.body']}:" />
<h:inputText value="#{cardItem.rejectionMsgBody}" />
<p:inputTextarea cols="2" value="#{cardItem.rejectionMsg}"/>
<br />
</h:panelGrid>
<p:commandButton oncomplete="PF('dialog#{table.rowIndex}').hide()" actionListener="#{userOverviewView.rejectCard()}" value="Apply" ajax="true" onerror="location.reload(true);"/>
<h:panelGroup>
<h:outputText value="#{i18n['rejectcard.subject']}:" rendered="#{cartItem.sendRejectionMail}"/>
<h:inputText value="#{cartItem.rejectionMsgSubject}" rendered="#{cartItem.sendRejectionMail}"/>
</h:panelGroup>
<h:panelGroup>
<h:outputText value="#{i18n['rejectcard.body']}:" rendered="#{cartItem.sendRejectionMail}"/>
<h:outputText value="" rendered="#{cartItem.sendRejectionMail}"/>
</h:panelGroup>
<p:inputTextarea value="#{cartItem.rejectionMsgBody}" rendered="#{cartItem.sendRejectionMail}"/>
<h:panelGroup>
<p:commandButton rendered="#{cartItem.sendRejectionMail}" oncomplete="PF('dialog#{table.rowIndex}').hide()" actionListener="#{userOverviewView.rejectCard()}" value="#{i18n['rejectcard.sendAndReject']}" ajax="true" onerror="location.reload(true);" update=":form:cartOverviewTable:userInfo"/>
<p:commandButton rendered="#{!cartItem.sendRejectionMail}" oncomplete="PF('dialog#{table.rowIndex}').hide()" actionListener="#{userOverviewView.rejectCard()}" value="#{i18n['rejectcard.reject']}" ajax="true" onerror="location.reload(true);" update=":form:cartOverviewTable:userInfo"/>
<p:commandButton onclick="PF('dialog#{table.rowIndex}').hide()" type="button" value="Cancel" onerror="location.reload(true);"/>
</h:panelGroup>
</h:panelGrid>
</p:dialog>
<!--<p:commandButton id="Reject" value="Reject" onclick="#{userOverviewView.rejectCard()}" type="button" onerror="location.reload(true);" update="schneider cardinfo"/>-->
......
......@@ -224,15 +224,16 @@ cardTextData.y = Y coordinate
cardTextData.size = Size of text (px)
cardTextData.zindex = Z index
cardTextData.fontname = Font name
cardTextData.fontcolor = Font color
cardTextData.fontstyle = Font style
cardTextData.fontstyle.PLAIN = Plain
cardTextData.fontstyle.BOLD = Bold
cardTextData.fontstyle.ITALIC = Italic
cardTextData.fontstyle.BOLDITALIC = Bold and Italic
cardTextData.fontalignment = Font alignment
cardTextData.fontalignment.LEFT = Left
cardTextData.fontalignment.CENTER = Center
cardTextData.fontalignment.RIGHT = Right
cardTextData.textalignment = Font alignment
cardTextData.textalignment.LEFT = Left
cardTextData.textalignment.CENTER = Center
cardTextData.textalignment.RIGHT = Right
cardTextData.text = Static text
cardTextData.type = Type
cardTextData.type.UNKNOWN = Unknown
......@@ -244,6 +245,7 @@ cardTextData.type.STATIC = Static
cardTextData.type.AGE = Age
cardTextData.type.ROLE = Role
cart.item = Item
cart.item_quantity = Quantity
cart.item_total = Total
......@@ -792,6 +794,9 @@ poll.save = Send answers
print = Print
printedCard.template = Template
printedCard.cardState = Card state
product.barcode = Barcode
product.billed = Billed
product.boughtTotal = Products billed
......@@ -867,12 +872,14 @@ readerview.cards = Card ( printcount )
registerleaflet.title = Register leaflet
rejectcard.mailSubject = Profile picture rejected
rejectcard.mailBody = {0} -tapahtuman profiiliisi sy\u00E4tetty kuva on hyl\u00E4tty soveltumattomana. Sy\u00E4t\u00E4 uusi kuva v\u00E4litt\u00E4m\u00E4sti. Kuvan saat asetettua profiili-sivulta. Hyv\u00E4ksytt\u00E4v\u00E4ss\u00E4 kuvassa kasvosi n\u00E4kyvät selke\u00E4sti ja tunnistettavasti. \n\n
rejectcard.mailBody = Your profile picture for event {0} has been rejected. Please upload new picture as soon as possible. Picture is valid if your face is shown clearly and can be easily recognized. \n\n
rejectcard.toAddr = Email address
rejectcard.toName = Name
rejectcard.body = Body
rejectcard.subject = Subject
rejectcard.sendRejectionMail = Send mail
rejectcard.sendAndReject = Send and reject
rejectcard.reject = Reject
resetMail.body = You can change a forgotten password by inserting your username or email address to the field below. A link where you can change the password will be sent to the email address associated to that.
resetMail.email = Email address
......
......@@ -231,10 +231,10 @@ cardTextData.fontstyle.PLAIN = Ei tyylittely
cardTextData.fontstyle.BOLD = Bold
cardTextData.fontstyle.ITALIC = Italic
cardTextData.fontstyle.BOLDITALIC = Bold ja Italic
cardTextData.fontalignment = Fontin sijoittelu
cardTextData.fontalignment.LEFT = Vasen
cardTextData.fontalignment.CENTER = Keskell
cardTextData.fontalignment.RIGHT = Oikea
cardTextData.textalignment = Fontin sijoittelu
cardTextData.textalignment.LEFT = Vasen
cardTextData.textalignment.CENTER = Keskell
cardTextData.textalignment.RIGHT = Oikea
cardTextData.text = Kiinte teksti
cardTextData.type = Tyyppi
cardTextData.type.UNKNOWN = Tuntematon
......@@ -245,6 +245,7 @@ cardTextData.type.LASTNAME = Sukunimi
cardTextData.type.STATIC = Staattinen
cardTextData.type.AGE = Ik
cardTextData.type.ROLE = Rooli
cardTextData.fontcolor = Fontin vri
cart.item = Tuote
cart.item_quantity = M\u00E4\u00E4r\u00E4
......@@ -776,6 +777,9 @@ poll.save = L\u00E4het\u00E4 vastauksesi
print = Tulosta
printedCard.template = Kortin template
printedCard.cardState = Kortin tila
product.barcode = Viivakoodi
product.billed = Laskutettu
product.boughtTotal = Tuotteita laskutettu
......@@ -852,13 +856,15 @@ readerview.cards = Kortit ( tulostuslkm )
registerleaflet.title = Rekisteriseloste
rejectcard.mailSubject = Kuva hyltty
rejectcard.mailBody = {0} -tapahtuman profiiliisi sy\u00E4tetty kuva on hyl\u00E4tty soveltumattomana. Sy\u00E4t\u00E4 uusi kuva v\u00E4litt\u00E4m\u00E4sti. Kuvan saat asetettua profiili-sivulta. Hyv\u00E4ksytt\u00E4v\u00E4ss\u00E4 kuvassa kasvosi n\u00E4kyvt selke\u00E4sti ja tunnistettavasti. \n\n
rejectcard.mailSubject = {0} -tapahtuman profiilin kuva hyltty
rejectcard.mailBody = {0} -tapahtuman profiiliisi sy\u00F6tetty kuva on hyl\u00E4tty soveltumattomana. Sy\u00F6t\u00E4 uusi kuva v\u00E4litt\u00F6m\u00E4sti. Kuvan saat asetettua profiili-sivulta. Hyv\u00E4ksytt\u00E4v\u00E4ss\u00E4 kuvassa kasvosi n\u00E4kyvt selke\u00E4sti ja tunnistettavasti. \n\n
rejectcard.toAddr = Shkpostiosoite
rejectcard.toName = Nimi
rejectcard.body = Viestin sislt
rejectcard.subject = Viestin otsikko
rejectcard.sendRejectionMail = Lhet shkpostia
rejectcard.sendAndReject = Lhet ja hylk
rejectcard.reject = Hylk
resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi tai tunnukseen liitetyn s\u00E4hk\u00F6postiosoitteen allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan.
resetMail.email = S\u00E4hk\u00F6postiosoite
......
package fi.codecrew.moya.web.cdiview.card;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.enums.CardObjectDataType;
import fi.codecrew.moya.enums.CardTemplateDataType;
import fi.codecrew.moya.enums.CardTextAlignment;
import fi.codecrew.moya.enums.CardTextDataType;
import fi.codecrew.moya.enums.CardTextStyle;
......@@ -13,35 +21,68 @@ import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.user.UserView;
@Named
@ConversationScoped
public class CardTemplateDataEditView extends GenericCDIView {
private static final long serialVersionUID = -9115983838324313414L;
private static final Logger logger = LoggerFactory.getLogger(CardTemplateDataEditView.class);
private Integer templateId = 0;
private Integer cardTextDataId = 0;
private Integer cardObjectDataId = 0;
private Integer createObjectType = 0;
private CardTemplateDataType createObjectType = CardTemplateDataType.UNKNOWN;
private CardTemplate cardTemplate;
private CardTextData cardTextData;
private CardObjectData cardObjectData;
private CardObjectDataType[] cardObjectDataTypes = CardObjectDataType.values();
private CardTextDataType[] cardTextDataTypes = CardTextDataType.values();
private String fontColorHex;
private CardTextStyle[] fontStyles = CardTextStyle.values();
private CardTextAlignment[] fontAlignments = CardTextAlignment.values();
@EJB
private transient CardTemplateBeanLocal cfbean;
public void initView() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardTemplate == null) {
if(createObjectType != CardTemplateDataType.UNKNOWN && cardObjectDataId == 0 && cardTextDataId == 0) {
if(createObjectType == CardTemplateDataType.TEXT_DATA) {
setCardTextData(new CardTextData());
logger.info("create object is Text Data");
}
else if(createObjectType == CardTemplateDataType.OBJECT_DATA) {
setCardObjectData(new CardObjectData());
logger.info("create object is Object Data");
}
} else if(cardObjectDataId != 0){
setCardObjectData(cfbean.findObjectData(cardObjectDataId));
logger.info("CardObjectData {}", cardObjectData);
} else if(cardTextDataId != 0) {
setCardTextData(cfbean.findTextData(cardTextDataId));
logger.info("CardTextData {}", cardTextData);
}
setCardTemplate(cfbean.find(templateId));
logger.info("CardTemplate {}", cardTemplate);
if(cardTextData != null)
cardTextData.setCardTemplate(cardTemplate);
else if(cardObjectData != null)
cardObjectData.setCardTemplate(cardTemplate);
super.beginConversation();
}
}
}
public void initCardTextData() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
......@@ -103,16 +144,29 @@ public class CardTemplateDataEditView extends GenericCDIView {
public void initCreateObjectType() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(createObjectType == 0) {
/*
if(createObjectType != CardTemplateDataType.UNKNOWN) {
if(createObjectType == 1)
setCardTextData(new CardTextData());
else if(createObjectType == 2)
setCardObjectData(new CardObjectData());
super.beginConversation();
}
}*/
}
}
public String localisedLabel(String text, String type) {
return I18n.get(text + type);
}
public String getFontColorHex() {
return fontColorHex;
}
public void setFontColorHex(String fontColorHex) {
this.fontColorHex = fontColorHex;
}
public String saveTextData() {
//if(cardTextData.getMeta() == null)
// cardTextData.setMeta(Json.createObjectBuilder().build());
......@@ -157,11 +211,11 @@ public class CardTemplateDataEditView extends GenericCDIView {
this.cardObjectDataId = cardObjectDataId;
}
public Integer getCreateObjectType() {
public CardTemplateDataType getCreateObjectType() {
return createObjectType;
}
public void setCreateObjectType(Integer createObjectType) {
public void setCreateObjectType(CardTemplateDataType createObjectType) {
this.createObjectType = createObjectType;
}
......@@ -181,35 +235,20 @@ public class CardTemplateDataEditView extends GenericCDIView {
this.cardTemplate = cardTemplate;
}
public CardObjectDataType[] getCardObjectDataTypes() {
return cardObjectDataTypes;
public List<CardObjectDataType> getCardObjectDataTypes() {
return new ArrayList<CardObjectDataType>(Arrays.asList(CardObjectDataType.values()));
}
public void setCardObjectDataTypes(CardObjectDataType[] cardObjectDataTypes) {
this.cardObjectDataTypes = cardObjectDataTypes;
}
public CardTextDataType[] getCardTextDataTypes() {
return cardTextDataTypes;
}
public void setCardTextDataTypes(CardTextDataType[] cardTextDataTypes) {
this.cardTextDataTypes = cardTextDataTypes;
public List<CardTextDataType> getCardTextDataTypes() {
List<CardTextDataType> types = new ArrayList<CardTextDataType>(Arrays.asList(CardTextDataType.values()));
return types;
}
public CardTextStyle[] getFontStyles() {
return fontStyles;
}
public void setFontStyles(CardTextStyle[] fontStyles) {
this.fontStyles = fontStyles;
}
public CardTextAlignment[] getFontAlignments() {
return fontAlignments;
public List<CardTextStyle> getFontStyles() {
return new ArrayList<CardTextStyle>(Arrays.asList(CardTextStyle.values()));
}
public void setFontAlignments(CardTextAlignment[] fontAlignments) {
this.fontAlignments = fontAlignments;
public List<CardTextAlignment> getTextAlignments() {
return new ArrayList<CardTextAlignment>(Arrays.asList(CardTextAlignment.values()));
}
}
......@@ -38,28 +38,6 @@ public class CardTemplateDataView extends GenericCDIView {
@EJB
private transient CardTemplateBeanLocal cfbean;
public void initCardTextDatas() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardTextDatas == null) {
setCardTextDatas(cfbean.findCardTextDatas(cardTemplate));
super.beginConversation();
}
}
}
public void initCardObjectDatas() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardObjectDatas == null) {
setCardObjectDatas(cfbean.findCardObjectDatas(cardTemplate));
super.beginConversation();
}
}
}
public void initCardTemplate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
......
......@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.enums.CardTemplateDataType;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.EventUser;
......@@ -171,5 +172,12 @@ public class CardView extends GenericCDIView {
public void setTemplateImage(UploadedFile templateImage) {
this.templateImage = templateImage;
}
public CardTemplateDataType getTextDataType() {
return CardTemplateDataType.TEXT_DATA;
}
public CardTemplateDataType getObjectDataType() {
return CardTemplateDataType.OBJECT_DATA;
}
}
......@@ -154,8 +154,8 @@ public class UserCartView extends GenericCDIView {
return "/useradmin/list";
}
public String showOverview(String mailSubject, String mailBody) {
userOverviewView.initView(mailSubject, mailBody);
public String showOverview() {
userOverviewView.initView();
return "/useradmin/overview";
}
......
package fi.codecrew.moya.web.cdiview.user;
import java.io.IOException;
import java.util.ArrayList;
import javax.ejb.EJB;
......@@ -11,14 +12,14 @@ import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sun.xml.rpc.streaming.Event;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.UserImage;
import fi.codecrew.moya.util.MailMessage;
import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.helpers.UserOverviewItem;
......@@ -40,18 +41,12 @@ public class UserOverviewView extends GenericCDIView {
private static final Logger logger = LoggerFactory.getLogger(UserOverviewView.class);
public void initView(String rejectionSubject, String rejectionBody) {
public void initView() {
if (userOverviewItems == null) {
ArrayList<UserOverviewItem> ovlist = new ArrayList<UserOverviewItem>();
for (EventUser eu : getUserCartView().getUsercart()) {
PrintedCard pc = cardTemplateBean.checkPrintedCard(eu);
if(rejectionSubject == null)
rejectionSubject = "";
if(rejectionBody == null)
rejectionBody = "";
UserOverviewItem uoi = new UserOverviewItem(eu, pc, rejectionSubject, rejectionBody);
UserOverviewItem uoi = new UserOverviewItem(eu, pc, I18n.get("rejectcard.mailSubject"), I18n.get("rejectcard.mailBody"));
ovlist.add(uoi);
}
userOverviewItems = new ListDataModel<>(ovlist);
......@@ -66,6 +61,7 @@ public class UserOverviewView extends GenericCDIView {
public void rejectCard()
{
logger.info("rejectCard() start");
UserOverviewItem cardItem = null;
try {
cardItem = userOverviewItems.getRowData();
......@@ -80,7 +76,6 @@ public class UserOverviewView extends GenericCDIView {
if(card != null) {
MailMessage mail = null;
if(cardItem.isSendRejectionMail()) {
mail = new MailMessage();
......@@ -88,10 +83,10 @@ public class UserOverviewView extends GenericCDIView {
mail.setToName(cardItem.getRejectionMsgToName());
mail.setTo(card.getUser().getUser());
mail.setSubject(cardItem.getRejectionMsgSubject());
mail.setMessage(cardItem.getRejectionMsgBody() + "\r\n" + cardItem.getRejectionMsg());
mail.setMessage(cardItem.getRejectionMsgBody());
}
card = userBean.rejectPrintedCard(card);
card = userBean.rejectPrintedCard(card, mail);
cardItem.setPrintedCard(card);
logger.info("rejectCard(): Rejected card {}, state {}", card, card.getCardState() );
}
......@@ -111,6 +106,30 @@ public class UserOverviewView extends GenericCDIView {
logger.info("Accepted card: {}", cardItem.getPrintedCard());
}
public String crop()
{
UserOverviewItem cardItem = userOverviewItems.getRowData();
if (cardItem == null || cardItem.getCroppedImage() == null )
return null;
logger.info("Cropped image {}x{}", cardItem.getCroppedImage().getLeft(), cardItem.getCroppedImage().getTop());
logger.info("Cropped data bytesize {}, type {}", cardItem.getCroppedImage().getBytes().length, cardItem.getCroppedImage().getOriginalFilename());
try {
UserImage newImage =
userBean.saveCroppedImage(cardItem.getEventUser().getCurrentImage(),
cardItem.getCroppedImage().getLeft(), cardItem.getCroppedImage().getTop(),
cardItem.getCroppedImage().getWidth(), cardItem.getCroppedImage().getHeight());
cardItem.setEventUser(userBean.getEventUser(newImage.getUser(), false));
} catch (IOException e) {
logger.info("Error converting image", e);
super.addFaceMessage("user.errorConvertingImage");
}
return null;
}
public void setUserOverviewItems(ListDataModel<UserOverviewItem> userOverviewItems) {
this.userOverviewItems = userOverviewItems;
}
......
package fi.codecrew.moya.web.helpers;
import java.io.ByteArrayInputStream;
import javax.faces.event.ActionEvent;
import org.primefaces.model.CroppedImage;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
......@@ -13,7 +19,7 @@ public class UserOverviewItem {
private boolean sendRejectionMail;
private CroppedImage croppedImage;
private String rejectionMsg;
private String rejectionMsgSubject;
......@@ -21,11 +27,12 @@ public class UserOverviewItem {
private String rejectionMsgToAddr;
private String rejectionMsgToName;
public UserOverviewItem(EventUser eu, PrintedCard pc, String mailSubject, String mailBody) {
eventUser = eu;
printedCard = pc;
sendRejectionMail = false;
sendRejectionMail = true;
if(mailSubject != null)
this.rejectionMsgSubject = mailSubject;
......@@ -36,6 +43,9 @@ public class UserOverviewItem {
else
this.rejectionMsgBody = "";
if(this.rejectionMsgSubject.contains("{0}") && eventUser != null && eventUser.getEvent() != null)
this.rejectionMsgSubject = this.rejectionMsgSubject.replace("{0}", eventUser.getEvent().getName());
if(this.rejectionMsgBody.contains("{0}") && eventUser != null && eventUser.getEvent() != null)
this.rejectionMsgBody = this.rejectionMsgBody.replace("{0}", eventUser.getEvent().getName());
......@@ -43,6 +53,24 @@ public class UserOverviewItem {
this.rejectionMsgToName = eventUser.getWholeName();
}
public StreamedContent getStreamedContent() {
if(eventUser.getCurrentImage() != null && eventUser.getCurrentImage().getImageData() != null) {
String mime = eventUser.getCurrentImage().getMimeType();
if(mime == null || mime.equals(""))
mime = "image/jpg";
return new DefaultStreamedContent(new ByteArrayInputStream(eventUser.getCurrentImage().getImageData()), mime);
}
return null;
}
public CroppedImage getCroppedImage() {
return croppedImage;
}
public void setCroppedImage(CroppedImage croppedImage) {
this.croppedImage = croppedImage;
}
public void acceptCard(ActionEvent ae) {
printedCard.setCardState(CardState.VALIDATED);
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!