/*
* JBoss, Home of Professional Open Source
* Copyright 2010-2016, Red Hat, Inc. and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.richfaces.tests.metamer.validation;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.model.SelectItem;
import javax.faces.validator.ValidatorException;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Past;
/**
* @author <a href="mailto:jstefek@redhat.com">Jiri Stefek</a>
*/
@ManagedBean
@SessionScoped
public class ValidationMessagesBean implements Serializable {
private static final long serialVersionUID = -8259550540482799013L;
private final long pastTime = System.currentTimeMillis() - 4 * 24 * 3600 * 1000;
private final long futureTime = System.currentTimeMillis() + 4 * 24 * 3600 * 1000;
private Date pastDate = new Date(pastTime);
private Date futureDate = new Date(futureTime);
public static final String MSG = "Custom validator error message from bean.";
//JSR
@Min(value = 2, message = MSG)
@Max(value = 9, message = MSG)
private Integer valueWithMessagesJSR = new Integer(5);
@Min(2)
@Max(9)
private Integer valueWithoutMessagesJSR = new Integer(5);
@Min(2)
@Max(9)
private Integer valueWithoutMessages2JSR = new Integer(5);
@Past(message = MSG)
private Date dateWithMessagesJSR = new Date(pastTime);
@Past
private Date dateWithoutMessagesJSR = new Date(pastTime);
@Past
private Date dateWithoutMessages2JSR = new Date(pastTime);
//CSV
@Min(value = 2, message = MSG)
@Max(value = 9, message = MSG)
private Integer valueWithMessagesCSV = new Integer(5);
@Min(2)
@Max(9)
private Integer valueWithoutMessagesCSV = new Integer(5);
@Min(2)
@Max(9)
private Integer valueWithoutMessages2CSV = new Integer(5);
@Past(message = MSG)
private Date dateWithMessagesCSV = new Date(pastTime);
@Past
private Date dateWithoutMessagesCSV = new Date(pastTime);
@Past
private Date dateWithoutMessages2CSV = new Date(pastTime);
//JSF
private Integer valueJSF = new Integer(5);
private Integer value2JSF = new Integer(5);
private Date dateJSF = new Date(pastTime);
private Date date2JSF = new Date(pastTime);
private final Converter converter = FacesContext.getCurrentInstance().getApplication().createConverter(Integer.class);
private List<SelectItem> validationOptions = null;
@PostConstruct
public void init() {
validationOptions = new ArrayList<SelectItem>();
validationOptions.add(new SelectItem(5));
validationOptions.add(new SelectItem(10));
}
public List<SelectItem> getValidationOptions() {
return Collections.unmodifiableList(validationOptions);
}
public Converter getConverter() {
return converter;
}
public String getNumberInputDescription() {
return "All inputs expect: number from 2 to 9.";
}
public String getDateInputDescription() {
return "All inputs expect: date from past.";
}
public void activate() {
FacesContext.getCurrentInstance().getApplication().setMessageBundle("CustomErrorMessages");
}
public void deactivate() {
FacesContext.getCurrentInstance().getApplication().setMessageBundle("DefaultErrorMessages");
}
public Integer getValueJSF() {
return valueJSF;
}
public void setValueJSF(Integer valueJSF) {
this.valueJSF = valueJSF;
}
public Integer getValueWithMessagesCSV() {
return valueWithMessagesCSV;
}
public void setValueWithMessagesCSV(Integer valueWithMessagesCSV) {
this.valueWithMessagesCSV = valueWithMessagesCSV;
}
public Integer getValueWithMessagesJSR() {
return valueWithMessagesJSR;
}
public void setValueWithMessagesJSR(Integer valueWithMessagesJSR) {
this.valueWithMessagesJSR = valueWithMessagesJSR;
}
public Integer getValueWithoutMessages2CSV() {
return valueWithoutMessages2CSV;
}
public void setValueWithoutMessages2CSV(Integer valueWithoutMessages2CSV) {
this.valueWithoutMessages2CSV = valueWithoutMessages2CSV;
}
public Integer getValueWithoutMessages2JSR() {
return valueWithoutMessages2JSR;
}
public void setValueWithoutMessages2JSR(Integer valueWithoutMessages2JSR) {
this.valueWithoutMessages2JSR = valueWithoutMessages2JSR;
}
public Integer getValueWithoutMessagesCSV() {
return valueWithoutMessagesCSV;
}
public void setValueWithoutMessagesCSV(Integer valueWithoutMessagesCSV) {
this.valueWithoutMessagesCSV = valueWithoutMessagesCSV;
}
public Integer getValueWithoutMessagesJSR() {
return valueWithoutMessagesJSR;
}
public void setValueWithoutMessagesJSR(Integer valueWithoutMessagesJSR) {
this.valueWithoutMessagesJSR = valueWithoutMessagesJSR;
}
public Integer getValue2JSF() {
return value2JSF;
}
public void setValue2JSF(Integer value2JSF) {
this.value2JSF = value2JSF;
}
public String printCurrentResourceBundle() {
return FacesContext.getCurrentInstance().getApplication().getMessageBundle();
}
public Date getDate2JSF() {
return date2JSF;
}
public void setDate2JSF(Date date2JSF) {
this.date2JSF = date2JSF;
}
public Date getDateJSF() {
return dateJSF;
}
public void setDateJSF(Date dateJSF) {
this.dateJSF = dateJSF;
}
public Date getDateWithMessagesCSV() {
return dateWithMessagesCSV;
}
public void setDateWithMessagesCSV(Date dateWithMessagesCSV) {
this.dateWithMessagesCSV = dateWithMessagesCSV;
}
public Date getDateWithMessagesJSR() {
return dateWithMessagesJSR;
}
public void setDateWithMessagesJSR(Date dateWithMessagesJSR) {
this.dateWithMessagesJSR = dateWithMessagesJSR;
}
public Date getDateWithoutMessages2CSV() {
return dateWithoutMessages2CSV;
}
public void setDateWithoutMessages2CSV(Date dateWithoutMessages2CSV) {
this.dateWithoutMessages2CSV = dateWithoutMessages2CSV;
}
public Date getDateWithoutMessages2JSR() {
return dateWithoutMessages2JSR;
}
public void setDateWithoutMessages2JSR(Date dateWithoutMessages2JSR) {
this.dateWithoutMessages2JSR = dateWithoutMessages2JSR;
}
public Date getDateWithoutMessagesCSV() {
return dateWithoutMessagesCSV;
}
public void setDateWithoutMessagesCSV(Date dateWithoutMessagesCSV) {
this.dateWithoutMessagesCSV = dateWithoutMessagesCSV;
}
public Date getDateWithoutMessagesJSR() {
return dateWithoutMessagesJSR;
}
public void setDateWithoutMessagesJSR(Date dateWithoutMessagesJSR) {
this.dateWithoutMessagesJSR = dateWithoutMessagesJSR;
}
public Date getFutureDate() {
return futureDate;
}
public Date getPastDate() {
return pastDate;
}
public void setFutureDate(Date futureDate) {
this.futureDate = futureDate;
}
public void setPastDate(Date pastDate) {
this.pastDate = pastDate;
}
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
Date d = (Date) value;
if (d.getTime() > System.currentTimeMillis()) {//must be in past
throw new ValidatorException(new FacesMessage("Own default message."));
}
}
}