package com.github.mygreen.supercsv.builder.spring;
import java.net.URL;
import com.github.mygreen.supercsv.annotation.CsvBean;
import com.github.mygreen.supercsv.annotation.CsvColumn;
import com.github.mygreen.supercsv.annotation.constraint.CsvRequire;
import com.github.mygreen.supercsv.annotation.format.CsvFormat;
import com.github.mygreen.supercsv.validation.beanvalidation.CsvBeanValidator;
@CsvBean(header=true, validators=CsvBeanValidator.class, listeners=UserListener.class)
public class UserCsv {
@CsvColumn(number=1)
@CsvRequire
private String id;
// Spring管理のCellProcessorFactoryを指定する場合
@CsvColumn(number=2, label="名前")
@CsvUserNameExist
private String name;
// Spring管理のBuilderを指定する場合
@CsvColumn(number=3, label="ホームページ", builder=UrlProcessorBuilder.class)
private URL homepage;
// SrpingBean管理のFormatterを指定する場合。メッセージを独自に指定して、prototypeスコープの確認を行う
@CsvColumn(number=4, label="ホームページ(予備)")
@CsvFormat(formatter=UrlFormatter.class, message="{csvContext} : 項目「{label}」の値({validatedValue})は、サブのホームページの値として不正です。")
private URL homepageSub;
// BeanValidationでかつSpringのインジェクションを利用する場合
@CsvColumn(number=5, label="E-mail")
@UserMailPattern
private String email;
public UserCsv id(final String id) {
this.id = id;
return this;
}
public UserCsv name(final String name) {
this.name = name;
return this;
}
public UserCsv homepage(final URL homepage) {
this.homepage = homepage;
return this;
}
public UserCsv homepageSub(final URL homepageSub) {
this.homepageSub = homepageSub;
return this;
}
public UserCsv email(final String email) {
this.email = email;
return this;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public URL getHomepage() {
return homepage;
}
public void setHomepage(URL homepage) {
this.homepage = homepage;
}
public URL getHomepageSub() {
return homepageSub;
}
public void setHomepageSub(URL homepageSub) {
this.homepageSub = homepageSub;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}