package data; import static gui.ValidationUtil.*; import java.util.ArrayList; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; import gui.Messages; import gui.ValidationUtil; public class Validation { public static String validateForStringLevel(Filter filter) { ArrayList errors = new ArrayList<>(); // should not be null, error if null, because init failed if (filter.getNgramValue() == null) { errors.add(Messages.MISSING_NGRAM_LEVEL); } // should not be null, error if null, because init failed if (filter.getCalculateFor() == null) { errors.add(Messages.MISSING_CALCULATE_FOR); } if (filter.getSkipValue() == null) { filter.setSkipValue(0); } if (filter.getNgramValue() != null && ValidationUtil.isEmpty(filter.getMsd()) && (filter.getMsd().size() != filter.getNgramValue())) { if (!(filter.getMsd().size() == 1 && filter.getNgramValue() == 0) && !ValidationUtil.isEmpty(filter.getMsd())) errors.add(Messages.WARNING_MISMATCHED_NGRAM_AND_TOKENS_VALUES); } Integer ngramValue = filter.getNgramValue(); ArrayList msd = filter.getMsd(); if (ngramValue > 0 && !ValidationUtil.isEmpty(msd) && ngramValue != msd.size()) { errors.add(String.format(Messages.WARNING_MISMATCHED_NGRAM_AND_TOKENS_VALUES, ngramValue, msd.size())); } if (filter.getNgramValue() != null && filter.getNgramValue() == 0 && isEmpty(filter.getStringLength())) { // if count letters, make sure that the length is given // TODO: check that words we're adding in xml reader are longer than this value errors.add(Messages.MISSING_STRING_LENGTH); } return isEmpty(errors) ? null : StringUtils.join(errors, ", \n"); } }