1 /* 2 * Copyright 2012 smartics, Kronseder & Reiner GmbH 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package de.smartics.maven.bugzilla; 17 18 import org.apache.maven.plugin.MojoExecutionException; 19 import org.apache.maven.plugin.MojoFailureException; 20 import org.apache.maven.project.MavenProject; 21 22 import de.smartics.maven.issue.command.AddVersionCommand; 23 import de.smartics.maven.issue.command.CommandResult; 24 import de.smartics.maven.issue.command.ProductNavigationCommand; 25 import de.smartics.maven.issue.util.VersionHelper; 26 27 /** 28 * Helper to add versions. 29 */ 30 class MojoHelperVersion extends AbstractMojoHelper 31 { 32 33 // ********************************* Fields ********************************* 34 35 // --- constants ------------------------------------------------------------ 36 37 // --- members -------------------------------------------------------------- 38 39 // ****************************** Initializer ******************************* 40 41 // ****************************** Constructors ****************************** 42 43 /** 44 * Default constructor. 45 * 46 * @param project the Maven project. 47 * @param commandFactory the helper to create commands. 48 * @param console the console to execute commands. 49 * @see de.smartics.maven.bugzilla.AbstractMojoHelper#AbstractMojoHelper(org.apache.maven.project.MavenProject, 50 * de.smartics.maven.bugzilla.MavenCommandFactory, 51 * de.smartics.maven.bugzilla.Console) 52 */ 53 protected MojoHelperVersion(final MavenProject project, 54 final MavenCommandFactory commandFactory, final Console console) 55 { 56 super(project, commandFactory, console); 57 } 58 59 // ****************************** Inner Classes ***************************** 60 61 // ********************************* Methods ******************************** 62 63 // --- init ----------------------------------------------------------------- 64 65 // --- get&set -------------------------------------------------------------- 66 67 // --- business ------------------------------------------------------------- 68 69 /** 70 * Executes the helpers commands. 71 * 72 * @param product the name of the product whose version is to be added. 73 * @param version the version to add. 74 * @throws MojoExecutionException if an unexpected problem occurs. Throwing 75 * this exception causes a "BUILD ERROR" message to be displayed. 76 * @throws MojoFailureException if an expected problem (such as a compilation 77 * failure) occurs. Throwing this exception causes a "BUILD FAILURE" 78 * message to be displayed. 79 */ 80 public final void run(final String product, final String version) 81 throws MojoExecutionException, MojoFailureException 82 { 83 final ProductNavigationCommand navigationCommand = 84 createNavigationCommand(product); 85 console.execute(navigationCommand); 86 87 final CommandResult<?> navigationResult = navigationCommand.getResult(); 88 final String token = navigationResult.getToken(); 89 final AddVersionCommand addVersionCommand = 90 createAddVersionCommand(product, version, token); 91 console.execute(addVersionCommand); 92 } 93 94 private ProductNavigationCommand createNavigationCommand(final String product) 95 { 96 final ProductNavigationCommand command = 97 commandFactory.createVersionProductNavigationCommand(product); 98 return command; 99 } 100 101 private AddVersionCommand createAddVersionCommand(final String product, 102 final String version, final String token) 103 { 104 final VersionHelper helper = new VersionHelper(project); 105 final String nextVersion = helper.calculateNextVersion(version); 106 if (nextVersion == null) 107 { 108 return null; 109 } 110 final AddVersionCommand command = 111 commandFactory.createAddVersionCommand(product, nextVersion, token); 112 return command; 113 } 114 115 // --- object basics -------------------------------------------------------- 116 117 }