/src/main/java/com/google/ie/common/validation/CommentValidator.java

http://thoughtsite.googlecode.com/ · Java · 122 lines · 81 code · 21 blank · 20 comment · 13 complexity · ba530a32339d515cf95316598e8b9445 MD5 · raw file

  1. /* Copyright 2010 Google Inc.
  2. *
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS.
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License
  14. */
  15. package com.google.ie.common.validation;
  16. import com.google.ie.business.domain.IdeaComment;
  17. import com.google.ie.business.domain.ProjectComment;
  18. import com.google.ie.common.constants.IdeaExchangeConstants;
  19. import com.google.ie.common.constants.IdeaExchangeErrorCodes;
  20. import org.apache.commons.lang.StringUtils;
  21. import org.apache.log4j.Logger;
  22. import org.springframework.stereotype.Component;
  23. import org.springframework.validation.Errors;
  24. import org.springframework.validation.FieldError;
  25. import org.springframework.validation.ValidationUtils;
  26. import org.springframework.validation.Validator;
  27. import java.util.Iterator;
  28. /**
  29. * {@link Validator} implementation to validate {@link Comment} object.
  30. *
  31. * @author asirohi
  32. *
  33. */
  34. @Component
  35. public class CommentValidator implements Validator {
  36. private static Logger log = Logger.getLogger(CommentValidator.class);
  37. private static final String IDEA_KEY = "ideaKey";
  38. private static final String PROJECT_KEY = "projectKey";
  39. private static final String TEXT = "text";
  40. private static final int COMMENT_LENGTH = 3000;
  41. @Override
  42. public boolean supports(Class<?> clazz) {
  43. return IdeaComment.class.isAssignableFrom(clazz);
  44. }
  45. @Override
  46. public void validate(Object object, Errors errors) {
  47. if (object.getClass().equals(IdeaComment.class)) {
  48. validateIdeaComments(object, errors);
  49. } else if (object.getClass().equals(ProjectComment.class)) {
  50. validateProjectComments(object, errors);
  51. }
  52. }
  53. public void validateIdeaComments(Object object, Errors errors) {
  54. IdeaComment ideaComment = (IdeaComment) object;
  55. ValidationUtils.rejectIfEmptyOrWhitespace(errors, IDEA_KEY,
  56. IdeaExchangeConstants.Messages.REQUIRED_FIELD);
  57. ValidationUtils.rejectIfEmptyOrWhitespace(errors, TEXT,
  58. IdeaExchangeConstants.Messages.REQUIRED_FIELD);
  59. if (StringUtils.length(ideaComment.getText()) > COMMENT_LENGTH) {
  60. errors.rejectValue(TEXT, IdeaExchangeErrorCodes.COMMENT_LENGTH_EXCEEDS,
  61. IdeaExchangeConstants.Messages.COMMENT_LENGTH_EXCEEDS);
  62. }
  63. if (log.isDebugEnabled()) {
  64. if (errors.hasErrors()) {
  65. log.debug("Validator found " + errors.getErrorCount() + " errors");
  66. for (Iterator<FieldError> iterator = errors.getFieldErrors().iterator(); iterator
  67. .hasNext();) {
  68. FieldError fieldError = iterator.next();
  69. log.debug("Error found in field: " + fieldError.getField() + " Message :"
  70. + fieldError.getDefaultMessage());
  71. }
  72. } else {
  73. log.debug("Validator found no errors");
  74. }
  75. }
  76. }
  77. public void validateProjectComments(Object object, Errors errors) {
  78. ProjectComment projectComment = (ProjectComment) object;
  79. ValidationUtils.rejectIfEmptyOrWhitespace(errors, PROJECT_KEY,
  80. IdeaExchangeConstants.Messages.REQUIRED_FIELD);
  81. ValidationUtils.rejectIfEmptyOrWhitespace(errors, TEXT,
  82. IdeaExchangeConstants.Messages.REQUIRED_FIELD);
  83. if (StringUtils.length(projectComment.getText()) > COMMENT_LENGTH) {
  84. errors.rejectValue(TEXT, IdeaExchangeErrorCodes.COMMENT_LENGTH_EXCEEDS,
  85. IdeaExchangeConstants.Messages.COMMENT_LENGTH_EXCEEDS);
  86. }
  87. if (log.isDebugEnabled()) {
  88. if (errors.hasErrors()) {
  89. log.debug("Validator found " + errors.getErrorCount() + " errors");
  90. for (Iterator<FieldError> iterator = errors.getFieldErrors().iterator(); iterator
  91. .hasNext();) {
  92. FieldError fieldError = iterator.next();
  93. log.debug("Error found in field: " + fieldError.getField() + " Message :"
  94. + fieldError.getDefaultMessage());
  95. }
  96. } else {
  97. log.debug("Validator found no errors");
  98. }
  99. }
  100. }
  101. }