Author: tchemit Date: 2013-08-08 11:34:23 +0200 (Thu, 08 Aug 2013) New Revision: 407 Url: http://nuiton.org/projects/jredmine/repository/revisions/407 Log: - fixes #2630: Next-Version, Last-Version automatically set - remove commented code Modified: trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineAnonymousService.java trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineService.java trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineAnonymousService.java trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineConfigurationUtil.java trunk/jredmine-client/src/test/java/org/nuiton/jredmine/service/RedmineAnonymousServiceTest.java trunk/jredmine-maven-plugin/src/main/java/org/nuiton/jredmine/plugin/NextVersionMojo.java trunk/src/site/apt/index.apt Modified: trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineAnonymousService.java =================================================================== --- trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineAnonymousService.java 2013-08-08 08:39:23 UTC (rev 406) +++ trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineAnonymousService.java 2013-08-08 09:34:23 UTC (rev 407) @@ -40,8 +40,14 @@ import org.nuiton.jredmine.model.Tracker; import org.nuiton.jredmine.model.User; import org.nuiton.jredmine.model.Version; +import org.nuiton.jredmine.model.VersionStatusEnum; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + /** * Default implementation of {@link RedmineAnonymousService}. * @@ -168,6 +174,32 @@ } @Override + public Version getLastestClosedVersion(String projectName) throws RedmineServiceException { + + // get all versions + Version[] versions = getVersions(projectName); + List<Version> closedVersions = new ArrayList<Version>(); + for (Version version : versions) { + if (version.getEffectiveDate() != null && + VersionStatusEnum.closed.name().equals(version.getStatus())) { + closedVersions.add(version); + } + } + + Version result = null; + if (!closedVersions.isEmpty()) { + Collections.sort(closedVersions, new Comparator<Version>() { + @Override + public int compare(Version o1, Version o2) { + return o2.getEffectiveDate().compareTo(o1.getEffectiveDate()); + } + }); + result = closedVersions.get(0); + } + return result; + } + + @Override public Attachment[] getAttachments(String projectName, String versionName) throws RedmineServiceException { RedmineRequest<Attachment> request = Modified: trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineService.java =================================================================== --- trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineService.java 2013-08-08 08:39:23 UTC (rev 406) +++ trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineService.java 2013-08-08 09:34:23 UTC (rev 407) @@ -156,6 +156,12 @@ } @Override + public Version getLastestClosedVersion(String projectName) throws RedmineServiceException { + Version result = anonymousService.getLastestClosedVersion(projectName); + return result; + } + + @Override public Attachment[] getAttachments(String projectName, String versionName) throws RedmineServiceException { Attachment[] result = anonymousService.getAttachments(projectName, versionName); Modified: trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineAnonymousService.java =================================================================== --- trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineAnonymousService.java 2013-08-08 08:39:23 UTC (rev 406) +++ trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineAnonymousService.java 2013-08-08 09:34:23 UTC (rev 407) @@ -61,7 +61,7 @@ * Tells if service was successful initialized. * * @return {@code true} if service was successfull initialized via - * method {@link #init(RedmineServiceConfiguration)}, {@code false} otherwise. + * method {@link #init(RedmineServiceConfiguration)}, {@code false} otherwise. */ boolean isInit(); @@ -176,6 +176,17 @@ String versionName) throws RedmineServiceException; /** + * Obtain the lastest closed version for a given project. + * + * @param projectName the name of the project + * @return the version (or {@code null} if no version is matching) + * @throws RedmineServiceException if any pb while retriving datas + * @see Version + * @since 1.6 + */ + Version getLastestClosedVersion(String projectName) throws RedmineServiceException; + + /** * Obtain all issues for a given project. * * @param projectName the name of the project Modified: trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineConfigurationUtil.java =================================================================== --- trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineConfigurationUtil.java 2013-08-08 08:39:23 UTC (rev 406) +++ trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineConfigurationUtil.java 2013-08-08 09:34:23 UTC (rev 407) @@ -280,16 +280,6 @@ this.encoding = encoding; } -// @Override -// public String getPassword() { -// return restPassword; -// } -// -// @Override -// public void setPassword(String password) { -// this.restPassword = password; -// } - @Override public URL getUrl() { return url; @@ -300,16 +290,6 @@ this.url = url; } -// @Override -// public String getUsername() { -// return restUsername; -// } -// -// @Override -// public void setUsername(String username) { -// this.restUsername = username; -// } - @Override public boolean isVerbose() { return verbose; @@ -348,15 +328,5 @@ b.append("verbose", verbose); return b.toString(); } - -// @Override -// public String getApiKey() { -// return apiKey; -// } -// -// @Override -// public void setApiKey(String apiKey) { -// this.apiKey = apiKey; -// } } } Modified: trunk/jredmine-client/src/test/java/org/nuiton/jredmine/service/RedmineAnonymousServiceTest.java =================================================================== --- trunk/jredmine-client/src/test/java/org/nuiton/jredmine/service/RedmineAnonymousServiceTest.java 2013-08-08 08:39:23 UTC (rev 406) +++ trunk/jredmine-client/src/test/java/org/nuiton/jredmine/service/RedmineAnonymousServiceTest.java 2013-08-08 09:34:23 UTC (rev 407) @@ -101,6 +101,13 @@ } @Test + public void getLastestClosedVersion() throws Exception { + Version version = getService().getLastestClosedVersion(getFixtures().projectName()); + Assert.assertNotNull(version); + System.out.println(version.getName()); + } + + @Test public void getVersion() throws Exception { Version version = getService().getVersion(getFixtures().projectName(), getFixtures().versionName()); Assert.assertNotNull(version); Modified: trunk/jredmine-maven-plugin/src/main/java/org/nuiton/jredmine/plugin/NextVersionMojo.java =================================================================== --- trunk/jredmine-maven-plugin/src/main/java/org/nuiton/jredmine/plugin/NextVersionMojo.java 2013-08-08 08:39:23 UTC (rev 406) +++ trunk/jredmine-maven-plugin/src/main/java/org/nuiton/jredmine/plugin/NextVersionMojo.java 2013-08-08 09:34:23 UTC (rev 407) @@ -96,6 +96,19 @@ protected String previousVersionName; /** + * To use the lastest closed version as the previous version. + * <p/> + * If not Set - will not move any issues to the new version. + * <p/> + * <strong>Note:</strong> No effect when {@link #previousVersionName} + * is filled. + * + * @since 1.6 + */ + @Parameter(property = "redmine.useLastPreviousVersion") + protected boolean useLastPreviousVersion; + + /** * A flag to skip the goal. * * @since 1.0.0 @@ -249,7 +262,8 @@ // get version Version v = getProjectVersion(versionId); - boolean usePreviousVersion = false; + String safePreviousVersionName = null; + if (StringUtils.isNotBlank(previousVersionName)) { // retrieve previous version @@ -257,8 +271,22 @@ if (previousVersion == null) { getLog().warn("can not find the previous version " + previousVersionName); } else { - usePreviousVersion = true; + safePreviousVersionName = previousVersionName; } + + if (useLastPreviousVersion) { + getLog().warn("useLastPreviousVersion flag has no effect when previousVersionName property is filled."); + } + } else if (useLastPreviousVersion) { + + // get all version + Version previousVersion = service.getLastestClosedVersion(projectId); + if (previousVersion == null) { + getLog().warn("No latest closed version"); + } else { + getLog().info("Will use as previous version (the latest closed one): " + previousVersion.getName()); + safePreviousVersionName = previousVersion.getName(); + } } if (v == null) { @@ -280,9 +308,9 @@ if (!dryRun) { // create version - getLog().info("next version " + releaseVersion.getName() + (usePreviousVersion ? " from previous version " + previousVersionName : "")); + getLog().info("next version " + releaseVersion.getName() + (safePreviousVersionName != null ? " from previous version " + safePreviousVersionName : "")); - service.nextVersion(projectId, usePreviousVersion ? previousVersionName : null, releaseVersion); + service.nextVersion(projectId, safePreviousVersionName, releaseVersion); } } } Modified: trunk/src/site/apt/index.apt =================================================================== --- trunk/src/site/apt/index.apt 2013-08-08 08:39:23 UTC (rev 406) +++ trunk/src/site/apt/index.apt 2013-08-08 09:34:23 UTC (rev 407) @@ -54,6 +54,14 @@ Notes +* Version 1.6 + + La version <<1.6>> améliore la gestion d'éxecution des goals, on peut + désormais configurer le fait de lancer ou pas les goals sur les modules root. + + On a aussi ajouté la possible de choisir de manière automatique la dernière + version clôturée (voir http://nuiton.org/issues/2630). + * Version 1.5 La version <<1.5>> permet d'utiliser désormais l'authentification via l'api-key.