<commit_before>package ru.org.linux.spring.validators;

import org.jdom.Verifier;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import ru.org.linux.site.BadPasswordException;
import ru.org.linux.spring.AddMessageRequest;
import ru.org.linux.util.URLUtil;

public class AddMessageRequestValidator implements Validator {
  public static final int MAX_TITLE_LENGTH = 255;
  public static final int MAX_URL_LENGTH = 255;

  @Override
  public boolean supports(Class<?> clazz) {
    return AddMessageRequest.class.equals(clazz);
  }

  @Override
  public void validate(Object target, Errors errors) {
    AddMessageRequest form = (AddMessageRequest) target;

    if (form.getGroup()==null) {
      errors.rejectValue("group", null, "Группа не задана");
    }

    String title = form.getTitle();

    if (title!=null && "".equals(title.trim())) {
      errors.rejectValue("title", null, "заголовок сообщения не может быть пустым");
    }

    if (title!=null && title.length() > MAX_TITLE_LENGTH) {
      errors.rejectValue("title", null, "Слишком большой заголовок");
    }

    if (form.getMsg() != null) {
      String error = Verifier.checkCharacterData(form.getMsg());
      if (error != null) {
        errors.rejectValue("msg", null, error);
      }
    }

    if (form.getUrl()!=null && form.getUrl().length() > MAX_URL_LENGTH) {
      errors.rejectValue("url", null, "Слишком длинный URL");
    }

    if (form.getUrl()!=null && !URLUtil.isUrl(form.getUrl())) {
      errors.rejectValue("url", null, "Некорректный URL");
    }

    if (form.getUrl()!=null && !form.getUrl().isEmpty() && (form.getLinktext()==null || form.getLinktext().isEmpty())) {
      errors.rejectValue("linktext", null, "URL указан без текста ссылки");
    }

    if (form.getNick()!=null) {
      try {
        form.getNick().checkPassword(form.getPassword());
      } catch (BadPasswordException e) {
        errors.rejectValue("password", null, e.getMessage());
        form.setNick(null);
      }
    }
  }
}<commit_msg>AddMessageRequestValidator: поправил валидацию url<commit_after>package ru.org.linux.spring.validators;

import com.google.common.base.Strings;
import org.jdom.Verifier;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import ru.org.linux.site.BadPasswordException;
import ru.org.linux.spring.AddMessageRequest;
import ru.org.linux.util.URLUtil;

public class AddMessageRequestValidator implements Validator {
  public static final int MAX_TITLE_LENGTH = 255;
  public static final int MAX_URL_LENGTH = 255;

  @Override
  public boolean supports(Class<?> clazz) {
    return AddMessageRequest.class.equals(clazz);
  }

  @Override
  public void validate(Object target, Errors errors) {
    AddMessageRequest form = (AddMessageRequest) target;

    if (form.getGroup()==null) {
      errors.rejectValue("group", null, "Группа не задана");
    }

    String title = form.getTitle();

    if (title!=null && "".equals(title.trim())) {
      errors.rejectValue("title", null, "заголовок сообщения не может быть пустым");
    }

    if (title!=null && title.length() > MAX_TITLE_LENGTH) {
      errors.rejectValue("title", null, "Слишком большой заголовок");
    }

    if (form.getMsg() != null) {
      String error = Verifier.checkCharacterData(form.getMsg());
      if (error != null) {
        errors.rejectValue("msg", null, error);
      }
    }

    if (form.getUrl()!=null && form.getUrl().length() > MAX_URL_LENGTH) {
      errors.rejectValue("url", null, "Слишком длинный URL");
    }

    if (!Strings.isNullOrEmpty(form.getUrl()) && !URLUtil.isUrl(form.getUrl())) {
      errors.rejectValue("url", null, "Некорректный URL");
    }

    if (form.getUrl()!=null && !form.getUrl().isEmpty() && (form.getLinktext()==null || form.getLinktext().isEmpty())) {
      errors.rejectValue("linktext", null, "URL указан без текста ссылки");
    }

    if (form.getNick()!=null) {
      try {
        form.getNick().checkPassword(form.getPassword());
      } catch (BadPasswordException e) {
        errors.rejectValue("password", null, e.getMessage());
        form.setNick(null);
      }
    }
  }
}
{'fraction_non_alphanumeric': 0.14837786259541985, 'fraction_numerical': 0.0028625954198473282, 'mean_word_length': 3.6849162011173187, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1091637', 'n_tokens_mistral': 1368, 'n_tokens_neox': 1357, 'n_words': 265}