Commit 4ba6b779 by Liv Haapala

reject-button fixed and added email sending

Calculation of age fixed
Data for cardTemplate
1 parent 2afbe690
Showing with 1125 additions and 458 deletions
...@@ -60,7 +60,16 @@ public class BootstrapBean implements BootstrapBeanLocal { ...@@ -60,7 +60,16 @@ public class BootstrapBean implements BootstrapBeanLocal {
dbUpdates.add(new String[] { dbUpdates.add(new String[] {
"alter table compos add hidden boolean default false not null" "alter table compos add hidden boolean default false not null"
}); });
dbUpdates.add(new String[] {
"CREATE TABLE card_text_data (id SERIAL NOT NULL, font_name TEXT NOT NULL, font_style INTEGER NOT NULL, size INTEGER NOT NULL, text TEXT, text_alignment TEXT NOT NULL, card_text_data_type TEXT NOT NULL, x INTEGER NOT NULL, y INTEGER NOT NULL, z_index INTEGER NOT NULL, PRIMARY KEY (id));"
});
dbUpdates.add(new String[] {
"CREATE TABLE card_object_data (id SERIAL NOT NULL, card_object_data_type TEXT NOT NULL, size INTEGER NOT NULL, x INTEGER NOT NULL, y INTEGER NOT NULL, z_index INTEGER NOT NULL, PRIMARY KEY (id));"
});
dbUpdates.add(new String[] {
"ALTER TABLE card_text_data ADD COLUMN card_templates_id integer REFERENCES card_templates(id) DEFAULT null;",
"ALTER TABLE card_object_data ADD COLUMN card_templates_id integer REFERENCES card_templates(id) DEFAULT null;"
});
} }
@EJB @EJB
......
...@@ -21,12 +21,16 @@ import org.slf4j.LoggerFactory; ...@@ -21,12 +21,16 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.CardObjectDataFacade;
import fi.codecrew.moya.facade.CardTemplateFacade; import fi.codecrew.moya.facade.CardTemplateFacade;
import fi.codecrew.moya.facade.CardTextDataFacade;
import fi.codecrew.moya.facade.EventUserFacade; import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade; import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.LanEventPropertyFacade; import fi.codecrew.moya.facade.LanEventPropertyFacade;
import fi.codecrew.moya.facade.PrintedCardFacade; import fi.codecrew.moya.facade.PrintedCardFacade;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent; import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.LanEventProperty; import fi.codecrew.moya.model.LanEventProperty;
...@@ -75,6 +79,12 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -75,6 +79,12 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
@EJB @EJB
private GroupMembershipFacade gmFacade; private GroupMembershipFacade gmFacade;
@EJB
private CardTextDataFacade ctdFacade;
@EJB
private CardObjectDataFacade codFacade;
// @Override // @Override
// @RolesAllowed("USER_MANAGEMENT/WRITE") // @RolesAllowed("USER_MANAGEMENT/WRITE")
// public List<CardTemplate> findAll() { // public List<CardTemplate> findAll() {
...@@ -226,7 +236,19 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -226,7 +236,19 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
return cdFacade.merge(card); return cdFacade.merge(card);
} }
@RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override
public CardTextData save(CardTextData textData) {
return ctdFacade.merge(textData);
}
@RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override
public CardObjectData save(CardObjectData objectData) {
return codFacade.merge(objectData);
}
@Override @Override
public PrintedCard getCard(Integer id) { public PrintedCard getCard(Integer id) {
return printedcardfacade.find(id); return printedcardfacade.find(id);
......
...@@ -31,6 +31,7 @@ import javax.persistence.PersistenceContext; ...@@ -31,6 +31,7 @@ import javax.persistence.PersistenceContext;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.EventPermission; import fi.codecrew.moya.enums.apps.EventPermission;
import fi.codecrew.moya.enums.apps.SpecialPermission; import fi.codecrew.moya.enums.apps.SpecialPermission;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
...@@ -146,7 +147,9 @@ public class UserBean implements UserBeanLocal { ...@@ -146,7 +147,9 @@ public class UserBean implements UserBeanLocal {
private EventFacade eventfacade; private EventFacade eventfacade;
@EJB @EJB
private ProductFacade productFacade; private ProductFacade productFacade;
@EJB
private CardTemplateBeanLocal cardTemplateBean;
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL) @RolesAllowed(UserPermission.S_VIEW_ALL)
public List<EventUser> getUsers() { public List<EventUser> getUsers() {
...@@ -463,6 +466,51 @@ public class UserBean implements UserBeanLocal { ...@@ -463,6 +466,51 @@ public class UserBean implements UserBeanLocal {
return true; return true;
} }
public PrintedCard rejectPrintedCard(PrintedCard card, String msg) {
if(card != null) {
card.setCardState(CardState.REJECTED);
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();
LanEvent event = card.getEvent();
if(user != null && event != null) {
String info = "";
if(msg != null) {
info = msg;
}
mail.setTo(user);
mail.setSubject(I18n.get("rejectcard.mailSubject"));
mail.setMessage(I18n.get("rejectcard.mailBody", event.getName(), info));
logger.info("sending mail! user {}", new Object[] { user });
if(!utilbean.sendMail(mail)) {
logger.info("Sending mail failed");
} else
logger.info("Sending mail succeeded");
} else {
if(user == null)
logger.info("user is null");
if(event == null)
logger.info("event is null");
}
}
logger.info("returning card");
return card;
}
// @Override // @Override
// @RolesAllowed(UserPermission.S_VIEW_ALL) // @RolesAllowed(UserPermission.S_VIEW_ALL)
// public User findById(Integer id) { // public User findById(Integer id) {
......
package fi.codecrew.moya.facade;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate_;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.CardTemplate;
@Stateless
@LocalBean
public class CardObjectDataFacade extends IntegerPkGenericFacade<CardObjectData> {
//@EJB
//private EventBeanLocal eventbean;
public CardObjectDataFacade() {
super(CardObjectData.class);
}
/*
public List<CardTextData> findAll()
{*/
/*
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<CardTemplate> cq = cb.createQuery(CardTextData.class);
Root<CardTextData> root = cq.from(CardTextData.class);
cq.where(cb.equal(root.get(CardTemplate_.event), eventbean.getCurrentEvent()));
return getEm().createQuery(cq).getResultList();
*/
//}
}
package fi.codecrew.moya.facade;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.codecrew.moya.model.CardTemplate_;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.CardTemplate;
@Stateless
@LocalBean
public class CardTextDataFacade extends IntegerPkGenericFacade<CardTextData> {
//@EJB
//private EventBeanLocal eventbean;
public CardTextDataFacade() {
super(CardTextData.class);
}
/*
public List<CardTextData> findAll()
{*/
/*
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<CardTemplate> cq = cb.createQuery(CardTextData.class);
Root<CardTextData> root = cq.from(CardTextData.class);
cq.where(cb.equal(root.get(CardTemplate_.event), eventbean.getCurrentEvent()));
return getEm().createQuery(cq).getResultList();
*/
//}
}
...@@ -6,7 +6,9 @@ import java.util.List; ...@@ -6,7 +6,9 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.ReaderEvent; import fi.codecrew.moya.model.ReaderEvent;
...@@ -26,6 +28,10 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> { ...@@ -26,6 +28,10 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
List<PrintedCard> findActiveCards(); List<PrintedCard> findActiveCards();
CardTemplate save(CardTemplate card); CardTemplate save(CardTemplate card);
CardTextData save(CardTextData textData);
CardObjectData save(CardObjectData objectData);
PrintedCard getCard(Integer idParam); PrintedCard getCard(Integer idParam);
......
...@@ -12,6 +12,7 @@ import fi.codecrew.moya.model.Feedback; ...@@ -12,6 +12,7 @@ import fi.codecrew.moya.model.Feedback;
import fi.codecrew.moya.model.GameID; import fi.codecrew.moya.model.GameID;
import fi.codecrew.moya.model.GroupMembership; import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.LanEvent; import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.Role; import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.TournamentGame; import fi.codecrew.moya.model.TournamentGame;
import fi.codecrew.moya.model.User; import fi.codecrew.moya.model.User;
...@@ -98,6 +99,8 @@ public interface UserBeanLocal { ...@@ -98,6 +99,8 @@ public interface UserBeanLocal {
boolean initPasswordResetForEmail(String email, String url); boolean initPasswordResetForEmail(String email, String url);
PrintedCard rejectPrintedCard(PrintedCard card, String msg);
boolean initPasswordResetForUsername(String username, String url); boolean initPasswordResetForUsername(String username, String url);
void addGameID(TournamentGame game, String gameid); void addGameID(TournamentGame game, String gameid);
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<property name="eclipselink.ddl-generation" value="create-tables" /> <property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.cache.size.default" value="16384" /> <property name="eclipselink.cache.size.default" value="16384" />
<property name="eclipselink.ddl-generation.output-mode" <property name="eclipselink.ddl-generation.output-mode"
value="database" /> value="sql-script" />
<property name="eclipselink.logging.logger" value="ServerLogger" /> <property name="eclipselink.logging.logger" value="ServerLogger" />
<property name="eclipselink.jdbc.uppercase-columns" value="false" /> <property name="eclipselink.jdbc.uppercase-columns" value="false" />
<property name="eclipselink.target-database" <property name="eclipselink.target-database"
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
value="org.ancoron.postgresql.jpa.eclipselink.ConverterInitializer" /> value="org.ancoron.postgresql.jpa.eclipselink.ConverterInitializer" />
<property name="eclipselink.descriptor.customizer" <property name="eclipselink.descriptor.customizer"
value="fi.codecrew.moya.database.MoyaDescriptorCustomizer" /> value="fi.codecrew.moya.database.MoyaDescriptorCustomizer" />
<property name="eclipselink.create-ddl-jdbc-file-name" value="moya-database-schema.sql"/>
</properties> </properties>
</persistence-unit> </persistence-unit>
......
package fi.codecrew.moya.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
import fi.codecrew.moya.enums.CardObjectDataType;
@Entity
@Table(name = "card_object_data")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class CardObjectData extends GenericEntity {
private static final long serialVersionUID = 307145499023412008L;
@Column(name = "card_object_data_type", nullable = false)
@Enumerated(EnumType.STRING)
private CardObjectDataType objectDataType;
@Column(name = "x", nullable = false)
private int x;
@Column(name = "y", nullable = false)
private int y;
@Column(name = "size", nullable = false)
private int size;
@Column(name = "z_index", nullable = false)
private int zIndex;
@ManyToOne
@JoinColumn(nullable = false, name = "card_templates_id")
private CardTemplate cardTemplate;
public void setObjectDataType(CardObjectDataType field) {
this.objectDataType = field;
}
public CardObjectDataType getObjectDataType() {
return this.objectDataType;
}
public void setX(int x) {
this.x = x;
}
public int getX() {
return this.x;
}
public void setY(int y) {
this.y = y;
}
public int getY() {
return this.y;
}
public void setSize(int size) {
this.size = size;
}
public int getSize() {
return this.size;
}
public void setZIndex(int z) {
this.zIndex = z;
}
public int getzIndex() {
return zIndex;
}
public void setzIndex(int zIndex) {
this.zIndex = zIndex;
}
public int getZIndex() {
return this.zIndex;
}
public void setCardTemplate(CardTemplate template) {
this.cardTemplate = template;
}
public CardTemplate getCardTemplate() {
return this.cardTemplate;
}
}
package fi.codecrew.moya.model;
import java.awt.Font;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
import fi.codecrew.moya.enums.CardTextAlignment;
import fi.codecrew.moya.enums.CardTextDataType;
@Entity
@Table(name = "card_text_data")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class CardTextData extends GenericEntity{
private static final long serialVersionUID = 307145499023412008L;
@Column(name="card_text_data_type", nullable=false)
@Enumerated(EnumType.STRING)
private CardTextDataType textDataType = CardTextDataType.UKNOWN;
@Column(name = "text_alignment", nullable = false)
@Enumerated(EnumType.STRING)
private CardTextAlignment textAlignment;
@Column(name = "x", nullable = false)
private int x;
@Column(name = "y", nullable = false)
private int y;
@Column(name = "size", nullable = false)
private int size;
@Column(name = "font_name", nullable = false)
private String fontName;
@Column(name = "font_style", nullable = false)
private int fontStyle;
@Column(name = "text", nullable = true)
private String text;
@Column(name = "z_index", nullable = false)
private int zIndex;
@ManyToOne
@JoinColumn(nullable = false, name = "card_templates_id")
private CardTemplate cardTemplate;
public void setTextDataType(CardTextDataType field) {
this.textDataType = field;
}
public CardTextDataType getTextDataType() {
return this.textDataType;
}
public void setX(int x) {
this.x = x;
}
public int getX() {
return this.x;
}
public void setY(int y) {
this.y = y;
}
public int getY() {
return this.y;
}
public void setSize(int size) {
this.size = size;
}
public int getSize() {
return this.size;
}
public void setFontName(String font) {
this.fontName = font;
}
public String getFontName() {
return this.fontName;
}
public void setFontStyle(int fontStyle) {
this.fontStyle = fontStyle;
}
public int getFontStyle() {
return this.fontStyle;
}
public void setText(String text) {
this.text = text;
}
public String getText() {
return this.text;
}
public int getzIndex() {
return zIndex;
}
public void setzIndex(int zIndex) {
this.zIndex = zIndex;
}
public CardTextAlignment getTextAlignment() {
return textAlignment;
}
public void setTextAlignment(CardTextAlignment textAlignment) {
this.textAlignment = textAlignment;
}
public void setFont(Font font) {
//this.font = font;
this.fontName = font.getFontName();
this.size = font.getSize();
this.fontStyle = font.getStyle();
}
public Font getFont() {
return new Font(this.fontName, this.fontStyle, this.size);
}
public void setCardTemplate(CardTemplate template) {
this.cardTemplate = template;
}
public CardTemplate getCardTemplate() {
return this.cardTemplate;
}
}
package fi.codecrew.moya.model; package fi.codecrew.moya.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.Time;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
...@@ -26,13 +25,9 @@ import javax.validation.constraints.NotNull; ...@@ -26,13 +25,9 @@ import javax.validation.constraints.NotNull;
import org.eclipse.persistence.annotations.OptimisticLocking; import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType; import org.eclipse.persistence.annotations.OptimisticLockingType;
import org.eclipse.persistence.annotations.PrivateOwned; import org.eclipse.persistence.annotations.PrivateOwned;
import org.eclipse.persistence.annotations.TimeOfDay;
import org.eclipse.persistence.jpa.jpql.parser.DateTime;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.sun.xml.ws.commons.xmlutil.Converter;
import fi.codecrew.moya.enums.Gender; import fi.codecrew.moya.enums.Gender;
import fi.codecrew.moya.utilities.PasswordFunctions; import fi.codecrew.moya.utilities.PasswordFunctions;
...@@ -43,375 +38,379 @@ import fi.codecrew.moya.utilities.PasswordFunctions; ...@@ -43,375 +38,379 @@ import fi.codecrew.moya.utilities.PasswordFunctions;
@Table(name = "users") @Table(name = "users")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS) @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class User extends GenericEntity implements IUser { public class User extends GenericEntity implements IUser {
public static final String ANONYMOUS_LOGINNAME = "anonymous";
private static final long serialVersionUID = -1632200627103418206L;
@Column(name = "created", nullable = false, updatable = false) // private static final Logger logger = LoggerFactory.getLogger(User.class);
@Temporal(TemporalType.TIMESTAMP)
private Calendar created = Calendar.getInstance(); public static final String ANONYMOUS_LOGINNAME = "anonymous";
private static final long serialVersionUID = -1632200627103418206L;
@Column(name = "created", nullable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private Calendar created = Calendar.getInstance();
@NotNull
@Column(name = "login", unique = true, nullable = false)
private String login = "";
@Column(name = "active", nullable = false, columnDefinition = "boolean default true")
private boolean active = true;
@Column(name = "password")
private String password;
@Column(name = "lastname")
private String lastname = "";
@Column(name = "firstnames")
private String firstnames = "";
@Column(name = "birthday")
@Temporal(TemporalType.TIMESTAMP)
private Date birthday;
@Column(name = "nick")
private String nick = "";
@Column(name = "email")
private String email = "";
@NotNull @Column(name = "address")
@Column(name = "login", unique = true, nullable = false) private String address = "";
private String login = "";
@Column(name = "active", nullable = false, columnDefinition = "boolean default true") @Column(name = "zip")
private boolean active = true; private String zip = "";
@Column(name = "password") @Column(name = "postal_town")
private String password; private String postalTown = "";
@Column(name = "lastname") @Column(name = "town")
private String lastname = ""; private String town = "";
@Column(name = "firstnames") @Column(name = "phone")
private String firstnames = ""; private String phone = "";
@Column(name = "birthday") @OneToOne(cascade = CascadeType.ALL)
@Temporal(TemporalType.TIMESTAMP) @JoinColumn(name = "current_image_id", referencedColumnName = "id")
private Date birthday; private UserImage currentImage;
@Column(name = "nick") @Enumerated(EnumType.STRING)
private String nick = ""; @Column(name = "gender", nullable = false)
private Gender gender = Gender.UNDEFINED;
@Column(name = "email")
private String email = ""; /**
* hash generated for password reset..
@Column(name = "address") */
private String address = ""; @Column(name = "confirm_hash")
private String confirmHash;
@Column(name = "zip")
private String zip = ""; @Column(name = "confirm_time")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "postal_town") private Calendar confirmTime;
private String postalTown = "";
@Column(name = "superadmin", updatable = false)
@Column(name = "town") private boolean superadmin = false;
private String town = "";
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
@Column(name = "phone") @OrderBy
private String phone = ""; @PrivateOwned
private List<UserImage> userImageList;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "current_image_id", referencedColumnName = "id") @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
private UserImage currentImage; @OrderBy()
private List<LicenseCode> licenseCodes;
@Enumerated(EnumType.STRING)
@Column(name = "gender", nullable = false) @Transient
private Gender gender = Gender.UNDEFINED; private static final Logger logger = LoggerFactory.getLogger(User.class);
/** @Override
* hash generated for password reset.. public Calendar getCreated() {
*/ return created;
@Column(name = "confirm_hash") }
private String confirmHash;
@Override
@Column(name = "confirm_time") public void setCreated(Calendar created) {
@Temporal(TemporalType.TIMESTAMP) this.created = created;
private Calendar confirmTime; }
@Column(name = "superadmin", updatable = false) @Override
private boolean superadmin = false; public boolean getActive() {
return active;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL) }
@OrderBy
@PrivateOwned @Override
private List<UserImage> userImageList; public void setActive(boolean active) {
this.active = active;
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY) }
@OrderBy()
private List<LicenseCode> licenseCodes; @Override
public String getPassword() {
@Transient logger.warn("Directly reading raw User password");
private static final Logger logger = LoggerFactory.getLogger(User.class); return password;
}
@Override
public Calendar getCreated() { @Override
return created; public void setPassword(String password) {
} logger.warn("Directly settings raw User password");
this.password = password;
@Override }
public void setCreated(Calendar created) {
this.created = created; @Override
} public String getWholeName() {
String ret = new StringBuilder().append(firstnames).append(" ").append(lastname).toString().trim();
@Override if (ret.isEmpty()) {
public boolean getActive() { ret = login;
return active; }
} return ret;
}
@Override
public void setActive(boolean active) { @Override
this.active = active; public String getLastname() {
} return lastname;
}
@Override
public String getPassword() { @Override
logger.warn("Directly reading raw User password"); public void setLastname(String lastname) {
return password; this.lastname = lastname;
} }
@Override @Override
public void setPassword(String password) { public String getFirstnames() {
logger.warn("Directly settings raw User password"); return firstnames;
this.password = password; }
}
@Override
@Override public void setFirstnames(String firstnames) {
public String getWholeName() { this.firstnames = firstnames;
String ret = new StringBuilder().append(firstnames).append(" ").append(lastname).toString().trim(); }
if (ret.isEmpty()) {
ret = login; @Override
} public Date getBirthday() {
return ret; return birthday;
} }
@Override @Override
public String getLastname() { public void setBirthday(Date birthday) {
return lastname; this.birthday = birthday;
} }
@Override @Override
public void setLastname(String lastname) { public String getNick() {
this.lastname = lastname; return nick;
} }
@Override @Override
public String getFirstnames() { public void setNick(String nick) {
return firstnames; this.nick = nick;
} }
@Override @Override
public void setFirstnames(String firstnames) { public String getEmail() {
this.firstnames = firstnames; return email;
} }
@Override @Override
public Date getBirthday() { public void setEmail(String email) {
return birthday; this.email = email;
} }
@Override @Override
public void setBirthday(Date birthday) { public String getAddress() {
this.birthday = birthday; return address;
} }
@Override @Override
public String getNick() { public void setAddress(String address) {
return nick; this.address = address;
} }
@Override @Override
public void setNick(String nick) { public String getZip() {
this.nick = nick; return zip;
} }
@Override @Override
public String getEmail() { public void setZip(String zip) {
return email; this.zip = zip;
} }
@Override @Override
public void setEmail(String email) { public String getTown() {
this.email = email; return town;
} }
@Override @Override
public String getAddress() { public void setTown(String town) {
return address; this.town = town;
} }
@Override @Override
public void setAddress(String address) { public String getPhone() {
this.address = address; return phone;
} }
@Override @Override
public String getZip() { public void setPhone(String phone) {
return zip; this.phone = phone;
} }
@Override @Override
public void setZip(String zip) { public String getLogin() {
this.zip = zip; return login;
} }
@Override @Override
public String getTown() { public void setLogin(String login) {
return town; // Do not allow anonymous userchange
} if (!isAnonymous()) {
if (login != null) {
@Override this.login = login.trim().toLowerCase();
public void setTown(String town) { } else {
this.town = town; login = null;
} }
}
@Override
public String getPhone() { }
return phone;
} @Override
public List<UserImage> getUserImageList() {
@Override return userImageList;
public void setPhone(String phone) { }
this.phone = phone;
} @Override
public void setUserImageList(List<UserImage> userImageList) {
@Override this.userImageList = userImageList;
public String getLogin() { }
return login;
} @Override
public String getConfirmHash() {
@Override return confirmHash;
public void setLogin(String login) { }
// Do not allow anonymous userchange
if (!isAnonymous()) { @Override
if (login != null) { public void setConfirmHash(String confirmHash) {
this.login = login.trim().toLowerCase(); this.confirmHash = confirmHash;
} else { }
login = null;
} @Override
} public Calendar getConfirmTime() {
return confirmTime;
} }
@Override @Override
public List<UserImage> getUserImageList() { public void setConfirmTime(Calendar confirmTime) {
return userImageList; this.confirmTime = confirmTime;
} }
@Override @Override
public void setUserImageList(List<UserImage> userImageList) { public void resetPassword(String password) {
this.userImageList = userImageList; String newEncryptedPassword = PasswordFunctions.getEncryptedPassword(password);
} this.password = newEncryptedPassword; // Bypass setter
}
@Override
public String getConfirmHash() { @Override
return confirmHash; public boolean checkPassword(String plainPassword) {
} boolean matches = PasswordFunctions.checkPlainPassword(plainPassword, this.password);
return matches;
@Override }
public void setConfirmHash(String confirmHash) {
this.confirmHash = confirmHash; @Override
} public boolean isSuperadmin() {
return superadmin;
@Override }
public Calendar getConfirmTime() {
return confirmTime; @Override
} public void setPostalTown(String postalTown) {
this.postalTown = postalTown;
@Override }
public void setConfirmTime(Calendar confirmTime) {
this.confirmTime = confirmTime; @Override
} public String getPostalTown() {
return postalTown;
@Override }
public void resetPassword(String password) {
String newEncryptedPassword = PasswordFunctions.getEncryptedPassword(password); @Override
this.password = newEncryptedPassword; // Bypass setter public void setGender(Gender gender) {
} this.gender = gender;
}
@Override
public boolean checkPassword(String plainPassword) { @Override
boolean matches = PasswordFunctions.checkPlainPassword(plainPassword, this.password); public Gender getGender() {
return matches; return gender;
} }
@Override @Override
public boolean isSuperadmin() { public void setCurrentImage(UserImage currentImage) {
return superadmin; this.currentImage = currentImage;
} }
@Override @Override
public void setPostalTown(String postalTown) { public UserImage getCurrentImage() {
this.postalTown = postalTown; return currentImage;
} }
@Override @Transient
public String getPostalTown() { private Boolean isAnon;
return postalTown;
} @Override
public boolean isAnonymous() {
@Override if (isAnon == null) {
public void setGender(Gender gender) { isAnon = ANONYMOUS_LOGINNAME.equals(login);
this.gender = gender; }
} return isAnon;
}
@Override
public Gender getGender() { public List<LicenseCode> getLicenseCodes() {
return gender; if (licenseCodes == null)
} licenseCodes = new ArrayList<LicenseCode>();
@Override return licenseCodes;
public void setCurrentImage(UserImage currentImage) { }
this.currentImage = currentImage;
} public void setLicenseCodes(List<LicenseCode> codes) {
this.licenseCodes = codes;
@Override }
public UserImage getCurrentImage() {
return currentImage; public BigDecimal getAge() {
} logger.info("AgeWtf!");
System.out.print("getAge()\n");
@Transient BigDecimal age = new BigDecimal(0);
private Boolean isAnon; if (birthday != null) {
Calendar calBirthday = Calendar.getInstance();
@Override calBirthday.setTime(birthday);
public boolean isAnonymous() { Calendar calNow = Calendar.getInstance();
if (isAnon == null) { // Calendar calAge = Calendar.getInstance();
isAnon = ANONYMOUS_LOGINNAME.equals(login); // calAge.add(Calendar.YEAR, -calBirthday.YEAR);
}
return isAnon; int years = calNow.get(Calendar.YEAR) - calBirthday.get(Calendar.YEAR);
} int days = 0;
public List<LicenseCode> getLicenseCodes() { logger.debug("Years: " + years);
if (licenseCodes == null)
licenseCodes = new ArrayList<LicenseCode>(); if (calBirthday.get(Calendar.DAY_OF_YEAR) > calNow.get(Calendar.DAY_OF_YEAR)) {
years--;
return licenseCodes; days = 365 - (calBirthday.get(Calendar.DAY_OF_YEAR) - calNow.get(Calendar.DAY_OF_YEAR));
} } else {
days = calNow.get(Calendar.DAY_OF_YEAR) - calBirthday.get(Calendar.DAY_OF_YEAR);
public void setLicenseCodes(List<LicenseCode> codes) { }
this.licenseCodes = codes;
} BigDecimal decimalYears = new BigDecimal(years);
float fraction = (float) ((float) days / (float) 365);
public BigDecimal getAge() { BigDecimal decimalDays = new BigDecimal(fraction);
BigDecimal age = new BigDecimal(0); age = age.add(decimalYears);
if(birthday != null) { age = age.add(decimalDays);
Calendar calBirthday = Calendar.getInstance();
calBirthday.setTime(birthday); logger.info("Years: " + years);
Calendar calNow = Calendar.getInstance(); logger.info("Days: " + days);
logger.debug("Fraction of days: " + fraction);
int yearB = calBirthday.get(Calendar.YEAR); }
int yearNow = calNow.get(Calendar.YEAR);
return age;
int years = yearNow - yearB -1; }
int dayOfYearBirthDay = calBirthday.get(Calendar.DAY_OF_YEAR); public String getShortUserDescriptor() {
int dayOfYear = calNow.get(Calendar.DAY_OF_YEAR); StringBuilder sb = new StringBuilder();
int days = 0; sb.append(getNick()).append(" // ").append(getWholeName()).append(" // ").append(getEmail());
if(dayOfYearBirthDay > dayOfYear) { return sb.toString();
calBirthday.set(Calendar.YEAR, yearNow - 1); }
days = 365 - calBirthday.get(Calendar.DAY_OF_YEAR) + dayOfYear;
} else {
days = dayOfYear - dayOfYearBirthDay;
}
BigDecimal decimalYears = new BigDecimal(years);
float fraction = (float)((float)days/(float)365);
BigDecimal decimalDays = new BigDecimal(fraction);
age = age.add(decimalYears);
age = age.add(decimalDays);
//System.out.print("Years: " + years + "\n");
//System.out.print("Days: " + days + "\n");
//System.out.print("Fraction of days: " + fraction + "\n");
}
return age;
}
public String getShortUserDescriptor() {
StringBuilder sb = new StringBuilder();
sb.append(getNick()).append(" // ").append(getWholeName()).append(" // ").append(getEmail());
return sb.toString();
}
} }
...@@ -5,5 +5,6 @@ ...@@ -5,5 +5,6 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<property name="java-output-path" value="/MoyaTerminalWeb/build/classes"/> <property name="java-output-path" value="/MoyaTerminalWeb/build/classes"/>
<property name="context-root" value="moya-terminal-web"/> <property name="context-root" value="moya-terminal-web"/>
<property name="component.inclusion.patterns" value="WEB-INF/lib/javamelody-core*,WEB-INF/lib/primefaces*,**/*.xml,**/*.xhtml,**/*.properties,**/*.class,**/*.png,**/*.css,**/*.js,resources/*"/>
</wb-module> </wb-module>
</project-modules> </project-modules>
package fi.codecrew.moya.enums;
public enum CardObjectDataType {
UKNOWN,
PICTURE,
USERS_BARCODE,
CARDS_BARCODE;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
package fi.codecrew.moya.enums;
public enum CardTextAlignment {
LEFT,
CENTER,
RIGHT;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
package fi.codecrew.moya.enums;
public enum CardTextDataType {
UKNOWN,
NICK,
FIRSTNAME,
LASTNAME,
AGE,
ROLE;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
...@@ -11,6 +11,22 @@ ...@@ -11,6 +11,22 @@
<f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" /> <f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" />
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<h1>#{i18n['incomingflow.search']}</h1>
<h:form>
<h:panelGrid columns="2" >
<h:outputText value="#{i18n['incomingflow.multisearch']}" />
<h:outputText value="#{i18n['incomingflow.barcode']}" />
<p:autoComplete id="acsb" value="#{incomingView.searchMulti}" completeMethod="#{incomingView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
<p:autoComplete id="acs" value="#{incomingView.searchBarcode}" completeMethod="#{incomingView.matchBarcode}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
</h:panelGrid>
</h:form>
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h1>#{i18n['incomingflow.userdetails']}</h1> <h1>#{i18n['incomingflow.userdetails']}</h1>
<h:panelGrid id="cropper" columns="3"> <h:panelGrid id="cropper" columns="3">
...@@ -79,21 +95,7 @@ ...@@ -79,21 +95,7 @@
</p:dataTable> </p:dataTable>
</h:form> </h:form>
<h1>#{i18n['incomingflow.search']}</h1>
<h:form>
<h:panelGrid columns="2">
<h:outputText value="#{i18n['incomingflow.barcode']}" />
<h:outputText value="#{i18n['incomingflow.multisearch']}" />
<p:autoComplete id="acs" value="#{incomingView.searchBarcode}" completeMethod="#{incomingView.matchBarcode}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
<p:autoComplete id="acsb" value="#{incomingView.searchMulti}" completeMethod="#{incomingView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
</h:panelGrid>
</h:form>
</ui:define> </ui:define>
<ui:define name="sidebar"> <ui:define name="sidebar">
......
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
</h:form> </h:form>
<h:form> <h:form>
kluygy User #{userView.selectedUser} #{userView.selectedUser.user} #{userView.selectedUser.user.age}
<h:panelGroup> <h:panelGroup>
<table> <table>
<ui:fragment rendered="#{!cc.attrs.creating}"> <ui:fragment rendered="#{!cc.attrs.creating}">
......
<!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:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:event type="preRenderView" listener="#{cardView.initCardCreate}" />
</f:metadata>
<ui:define name="content">
<h:form id="cardTemplates">
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['cardTemplate.name']}:" />
<h:inputText value="#{cardView.cardTemplate.name}" />
<h:outputLabel value="#{i18n['cardTemplate.power']}:" />
<h:inputText value="#{cardView.cardTemplate.power}" size="4" />
</h:panelGrid>
<h:commandButton action="#{cardView.createTemplate()}" value="#{i18n['cardTemplate.create']}" />
</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:users="http://java.sun.com/jsf/composite/tools/user"
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="templateid" value="#{cardView.templateId}" />
<f:event type="preRenderView" listener="#{cardView.initCardTemplate}" />
</f:metadata>
<ui:define name="content">
<h:form id="cardTemplates">
<h:panelGrid columns="3">
<h:outputLabel for="id" value="#{i18n['cardTemplate.id']}:" />
<h:outputText id="id" value="#{cardView.cardTemplate.id}" />
<h:message for="id" />
<h:outputLabel for="name" value="#{i18n['cardTemplate.name']}:" />
<h:inputText id="name" value="#{cardView.cardTemplate.name}" />
<h:message for="name" />
<h:outputLabel for="power" value="#{i18n['cardTemplate.power']}:" />
<h:inputText id="power" value="#{cardView.cardTemplate.power}" size="4" />
<h:message for="power" />
<h:outputLabel for="roles" value="#{i18n['cardTemplate.roles']}" />
<h:selectManyCheckbox layout="pageDirection" value="#{cardView.cardTemplate.roles}" converter="#{roleConverter}" id="roles">
<f:selectItems var="role" itemLabel="#{role.name}" value="#{roleDataView.roles}" />
</h:selectManyCheckbox>
<h:message for="roles"></h:message>
</h:panelGrid>
<h:commandButton action="#{cardView.saveTemplate()}" value="#{i18n['cardTemplate.save']}" />
</h:form>
<h:form enctype="multipart/form-data">
<p:fileUpload value="#{cardView.templateImage}" mode="simple" />
<h:commandButton action="#{cardView.saveImage}" value="#{i18n['sendImage']}" />
</h:form>
<ui:fragment rendered="#{!empty cardView.cardTemplate}">
<h2>#{i18n['cardTemplate.imageheader']}</h2>
<img src="#{request.contextPath}/dydata/cardtemplate/#{cardView.cardTemplate.id}.img" />
</ui:fragment>
</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:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="#{sessionHandler.template}">
<ui:define name="content">
<h:form id="cardTemplateData">
<h:panelGrid columns="3">
<h:outputLabel for="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.type']}:" />
<h:outputLabel for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.type']}:" />
<h:inputText rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" id="typeTextData" value="" />
<h:inputText rendered="#{!empty cardTemplateDataEditView.cardTextData}" id="typeObjectData" value="#{cardTemplateDataEditView.cardTextData.textDataType}" />
<h:message for="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="xTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.xCoordinate']}:" />
<h:outputLabel for="xObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.xCoordinate']}:" />
<h:inputText id="xTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="xTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.x}"/>
<h:inputText id="xTextData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.x}"/>
<h:message for="xTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="xObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="yTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.yCoordinate']}:" />
<h:outputLabel for="yObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.yCoordinate']}:" />
<h:inputText id="yTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="yTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.y}"/>
<h:inputText id="yTextData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.y}"/>
<h:message for="yTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="yObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="zTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.zIndex']}:" />
<h:outputLabel for="zObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.zIndex']}:" />
<h:inputText id="zTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="zTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.zIndex}"/>
<h:inputText id="zTextData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.zIndex}"/>
<h:message for="zTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="zObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="sizeTextData" rendered="#{#{!empty cardTemplateDataEditView.cardTextData}}" value="#{i18n['cardTextData.size']}:" />
<h:outputLabel for="sizeObjectData" rendered="#{#{!empty cardTemplateDataEditView.cardObjectData}}" value="#{i18n['cardObjectData.size']}:" />
<h:inputText rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value="" size="4" />
<h:inputText id="sizeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.size}" size="4" />
<h:inputText id="sizeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.size}" size="4" />
<h:message for="sizeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="sizeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontname']}:" />
<h:outputLabel for="fontNameObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.fontname']}:" />
<h:inputText id="fontNameTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.fontName}"/>
<h:inputText id="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.fontName}"/>
<h:message for="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="fontNameObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontstyle']}:" />
<h:outputLabel for="fontStyleObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.fontstyle']}:" />
<h:inputText id="fontStyleTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.fontStyle}"/>
<h:inputText id="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.fontStyle}"/>
<h:message for="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="fontStyleObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
</h:panelGrid>
<h:commandButton rendered="#{!empty cardTemplateDataEditView.cardTextData}" action="#{cardTemplateDataEditView.saveTextData()}" value="#{i18n['cardTextData.save']}" />
<h:commandButton rendered="#{!empty cardTemplateDataEditView.cardObjectData}" action="#{cardTemplateDataEditView.saveObjectData()}" value="#{i18n['cardObjectData.save']}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -46,6 +46,11 @@ ...@@ -46,6 +46,11 @@
<f:param name="templateid" value="#{card.id}" /> <f:param name="templateid" value="#{card.id}" />
</h:link> </h:link>
</h:column> </h:column>
<h:column>
<h:link outcome="/useradmin/editCardTemplate" value="#{i18n['cardTemplate.edit']}">
<f:param name="templateid" value="#{card.id}" />
</h:link>
</h:column>
</h:dataTable> </h:dataTable>
</h:form> </h:form>
......
...@@ -10,15 +10,6 @@ ...@@ -10,15 +10,6 @@
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<p:dialog id="rejectDialog" widgetVar="dialog">
<p>Diibadaaba diibadaaba, daaba dii</p>
<p:inputTextarea />
<br />
<p:commandButton oncomplete="PF('dialog').hide()" actionListener="#{userOverviewView.rejectCard()}" value="Apply" onerror="location.reload(true);"/>
<p:commandButton onclick="PF('dialog').hide()" type="button" value="Cancel" onerror="location.reload(true);"/>
</p:dialog>
<h:form id="form"> <h:form id="form">
<p:dataTable value="#{userOverviewView.userOverviewItems}" var="cartItem" binding="#{table}" id="cartOverviewTable"> <p:dataTable value="#{userOverviewView.userOverviewItems}" var="cartItem" binding="#{table}" id="cartOverviewTable">
<p:column style="#{cartItem.printedCard == null ? 'background:grey;' : ''}"> <p:column style="#{cartItem.printedCard == null ? 'background:grey;' : ''}">
...@@ -52,7 +43,17 @@ ...@@ -52,7 +43,17 @@
<!-- <f:ajax execute="uov-items" render="@all"></f:ajax> --> <!-- <f:ajax execute="uov-items" render="@all"></f:ajax> -->
</p:commandButton> </p:commandButton>
<p:commandButton id="Reject" value="Reject" onclick="PF('dialog').show();" type="button" onerror="location.reload(true);"/> <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}">
<p>{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.</p>
<p:inputTextarea value="#{userOverviewView.rejectionMsg}"/>
<br />
<p:commandButton oncomplete="PF('dialog#{table.rowIndex}').hide()" actionListener="#{userOverviewView.rejectCard()}" value="Apply" ajax="true" onerror="location.reload(true);"/>
<p:commandButton onclick="PF('dialog#{table.rowIndex}').hide()" type="button" value="Cancel" onerror="location.reload(true);"/>
</p:dialog>
<!--<p:commandButton id="Reject" value="Reject" onclick="#{userOverviewView.rejectCard()}" type="button" onerror="location.reload(true);" update="schneider cardinfo"/>-->
</p:column> </p:column>
</p:dataTable> </p:dataTable>
</h:form> </h:form>
......
...@@ -201,6 +201,28 @@ cardTemplate.roles = Associated roles ...@@ -201,6 +201,28 @@ cardTemplate.roles = Associated roles
cardTemplate.save = Save cardTemplate.save = Save
cardTemplate.sendImage = Upload Image cardTemplate.sendImage = Upload Image
cardObjectData.create = Add object data to card layout
cardObjectData.save = Save
cardObjectData.edit = Edit
cardObjectData.x = X coordinate
cardObjectData.y = Y coordinate
cardObjectData.size = Size of text (px)
cardObjectData.zindex = Z index
cardObjectData.type = Type
cardTextData.create = Add text data to card layout
cardTextData.save = Save
cardTextData.edit = Edit
cardTextData.x = X coordinate
cardTextData.y = Y coordinate
cardTextData.size = Size of text (px)
cardTextData.zindex = Z index
cardTextData.fontname = Font name
cardTextData.fontstyle = Font style
cardTextData.fontalignment = Font alignment
cardTextData.text = Static text
cardTextData.type = Type
cart.item = Item cart.item = Item
cart.item_quantity = Quantity cart.item_quantity = Quantity
cart.item_total = Total cart.item_total = Total
......
...@@ -203,6 +203,28 @@ cardTemplate.roles = Yhdistetyt roolit ...@@ -203,6 +203,28 @@ cardTemplate.roles = Yhdistetyt roolit
cardTemplate.save = Tallenna cardTemplate.save = Tallenna
cardTemplate.sendImage = Lataa kuva cardTemplate.sendImage = Lataa kuva
cardObjectData.create = Liit korttilayoutiin kuvia
cardObjectData.save = Tallenna
cardObjectData.edit = Muokkaa
cardObjectData.x = X koordinaatti
cardObjectData.y = Y koordinaatti
cardObjectData.size = Tekstin koko (px)
cardObjectData.zindex = Z index
cardObjectData.type = Tyyppi
cardTextData.create = Liit korttilayoutiin teksti
cardTextData.save = Tallenna
cardTextData.edit = Muokkaa
cardTextData.x = X koordinaatti
cardTextData.y = Y koordinaatti
cardTextData.size = Tekstin koko (px)
cardTextData.zindex = Z index
cardTextData.fontname = Fontin nimi
cardTextData.fontstyle = Fontin tyyli
cardTextData.fontalignment = Fontin sijoittelu
cardTextData.text = Kiinte teksti
cardTextData.type = Tyyppi
cart.item = Tuote cart.item = Tuote
cart.item_quantity = M\u00E4\u00E4r\u00E4 cart.item_quantity = M\u00E4\u00E4r\u00E4
cart.item_total = Yhteens\u00E4 cart.item_total = Yhteens\u00E4
...@@ -1235,11 +1257,14 @@ user.uploadimage = L\u00E4het\u00E4 kuva ...@@ -1235,11 +1257,14 @@ user.uploadimage = L\u00E4het\u00E4 kuva
user.username = K\u00E4ytt\u00E4j\u00E4tunnus user.username = K\u00E4ytt\u00E4j\u00E4tunnus
user.validate.notUniqueUsername = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus user.validate.notUniqueUsername = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus
user.validateUser.commit = L\u00E4het\u00E4 user.validateUser.commit = L\u00E4het\u00E4
user.validateUser.header = Ole hyv\u00E4 ja sy\u00F6t\u00E4 kirjautumistiedot user.validateUser.header = Ole hyv\u00E4 ja sy\u00E4t\u00E4 kirjautumistiedot
user.wholeName = Nimi user.wholeName = Nimi
user.wholename = Koko nimi user.wholename = Koko nimi
user.zipCode = Postinumero user.zipCode = Postinumero
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 {0}
userImport.commit = Hyv\u00E4ksy userImport.commit = Hyv\u00E4ksy
userView.image = Kuva userView.image = Kuva
......
package fi.codecrew.moya.web.cdiview.card;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
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.web.cdiview.GenericCDIView;
@Named
@ConversationScoped
public class CardTemplateDataEditView extends GenericCDIView {
private static final long serialVersionUID = -9115983838324313414L;
private CardTextData cardTextData;
private CardObjectData cardObjectData;
@EJB
private transient CardTemplateBeanLocal cfbean;
public void initCardTextDataCreate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
setCardTextData(new CardTextData());
super.beginConversation();
}
}
public void initCardTextObjectCreate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
setCardObjectData(new CardObjectData());
super.beginConversation();
}
}
public CardTextData saveTextData() {
cardTextData = cfbean.save(cardTextData);
return null;
}
public CardObjectData saveObjectData() {
cardObjectData = cfbean.save(cardObjectData);
return null;
}
public CardTextData getCardTextData() {
return cardTextData;
}
public void setCardTextData(CardTextData cardTextData) {
this.cardTextData = cardTextData;
}
public CardObjectData getCardObjectData() {
return cardObjectData;
}
public void setCardObjectData(CardObjectData cardObjectData) {
this.cardObjectData = cardObjectData;
}
}
...@@ -12,6 +12,7 @@ import org.slf4j.Logger; ...@@ -12,6 +12,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardTemplateBeanLocal; import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
...@@ -29,8 +30,13 @@ public class UserOverviewView extends GenericCDIView { ...@@ -29,8 +30,13 @@ public class UserOverviewView extends GenericCDIView {
@EJB @EJB
private CardTemplateBeanLocal cardTemplateBean; private CardTemplateBeanLocal cardTemplateBean;
@EJB
private UserBeanLocal userBean;
private ListDataModel<UserOverviewItem> userOverviewItems = null; private ListDataModel<UserOverviewItem> userOverviewItems = null;
private String rejectionMsg;
private static final Logger logger = LoggerFactory.getLogger(UserOverviewView.class); private static final Logger logger = LoggerFactory.getLogger(UserOverviewView.class);
public void initView() { public void initView() {
...@@ -42,6 +48,7 @@ public class UserOverviewView extends GenericCDIView { ...@@ -42,6 +48,7 @@ public class UserOverviewView extends GenericCDIView {
ovlist.add(uoi); ovlist.add(uoi);
} }
userOverviewItems = new ListDataModel<>(ovlist); userOverviewItems = new ListDataModel<>(ovlist);
super.beginConversation();
} }
} }
...@@ -51,13 +58,24 @@ public class UserOverviewView extends GenericCDIView { ...@@ -51,13 +58,24 @@ public class UserOverviewView extends GenericCDIView {
public void rejectCard() public void rejectCard()
{ {
UserOverviewItem cardItem = userOverviewItems.getRowData(); UserOverviewItem cardItem = null;
logger.info("Rejecting card"); try {
cardItem = userOverviewItems.getRowData();
PrintedCard card = cardItem.getPrintedCard(); }catch(Exception ex) {
card.setCardState(CardState.REJECTED); logger.info(ex.getMessage());
card = cardTemplateBean.saveCard(card); }
cardItem.setPrintedCard(card); if(cardItem != null) {
logger.info("rejectCard(): Rejecting card {}", cardItem.getPrintedCard());
PrintedCard card = cardItem.getPrintedCard();
if(rejectionMsg == null)
rejectionMsg = "";
card = userBean.rejectPrintedCard(card, rejectionMsg);
cardItem.setPrintedCard(card);
logger.info("rejectCard(): Rejected card {}, state {}", card, card.getCardState() );
}
// cardTemplateBean.setCardState(cardItem.getPrintedCard(), CardState.REJECTED); // cardTemplateBean.setCardState(cardItem.getPrintedCard(), CardState.REJECTED);
} }
...@@ -85,4 +103,12 @@ public class UserOverviewView extends GenericCDIView { ...@@ -85,4 +103,12 @@ public class UserOverviewView extends GenericCDIView {
this.userCartView = userCartView; this.userCartView = userCartView;
} }
public void setRejectionMsg(String msg) {
this.rejectionMsg = msg;
}
public String getRejectionMsg() {
return this.rejectionMsg;
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!