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

http://thoughtsite.googlecode.com/ · Java · 123 lines · 89 code · 12 blank · 22 comment · 16 complexity · 90e22d865061bc014e6964d299604099 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.Developer;
  17. import com.google.ie.common.constants.IdeaExchangeConstants;
  18. import com.google.ie.common.constants.IdeaExchangeErrorCodes;
  19. import com.google.ie.dto.ProjectDetail;
  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.Validator;
  26. import java.util.Iterator;
  27. import java.util.List;
  28. /**
  29. * {@link Validator} implementation for validating {@link ProjectDetail} object.
  30. *
  31. * @author sbhatnagar
  32. *
  33. *
  34. */
  35. @Component("projectValidator")
  36. public class ProjectValidator implements Validator {
  37. private static Logger log = Logger.getLogger(ProjectValidator.class);
  38. /* Attribute name on which validation runs */
  39. private static final String NAME = "name";
  40. private static final String DESCRIPTION = "description";
  41. private static final String DEVELOPER_NAME = "name";
  42. private static final String DEVELOPER_EMAIL = "emailId";
  43. private static final int LENGTH_500 = 500;
  44. private static final int LENGTH_50 = 50;
  45. private static final int LENGTH_3000 = 3000;
  46. @Override
  47. public boolean supports(Class<?> clazz) {
  48. return ProjectDetail.class.isAssignableFrom(clazz);
  49. }
  50. @Override
  51. public void validate(Object target, Errors errors) {
  52. ProjectDetail projectDetail = (ProjectDetail) target;
  53. if (StringUtils.isBlank(projectDetail.getProject().getName())) {
  54. errors.rejectValue(NAME,
  55. IdeaExchangeErrorCodes.FIELD_REQUIRED,
  56. IdeaExchangeConstants.Messages.REQUIRED_FIELD);
  57. log.warn("Validation Error : " + NAME + " -: "
  58. + IdeaExchangeConstants.Messages.REQUIRED_FIELD);
  59. }
  60. if (!StringUtils.isBlank(projectDetail.getProject().getName())
  61. && projectDetail.getProject().getName().trim().length() > LENGTH_500) {
  62. errors.rejectValue(NAME,
  63. IdeaExchangeErrorCodes.LENGTH_EXCEED_LIMIT,
  64. IdeaExchangeConstants.Messages.LENGTH_EXCEED_LIMIT_MESSAGE);
  65. log.warn("Validation Error : " + NAME + " -: "
  66. + IdeaExchangeConstants.Messages.LENGTH_EXCEED_LIMIT_MESSAGE);
  67. }
  68. if (!StringUtils.isBlank(projectDetail.getProject().getDescription())
  69. && projectDetail.getProject().getDescription().trim().length() > LENGTH_3000) {
  70. errors.rejectValue(DESCRIPTION,
  71. IdeaExchangeErrorCodes.LENGTH_EXCEED_LIMIT,
  72. IdeaExchangeConstants.Messages.LENGTH_EXCEED_LIMIT_MESSAGE);
  73. log.warn("Validation Error : " + DESCRIPTION + " -: "
  74. + IdeaExchangeConstants.Messages.LENGTH_EXCEED_LIMIT_MESSAGE);
  75. }
  76. List<Developer> developers = projectDetail.getDevelopers();
  77. if (developers != null) {
  78. for (Developer developer : developers) {
  79. if (!StringUtils.isBlank(developer.getName())
  80. && developer.getName().trim().length() > LENGTH_50) {
  81. errors.rejectValue(DEVELOPER_NAME,
  82. IdeaExchangeErrorCodes.LENGTH_EXCEED_LIMIT,
  83. IdeaExchangeConstants.Messages.LENGTH_EXCEED_LIMIT_MESSAGE);
  84. log.warn("Validation Error : " + DEVELOPER_NAME + " -: "
  85. + IdeaExchangeConstants.Messages.LENGTH_EXCEED_LIMIT_MESSAGE);
  86. }
  87. if (!StringUtils.isBlank(developer.getEmailId())
  88. && developer.getEmailId().trim().length() > LENGTH_50) {
  89. errors.reject(IdeaExchangeErrorCodes.LENGTH_EXCEED_LIMIT, DEVELOPER_EMAIL
  90. + ":" +
  91. IdeaExchangeConstants.Messages.LENGTH_EXCEED_LIMIT_MESSAGE);
  92. log.warn("Validation Error : " + DEVELOPER_EMAIL + " -: "
  93. + IdeaExchangeConstants.Messages.LENGTH_EXCEED_LIMIT_MESSAGE);
  94. }
  95. }
  96. }
  97. if (log.isDebugEnabled()) {
  98. if (errors.hasErrors()) {
  99. log.debug("Validator found " + errors.getErrorCount() + " errors");
  100. for (Iterator<FieldError> iterator = errors.getFieldErrors().iterator(); iterator
  101. .hasNext();) {
  102. FieldError fieldError = iterator.next();
  103. log.debug("Error found in field: " + fieldError.getField() + " Message :"
  104. + fieldError.getDefaultMessage());
  105. }
  106. } else {
  107. log.debug("Validator found no errors");
  108. }
  109. }
  110. }
  111. }