Refactor validateNewProject to reduce complexity

Change-Id: I94ce138db8337a1b50993687b09d38ad8a7e1885
diff --git a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
index fb08896..40273f5 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
@@ -99,35 +99,13 @@
       return;
     }
 
-    Project parent = parentCtrl.getProject();
-
-    if (allProjectsName.get().equals(parent.getNameKey())) {
-      if (name.contains("/")) {
-        log.debug("rejecting creation of {}: name contains slashes", name);
-        throw new ValidationException(String.format(
-            ROOT_PROJECT_CANNOT_CONTAINS_SLASHES_MSG, documentationUrl));
-      }
-      if (!args.permissionsOnly) {
-        log.debug("rejecting creation of {}: missing permissions only option",
-            name);
-        throw new ValidationException(String
-            .format(REGULAR_PROJECT_NOT_ALLOWED_AS_ROOT_MSG, documentationUrl));
-      }
+    if (allProjectsName.get().equals(parentCtrl.getProject().getNameKey())) {
+      validateRootProject(name, args.permissionsOnly);
       args.ownerIds.add(createGroup(name + "-admins"));
-      log.debug("allowing creation of root project {}", name);
       return;
     }
 
-    validateProjectNamePrefix(name, parent);
-
-    if (!parentCtrl.isOwner()) {
-      log.debug("rejecting creation of {}: user is not owner of {}", name,
-          parent.getName());
-      throw new ValidationException(
-          String.format(MUST_BE_OWNER_TO_CREATE_PROJECT_MSG, parent.getName(),
-              documentationUrl));
-    }
-    log.debug("allowing creation of project {}", name);
+    validateProject(name, parentCtrl);
   }
 
   private AccountGroup.UUID createGroup(String name)
@@ -155,9 +133,27 @@
     }
   }
 
-  private void validateProjectNamePrefix(String name, Project parent)
+  private void validateRootProject(String name, boolean permissionOnly)
+      throws ValidationException {
+    log.debug("validating root project name {}", name);
+    if (name.contains("/")) {
+      log.debug("rejecting creation of {}: name contains slashes", name);
+      throw new ValidationException(String
+          .format(ROOT_PROJECT_CANNOT_CONTAINS_SLASHES_MSG, documentationUrl));
+    }
+    if (!permissionOnly) {
+      log.debug("rejecting creation of {}: missing permissions only option",
+          name);
+      throw new ValidationException(String
+          .format(REGULAR_PROJECT_NOT_ALLOWED_AS_ROOT_MSG, documentationUrl));
+    }
+    log.debug("allowing creation of root project {}", name);
+  }
+
+  private void validateProject(String name, ProjectControl parentCtrl)
       throws ValidationException {
     log.debug("validating name prefix of {}", name);
+    Project parent = parentCtrl.getProject();
     String prefix = parent.getName() + "/";
     if (!name.startsWith(prefix)) {
       log.debug("rejecting creation of {}: name is not starting with {}", name,
@@ -166,5 +162,13 @@
           String.format(PROJECT_MUST_START_WITH_PARENT_NAME_MSG, prefix + name,
               documentationUrl));
     }
+    if (!parentCtrl.isOwner()) {
+      log.debug("rejecting creation of {}: user is not owner of {}", name,
+          parent.getName());
+      throw new ValidationException(
+          String.format(MUST_BE_OWNER_TO_CREATE_PROJECT_MSG, parent.getName(),
+              documentationUrl));
+    }
+    log.debug("allowing creation of project {}", name);
   }
 }