Author: tchemit Date: 2011-06-04 18:57:56 +0200 (Sat, 04 Jun 2011) New Revision: 210 Url: http://nuiton.org/repositories/revision/jredmine/210 Log: Evolution #1557: Close the version on redmine project (using the status of a project's version) Modified: trunk/maven-jredmine-plugin/src/main/java/org/nuiton/jredmine/plugin/UpdateVersionMojo.java Modified: trunk/maven-jredmine-plugin/src/main/java/org/nuiton/jredmine/plugin/UpdateVersionMojo.java =================================================================== --- trunk/maven-jredmine-plugin/src/main/java/org/nuiton/jredmine/plugin/UpdateVersionMojo.java 2011-06-04 15:47:17 UTC (rev 209) +++ trunk/maven-jredmine-plugin/src/main/java/org/nuiton/jredmine/plugin/UpdateVersionMojo.java 2011-06-04 16:57:56 UTC (rev 210) @@ -25,11 +25,14 @@ package org.nuiton.jredmine.plugin; import org.apache.maven.plugin.MojoExecutionException; +import org.codehaus.plexus.util.StringUtils; import org.nuiton.jredmine.model.ModelHelper; import org.nuiton.jredmine.model.Version; +import org.nuiton.jredmine.model.VersionStatusEnum; import org.nuiton.plugin.PluginHelper; import java.text.ParseException; +import java.util.Arrays; import java.util.Date; /** @@ -65,7 +68,7 @@ /** * A flag to close the version on redmine (will fix effectiveDate). - * + * <p/> * The status of the version will be setted to {@code closed} then. * * @parameter expression="${redmine.closeVersion}" default-value="false" @@ -87,6 +90,17 @@ protected String effectiveDate; /** + * The status to set on the version amoung values {@code open, lock, closed}. + * <p/> + * If not Set - will use the {@code closed} value only if + * {@link #closeVersion} flag is on. + * + * @parameter expression="${redmine.versionStatus}" + * @since 1.2.1 + */ + protected String versionStatus; + + /** * A flag to skip the goal. * * @parameter expression="${redmine.skipUpdateVersion}" default-value="false" @@ -110,9 +124,17 @@ */ protected boolean runOnce; + /** effective date to set */ private Date date; + /** + * new status to apply (stay null if nothing is asked). + * + * @since 1.2.1 + */ + private VersionStatusEnum newVersionStatus; + public UpdateVersionMojo() { super(true, false, true); } @@ -171,6 +193,34 @@ } else if (closeVersion) { date = new Date(); } + + if (closeVersion) { + + // by default use the closed status when closing a version + newVersionStatus = VersionStatusEnum.closed; + } + + if (StringUtils.isNotEmpty(versionStatus)) { + try { + newVersionStatus = VersionStatusEnum.valueOf(versionStatus); + } catch (IllegalArgumentException e) { + throw new MojoExecutionException( + "could not parse status " + versionStatus + + " for reason " + e.getMessage() + + ", should be one of values : " + + Arrays.toString(VersionStatusEnum.values()), e); + } + + if (closeVersion) { + // warns user + + if (getLog().isWarnEnabled()) { + getLog().warn("While using the closeVersion flag, you " + + "should not set also the version status " + + ": [" + versionStatus + "]"); + } + } + } super.init(); } @@ -207,10 +257,14 @@ v.setEffectiveDate(date); } - if (closeVersion) { + if (newVersionStatus != null) { - // change status to closed - v.setStatus("closed"); + // change status of the version + if (isVerbose()) { + getLog().info("Will set status " + newVersionStatus); + + } + v.setStatus(newVersionStatus.name()); } releaseVersion = v;