From 69bb0eab286c3bf4e88004bade27e08732878150 Mon Sep 17 00:00:00 2001 From: Patrick Huang Date: Wed, 7 Jan 2015 10:15:54 +1000 Subject: [PATCH] set project type when selecting version in zanata init --- .../commands/init/ProjectIterationPrompt.java | 29 ++++++++++++++++--- .../client/commands/init/ProjectPrompt.java | 10 +++---- .../init/ProjectIterationPromptTest.java | 2 ++ 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/zanata-client-commands/src/main/java/org/zanata/client/commands/init/ProjectIterationPrompt.java b/zanata-client-commands/src/main/java/org/zanata/client/commands/init/ProjectIterationPrompt.java index c0ed91fb..16d3f457 100644 --- a/zanata-client-commands/src/main/java/org/zanata/client/commands/init/ProjectIterationPrompt.java +++ b/zanata-client-commands/src/main/java/org/zanata/client/commands/init/ProjectIterationPrompt.java @@ -20,6 +20,7 @@ */ package org.zanata.client.commands.init; +import static com.google.common.base.Strings.isNullOrEmpty; import static org.zanata.client.commands.ConsoleInteractor.DisplayMode.Confirmation; import static org.zanata.client.commands.ConsoleInteractor.DisplayMode.Hint; import static org.zanata.client.commands.ConsoleInteractor.DisplayMode.Question; @@ -29,6 +30,7 @@ import java.util.List; import org.zanata.client.commands.ConsoleInteractor; +import org.zanata.client.commands.ConsoleInteractorImpl; import org.zanata.common.EntityStatus; import org.zanata.rest.client.ProjectClient; import org.zanata.rest.client.ProjectIterationClient; @@ -37,7 +39,9 @@ import org.zanata.rest.dto.ProjectIteration; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Joiner; import com.google.common.base.Predicate; +import com.google.common.base.Strings; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.sun.jersey.api.client.UniformInterfaceException; @@ -93,11 +97,28 @@ protected void selectVersion() { consoleInteractor.printf(Question, _("select.version.prompt")); String selection = consoleInteractor.expectAnswerWithRetry(expect(versionIndexes)); - String versionId = - Iterables.get(activeIterations, - (Integer.valueOf(selection) - 1)) - .getId(); + ProjectIteration projectIteration = Iterables.get(activeIterations, + (Integer.valueOf(selection) - 1)); + String versionId = projectIteration.getId(); opts.setProjectVersion(versionId); + opts.setProjectType(resolveProjectType(project, projectIteration)); + } + + private String resolveProjectType(Project project, + ProjectIteration projectIteration) { + if (!isNullOrEmpty(projectIteration.getProjectType())) { + return projectIteration.getProjectType().toLowerCase(); + } else if (!isNullOrEmpty(project.getDefaultType())) { + return project.getDefaultType().toLowerCase(); + } else { + String projectTypes = + Joiner.on(", ").join(ProjectPrompt.PROJECT_TYPE_LIST); + consoleInteractor.printfln(Question, _("project.type.prompt"), + projectTypes); + return consoleInteractor.expectAnswerWithRetry( + ConsoleInteractorImpl.AnswerValidatorImpl + .expect(ProjectPrompt.PROJECT_TYPE_LIST)); + } } @VisibleForTesting diff --git a/zanata-client-commands/src/main/java/org/zanata/client/commands/init/ProjectPrompt.java b/zanata-client-commands/src/main/java/org/zanata/client/commands/init/ProjectPrompt.java index 8a7f95ab..7ccf2c8d 100644 --- a/zanata-client-commands/src/main/java/org/zanata/client/commands/init/ProjectPrompt.java +++ b/zanata-client-commands/src/main/java/org/zanata/client/commands/init/ProjectPrompt.java @@ -60,6 +60,9 @@ class ProjectPrompt { // state variables private List allProjects = Collections.emptyList(); private List filteredProjects = Collections.emptyList(); + public static final List PROJECT_TYPE_LIST = + Lists.transform(Lists.newArrayList(ProjectType.values()), + new ProjectTypeToStringFunction()); ProjectPrompt(ConsoleInteractor consoleInteractor, InitOptions opts, ProjectIterationPrompt projectIterationPrompt, @@ -190,14 +193,11 @@ protected void createNewProject() { String projectId = consoleInteractor.expectAnyAnswer(); consoleInteractor.printfln(Question, _("project.name.prompt")); String projectName = consoleInteractor.expectAnyAnswer(); - List projectTypeList = - Lists.transform(Lists.newArrayList(ProjectType.values()), - new ProjectTypeToStringFunction()); - String projectTypes = Joiner.on(", ").join(projectTypeList); + String projectTypes = Joiner.on(", ").join(PROJECT_TYPE_LIST); consoleInteractor.printfln(Question, _("project.type.prompt"), projectTypes); String projectType = consoleInteractor.expectAnswerWithRetry( - AnswerValidatorImpl.expect(projectTypeList)); + AnswerValidatorImpl.expect(PROJECT_TYPE_LIST)); ProjectClient projectClient = clientFactory.getProjectClient(projectId); Project project = new Project(projectId, projectName, projectType); try { diff --git a/zanata-client-commands/src/test/java/org/zanata/client/commands/init/ProjectIterationPromptTest.java b/zanata-client-commands/src/test/java/org/zanata/client/commands/init/ProjectIterationPromptTest.java index 1ad5d581..9f7abe6b 100644 --- a/zanata-client-commands/src/test/java/org/zanata/client/commands/init/ProjectIterationPromptTest.java +++ b/zanata-client-commands/src/test/java/org/zanata/client/commands/init/ProjectIterationPromptTest.java @@ -72,11 +72,13 @@ public void willGuideUserToSelectVersion() { verify(projectClient).get(); assertThat(opts.getProjectVersion(), Matchers.equalTo("4.8.2")); + assertThat(opts.getProjectType(), Matchers.equalTo("gettext")); } private static ProjectIteration newIteration(String id, EntityStatus status) { ProjectIteration iteration = new ProjectIteration(id); iteration.setStatus(status); + iteration.setProjectType("gettext"); return iteration; }