Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OpenCsv-在字段上设置自定义验证_Java_Opencsv - Fatal编程技术网

Java OpenCsv-在字段上设置自定义验证

Java OpenCsv-在字段上设置自定义验证,java,opencsv,Java,Opencsv,我正在使用OpenCsv将csv文件转换为JavaBean 我的文件如下所示: USER_NAME, USER_ID, FREQUENCY aaa,111,DAILY bbb,222,WEEKLY, ccc,333,MONTHLY ddd,444,SOME_RANDOM_VALUE eee,555,YEARLY 我需要对列强制执行以下验证: USER_NAME -> not null, alphabets only USER_ID -> not null, digits only

我正在使用OpenCsv将csv文件转换为JavaBean

我的文件如下所示:

USER_NAME, USER_ID, FREQUENCY
aaa,111,DAILY
bbb,222,WEEKLY,
ccc,333,MONTHLY
ddd,444,SOME_RANDOM_VALUE
eee,555,YEARLY
我需要对列强制执行以下验证:

USER_NAME -> not null, alphabets only
USER_ID -> not null, digits only
FREQUENCY -> not null, allowed values - DAILY, WEEKLY, MONTHLY, YEARLY
对于任何其他频率值,记录用户名,如下所示: 频率

我只需要记录该行并像往常一样继续流,即“eeee”应该映射到javabean

基于,我在JavaBean中创建了以下逻辑

问题是流停止时使用了“dddd”,而“eeee”没有映射

class UserBean {

    private String userName;
    private String userID;
    private String frequency;

    //Getters and Setters for userName, userID
    public void setFrequency(String frequency) {
        if(frequency.isEmpty() && !(frequency.equalsIgnoreCase("DAILY") && frequency.equalsIgnoreCase("WEEKLY") && frequency.equalsIgnoreCase("MONTHLY") && frequency.equalsIgnoreCase("YEARLY"))) {
            throw new IllegalArgumentException("Invalid value for FREQUENCY"); 
        }
    }
}

public static void main() {

            CsvToBean<UserBean> csvToBean = new CsvToBean<UserBean>();
            Reader reader = new FileReader((File) INPUT_DIR);
            csvToBean = new CsvToBeanBuilder(reader).withSeparator(',')
                    .withType(User.class)
                    .withOrderedResults(true)
                    .withIgnoreLeadingWhiteSpace(true)
                    .build();
            Iterator<PrimeAOBean> csvUserIterator = csvToBean.iterator();

            List<Exception> exceptionList = new ArrayList<Exception>();

            while (csvUserIterator.hasNext()) {
                try {
                UserBean userBean = csvUserIterator.next();
                userDataMap.put(userBean.getUserID(), userBean);
                }
                catch(Exception e) {
                    exceptionList.add(e);
                    continue;
                }
                finally {
                    FileWriter fileWriter = new FileWriter(ERROR_DIR);
                    PrintWriter printWriter = new PrintWriter(fileWriter);
                    for (Exception excep: exceptionList) {
                        printWriter.print(excep.getLocalizedMessage());
                        printWriter.close();
                    }
                    continue;
                }
            }               
                }
类UserBean{
私有字符串用户名;
私有字符串用户标识;
专用字符串频率;
//用户名、用户ID的getter和setter
公共无效设置频率(字符串频率){
if(frequency.isEmpty()&&&!(frequency.equalsIgnoreCase(“每日”)&&frequency.equalsIgnoreCase(“每周”)&&frequency.equalsIgnoreCase(“每月”)&&frequency.equalsIgnoreCase(“年度”)){
抛出新的IllegalArgumentException(“频率无效值”);
}
}
}
公共静态void main(){
CsvToBean CsvToBean=新的CsvToBean();
Reader Reader=新文件读取器((文件)输入目录);
csvToBean=新的CsvToBeanBuilder(读卡器)。带分隔符(“,”)
.withType(User.class)
.withOrderedResults(真)
.带忽略前导空格(true)
.build();
迭代器csvUserIterator=csvToBean.Iterator();
列表例外列表=新建ArrayList();
while(csvUserIterator.hasNext()){
试一试{
UserBean UserBean=csvUserIterator.next();
put(userBean.getUserID(),userBean);
}
捕获(例外e){
例外列表。添加(e);
继续;
}
最后{
FileWriter FileWriter=新的FileWriter(错误\u DIR);
PrintWriter PrintWriter=新的PrintWriter(fileWriter);
for(例外:例外列表){
printWriter.print(getLocalizedMessage()除外);
printWriter.close();
}
继续;
}
}               
}

您可以添加。使用ThroweExceptions(false)忽略运行时异常(如上所述)

您不是在寻找BeanVerifier吗?然而,我找不到任何关于如何使用它的例子。