/src/com/shroggle/presentation/site/CreateChildSiteInputParametersChecker.java

https://github.com/shroggle/Shroggle · Java · 129 lines · 92 code · 22 blank · 15 comment · 46 complexity · 3409d3d034fc478db8fc461114c1daa4 MD5 · raw file

  1. /*********************************************************************
  2. * *
  3. * Copyright (c) 2007-2011 by Web-Deva. *
  4. * All rights reserved. *
  5. * *
  6. * This computer program is protected by copyright law and *
  7. * international treaties. Unauthorized reproduction or distribution *
  8. * of this program, or any portion of it, may result in severe civil *
  9. * and criminal penalties, and will be prosecuted to the maximum *
  10. * extent possible under the law. *
  11. * *
  12. *********************************************************************/
  13. package com.shroggle.presentation.site;
  14. import com.shroggle.entity.*;
  15. import com.shroggle.logic.form.FilledFormManager;
  16. import com.shroggle.util.ServiceLocator;
  17. import com.shroggle.util.StringUtil;
  18. import com.shroggle.util.url.UrlValidator;
  19. import com.shroggle.util.international.International;
  20. import com.shroggle.util.persistance.Persistance;
  21. import com.shroggle.exception.*;
  22. import com.shroggle.logic.user.EmailChecker;
  23. import com.shroggle.exception.IncorrectEmailException;
  24. import java.util.Locale;
  25. /**
  26. * @author Balakirev Anatoliy
  27. */
  28. public class CreateChildSiteInputParametersChecker {
  29. public static void execute(final CreateChildSiteRequest request,
  30. final int widgetId, final String noBotCode) throws Exception {
  31. final International international = ServiceLocator.getInternationStorage().get("childSiteRegistration", Locale.US);
  32. if (!request.isShowFromAddRecord()) {
  33. if (request.getVerificationCode() == null || noBotCode == null || !noBotCode.equals(request.getVerificationCode())) {
  34. throw new WrongVerificationCodeException(international.get("wrongCode"));
  35. }
  36. }
  37. final Persistance persistance = ServiceLocator.getPersistance();
  38. final Widget widget = persistance.getWidget(widgetId);
  39. final Site site;
  40. if (widget != null) {
  41. site = widget.getSite();
  42. } else {
  43. DraftForm form = persistance.getFormById(request.getFormId());
  44. if (form == null) {
  45. throw new FormNotFoundException("Cannot find form by Id=" + request.getFormId());
  46. }
  47. site = persistance.getSite(form.getSiteId());
  48. }
  49. if (request.getEmail() == null || request.getEmail().trim().isEmpty()) {
  50. throw new VisitorWithNullOrEmptyEmailException(international.get("VisitorWithNullOrEmptyEmailException"));
  51. } else if (request.getPassword() == null || request.getPassword().isEmpty()) {
  52. throw new VisitorWithNullPasswordException(international.get("VisitorWithNullPasswordException"));
  53. } else if (request.getConfirmPassword() == null || !request.getPassword().equals(request.getConfirmPassword())) {
  54. throw new VisitorWithNotEqualsPasswordAndConfirmPaswordException(international.get("VisitorWithNotEqualsPasswordAndConfirmPaswordException"));
  55. } else if (site == null) {
  56. throw new CannotCreateVisitorForNullSiteException();
  57. } else if (persistance.getUserByEmail(request.getEmail().toLowerCase()) != null
  58. && (persistance.getUserByEmail(request.getEmail().toLowerCase()).getPassword() == null
  59. || !persistance.getUserByEmail(request.getEmail().toLowerCase()).getPassword().equals(request.getPassword()))) {
  60. throw new VisitorWithNotUniqueLogin(international.get("emailRegistered"));
  61. } else {
  62. try {
  63. new EmailChecker().execute(request.getEmail());
  64. } catch (final IncorrectEmailException ex) {
  65. throw new NotValidVisitorEmailException(international.get("NotValidVisitorEmailException"));
  66. }
  67. }
  68. if (persistance.getChildSiteRegistrationById(request.getFormId()) == null) {
  69. throw new ChildSiteRegistrationNotFoundException("Cannot find ChildSiteRegistration by id=" + request.getFormId());
  70. }
  71. checkDomainName(FilledFormManager.getDomainName(request.getFilledFormItems()));
  72. }
  73. public static void executeForNotFirstPage(final CreateChildSiteRequest request) throws Exception {
  74. if (request.getUserId() <= 0) {
  75. throw new UserNotFoundException("User Id isn't set in request.");
  76. }
  77. if (request.getSettingsId() <= 0) {
  78. throw new ChildSiteSettingsNotFoundException("Child site settings Id isn't set in request.");
  79. }
  80. final Persistance persistance = ServiceLocator.getPersistance();
  81. if (persistance.getChildSiteRegistrationById(request.getFormId()) == null) {
  82. throw new ChildSiteRegistrationNotFoundException("Cannot find ChildSiteRegistration by Id=" + request.getFormId());
  83. }
  84. if (persistance.getFilledFormById(request.getFilledFormId()) == null) {
  85. throw new FilledFormNotFoundException("Cannot find FilledForm by Id=" + request.getFormId());
  86. }
  87. checkDomainName(FilledFormManager.getDomainName(request.getFilledFormItems()));
  88. }
  89. public static void executeForEdit(final CreateChildSiteRequest request) {
  90. final Persistance persistance = ServiceLocator.getPersistance();
  91. if (persistance.getFilledFormById(request.getFilledFormId()) == null) {
  92. throw new FilledFormNotFoundException("Cannot find FilledForm by Id=" + request.getFormId());
  93. }
  94. if (persistance.getChildSiteRegistrationById(request.getFormId()) == null) {
  95. throw new ChildSiteRegistrationNotFoundException("Cannot find ChildSiteRegistration by Id=" + request.getFormId());
  96. }
  97. checkDomainName(FilledFormManager.getDomainName(request.getFilledFormItems()));
  98. }
  99. protected static void checkDomainName(final String domainName) {
  100. final International international = ServiceLocator.getInternationStorage().get("childSiteRegistration", Locale.US);
  101. if (!StringUtil.isNullOrEmpty(domainName)) {
  102. if (!UrlValidator.isSystemSubDomainValid(domainName)) {
  103. throw new WrongSubDomainNameException(international.get("enterCorrectDomainName"));
  104. }
  105. }
  106. }
  107. }