package com.github.mygreen.supercsv.builder.spring; import org.supercsv.cellprocessor.ift.CellProcessor; import org.supercsv.cellprocessor.ift.StringCellProcessor; import org.supercsv.util.CsvContext; import com.github.mygreen.supercsv.cellprocessor.ValidationCellProcessor; /** * ユーザ名の存在チェックを行う制約のCellProcessor * * @since 2.0 * @author T.TSUCHIE * */ public class UserNameExist extends ValidationCellProcessor implements StringCellProcessor { private final UserService userService; public UserNameExist(final UserService userService) { checkPreconditions(userService); this.userService = userService; } public UserNameExist(final UserService userService, final CellProcessor next) { super(next); checkPreconditions(userService); this.userService = userService; } private static void checkPreconditions(final UserService userService) { if(userService == null) { throw new NullPointerException("userService should not be null"); } } @Override public <T> T execute(final Object value, final CsvContext context) { if(value == null) { return next.execute(value, context); } final String result = value.toString(); if(!userService.existByUserName(result)) { throw createValidationException(context) .messageFormat("%s dose not found user name.", result) .rejectedValue(result) .build(); } return next.execute(value, context); } }