Sandbox-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- 1825 discussions
Author: tchemit
Date: 2009-09-12 01:41:26 +0200 (Sat, 12 Sep 2009)
New Revision: 88
Modified:
maven-redmine-plugin/trunk/pom.xml
Log:
add distribution management
Modified: maven-redmine-plugin/trunk/pom.xml
===================================================================
--- maven-redmine-plugin/trunk/pom.xml 2009-09-11 23:29:25 UTC (rev 87)
+++ maven-redmine-plugin/trunk/pom.xml 2009-09-11 23:41:26 UTC (rev 88)
@@ -510,6 +510,21 @@
<url>http://hudson.${platform}/hudson/job/${projectId}</url>
</ciManagement>
+ <distributionManagement>
+ <repository>
+ <id>nuiton</id>
+ <url>scpexe://nuiton.org/var/lib/maven/release</url>
+ </repository>
+ <snapshotRepository>
+ <id>nuiton</id>
+ <url>scpexe://nuiton.org/var/lib/maven/snapshot</url>
+ </snapshotRepository>
+ <site>
+ <id>nuiton</id>
+ <url>scpexe://nuiton.org/var/lib/redmine-nuiton/project-site/${project.artifactI…</url>
+ </site>
+ </distributionManagement>
+
<!--Any mailing lists for the project-->
<mailingLists>
<mailingList>
1
0
r87 - in maven-redmine-plugin/trunk/src: main/java/org/nuiton/redmine main/java/org/nuiton/redmine/plugin test/java/org/nuiton/redmine/plugin
by tchemit@users.nuiton.org 11 Sep '09
by tchemit@users.nuiton.org 11 Sep '09
11 Sep '09
Author: tchemit
Date: 2009-09-12 01:29:25 +0200 (Sat, 12 Sep 2009)
New Revision: 87
Modified:
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GenerateChangesMojo.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GenerateChangesMojoTest.java
Log:
fix when bug when host can not be reached
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java 2009-09-11 22:10:54 UTC (rev 86)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java 2009-09-11 23:29:25 UTC (rev 87)
@@ -54,8 +54,12 @@
session = openSession(config, log);
} catch (Exception e) {
- log.error("could not open session to redmin server for reason : " + e.getMessage(), e);
- throw e;
+ log.warn("could not open session to redmin server for reason : " + e.getMessage());
+ if (config.isVerbose()) {
+ log.error("could not open session to redmin server for reason : " + e.getMessage(), e);
+ }
+ config.setOffline(true);
+ config.setOverwrite(false);
}
}
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java 2009-09-11 22:10:54 UTC (rev 86)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java 2009-09-11 23:29:25 UTC (rev 87)
@@ -231,9 +231,9 @@
reload = false;
}
boolean old = dataProvider.isOverwrite();
- if (reload) {
- dataProvider.setOverwrite(true);
- }
+// if (reload) {
+ dataProvider.setOverwrite(reload);
+// }
try {
T[] datas = dataProvider.getDatas(type, projectId, versionId);
@@ -257,9 +257,9 @@
reload = false;
}
boolean old = dataProvider.isOverwrite();
- if (reload) {
- dataProvider.setOverwrite(true);
- }
+// if (reload) {
+ dataProvider.setOverwrite(reload);
+// }
try {
T data = dataProvider.getData(type, projectId, versionId);
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java 2009-09-11 22:10:54 UTC (rev 86)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java 2009-09-11 23:29:25 UTC (rev 87)
@@ -43,19 +43,27 @@
@Override
protected boolean init() throws Exception {
- redmineDataTypes = getRedmineDataTypes(types,
- RedmineDataType.issueStatuses,
- RedmineDataType.issuePriorities,
- RedmineDataType.issueCategories,
- RedmineDataType.trackers,
- RedmineDataType.users);
+ boolean init = super.init();
+ if (init) {
+ if (offline) {
+ // can not download data where offline
+ getLog().warn("can not download data when offline flag is on, goal is skip");
+ return false;
+ }
+ redmineDataTypes = getRedmineDataTypes(types,
+ RedmineDataType.issueStatuses,
+ RedmineDataType.issuePriorities,
+ RedmineDataType.issueCategories,
+ RedmineDataType.trackers,
+ RedmineDataType.users);
- if (redmineDataTypes.length == 0) {
- // no data to treate
- getLog().warn("no data types detected, you must fill the required parameter dataTypes");
- return false;
+ if (redmineDataTypes.length == 0) {
+ // no data to treate
+ getLog().warn("no data types detected, you must fill the required parameter dataTypes");
+ init = false;
+ }
}
- return super.init();
+ return init;
}
@Override
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java 2009-09-11 22:10:54 UTC (rev 86)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java 2009-09-11 23:29:25 UTC (rev 87)
@@ -1,7 +1,6 @@
package org.nuiton.redmine.plugin;
import java.io.File;
-import org.apache.maven.plugin.MojoFailureException;
import org.nuiton.redmine.RedmineDataType;
import org.nuiton.util.PluginHelper;
@@ -47,19 +46,23 @@
@Override
protected boolean init() throws Exception {
- if (offline) {
- // can not download data where offline
- throw new MojoFailureException("can not download data when offline flag is on");
- }
+ boolean init = super.init();
+ if (init) {
+ if (offline) {
+ // can not download data where offline
+ getLog().warn("can not download data when offline flag is on, goal is skip");
+ return false;
+ }
- redmineDataTypes = getRedmineDataTypes(types);
+ redmineDataTypes = getRedmineDataTypes(types);
- if (redmineDataTypes.length == 0) {
- // no data to treate
- getLog().warn("no data types detected, you must fill the required parameter dataTypes");
- return false;
+ if (redmineDataTypes.length == 0) {
+ // no data to treate
+ getLog().warn("no data types detected, you must fill the required parameter dataTypes");
+ init = false;
+ }
}
- return super.init();
+ return init;
}
@Override
@@ -72,11 +75,11 @@
}
File f = helper.uptodateLocalDataFile(type);
-
+
getLog().info("data [" + type + "] stored in " + f);
if (verbose) {
String t = PluginHelper.readAsString(f, encoding);
- getLog().info(t);
+ getLog().info(t);
}
}
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GenerateChangesMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GenerateChangesMojo.java 2009-09-11 22:10:54 UTC (rev 86)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GenerateChangesMojo.java 2009-09-11 23:29:25 UTC (rev 87)
@@ -161,190 +161,199 @@
return false;
}
- // check project exists
-
try {
- Project p = helper.getProject(true);
- this.redmineProject = p;
- } catch (RedmineDataException e) {
- throw new MojoExecutionException("the project named '" + projectId + "' does not exists on redmine server...", e);
- }
+ // check project exists
- // get version
- try {
- Version v = helper.getVersion(true);
- this.releaseVersion = v;
- } catch (RedmineDataException e) {
- // la version n'existe pas
- // must create a new version
- // must create a versions ?
- getLog().warn("the version " + versionId + " does not exist, will create it on redmine");
- if (offline) {
- throw new MojoExecutionException("offline is on, can not reach nuiton server");
+ try {
+ Project p = helper.getProject();
+ this.redmineProject = p;
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("the project named '" + projectId + "' does not exists on redmine server...", e);
}
- //TODO use rest/add_versions
- // and reload versions
- this.needCreateVersion = true;
- }
- // get user
- try {
- User user = helper.getUserByLogin(overwrite, redmineUsername);
+ // get version
+ try {
+ Version v = helper.getVersion();
+ this.releaseVersion = v;
+ } catch (RedmineDataException e) {
+ // la version n'existe pas
+ // must create a new version
+ // must create a versions ?
+ getLog().warn("the version " + versionId + " does not exist, will create it on redmine");
+ if (offline) {
+ throw new MojoExecutionException("offline is on, can not reach nuiton server");
+ }
+ //TODO use rest/add_versions
+ // and reload versions
+ this.needCreateVersion = true;
+ }
- if (user == null) {
- throw new MojoExecutionException("user named " + redmineUsername + "' is not part of the project, can not execute the plugin...");
+ // get user
+ try {
+ User user = helper.getUserByLogin(overwrite, redmineUsername);
+
+ if (user == null) {
+ throw new MojoExecutionException("user named " + redmineUsername + "' is not part of the project, can not execute the plugin...");
+ }
+ this.redmineUser = user;
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("the user named '" + redmineUsername + "' could not be found on the project, can not execute the plugin...", e);
}
- this.redmineUser = user;
- } catch (RedmineDataException e) {
- throw new MojoExecutionException("the user named '" + redmineUsername + "' could not be found on the project, can not execute the plugin...", e);
- }
- // get trackers
+ // get trackers
- Tracker[] trackers;
- try {
+ Tracker[] trackers;
+ try {
- trackers = helper.getTrackers(overwrite);
+ trackers = helper.getTrackers(overwrite);
- } catch (RedmineDataException e) {
- throw new MojoExecutionException("could not obtain trackers for reason " + e.getMessage(), e);
- }
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("could not obtain trackers for reason " + e.getMessage(), e);
+ }
- // get statuses
+ // get statuses
- IssueStatus[] statuses;
- try {
+ IssueStatus[] statuses;
+ try {
- statuses = helper.getIssueSatuses(overwrite);
+ statuses = helper.getIssueSatuses(overwrite);
- } catch (RedmineDataException e) {
- throw new MojoExecutionException("could not obtain statuses for reason " + e.getMessage(), e);
- }
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("could not obtain statuses for reason " + e.getMessage(), e);
+ }
- // get categories
+ // get categories
- IssueCategory[] categories;
- try {
+ IssueCategory[] categories;
+ try {
- categories = helper.getIssueCategories(overwrite);
+ categories = helper.getIssueCategories(overwrite);
- } catch (RedmineDataException e) {
- throw new MojoExecutionException("could not obtain categories for reason " + e.getMessage(), e);
- }
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("could not obtain categories for reason " + e.getMessage(), e);
+ }
- // get versions
+ // get versions
- try {
+ try {
- versions = helper.getVersions(overwrite);
+ versions = helper.getVersions(overwrite);
- } catch (RedmineDataException e) {
- throw new MojoExecutionException("could not obtain versions for reason " + e.getMessage(), e);
- }
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("could not obtain versions for reason " + e.getMessage(), e);
+ }
- filters = new HashMap<String, String>();
+ filters = new HashMap<String, String>();
- // build trackerToAction and tracker filter
+ // build trackerToAction and tracker filter
- trackerToAction = new HashMap<Integer, String>();
+ trackerToAction = new HashMap<Integer, String>();
- String[] entries = actionMapping.split(",");
- StringBuilder buffer = new StringBuilder();
- for (String entry : entries) {
- String[] parts = entry.split(":");
- if (parts.length != 2) {
- // error in syntax
- throw new MojoExecutionException("the trackerMapping entry " + Arrays.toString(parts) + " is not well formed");
- }
- String action = parts[0].trim().toLowerCase();
+ String[] entries = actionMapping.split(",");
+ StringBuilder buffer = new StringBuilder();
+ for (String entry : entries) {
+ String[] parts = entry.split(":");
+ if (parts.length != 2) {
+ // error in syntax
+ throw new MojoExecutionException("the trackerMapping entry " + Arrays.toString(parts) + " is not well formed");
+ }
+ String action = parts[0].trim().toLowerCase();
- try {
- Actions.valueOf(action);
- } catch (Exception e) {
- throw new MojoExecutionException("the action " + action + " is unknown... authorized : " + Arrays.toString(Actions.values()));
- }
+ try {
+ Actions.valueOf(action);
+ } catch (Exception e) {
+ throw new MojoExecutionException("the action " + action + " is unknown... authorized : " + Arrays.toString(Actions.values()));
+ }
- Integer id = Integer.valueOf(parts[1].trim());
+ Integer id = Integer.valueOf(parts[1].trim());
- Tracker t = Tracker.getTrackerById(id, trackers);
+ Tracker t = Tracker.getTrackerById(id, trackers);
- if (t == null) {
- throw new MojoExecutionException("could not obtain the tracker with id " + id);
+ if (t == null) {
+ throw new MojoExecutionException("could not obtain the tracker with id " + id);
+ }
+
+ trackerToAction.put(id, action);
+ buffer.append(",").append(id);
}
- trackerToAction.put(id, action);
- buffer.append(",").append(id);
- }
+ filters.put("tracker", buffer.substring(1));
- filters.put("tracker", buffer.substring(1));
+ // create status filters
- // create status filters
+ for (String s : statusIds.split(",")) {
+ Integer id = Integer.valueOf(s.trim());
- for (String s : statusIds.split(",")) {
- Integer id = Integer.valueOf(s.trim());
+ IssueStatus t = IssueStatus.getIssueStatusById(id, statuses);
- IssueStatus t = IssueStatus.getIssueStatusById(id, statuses);
-
- if (t == null) {
- throw new MojoExecutionException("could not obtain the status with id " + id);
+ if (t == null) {
+ throw new MojoExecutionException("could not obtain the status with id " + id);
+ }
}
- }
- filters.put("status", statusIds);
+ filters.put("status", statusIds);
- if (categoryIds != null && !categoryIds.trim().isEmpty()) {
+ if (categoryIds != null && !categoryIds.trim().isEmpty()) {
- // create category filters
+ // create category filters
- for (String s : categoryIds.split(",")) {
- Integer id = Integer.valueOf(s.trim());
+ for (String s : categoryIds.split(",")) {
+ Integer id = Integer.valueOf(s.trim());
- IssueCategory t = IssueCategory.getIssueCategoryById(id, categories);
+ IssueCategory t = IssueCategory.getIssueCategoryById(id, categories);
- if (t == null) {
- throw new MojoExecutionException("could not obtain the category with id " + id);
+ if (t == null) {
+ throw new MojoExecutionException("could not obtain the category with id " + id);
+ }
}
+
+ filters.put("category", categoryIds);
}
- filters.put("category", categoryIds);
- }
+ // create version filters
- // create version filters
+ List<Version> versionList = new ArrayList<Version>();
+ if (onlyCurrentVersion) {
+ // nothing to do here, the issue collector will treate this simple case
+ versionList.add(releaseVersion);
- List<Version> versionList = new ArrayList<Version>();
- if (onlyCurrentVersion) {
- // nothing to do here, the issue collector will treate this simple case
- versionList.add(releaseVersion);
+ } else {
- } else {
+ buffer = new StringBuilder();
- buffer = new StringBuilder();
+ for (Version v : versions) {
- for (Version v : versions) {
+ int id = v.getId();
- int id = v.getId();
+ boolean keep = true;
+ if (id != releaseVersion.getId()) {
- boolean keep = true;
- if (id != releaseVersion.getId()) {
+ //TODO TC-20090914 make this better, since this is a very soft test
+ // to test only the effective date
- //TODO TC-20090914 make this better, since this is a very soft test
- // to test only the effective date
+ if (v.getEffectiveDate() == null) {
+ // skip this unclosed version
+ keep = false;
+ }
+ }
- if (v.getEffectiveDate() == null) {
- // skip this unclosed version
- keep = false;
+ if (keep) {
+
+ buffer.append(",").append(v.getName());
+ versionList.add(v);
}
}
- if (keep) {
-
- buffer.append(",").append(v.getName());
- versionList.add(v);
- }
+ versions = versionList.toArray(new Version[versionList.size()]);
+ filters.put("version", buffer.substring(1));
}
-
- versions = versionList.toArray(new Version[versionList.size()]);
- filters.put("version", buffer.substring(1));
+ } catch (Exception e) {
+ if (verbose) {
+ getLog().warn("could not init the plugin for reason " + e.getMessage(), e);
+ } else {
+ getLog().warn("could not init the plugin for reason " + e.getMessage());
+ }
+ result = false;
}
return result;
}
Modified: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GenerateChangesMojoTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GenerateChangesMojoTest.java 2009-09-11 22:10:54 UTC (rev 86)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GenerateChangesMojoTest.java 2009-09-11 23:29:25 UTC (rev 87)
@@ -38,7 +38,7 @@
// copy redmine test server configuration
TestHelper.copyConfiguration(TestHelper.getTestConfiguration(GenerateChangesMojoTest.class.getSimpleName() + "-" + pomFile.getName()), mojo);
- mojo.setVerbose(true);
+
// add a issue management
IssueManagement i = new IssueManagement();
i.setSystem("redmine");
1
0
Author: tchemit
Date: 2009-09-12 00:10:54 +0200 (Sat, 12 Sep 2009)
New Revision: 86
Added:
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/DataNotFoundException.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssueCollectorConfiguration.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssuesCollector.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfiguration.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataException.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataProvider.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataType.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/I18nAble.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IdAble.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueCategory.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssuePriority.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueStatus.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueCategoryXpp3Reader.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssuePriorityXpp3Reader.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueStatusXpp3Reader.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3Helper.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractIssuesReport.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractRedmineReport.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssueReportGenerator.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReport.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByAssignee.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByCategory.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByPriority.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByReporter.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByStatus.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByTracker.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByVersion.java
maven-redmine-plugin/trunk/src/main/resources/META-INF/plexus/
maven-redmine-plugin/trunk/src/main/resources/META-INF/plexus/components.xml
maven-redmine-plugin/trunk/src/main/resources/redmine-report.properties
maven-redmine-plugin/trunk/src/main/resources/redmine-report_de.properties
maven-redmine-plugin/trunk/src/main/resources/redmine-report_en.properties
maven-redmine-plugin/trunk/src/main/resources/redmine-report_fr.properties
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineDataProviderTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/SimpleRedmineConfiguration.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/TestHelper.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DisplayDataMojoTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DownloadDataMojoTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/AbstractIssuesReportTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportTest.java
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/attachments.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/issues.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/version.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/project.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/trackers.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/users.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/versions.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/projects.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/attachments.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/issues.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/projects.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/trackers.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/users.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/versions.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/attachments.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/issues.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/projects.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/trackers.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/users.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/versions.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/attachments.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/issues.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/projects.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/trackers.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/users.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/versions.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/attachment.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/issue.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/project.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/tracker.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/user.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/version.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-all.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-issue-priorities.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-issue-statuses.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-issue-categories.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-trackers.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-users.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-all.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-issue-priorities.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-issue-statuses.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-issue-categories.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-trackers.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-users.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-versions.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project2.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-projects.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version-attachments.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version-issues.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest/issues-report.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest/issues-report.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest/issues-report.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest/issues-report.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest/issues-report.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest/issues-report.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest/issues-report.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportTest/issues-report.xml
Removed:
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/AbstractGetProjectDataMojo.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DataNotFoundException.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectDataMojo.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojo.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/RedmineReportMojo.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineModelBuilderTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/AbstractRedmineMojoTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GetProjectDataMojoTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojoTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/RedmineReportMojoTest.java
Modified:
maven-redmine-plugin/trunk/pom.xml
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineSession.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Attachment.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Issue.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Project.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Tracker.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/User.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Version.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/AbstractRedmineMojo.java
maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GenerateChangesMojo.java
maven-redmine-plugin/trunk/src/main/resources/META-INF/services/org.nuiton.io.xpp3.Xpp3Reader
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineSessionTest.java
maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GenerateChangesMojoTest.java
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/GenerateChangesMojoTest/generate-changes.xml
Log:
redmine issue report generation ok
Modified: maven-redmine-plugin/trunk/pom.xml
===================================================================
--- maven-redmine-plugin/trunk/pom.xml 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/pom.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -6,13 +6,13 @@
<!-- ************************************************************* -->
<!-- *** POM Relationships *************************************** -->
<!-- ************************************************************* -->
-
+
<groupId>org.nuiton</groupId>
<artifactId>maven-redmine-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
-
+
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>maven-helper-plugin</artifactId>
@@ -57,7 +57,7 @@
<artifactId>httpclient</artifactId>
<version>4.0</version>
</dependency>
-
+
<!-- tests dependencies -->
<dependency>
@@ -92,7 +92,7 @@
<description>A plugin to interacts with Redmine's server</description>
<inceptionYear>2009</inceptionYear>
-
+
<url>http://maven-site.nuiton.org/sandbox/maven-redmine-plugin</url>
<licenses>
@@ -122,7 +122,7 @@
<name>CodeLutin</name>
<url>http://www.codelutin.com/</url>
</organization>
-
+
<!-- ************************************************************* -->
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
@@ -195,12 +195,12 @@
<!-- generated changes.xml file -->
<maven.changeFile>${maven.gen.dir}/changes/changes.xml</maven.changeFile>
-
+
</properties>
<build>
<defaultGoal>install</defaultGoal>
-
+
<plugins>
<plugin>
@@ -219,7 +219,7 @@
</execution>
</executions>
</plugin>
-
+
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<executions>
@@ -261,6 +261,12 @@
<skip>${maven.test.skip}</skip>
<testFailureIgnore>${maven.test.testFailureIgnore}</testFailureIgnore>
<forkMode>${maven.test.forkMode}</forkMode>
+ <environmentVariables>
+ <redmineUrl>http://www.mynuiton.org</redmineUrl>
+ <redmineUsername>chemit</redmineUsername>
+ <redminePassword>azer</redminePassword>
+ <verbose>false</verbose>
+ </environmentVariables>
</configuration>
</plugin>
@@ -487,7 +493,7 @@
</plugin-->
</plugins>
</reporting>
-
+
<!-- ************************************************************* -->
<!-- *** Build Environment ************************************** -->
<!-- ************************************************************* -->
@@ -537,5 +543,41 @@
<developerConnection>scm:svn:http://svn.nuiton.org/svn/sandbox/maven-redmine-plugin/trunk</developerConnection>
<url>http://www.nuiton.org/repositories/browse/sandbox/maven-redmine-plugin/trunk</url>
</scm>
-
+
+ <profiles>
+ <profile>
+ <id>run-its</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <version>1.3</version>
+ <configuration>
+ <pomIncludes>
+ <pomInclude>*/pom.xml</pomInclude>
+ </pomIncludes>
+ <postBuildHookScript>verify</postBuildHookScript>
+ <localRepositoryPath>${basedir}/target/local-repo</localRepositoryPath>
+ <goals>
+ <goal>clean</goal>
+ <goal>site</goal>
+ </goals>
+ <settingsFile>src/it/settings.xml</settingsFile>
+ <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
+ </configuration>
+ <executions>
+ <execution>
+ <id>integration-test</id>
+ <goals>
+ <goal>install</goal>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
Copied: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/DataNotFoundException.java (from rev 31, maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DataNotFoundException.java)
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/DataNotFoundException.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/DataNotFoundException.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,27 @@
+package org.nuiton.redmine;
+
+/**
+ * An exception to throw when a data does not exists on redmine.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class DataNotFoundException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public DataNotFoundException(Throwable cause) {
+ super(cause);
+ }
+
+ public DataNotFoundException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public DataNotFoundException(String message) {
+ super(message);
+ }
+
+ public DataNotFoundException() {
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/DataNotFoundException.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: svn:mergeinfo
+
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssueCollectorConfiguration.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssueCollectorConfiguration.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssueCollectorConfiguration.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+package org.nuiton.redmine;
+
+/**
+ * A simple contract to define the configuration of an issues collector.
+ *
+ * TODO javadoc
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public interface IssueCollectorConfiguration {
+
+ boolean isOnlyCurrentVersion();
+
+ int getMaxEntries();
+
+ String getVersionNames();
+
+ String getPriorityIds();
+
+ String getStatusIds();
+
+ String getProjectId();
+
+ String getVersionId();
+
+ void setVersionId(String versionId);
+
+ String getCategoryIds();
+
+ String getTrackerIds();
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssueCollectorConfiguration.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssuesCollector.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssuesCollector.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssuesCollector.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,334 @@
+package org.nuiton.redmine;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import org.apache.maven.plugin.logging.Log;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.IssueCategory;
+import org.nuiton.redmine.model.IssuePriority;
+import org.nuiton.redmine.model.IssueStatus;
+import org.nuiton.redmine.model.Tracker;
+import org.nuiton.redmine.model.Version;
+
+/**
+ * A class to collect some issues due to given filters.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class IssuesCollector {
+
+ /**
+ * data helper
+ */
+ protected final RedmineDataHelper helper;
+ /**
+ * logger
+ */
+ protected final Log log;
+ /**
+ * verbose flag
+ */
+ protected final boolean verbose;
+ /**
+ * to restrict on number of entries to collect
+ */
+ protected Integer maxEntries;
+ /**
+ * the list of version ids collected
+ */
+ protected List<Integer> versionIds;
+ /**
+ * the list of priority ids collected
+ */
+ protected List<Integer> priorityIds;
+ /**
+ * the list of status ids collected
+ */
+ protected List<Integer> statusIds;
+ /**
+ * the list of category ids collected
+ */
+ protected List<Integer> categoryIds;
+ /**
+ * the list of tracker ids collected
+ */
+ protected List<Integer> trackerIds;
+ /**
+ * the list of issues collected
+ */
+ protected Issue[] issues;
+
+ public IssuesCollector(RedmineDataHelper helper, Log log, boolean verbose) {
+ this.helper = helper;
+ this.log = log;
+ this.verbose = verbose;
+ }
+
+ /**
+ * Collects the issues given the configuration passed.
+ *
+ * @param config the collector configuration
+ *
+ * @throws RedmineDataException if any pb while retreave datas from redmine
+ */
+ public void collect(IssueCollectorConfiguration config) throws RedmineDataException {
+
+ clearFilters();
+
+ prepareFilters(config);
+
+ // obtain versions to treate
+
+ Version[] versions;
+
+ if (versionIds == null) {
+ // pas de filtre sur version
+ versions = helper.getVersions();
+ } else {
+ versions = helper.getVersionsById(versionIds.toArray(new Integer[versionIds.size()]));
+ }
+
+ int nbIssues = 0;
+
+ List<Issue> issueList = new ArrayList<Issue>();
+
+ for (Version v : versions) {
+
+ if (verbose) {
+ log.info("discover all issues for version " + v.getName());
+ }
+
+ helper.setVersionId(v.getName());
+
+ Issue[] currentIssues = helper.getIssues(true);
+ for (Issue i : currentIssues) {
+
+ if (canIncludeIssue(i)) {
+ issueList.add(i);
+ nbIssues++;
+ if (maxEntries != null && nbIssues >= maxEntries) {
+ break;
+ }
+ }
+ }
+ if (maxEntries != null && nbIssues >= maxEntries) {
+ break;
+ }
+ }
+
+ issues = issueList.toArray(new Issue[issueList.size()]);
+ }
+
+ public Integer getMaxEntries() {
+ return maxEntries;
+ }
+
+ public List<Integer> getPriorityIds() {
+ return priorityIds;
+ }
+
+ public List<Integer> getStatusIds() {
+ return statusIds;
+ }
+
+ public List<Integer> getCategoryIds() {
+ return categoryIds;
+ }
+
+ public List<Integer> getVersionIds() {
+ return versionIds;
+ }
+
+ public List<Integer> getTrackerIds() {
+ return trackerIds;
+ }
+
+ public Issue[] getIssues() {
+ return issues;
+ }
+
+ /**
+ * clean all internal states.
+ *
+ * Note : this method is invoked at the begin of each
+ * {@link #collect(org.nuiton.redmine.IssueCollectorConfiguration)} method.
+ */
+ public void clearFilters() {
+ maxEntries = null;
+ priorityIds = null;
+ statusIds = null;
+ categoryIds = null;
+ trackerIds = null;
+ versionIds = null;
+ issues = null;
+ }
+
+ /**
+ * Prepare the collector filters due to the given collector configuration.
+ *
+ * @param config the collector configuration
+ * @throws RedmineDataException if any pb whiile retreaving redmine's datas
+ */
+ protected void prepareFilters(IssueCollectorConfiguration config) throws RedmineDataException {
+
+ // maxEntries filter
+
+ maxEntries = config.getMaxEntries();
+ if (maxEntries == 0) {
+ // no limit
+ maxEntries = null;
+ } else {
+ log.info("limit issues : " + maxEntries);
+ }
+
+ String tmp;
+
+ // filter version
+
+ tmp = config.getVersionNames();
+ if (log.isDebugEnabled()) {
+ log.debug("version to filter : " + tmp);
+ }
+ if (tmp != null && !tmp.trim().isEmpty()) {
+ if (config.isOnlyCurrentVersion()) {
+ // not possible
+ log.warn("will not filter on versions while using the flag 'onlyCurrentVersion'");
+ } else {
+ versionIds = new ArrayList<Integer>();
+ List<String> svs = Arrays.asList(tmp.split(","));
+ for (Version v : helper.getVersions()) {
+ if (svs.contains(v.getName())) {
+ // keep the version
+ versionIds.add(v.getId());
+ log.info("use version " + v.getName());
+ }
+ }
+ }
+ }
+
+ if (config.isOnlyCurrentVersion()) {
+ Version currentVersion = helper.getVersionByName(config.getVersionId());
+ versionIds = Arrays.asList(currentVersion.getId());
+ }
+
+ // filter status
+
+ tmp = config.getStatusIds();
+ this.statusIds = null;
+ if (tmp != null && !tmp.trim().isEmpty()) {
+ // filter on status
+ this.statusIds = new ArrayList<Integer>();
+ List<Integer> svs = toIntegerList(tmp.split(","));
+ for (IssueStatus s : helper.getIssueSatuses()) {
+ int id = s.getId();
+ if (svs.contains(id)) {
+ // keep this status
+ this.statusIds.add(id);
+ log.info("use status " + s.getName());
+ }
+ }
+ }
+
+ // filter priority
+
+ tmp = config.getPriorityIds();
+ if (tmp != null && !tmp.trim().isEmpty()) {
+ // filter on status
+ this.priorityIds = new ArrayList<Integer>();
+ List<Integer> svs = toIntegerList(tmp.split(","));
+ for (IssuePriority s : helper.getIssuePriorities(true)) {
+ int id = s.getId();
+ if (svs.contains(id)) {
+ // keep this status
+ this.priorityIds.add(id);
+ log.info("use priority " + s.getName());
+ }
+ }
+ }
+
+ // filter priority
+
+ tmp = config.getCategoryIds();
+ if (tmp != null && !tmp.trim().isEmpty()) {
+ // filter on status
+ this.categoryIds = new ArrayList<Integer>();
+ List<Integer> svs = toIntegerList(tmp.split(","));
+ for (IssueCategory s : helper.getIssueCategories()) {
+ int id = s.getId();
+ if (svs.contains(id)) {
+ // keep this status
+ this.categoryIds.add(id);
+ log.info("use category " + s.getName());
+ }
+ }
+ }
+
+ // filter tracker
+ tmp = config.getTrackerIds();
+ if (tmp != null && !tmp.trim().isEmpty()) {
+ // filter on status
+ this.trackerIds = new ArrayList<Integer>();
+ List<Integer> svs = toIntegerList(tmp.split(","));
+ for (Tracker s : helper.getTrackers()) {
+ int id = s.getId();
+ if (svs.contains(id)) {
+ // keep this status
+ this.trackerIds.add(id);
+ log.info("use tracker " + s.getName());
+ }
+ }
+ }
+ }
+
+ /**
+ * Test if a given issue can be collected.
+ *
+ * @param i the issue ti test
+ * @return <code>true</code> if the issue can be collected, <code>false</code>
+ * otherwise.
+ */
+ protected boolean canIncludeIssue(Issue i) {
+ if (statusIds != null) {
+ // filter on status
+ if (!statusIds.contains(i.getStatusId())) {
+ // reject status
+ return false;
+ }
+ }
+ if (priorityIds != null) {
+ // filter on priority
+ if (!priorityIds.contains(i.getPriorityId())) {
+ // reject priority
+ return false;
+ }
+ }
+ if (categoryIds != null) {
+ // filter on category
+ if (!categoryIds.contains(i.getCategoryId())) {
+ // reject category
+ return false;
+ }
+ }
+ if (trackerIds != null) {
+ // filter on tracker
+ if (!trackerIds.contains(i.getTrackerId())) {
+ // reject tracker
+ return false;
+ }
+ }
+
+ // ok
+ return true;
+ }
+
+ protected List<Integer> toIntegerList(String[] strIds) {
+ int length = strIds.length;
+ List<Integer> r = new ArrayList<Integer>(length);
+ for (int i = 0; i < length; i++) {
+ r.add(Integer.valueOf(strIds[i]));
+ }
+ return r;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/IssuesCollector.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfiguration.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfiguration.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfiguration.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,45 @@
+package org.nuiton.redmine;
+
+import java.io.File;
+import java.net.URL;
+
+/**
+ * A simple contract to define the configuration used.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public interface RedmineConfiguration {
+
+ URL getRedmineUrl();
+
+ String getEncoding();
+
+ String getRedmineUsername();
+
+ String getRedminePassword();
+
+ File getLocalDir();
+
+ boolean isOffline();
+
+ boolean isOverwrite();
+
+ boolean isVerbose();
+
+ void setRedmineUrl(URL redmineUrl);
+
+ void setRedminePassword(String redminePassword);
+
+ void setRedmineUsername(String redmineUsername);
+
+ void setEncoding(String encoding);
+
+ void setLocalDir(File localDir);
+
+ void setOffline(boolean offline);
+
+ void setOverwrite(boolean overwrite);
+
+ void setVerbose(boolean verbose);
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfiguration.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,179 @@
+package org.nuiton.redmine;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.StatusLine;
+import org.apache.maven.model.IssueManagement;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.settings.Server;
+import org.apache.maven.settings.Settings;
+import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
+import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException;
+
+/**
+ * Helper to build configurations and other objects (session, data provider).
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class RedmineConfigurationHelper {
+
+ public static final String SNAPSHOT_SUFFIX = "-SNAPSHOT";
+ public static final String REDMINE_SYSTEM = "redmine";
+
+ public static String removeSnapshotSuffix(String versionId) {
+ if (versionId.endsWith(SNAPSHOT_SUFFIX)) {
+ // remove snapshot suffix
+ versionId = versionId.substring(0, versionId.length() - SNAPSHOT_SUFFIX.length());
+ }
+ return versionId;
+ }
+
+ public static RedmineDataProvider initDataProvider(RedmineConfiguration config, Log log, String serverId, Settings settings, IssueManagement issueManagement, SecDispatcher sec) throws Exception {
+
+ try {
+
+ prepareConfiguration(config, serverId, settings, issueManagement, sec);
+
+ } catch (Exception e) {
+ log.error("could not prepare redmine configuration for reason : " + e.getMessage(), e);
+ throw e;
+ }
+
+ RedmineSession session = null;
+
+ if (config.isOffline()) {
+ log.info("offline is on, no session to redmine can not be reach.");
+ } else {
+ try {
+
+ session = openSession(config, log);
+
+ } catch (Exception e) {
+ log.error("could not open session to redmin server for reason : " + e.getMessage(), e);
+ throw e;
+ }
+ }
+
+ try {
+ RedmineDataProvider dataProvider = newDataProvider(config, session, log);
+
+ return dataProvider;
+ } catch (Exception e) {
+ log.error("could not prepare redmine local store for reason : " + e.getMessage(), e);
+ throw e;
+ }
+ }
+
+ public static void prepareConfiguration(RedmineConfiguration config, String serverId, Settings settings, IssueManagement issueManagement, SecDispatcher sec) throws MojoExecutionException, MalformedURLException {
+ URL redmineUrl = config.getRedmineUrl();
+ String redmineUsername = config.getRedmineUsername();
+ String redminePassword = config.getRedminePassword();
+
+ String system = issueManagement.getSystem();
+ if (!REDMINE_SYSTEM.equals(system)) {
+ throw new MojoExecutionException("must use a redmine issueManagment system, but found : " + system);
+ }
+
+ if (redmineUrl == null || redmineUrl.toString().isEmpty()) {
+
+ // no redmine url specified, guess it from issueManagement
+
+ String url = issueManagement.getUrl();
+ redmineUrl = new URL(url);
+ config.setRedmineUrl(redmineUrl);
+ }
+
+ if (redmineUsername == null || redmineUsername.trim().isEmpty() || redminePassword == null || redminePassword.trim().isEmpty()) {
+
+ // guess login and password from server in settings
+
+ Server server = settings.getServer(serverId);
+ if (server == null) {
+ throw new MojoExecutionException("could not find serverId " + serverId);
+ }
+ redmineUsername = server.getUsername();
+ redminePassword = server.getPassword();
+ try {
+ redminePassword = sec.decrypt(redminePassword);
+ config.setRedmineUsername(redmineUsername);
+ config.setRedminePassword(redminePassword);
+ } catch (SecDispatcherException ex) {
+ throw new MojoExecutionException("could not decrypt password", ex);
+ }
+ }
+ }
+
+ public static RedmineSession openSession(RedmineConfiguration config, Log log) throws MojoExecutionException {
+ RedmineSession session = null;
+
+ URL redmineUrl = config.getRedmineUrl();
+ String username = config.getRedmineUsername();
+ String password = config.getRedminePassword();
+ boolean verbose = config.isVerbose();
+
+ try {
+
+ session = new RedmineSession(log, redmineUrl, verbose);
+
+ // ask rest/ping service a ping
+
+ try {
+ String content = session.askData(new String[]{"rest", "ping"});
+
+ boolean ok = "ping".equals(content);
+ if (!ok) {
+ throw new IOException("can not connect to " + redmineUrl);
+ }
+ } catch (IOException ex) {
+ throw ex;
+ } catch (DataNotFoundException ex) {
+ // should never happeds
+ log.error(ex.getMessage());
+ }
+
+ // ask rest/login a connection
+
+ String uri = session.getUri("rest", "login");
+
+ HttpMethod gm = session.doRequest(uri, "username", username, "password", password);
+
+ StatusLine sl = gm.getStatusLine();
+ int statusCode = sl.getStatusCode();
+ if (log.isDebugEnabled()) {
+ log.debug("status code " + statusCode + " for " + gm.getPath());
+ }
+
+ if (statusCode != HttpStatus.SC_OK) {
+ gm.releaseConnection();
+ throw new IOException("Got error code <" + statusCode + ":" + sl.getReasonPhrase() + "> on " + gm.getPath());
+ }
+
+ // ok session is logged in
+
+ session.login = true;
+
+ // auth to redmine is ok
+ if (verbose) {
+ log.info("authentication to " + redmineUrl + " done for " + username);
+ }
+
+ } catch (Exception e) {
+ throw new MojoExecutionException("Unable to login to <" + redmineUrl + "> with user <" + username + ">", e);
+ }
+ return session;
+ }
+
+ public static RedmineDataProvider newDataProvider(RedmineConfiguration config, RedmineSession session, Log log) {
+
+ RedmineDataProvider store = new RedmineDataProvider(config.getEncoding(), log, config.getLocalDir(), session);
+ store.setOffline(config.isOffline());
+ store.setOverwrite(config.isOverwrite());
+
+ return store;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineConfigurationHelper.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataException.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataException.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataException.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,28 @@
+package org.nuiton.redmine;
+
+/**
+ * An exception to throw when a data can not be retreave in
+ * {@link RedmineModelHelper}.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class RedmineDataException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public RedmineDataException(Throwable cause) {
+ super(cause);
+ }
+
+ public RedmineDataException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public RedmineDataException(String message) {
+ super(message);
+ }
+
+ public RedmineDataException() {
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataException.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,294 @@
+package org.nuiton.redmine;
+
+import java.io.File;
+import java.io.IOException;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.nuiton.redmine.model.Attachment;
+import org.nuiton.redmine.model.IdAble;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.IssueCategory;
+import org.nuiton.redmine.model.IssuePriority;
+import org.nuiton.redmine.model.IssueStatus;
+import org.nuiton.redmine.model.Project;
+import org.nuiton.redmine.model.Tracker;
+import org.nuiton.redmine.model.User;
+import org.nuiton.redmine.model.Version;
+
+/**
+ * A helper to filter datas from a {@link RedminDataProvider}.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class RedmineDataHelper {
+
+ protected String projectId;
+ protected String versionId;
+ protected final RedmineDataProvider dataProvider;
+
+ public RedmineDataHelper(RedmineDataProvider store) {
+ this.dataProvider = store;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public String getVersionId() {
+ return versionId;
+ }
+
+ public boolean isOverwrite() {
+ return dataProvider.isOverwrite();
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public void setVersionId(String versionId) {
+ this.versionId = versionId;
+ }
+
+ public Attachment[] getAttachments() throws RedmineDataException {
+ return getAttachments(isOverwrite());
+ }
+
+ public Issue[] getIssues() throws RedmineDataException {
+ return getIssues(isOverwrite());
+ }
+
+ public IssueCategory[] getIssueCategories() throws RedmineDataException {
+ return getIssueCategories(isOverwrite());
+ }
+
+ public IssueStatus[] getIssueSatuses() throws RedmineDataException {
+ return getIssueSatuses(isOverwrite());
+ }
+
+ public IssuePriority[] getIssuePriorities() throws RedmineDataException {
+ return getIssuePriorities(isOverwrite());
+ }
+
+ public Project[] getProjects() throws RedmineDataException {
+ return getProjects(isOverwrite());
+ }
+
+ public Project getProject() throws RedmineDataException {
+ return getProject(isOverwrite());
+ }
+
+ public Tracker[] getTrackers() throws RedmineDataException {
+ return getTrackers(isOverwrite());
+ }
+
+ public User[] getUsers() throws RedmineDataException {
+ return getUsers(isOverwrite());
+ }
+
+ public Version[] getVersions() throws RedmineDataException {
+ return getVersions(isOverwrite());
+ }
+
+ public Version[] getVersionsById(Integer... ids) throws RedmineDataException {
+ return getDatasById(Version.class, projectId, versionId, isOverwrite(), ids);
+ }
+
+ public Version getVersion() throws RedmineDataException {
+ return getVersion(isOverwrite());
+ }
+
+ public Version getVersionByName(String versionName) throws RedmineDataException {
+ return getVersionByName(isOverwrite(), versionName);
+ }
+
+ public Version getVersionById(int versionId) throws RedmineDataException {
+ return getVersionById(isOverwrite(), versionId);
+ }
+
+ public User getUserByLogin(String login) throws RedmineDataException {
+ return getUserByLogin(isOverwrite(), login);
+ }
+
+ public User getUserById(int userId) throws RedmineDataException {
+ return getUserById(isOverwrite(), userId);
+ }
+
+ public Attachment[] getAttachments(boolean reload) throws RedmineDataException {
+ return getDatas(Attachment.class, projectId, versionId, reload);
+ }
+
+ public Issue[] getIssues(boolean reload) throws RedmineDataException {
+ return getDatas(Issue.class, projectId, versionId, reload);
+ }
+
+ public IssueCategory[] getIssueCategories(boolean reload) throws RedmineDataException {
+ return getDatas(IssueCategory.class, projectId, null, reload);
+ }
+
+ public IssueStatus[] getIssueSatuses(boolean reload) throws RedmineDataException {
+ return getDatas(IssueStatus.class, null, null, reload);
+ }
+
+ public IssuePriority[] getIssuePriorities(boolean reload) throws RedmineDataException {
+ return getDatas(IssuePriority.class, null, null, reload);
+ }
+
+ public Project[] getProjects(boolean reload) throws RedmineDataException {
+ return getDatas(Project.class, projectId, null, reload);
+ }
+
+ public Project getProject(boolean reload) throws RedmineDataException {
+ return getData(Project.class, projectId, null, reload);
+ }
+
+ public Tracker[] getTrackers(boolean reload) throws RedmineDataException {
+ return getDatas(Tracker.class, projectId, null, reload);
+ }
+
+ public User[] getUsers(boolean reload) throws RedmineDataException {
+ return getDatas(User.class, projectId, null, reload);
+ }
+
+ public Version[] getVersions(boolean reload) throws RedmineDataException {
+ return getDatas(Version.class, projectId, null, reload);
+ }
+
+ public Version[] getVersionsById(boolean reload, Integer... ids) throws RedmineDataException {
+ return getDatasById(Version.class, projectId, versionId, reload, ids);
+ }
+
+ public Version getVersion(boolean reload) throws RedmineDataException {
+ return getData(Version.class, projectId, versionId, reload);
+ }
+
+ public Version getVersionByName(boolean reload, String versionName) throws RedmineDataException {
+ Version[] list = getDatas(Version.class, projectId, versionId, reload);
+ Version result = Version.getVersionByName(list, versionName);
+ return result;
+ }
+
+ public Version getVersionById(boolean reload, int versionId) throws RedmineDataException {
+ Version[] list = getDatas(Version.class, projectId, this.versionId, reload);
+ Version result = Version.getVersionById(list, versionId);
+ return result;
+ }
+
+ public User getUserByLogin(boolean reload, String login) throws RedmineDataException {
+ User[] list = getDatas(User.class, projectId, versionId, reload);
+ User result = User.getUserByLogin(login, list);
+ return result;
+ }
+
+ public User getUserById(boolean reload, int userId) throws RedmineDataException {
+ User[] list = getDatas(User.class, projectId, versionId, reload);
+ User result = User.getUserById(userId, list);
+ return result;
+ }
+
+ public File uptodateLocalDataFile(RedmineDataType cste) throws RedmineDataException {
+
+ try {
+ File f = dataProvider.uptodateLocalDataFile(cste, projectId, versionId);
+ return f;
+ } catch (DataNotFoundException ex) {
+ throw new RedmineDataException("could not update local store for type " + cste + " for reason " + ex.getMessage(), ex);
+ } catch (IOException ex) {
+ throw new RedmineDataException("could not update local store for type " + cste + " for reason " + ex.getMessage(), ex);
+ }
+ }
+
+ public <T extends IdAble> T[] getDatasById(Class<T> type, String projectId, String versionId, boolean reload, Integer... ids) throws RedmineDataException {
+ if (dataProvider.isOffline()) {
+ // can not reload data
+ reload = false;
+ }
+ boolean old = dataProvider.isOverwrite();
+ if (reload) {
+ dataProvider.setOverwrite(true);
+ }
+ try {
+
+ T[] datas = dataProvider.getDataByIds(type, projectId, versionId, ids);
+ return datas;
+ } catch (IOException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } catch (XmlPullParserException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } catch (DataNotFoundException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } finally {
+ if (reload) {
+ dataProvider.setOverwrite(old);
+ }
+ }
+
+ }
+
+ public <T extends IdAble> T[] getDatas(Class<T> type, String projectId, String versionId, boolean reload) throws RedmineDataException {
+ if (dataProvider.isOffline()) {
+ // can not reload data
+ reload = false;
+ }
+ boolean old = dataProvider.isOverwrite();
+ if (reload) {
+ dataProvider.setOverwrite(true);
+ }
+ try {
+
+ T[] datas = dataProvider.getDatas(type, projectId, versionId);
+ return datas;
+ } catch (IOException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } catch (XmlPullParserException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } catch (DataNotFoundException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } finally {
+ if (reload) {
+ dataProvider.setOverwrite(old);
+ }
+ }
+ }
+
+ public <T extends IdAble> T getData(Class<T> type, String projectId, String versionId, boolean reload) throws RedmineDataException {
+ if (dataProvider.isOffline()) {
+ // can not reload data
+ reload = false;
+ }
+ boolean old = dataProvider.isOverwrite();
+ if (reload) {
+ dataProvider.setOverwrite(true);
+ }
+ try {
+
+ T data = dataProvider.getData(type, projectId, versionId);
+ return data;
+ } catch (IOException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } catch (XmlPullParserException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } catch (DataNotFoundException ex) {
+ throw new RedmineDataException("could not retreave datas of type " + type.getName() + " for reason " + ex.getMessage(), ex);
+ } finally {
+ if (reload) {
+ dataProvider.setOverwrite(old);
+ }
+ }
+ }
+
+ public <T extends IdAble> T[] getDatas(Class<T> type, String projectId, String versionId) throws RedmineDataException {
+ T[] datas = getDatas(type, projectId, versionId, false);
+ return datas;
+ }
+
+ public <T extends IdAble> T[] getDatasById(Class<T> type, String projectId, String versionId, Integer... ids) throws RedmineDataException {
+ T[] datas = getDatasById(type, projectId, versionId, false, ids);
+ return datas;
+ }
+
+ public <T extends IdAble> T getData(Class<T> type, String projectId, String versionId) throws RedmineDataException {
+ T data = getData(type, projectId, versionId, false);
+ return data;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataHelper.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataProvider.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataProvider.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataProvider.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,241 @@
+package org.nuiton.redmine;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.EnumMap;
+import java.util.List;
+import org.apache.maven.plugin.logging.Log;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.nuiton.redmine.model.IdAble;
+import org.nuiton.redmine.model.io.xpp3.RedmineXpp3Helper;
+import org.nuiton.util.PluginHelper;
+
+/**
+ * This class is capable to load redmine objects in memory (from redmine server
+ * or locally saved in a on a local cache).
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class RedmineDataProvider {
+
+ /**
+ * a flag to disable network communication
+ */
+ protected boolean offline;
+ /**
+ * a flag to overwrite local files (flag {@code offline} must be set one).
+ */
+ protected boolean overwrite;
+ /**
+ * the encoding used to read and writes files.
+ */
+ protected String encoding;
+ /**
+ * the base directory of local datas
+ */
+ protected File basedir;
+ /**
+ * the redmine session to obtain datas from a redmine server
+ */
+ protected RedmineSession session;
+ /**
+ * the xml helper to retreave data from xml files
+ */
+ protected RedmineXpp3Helper xmlHelper;
+ /**
+ * store of datas
+ */
+ protected EnumMap<RedmineDataType, Object> store;
+ /**
+ * logger
+ */
+ protected Log log;
+
+ public RedmineDataProvider(String encoding, Log log, File localDir, RedmineSession session) {
+ this.basedir = localDir;
+ this.log = log;
+ this.session = session;
+ this.encoding = encoding;
+ this.store = new EnumMap<RedmineDataType, Object>(RedmineDataType.class);
+ this.xmlHelper = new RedmineXpp3Helper();
+
+ if (!localDir.exists()) {
+ localDir.mkdirs();
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("factory " + this + " basedir " + localDir);
+ log.debug("factory " + this + " offline " + offline);
+ log.debug("factory " + this + " session " + session);
+ }
+ }
+
+ public <T extends IdAble> T getData(Class<T> type, String projectId, String versionId) throws IOException, XmlPullParserException, DataNotFoundException {
+
+ RedmineDataType cste = getDataType(type, false);
+ if (!overwrite) {
+ Object get = store.get(cste);
+ if (get != null) {
+ // data found in store
+ return (T) get;
+ }
+ }
+
+ // will search the data on local
+ File file = uptodateLocalDataFile(cste, projectId, versionId);
+
+ // arrays loading
+ T result = xmlHelper.readObject(type, file);
+ // store result
+ store.put(cste, result);
+
+ return result;
+ }
+
+ public <T extends IdAble> T[] getDatas(Class<T> type, String projectId, String versionId) throws IOException, XmlPullParserException, DataNotFoundException {
+
+ RedmineDataType cste = getDataType(type, true);
+
+ if (!overwrite) {
+ Object get = store.get(cste);
+ if (get != null) {
+ // data found in store
+ return (T[]) get;
+ }
+ }
+
+ // will search the data on local
+ File file = uptodateLocalDataFile(cste, projectId, versionId);
+
+ // arrays loading
+ T[] result = xmlHelper.readObjects(type, file);
+ // store result
+ store.put(cste, result);
+
+ return result;
+ }
+
+ public <T extends IdAble> T[] getDataByIds(Class<T> type, String projectId, String versionId, Integer... ids) throws IOException, XmlPullParserException, DataNotFoundException {
+
+ // arrays loading
+ T[] result = getDatas(type, projectId, versionId);
+
+ List<Integer> lIds = Arrays.asList(ids);
+ List<T> filter = new ArrayList<T>(lIds.size());
+ for (T v : result) {
+ if (lIds.contains(v.getId())) {
+ filter.add(v);
+ }
+ }
+
+ return filter.toArray((T[]) Array.newInstance(type, filter.size()));
+ }
+
+ public void close() throws IOException {
+ store.clear();
+ store = null;
+ if (session != null && session.isLogin()) {
+ session.logout();
+ session = null;
+ }
+ }
+
+ public File getBasedir() {
+ return basedir;
+ }
+
+ public boolean isOffline() {
+ return offline;
+ }
+
+ public boolean isOverwrite() {
+ return overwrite;
+ }
+
+ public RedmineSession getSession() {
+ return session;
+ }
+
+ public void setOffline(boolean offline) {
+ this.offline = offline;
+ }
+
+ public void setOverwrite(boolean overwrite) {
+ this.overwrite = overwrite;
+ }
+
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
+ protected RedmineDataType getDataType(Class<?> type, boolean isArray) throws NullPointerException, IllegalArgumentException {
+ if (type == null) {
+ throw new NullPointerException("type parameter ca not be null");
+ }
+ RedmineDataType cste = RedmineDataType.valueOf(type, isArray);
+ if (cste == null) {
+ throw new IllegalArgumentException("can not deal with type " + type.getName());
+ }
+ if (cste.isArray() != isArray) {
+ throw new IllegalArgumentException("the type " + cste + " can not be retreave as " + (isArray ? "array" : "single"));
+ }
+ return cste;
+ }
+
+ public File uptodateLocalDataFile(RedmineDataType cste, String projectId, String versionId) throws DataNotFoundException, IOException {
+
+ File file = cste.getLocalFile(basedir, projectId, versionId);
+
+ boolean needDownload = isNeedDownload(file);
+
+ if (needDownload) {
+
+ downloadData(cste, projectId, versionId);
+
+ }
+ return file;
+ }
+
+ public File downloadData(RedmineDataType cste, String projectId, String versionId) throws IOException, DataNotFoundException {
+
+ if (offline) {
+ // can't have data
+ throw new IllegalStateException("offline is on, can not download data from redmine server");
+ }
+
+ File file = cste.getLocalFile(basedir, projectId, versionId);
+
+ // loding xml content file from redmine
+ String[] paths = cste.getSessionPath(projectId, versionId);
+ String[] parameters = cste.getSessionParameters(projectId, versionId);
+ String txt = session.askData(paths, parameters);
+ // store it as a local file
+ PluginHelper.writeString(file, txt, encoding);
+
+ return file;
+ }
+
+ public boolean isNeedDownload(File file) {
+
+ boolean needDownload = false;
+
+ if (file.exists()) {
+
+ // reload data if not offline and ask to overwrite
+ needDownload = !offline && overwrite;
+ } else {
+
+ // always need download
+ needDownload = true;
+ }
+ return needDownload;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataProvider.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataType.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataType.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataType.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,137 @@
+package org.nuiton.redmine;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import org.nuiton.redmine.model.Attachment;
+import org.nuiton.redmine.model.IdAble;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.IssueCategory;
+import org.nuiton.redmine.model.IssuePriority;
+import org.nuiton.redmine.model.IssueStatus;
+import org.nuiton.redmine.model.Project;
+import org.nuiton.redmine.model.Tracker;
+import org.nuiton.redmine.model.User;
+import org.nuiton.redmine.model.Version;
+
+public enum RedmineDataType {
+
+ projects(false, false, Project[].class, "get_projects"),
+ issueStatuses(false, false, IssueStatus[].class, "get_issue_statuses"),
+ issuePriorities(false, false, IssuePriority[].class, "get_issue_priorities"),
+ project(true, false, Project.class, "get_project"),
+ version(true, true, Version.class, "get_version"),
+ attachments(true, true, Attachment[].class, "get_version_files"),
+ issues(true, true, Issue[].class, "get_version_issues"),
+ issueCategories(true, false, IssueCategory[].class, "get_issue_categories"),
+ trackers(true, false, Tracker[].class, "get_project_trackers"),
+ users(true, false, User[].class, "get_project_users"),
+ versions(true, false, Version[].class, "get_project_versions");
+ final boolean requiresProject;
+ final boolean requiresVersion;
+ final boolean array;
+ final Class<? extends IdAble> type;
+ final String action;
+
+ private RedmineDataType(boolean requiresProject, boolean requiresVersion, Class<?> type, String action) {
+ this.requiresProject = requiresProject;
+ this.requiresVersion = requiresVersion;
+ this.action = action;
+ this.array = type.isArray();
+ if (isArray()) {
+ this.type = (Class<? extends IdAble>) type.getComponentType();
+ } else {
+ this.type = (Class<? extends IdAble>) type;
+ }
+ }
+
+ public String getAction() {
+ return action;
+ }
+
+ public boolean isRequiresProject() {
+ return requiresProject;
+ }
+
+ public boolean isRequiresVersion() {
+ return requiresVersion;
+ }
+
+ public Class<? extends IdAble> getType() {
+ return type;
+ }
+
+ public static RedmineDataType valueOf(Class<?> type, boolean array) {
+ for (RedmineDataType e : values()) {
+ if (type == e.getType() && e.isArray() == array) {
+ return e;
+ }
+ }
+ return null;
+ }
+
+ public static void checkRedmineDataType(Class<?> type) {
+ if (type == null) {
+ throw new NullPointerException("klass parameter can not be null");
+ }
+
+ // check type is authorized
+
+ for (RedmineDataType e : values()) {
+ if (type == e.getType()) {
+ return;
+ }
+ }
+ throw new IllegalArgumentException("the type " + type.getName() + " is not allowed!");
+
+
+ }
+
+ public boolean isArray() {
+ return array;
+ }
+
+ public File getLocalFile(File basedir, String projectId, String versionId) {
+ if (isRequiresProject()) {
+ basedir = new File(basedir, "__P" + projectId);
+ }
+ if (isRequiresVersion()) {
+ basedir = new File(basedir, "__V" + versionId);
+ }
+
+ if (!basedir.exists()) {
+ basedir.mkdirs();
+ }
+
+ String filename = name() + ".xml";
+
+ File f = new File(basedir, filename);
+ return f;
+ }
+
+ public String[] getSessionPath(String projectId, String versionId) {
+ List<String> paths = new ArrayList<String>();
+
+ paths.add("rest");
+ paths.add(action + ".xml");
+
+ if (isRequiresProject()) {
+ paths.add(projectId);
+ }
+
+ return paths.toArray(new String[paths.size()]);
+
+
+ }
+
+ public String[] getSessionParameters(String projectId, String versionId) {
+ List<String> parameters = new ArrayList<String>();
+
+ if (isRequiresVersion()) {
+ parameters.add("version_name");
+ parameters.add(versionId);
+ }
+
+ return parameters.toArray(new String[parameters.size()]);
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineDataType.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Deleted: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineModelBuilder.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,130 +0,0 @@
-package org.nuiton.redmine;
-
-import org.nuiton.redmine.model.*;
-import org.codehaus.plexus.util.ReaderFactory;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import org.apache.maven.plugin.logging.Log;
-import org.nuiton.io.xpp3.Xpp3Helper;
-
-/**
- * Pour construire le modèle à partir de fichiers xml contenant les données.
- *
- * @author chemit
- * @since 1.0.0
- */
-public class RedmineModelBuilder {
-
- Log log;
-
- public RedmineModelBuilder(Log log) {
- this.log = log;
- }
-
- public Attachment readAttachment(File file) throws IOException, XmlPullParserException {
-
- Attachment result = readObject(Attachment.class, file);
- return result;
- }
-
- public Issue readIssue(File file) throws IOException, XmlPullParserException {
-
- Issue result = readObject(Issue.class, file);
- return result;
- }
-
- public Project readProject(File file) throws IOException, XmlPullParserException {
-
- Project result = readObject(Project.class, file);
- return result;
- }
-
- public Tracker readTracker(File file) throws IOException, XmlPullParserException {
-
- Tracker result = readObject(Tracker.class, file);
- return result;
- }
-
- public User readUser(File file) throws IOException, XmlPullParserException {
-
- User result = readObject(User.class, file);
- return result;
- }
-
- public Version readVersion(File file) throws IOException, XmlPullParserException {
-
- Version result = readObject(Version.class, file);
- return result;
- }
-
- public Attachment[] readAttachments(File file) throws IOException, XmlPullParserException {
-
- Attachment[] result = readObjects(Attachment.class, file);
-
- return result;
- }
-
- public Issue[] readIssues(File file) throws IOException, XmlPullParserException {
-
- Issue[] result = readObjects(Issue.class, file);
- return result;
- }
-
- public Project[] readProjects(File file) throws IOException, XmlPullParserException {
-
- Project[] result = readObjects(Project.class, file);
- return result;
- }
-
- public Tracker[] readTrackers(File file) throws IOException, XmlPullParserException {
-
- Tracker[] result = readObjects(Tracker.class, file);
- return result;
- }
-
- public User[] readUsers(File file) throws IOException, XmlPullParserException {
-
- User[] result = readObjects(User.class, file);
- return result;
- }
-
- public Version[] readVersions(File file) throws IOException, XmlPullParserException {
-
- Version[] result = readObjects(Version.class, file);
- return result;
- }
-
- protected <O> O readObject(Class<O> klass, File file) throws IOException, XmlPullParserException {
-
- O result = null;
-
- if (file.exists() && file.isFile()) {
- log.info("will parse project from: '" + file.getAbsolutePath() + "'");
- Reader reader = ReaderFactory.newXmlReader(file);
- result = Xpp3Helper.readObject(klass, reader);
-
- } else {
- log.warn("the file was not found or is a not a file: '" + file.getAbsolutePath() + "'");
- }
-
- return result;
- }
-
- protected <O> O[] readObjects(Class<O> klass, File file) throws IOException, XmlPullParserException {
-
- O[] results = null;
-
- if (file.exists() && file.isFile()) {
- log.info("will parse project from: '" + file.getAbsolutePath() + "'");
- Reader reader = ReaderFactory.newXmlReader(file);
- results = Xpp3Helper.readObjects(klass, reader);
-
- } else {
- log.warn("the file was not found or is a not a file: '" + file.getAbsolutePath() + "'");
- }
- return results;
- }
-}
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineSession.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineSession.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/RedmineSession.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,8 +1,6 @@
package org.nuiton.redmine;
-import org.nuiton.redmine.plugin.*;
import java.io.IOException;
-import java.net.URISyntaxException;
import java.net.URL;
import java.util.Arrays;
@@ -18,7 +16,7 @@
import org.apache.maven.plugin.logging.Log;
/**
- * To store a redmine session and exeuctes some requests on redmine.
+ * To store a redmine session and executes some requests on a redmine server.
* <p/>
* To obtain a session, use the static factory method {@link #getSession(org.apache.maven.plugin.logging.Log, java.net.URL, String, String, boolean)}.
*
@@ -40,50 +38,6 @@
protected boolean login;
protected boolean showRequest;
- public static RedmineSession getSession(Log log, URL url, String username, String password, boolean showRequest) throws IOException, URISyntaxException {
-
- RedmineSession session = new RedmineSession(log, url, showRequest);
-
- // ask rest/ping service a ping
-
- try {
- String content = session.askContent(new String[]{"rest", "ping"});
-
- boolean ok = "ping".equals(content);
- if (!ok) {
- throw new IOException("can not connect to " + url);
- }
- } catch (IOException ex) {
- throw ex;
- } catch (DataNotFoundException ex) {
- // should never happeds
- log.error(ex.getMessage());
- }
-
- // ask rest/login a connection
-
- String uri = session.getUri("rest", "login");
-
- HttpMethod gm = session.doRequest(uri, "username", username, "password", password);
-
- StatusLine sl = gm.getStatusLine();
- int statusCode = sl.getStatusCode();
- if (log.isDebugEnabled()) {
- log.debug("status code " + statusCode + " for " + gm.getPath());
- }
-
- if (statusCode != HttpStatus.SC_OK) {
- gm.releaseConnection();
- throw new IOException("Got error code <" + statusCode + ":" + sl.getReasonPhrase() + "> on " + gm.getPath());
- }
-
- // ok session is logged in
-
- session.login = true;
-
- return session;
- }
-
protected RedmineSession(Log log, URL uri, boolean showRequest) {
this.showRequest = showRequest;
this.log = log;
@@ -143,7 +97,7 @@
return content;
}
- public String askContent(String... paths) throws IOException, DataNotFoundException {
+ public String askData(String... paths) throws IOException, DataNotFoundException {
String content = askData(paths, new String[0]);
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Attachment.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Attachment.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Attachment.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -4,12 +4,11 @@
/**
* A file attachment from redmine server.
- *
+ *
* @author chemit
* @since 1.0.0
*/
-public class Attachment {
-
+public class Attachment implements IdAble {
protected int id;
protected int authorId;
protected int containerId;
@@ -67,6 +66,7 @@
return filesize;
}
+ @Override
public int getId() {
return id;
}
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/I18nAble.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/I18nAble.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/I18nAble.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,12 @@
+package org.nuiton.redmine.model;
+
+/**
+ * Alls object offers an name.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public interface I18nAble {
+
+ String getName();
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/I18nAble.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IdAble.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IdAble.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IdAble.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,12 @@
+package org.nuiton.redmine.model;
+
+/**
+ * Alls object offers an id.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public interface IdAble {
+
+ int getId();
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IdAble.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Issue.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Issue.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Issue.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,15 +1,45 @@
package org.nuiton.redmine.model;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
/**
* An issue on redmine's server.
- *
+ *
* @author chemit
* @since 1.0.0
*/
-public class Issue {
+public class Issue implements IdAble {
+ public static Issue[] filterByTrackerId(int trackerId, Issue... issues) {
+ List<Issue> result = new ArrayList<Issue>();
+ for (Issue i : issues) {
+ if (i.getTrackerId() == trackerId) {
+ result.add(i);
+ }
+ }
+ return result.toArray(new Issue[result.size()]);
+ }
+
+ public static Issue[] filterByVersionId(int versionId, Issue... issues) {
+ List<Issue> result = new ArrayList<Issue>();
+ for (Issue i : issues) {
+ if (i.getFixedVersionId() == versionId) {
+ result.add(i);
+ }
+ }
+ return result.toArray(new Issue[result.size()]);
+ }
+
+ public static Issue getIssueById(int id, Issue... issues) {
+ for (Issue i : issues) {
+ if (i.getId() == id) {
+ return i;
+ }
+ }
+ return null;
+ }
protected int assignedToId;
protected int authorId;
protected int categoryId;
@@ -65,6 +95,7 @@
return fixedVersionId;
}
+ @Override
public int getId() {
return id;
}
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueCategory.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueCategory.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueCategory.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,56 @@
+package org.nuiton.redmine.model;
+
+/**
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class IssueCategory implements IdAble, I18nAble {
+
+ public static IssueCategory getIssueCategoryById(Integer id, IssueCategory... categories) {
+ for (IssueCategory u : categories) {
+ if (u.getId() == id) {
+ return u;
+ }
+ }
+ return null;
+ }
+ protected int projectId;
+ protected int assignedToId;
+ protected int id;
+ protected String name;
+
+ public int getAssignedToId() {
+ return assignedToId;
+ }
+
+ @Override
+ public int getId() {
+ return id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ public int getProjectId() {
+ return projectId;
+ }
+
+ public void setAssignedToId(int assigneToId) {
+ this.assignedToId = assigneToId;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setProjectId(int projectId) {
+ this.projectId = projectId;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueCategory.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssuePriority.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssuePriority.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssuePriority.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,57 @@
+package org.nuiton.redmine.model;
+
+/**
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class IssuePriority implements IdAble,I18nAble{
+
+ protected int id;
+ protected boolean isDefault;
+ protected String name;
+ protected String opt;
+ protected int position;
+
+ @Override
+ public int getId() {
+ return id;
+ }
+
+ public boolean isIsDefault() {
+ return isDefault;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ public String getOpt() {
+ return opt;
+ }
+
+ public int getPosition() {
+ return position;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public void setIsDefault(boolean isDefault) {
+ this.isDefault = isDefault;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setOpt(String opt) {
+ this.opt = opt;
+ }
+
+ public void setPosition(int position) {
+ this.position = position;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssuePriority.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueStatus.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueStatus.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueStatus.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,65 @@
+package org.nuiton.redmine.model;
+
+/**
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class IssueStatus implements IdAble, I18nAble {
+
+ public static IssueStatus getIssueStatusById(Integer id, IssueStatus... statuses) {
+ for (IssueStatus u : statuses) {
+ if (u.getId() == id) {
+ return u;
+ }
+ }
+ return null;
+ }
+ protected int id;
+ protected int position;
+ protected boolean isClosed;
+ protected boolean isDefault;
+ protected String name;
+
+ @Override
+ public int getId() {
+ return id;
+ }
+
+ public boolean isIsClosed() {
+ return isClosed;
+ }
+
+ public boolean isIsDefault() {
+ return isDefault;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ public int getPosition() {
+ return position;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public void setIsClosed(boolean isClosed) {
+ this.isClosed = isClosed;
+ }
+
+ public void setIsDefault(boolean isDefault) {
+ this.isDefault = isDefault;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setPosition(int position) {
+ this.position = position;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/IssueStatus.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Project.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Project.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Project.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -8,7 +8,7 @@
* @author chemit
* @since 1.0.0
*/
-public class Project {
+public class Project implements IdAble, I18nAble {
protected Date createdOn;
protected Date updatedOn;
@@ -34,6 +34,7 @@
return homepage;
}
+ @Override
public int getId() {
return id;
}
@@ -46,6 +47,7 @@
return isPublic;
}
+ @Override
public String getName() {
return name;
}
@@ -109,5 +111,4 @@
public void setStatus(int status) {
this.status = status;
}
-
}
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Tracker.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Tracker.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Tracker.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -5,8 +5,16 @@
* @author chemit
* @since 1.0.0
*/
-public class Tracker {
+public class Tracker implements IdAble, I18nAble {
+ public static Tracker getTrackerById(int id,Tracker... trackers) {
+ for (Tracker u : trackers) {
+ if (u.getId() == id) {
+ return u;
+ }
+ }
+ return null;
+ }
protected int id;
protected int projectId;
protected int trackerId;
@@ -15,6 +23,7 @@
protected boolean isInRoadmap;
protected String name;
+ @Override
public int getId() {
return id;
}
@@ -27,6 +36,7 @@
return isInRoadmap;
}
+ @Override
public String getName() {
return name;
}
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/User.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/User.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/User.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -5,11 +5,28 @@
/**
*
* @author chemit
- *
+ *
* @since 1.0.0
*/
-public class User {
+public class User implements IdAble, I18nAble {
+ public static User getUserByLogin(String login, User... users) {
+ for (User u : users) {
+ if (u.getLogin().equals(login)) {
+ return u;
+ }
+ }
+ return null;
+ }
+
+ public static User getUserById(int id, User... users) {
+ for (User u : users) {
+ if (u.getId() == id) {
+ return u;
+ }
+ }
+ return null;
+ }
protected boolean admin;
protected boolean mailNotification;
protected int id;
@@ -51,6 +68,7 @@
return hashedPassword;
}
+ @Override
public int getId() {
return id;
}
@@ -154,4 +172,9 @@
public void setUpdatedOn(Date updatedOn) {
this.updatedOn = updatedOn;
}
+
+ @Override
+ public String getName() {
+ return firstname + " " + lastname;
+ }
}
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Version.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Version.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/Version.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -7,8 +7,25 @@
* @author chemit
* @since 1.0.0
*/
-public class Version {
+public class Version implements IdAble,I18nAble {
+ public static Version getVersionByName(Version[] versions, String login) {
+ for (Version u : versions) {
+ if (u.getName().equals(login)) {
+ return u;
+ }
+ }
+ return null;
+ }
+
+ public static Version getVersionById(Version[] versions, int id) {
+ for (Version u : versions) {
+ if (u.getId() == id) {
+ return u;
+ }
+ }
+ return null;
+ }
protected Date createdOn;
protected Date updatedOn;
protected Date effectiveDate;
@@ -30,10 +47,12 @@
return effectiveDate;
}
+ @Override
public int getId() {
return id;
}
+ @Override
public String getName() {
return name;
}
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueCategoryXpp3Reader.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueCategoryXpp3Reader.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueCategoryXpp3Reader.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+package org.nuiton.redmine.model.io.xpp3;
+
+import java.beans.IntrospectionException;
+import org.nuiton.io.xpp3.AbstractXpp3Reader;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.IssueCategory;
+import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers;
+
+/**
+ * {@link Issue} reader.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class IssueCategoryXpp3Reader extends AbstractXpp3Reader<IssueCategory> {
+
+ public IssueCategoryXpp3Reader() {
+ super(IssueCategory.class, "issue-categories", "issue-category");
+ }
+
+ @Override
+ protected void initMappers() throws IntrospectionException {
+
+ addTagTextContentMappers(IssueCategory.class, RedmineDataConverter.Integer, true, allMappers,
+ "project-id",
+ "assigned-to-id",
+ "id");
+
+ addTagTextContentMappers(IssueCategory.class, RedmineDataConverter.Text, true, allMappers,
+ "name");
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueCategoryXpp3Reader.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssuePriorityXpp3Reader.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssuePriorityXpp3Reader.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssuePriorityXpp3Reader.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,36 @@
+package org.nuiton.redmine.model.io.xpp3;
+
+import java.beans.IntrospectionException;
+import org.nuiton.io.xpp3.AbstractXpp3Reader;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.IssuePriority;
+import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers;
+
+/**
+ * {@link Issue} reader.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class IssuePriorityXpp3Reader extends AbstractXpp3Reader<IssuePriority> {
+
+ public IssuePriorityXpp3Reader() {
+ super(IssuePriority.class, "enumerations", "enumeration");
+ }
+
+ @Override
+ protected void initMappers() throws IntrospectionException {
+
+
+ addTagTextContentMappers(IssuePriority.class, RedmineDataConverter.Integer, true, allMappers,
+ "id",
+ "position");
+
+ addTagTextContentMappers(IssuePriority.class, RedmineDataConverter.Boolean, true, allMappers,
+ "is-default");
+
+ addTagTextContentMappers(IssuePriority.class, RedmineDataConverter.Text, true, allMappers,
+ "name",
+ "opt");
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssuePriorityXpp3Reader.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueStatusXpp3Reader.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueStatusXpp3Reader.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueStatusXpp3Reader.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,35 @@
+package org.nuiton.redmine.model.io.xpp3;
+
+import java.beans.IntrospectionException;
+import org.nuiton.io.xpp3.AbstractXpp3Reader;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.IssueStatus;
+import static org.nuiton.io.xpp3.Xpp3Helper.addTagTextContentMappers;
+
+/**
+ * {@link Issue} reader.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class IssueStatusXpp3Reader extends AbstractXpp3Reader<IssueStatus> {
+
+ public IssueStatusXpp3Reader() {
+ super(IssueStatus.class, "issue-statuses", "issue-status");
+ }
+
+ @Override
+ protected void initMappers() throws IntrospectionException {
+
+ addTagTextContentMappers(IssueStatus.class, RedmineDataConverter.Integer, true, allMappers,
+ "id",
+ "position");
+
+ addTagTextContentMappers(IssueStatus.class, RedmineDataConverter.Boolean, true, allMappers,
+ "is-closed",
+ "is-default");
+
+ addTagTextContentMappers(IssueStatus.class, RedmineDataConverter.Text, true, allMappers,
+ "name");
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/IssueStatusXpp3Reader.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3Helper.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3Helper.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3Helper.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,65 @@
+package org.nuiton.redmine.model.io.xpp3;
+
+import java.io.ByteArrayInputStream;
+import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import org.nuiton.io.xpp3.Xpp3Helper;
+import org.nuiton.redmine.RedmineDataType;
+
+/**
+ * Pour construire le modèle à partir de fichiers xml contenant les données.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class RedmineXpp3Helper {
+
+ public <O> O readObject(Class<O> klass, String txt) throws IOException, XmlPullParserException {
+ O result = readObject(klass, new ByteArrayInputStream(txt.getBytes()));
+ return result;
+ }
+
+ public <O> O[] readObjects(Class<O> klass, String txt) throws IOException, XmlPullParserException {
+ O[] results = readObjects(klass, new ByteArrayInputStream(txt.getBytes()));
+ return results;
+ }
+
+ public <O> O readObject(Class<O> klass, File file) throws IOException, XmlPullParserException {
+ O result = readObject(klass, new FileInputStream(file));
+ return result;
+ }
+
+ public <O> O[] readObjects(Class<O> klass, File file) throws IOException, XmlPullParserException {
+ O[] results = readObjects(klass, new FileInputStream(file));
+ return results;
+ }
+
+ public <O> O readObject(Class<O> klass, InputStream stream) throws IOException, XmlPullParserException {
+
+ RedmineDataType.checkRedmineDataType(klass);
+
+ O result = null;
+
+ Reader reader = ReaderFactory.newXmlReader(stream);
+ result = Xpp3Helper.readObject(klass, reader);
+
+ return result;
+ }
+
+ public <O> O[] readObjects(Class<O> klass, InputStream stream) throws IOException, XmlPullParserException {
+
+ RedmineDataType.checkRedmineDataType(klass);
+
+ O[] results = null;
+
+ Reader reader = ReaderFactory.newXmlReader(stream);
+ results = Xpp3Helper.readObjects(klass, reader);
+ return results;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3Helper.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Deleted: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/AbstractGetProjectDataMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/AbstractGetProjectDataMojo.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/AbstractGetProjectDataMojo.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,79 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-import java.util.Arrays;
-import org.apache.maven.plugin.MojoFailureException;
-
-/**
- * Abstract goal to retreave some datas on a project.
- *
- * @author tchemit
- * @since 1.0.0
- */
-public abstract class AbstractGetProjectDataMojo extends AbstractRedmineMojo {
-
- public static interface DataType {
-
- String getAction();
- }
-
- public enum DataFormat {
-
- json,
- xml
- }
- /**
- * Project identifier.
- *
- * @parameter expression="${projectId}"
- * @required
- * @since 1.0.0
- */
- protected String projectId;
- /**
- * The data format to retreave (all values of enum {@link #DataFormat}) :
- * <ul>
- * <li>json</li>
- * <li>xml</li>
- * </ul>
- * <p/>
- * <p/>
- *
- * @parameter expression="${redmine.dataFormat}" default-value="xml"
- * @required
- * @since 1.0.0
- */
- protected String dataFormat;
- /**
- * The action to be send to redmine, will be compute in
- * {@link #init()} method.
- */
- protected String action;
-
- protected abstract DataType getDataType() throws MojoFailureException;
-
- @Override
- protected boolean init() throws Exception {
-
- action = buildAction();
-
- return super.init();
- }
-
- protected String buildAction() throws MojoFailureException {
-
- DataType _dataType = getDataType();
-
- DataFormat _dataFormat = getDataFormat();
-
- return _dataType.getAction() + "." + _dataFormat.name();
- }
-
- protected DataFormat getDataFormat() throws MojoFailureException {
- try {
- DataFormat _dataFormat = DataFormat.valueOf(dataFormat);
- return _dataFormat;
- } catch (Exception e) {
- throw new MojoFailureException("could not obtain data format " + dataFormat + " in " + Arrays.toString(DataFormat.values()));
- }
- }
-}
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/AbstractRedmineMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/AbstractRedmineMojo.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/AbstractRedmineMojo.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,41 +1,29 @@
-/**
- * Copyright 2008 fastConnect.
- *
- * This file is part of maven-redmine-plugin Mojo.
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this software. If not, see <http://www.gnu.org/licenses/>.
- */
package org.nuiton.redmine.plugin;
-import org.nuiton.redmine.RedmineSession;
-import java.io.IOException;
+import java.io.File;
import java.net.URL;
-import org.apache.maven.model.IssueManagement;
-import org.apache.maven.plugin.MojoExecutionException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
import org.nuiton.AbstractPlugin;
+import org.nuiton.redmine.RedmineConfiguration;
+import org.nuiton.redmine.RedmineConfigurationHelper;
+import org.nuiton.redmine.RedmineDataHelper;
+import org.nuiton.redmine.RedmineDataType;
+import org.nuiton.redmine.RedmineDataProvider;
import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
-import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException;
/**
- * Provides basic methods to interact with Redmine.
+ * Abstract redmine mojo.
+ *
+ * @author tchemit
+ * @since 1.0.0
*/
-public abstract class AbstractRedmineMojo extends AbstractPlugin {
+public abstract class AbstractRedmineMojo extends AbstractPlugin implements RedmineConfiguration {
/**
* Dependance du projet.
@@ -56,29 +44,19 @@
*/
protected Settings settings;
/**
- * Configuration of issue management.
- * <p/>
- * If no redmineUrl defined, will use the issue management to guess the
- * redmine url.
- *
- * @parameter default-value="${project.issueManagement}"
- * @readonly
- * @since 1.0.0
- */
- protected IssueManagement issueManagement;
- /**
* Server id to use for authentication (must be defined in your setting
* and use the maven >= 2.1.0 password encryption mecanism).
* <p/>
*
* @parameter expression="${redmine.serverId}"
- * @required
* @since 1.0.0
*/
protected String serverId;
/**
* The real basedir redmine url.
*
+ * If no url is given, will use the one filled in issue management.
+ *
* @parameter expression="${redmine.url}"
* @since 1.0.0
*/
@@ -98,6 +76,36 @@
*/
protected String redminePassword;
/**
+ * The encoding used to read and write files.
+ *
+ * @parameter expression="${redmine.encoding}" default-value="${project.build.sourceEncoding}"
+ * @since 1.0.0
+ */
+ protected String encoding;
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectId;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionId;
+ /**
+ * Le répertoire où écrire les données rapatriées depuis redmine au format xml.
+ *
+ * @parameter expression="${redmine.cacheDirectory}" default-value="${project.build.directory}/redmine-cache"
+ * @since 1.0.0
+ * @required
+ */
+ protected File cacheDirectory;
+ /**
* Un flag pour activer le mode verbeux.
*
* @parameter expression="${redmine.verbose}" default-value="${maven.verbose}"
@@ -105,21 +113,42 @@
*/
protected boolean verbose;
/**
+ * Un flag pour activer le mode connecté.
+ *
+ * @parameter expression="${redmine.offline}" default-value="${settings.offline}"
+ * @since 1.0.0
+ */
+ protected boolean offline;
+ /**
+ * Un flag pour recharger les données locales si elles existent.
+ *
+ * @parameter expression="${redmine.overwrite}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean overwrite;
+ /**
* password decypher
- * @component
+ *
+ * @component role="org.sonatype.plexus.components.sec.dispatcher.SecDispatcher" roleHint="maven-redmine-plugin"
+ * @readonly
+ * @required
* @since 1.0.0
*/
protected SecDispatcher sec;
/**
- * redmine session
+ * Redmine model store.
+ *
* @since 1.0.0
*/
- protected RedmineSession session;
+ protected RedmineDataHelper helper;
public AbstractRedmineMojo() {
- super("skip message");
+ super("init was not successfull, will skip plugin");
}
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractPlugin
+ ///////////////////////////////////////////////////////////////////////////
@Override
protected boolean ensurePackaging() {
// accept all packages
@@ -129,103 +158,160 @@
@Override
protected boolean init() throws Exception {
- if (redmineUrl == null || redmineUrl.toString().isEmpty()) {
+ // obtain a data provider
- // no redmine url specified, guess it from issueManagement
+ RedmineDataProvider dataProvider = RedmineConfigurationHelper.initDataProvider(
+ this,
+ getLog(),
+ serverId,
+ settings,
+ project.getIssueManagement(),
+ sec);
- String system = issueManagement.getSystem();
- if (!"redmine".equals(system)) {
- throw new MojoExecutionException("must use a redmine issueManagment system, but found : " + system);
- }
- String url = issueManagement.getUrl();
- redmineUrl = new URL(url);
- }
+ // build the data helper
- if (getLog().isDebugEnabled()) {
- getLog().debug("redmine url " + redmineUrl);
- }
+ helper = new RedmineDataHelper(dataProvider);
+ helper.setProjectId(projectId);
+ helper.setVersionId(versionId);
+ return true;
+ }
- if (redmineUsername == null || redmineUsername.trim().isEmpty() || redminePassword == null || redminePassword.trim().isEmpty()) {
+ ///////////////////////////////////////////////////////////////////////////
+ /// Plugin
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public MavenProject getProject() {
+ return project;
+ }
- // guess login and password from server in settings
+ @Override
+ public void setProject(MavenProject project) {
+ this.project = project;
+ }
- Server server = settings.getServer(serverId);
- if (server == null) {
- throw new MojoFailureException("could not find serverId " + serverId);
- }
- redmineUsername = server.getUsername();
- redminePassword = server.getPassword();
- try {
- redminePassword = sec.decrypt(redminePassword);
- } catch (SecDispatcherException ex) {
- throw new MojoFailureException("could not decrypt password", ex);
- }
- }
+ @Override
+ public boolean isVerbose() {
+ return verbose;
+ }
- try {
+ @Override
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
- session = RedmineSession.getSession(getLog(), redmineUrl, redmineUsername, redminePassword, verbose);
+ ///////////////////////////////////////////////////////////////////////////
+ /// RedmineConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public URL getRedmineUrl() {
+ return redmineUrl;
+ }
- } catch (IOException e) {
- throw new MojoExecutionException("Unable to login to <" + redmineUrl + "> with user <" + redmineUsername + ">", e);
- }
-
- // auth to redmine is ok
-
- getLog().info("authentication to " + redmineUrl + " done for " + redmineUsername);
-
- return true;
+ @Override
+ public void setRedmineUrl(URL redmineUrl) {
+ this.redmineUrl = redmineUrl;
}
- public String getServerId() {
- return serverId;
+ @Override
+ public File getLocalDir() {
+ return cacheDirectory;
}
- public void setServerId(String serverId) {
- this.serverId = serverId;
+ @Override
+ public void setLocalDir(File localDir) {
+ this.cacheDirectory = localDir;
}
- public IssueManagement getIssueManagement() {
- return issueManagement;
+ @Override
+ public boolean isOffline() {
+ return offline;
}
- public void setIssueManagement(IssueManagement issueManagement) {
- this.issueManagement = issueManagement;
+ @Override
+ public void setOffline(boolean offline) {
+ this.offline = offline;
}
- public URL getRedmineUrl() {
- return redmineUrl;
+ @Override
+ public boolean isOverwrite() {
+ return overwrite;
}
- public void setRedmineUrl(URL redmineUrl) {
- this.redmineUrl = redmineUrl;
+ @Override
+ public void setOverwrite(boolean overwrite) {
+ this.overwrite = overwrite;
}
- public Settings getSettings() {
- return settings;
+ @Override
+ public String getRedminePassword() {
+ return redminePassword;
}
- public void setSettings(Settings settings) {
- this.settings = settings;
+ @Override
+ public void setRedminePassword(String redminePassword) {
+ this.redminePassword = redminePassword;
}
@Override
- public boolean isVerbose() {
- return verbose;
+ public String getRedmineUsername() {
+ return redmineUsername;
}
@Override
- public void setVerbose(boolean verbose) {
- this.verbose = verbose;
+ public void setRedmineUsername(String redmineUsername) {
+ this.redmineUsername = redmineUsername;
}
@Override
- public MavenProject getProject() {
- return project;
+ public String getEncoding() {
+ return encoding;
}
@Override
- public void setProject(MavenProject project) {
- this.project = project;
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
}
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// Others
+ ///////////////////////////////////////////////////////////////////////////
+ /**
+ * Convert {@link RedmineDataType} from string representation.
+ *
+ * A filter can be make on the parameter {@code universe} if filled.
+ *
+ * @param dataTypes the list of type to convert separated by commas.
+ * @param universe universe of authorized values (if not filled, no filter).
+ * @return the array of type converted from the string representation.
+ * @throws MojoFailureException
+ */
+ protected RedmineDataType[] getRedmineDataTypes(String dataTypes, RedmineDataType... universe) throws MojoFailureException {
+ List<RedmineDataType> results = new ArrayList<RedmineDataType>();
+ List<RedmineDataType> universeList = new ArrayList<RedmineDataType>(Arrays.asList(universe));
+
+ for (String dataType : dataTypes.split(",")) {
+ RedmineDataType result;
+ try {
+ result = RedmineDataType.valueOf(dataType.trim());
+ } catch (Exception e) {
+ throw new MojoFailureException("could not obtain data type " + dataType + " in " + Arrays.toString(RedmineDataType.values()));
+ }
+
+ // check projectId used
+ if (result.isRequiresVersion() && (projectId == null && projectId.isEmpty())) {
+ throw new MojoFailureException("could not use the data type " + result + " since it is not a project requires and projectId was not filled");
+ }
+ // check versionId use
+ if (result.isRequiresVersion() && (versionId == null || versionId.isEmpty())) {
+ throw new MojoFailureException("could not use the data type " + result + " since it a version requires and versionId was not filled");
+ }
+ if (!universeList.isEmpty() && !universeList.contains(result)) {
+ // can not accept these value
+ getLog().warn("the type " + result + " is not authorized, universe : " + universeList);
+ continue;
+ }
+ results.add(result);
+ }
+ return results.toArray(new RedmineDataType[results.size()]);
+ }
}
Deleted: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DataNotFoundException.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DataNotFoundException.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DataNotFoundException.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,27 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-/**
- * An exception to throw when a data does not exists on redmine.
- *
- * @author chemit
- * @since 1.0.0
- */
-public class DataNotFoundException extends Exception {
-
- private static final long serialVersionUID = 1L;
-
- public DataNotFoundException(Throwable cause) {
- super(cause);
- }
-
- public DataNotFoundException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public DataNotFoundException(String message) {
- super(message);
- }
-
- public DataNotFoundException() {
- }
-}
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,78 @@
+package org.nuiton.redmine.plugin;
+
+import org.nuiton.redmine.RedmineDataType;
+import org.nuiton.redmine.model.I18nAble;
+import org.nuiton.redmine.model.IdAble;
+
+/**
+ * goal to display in console some data from redmine's server.
+ *
+ * Data will be stored locally on xml files.
+ *
+ * @author tchemit
+ * @since 1.0.0
+ *
+ * @goal display-data
+ * @requiresProject true
+ */
+public class DisplayDataMojo extends AbstractRedmineMojo {
+
+ /**
+ * The data types to display : {@code issueSatuses}, {@code issuePriorities},
+ * {@code issueCategories}, {@code trackers} and {@code users}.
+ * <p/>
+ * {@code issueStatuses} and {@code issuePriorities} are common for all
+ * projects, so for those datas, no extrat configuration is required.
+ * <p/>
+ * {@code isseCategories}, {@code trackers} and {@code users} are project
+ * specific, so you have to fill als the {@code projectId} parameter to
+ * obtain data for those types.
+ * <p/>
+ * Note : you can specifiy several types separated by comma
+ *
+ * @parameter expression="${redmine.types}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String types;
+ /**
+ * the real data types to retreave
+ */
+ protected RedmineDataType[] redmineDataTypes;
+
+ @Override
+ protected boolean init() throws Exception {
+
+ redmineDataTypes = getRedmineDataTypes(types,
+ RedmineDataType.issueStatuses,
+ RedmineDataType.issuePriorities,
+ RedmineDataType.issueCategories,
+ RedmineDataType.trackers,
+ RedmineDataType.users);
+
+ if (redmineDataTypes.length == 0) {
+ // no data to treate
+ getLog().warn("no data types detected, you must fill the required parameter dataTypes");
+ return false;
+ }
+ return super.init();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+
+ StringBuilder buffer = new StringBuilder("\n");
+ for (RedmineDataType type : redmineDataTypes) {
+ IdAble[] datas = helper.getDatas(type.getType(), projectId, versionId, !offline);
+ buffer.append("\nValues of '" + type).append('\'');
+ if (type.isRequiresProject()) {
+ buffer.append(" for project " + projectId);
+ }
+ buffer.append('\n');
+ for (IdAble data : datas) {
+ buffer.append(" - " + data.getId()).append(" = ").append(((I18nAble) data).getName()).append('\n');
+ }
+ }
+ System.out.println(buffer.toString());
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DisplayDataMojo.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,84 @@
+package org.nuiton.redmine.plugin;
+
+import java.io.File;
+import org.apache.maven.plugin.MojoFailureException;
+import org.nuiton.redmine.RedmineDataType;
+import org.nuiton.util.PluginHelper;
+
+/**
+ * goal to download some datas from a redmine server.
+ *
+ * Data will be stored locally on xml files.
+ *
+ * @author tchemit
+ * @since 1.0.0
+ *
+ * @goal download
+ * @requiresProject true
+ */
+public class DownloadDataMojo extends AbstractRedmineMojo {
+
+ /**
+ * The data types to retreave : all values of enum {@link RedmineDataType}
+ * with filter (on projectId and versionId)
+ * <ul>
+ * <li>project</li>
+ * <li>trackers</li>
+ * <li>users</li>
+ * <li>versions</li>
+ * <li>version</li>
+ * <li>issues</li>
+ * <li>attachments</li>
+ * </ul>
+ * <p/>
+ * <p/>
+ * Note : you can specifiy several types separated by comma
+ *
+ * @parameter expression="${redmine.types}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String types;
+ /**
+ * the real data types to retreave
+ */
+ protected RedmineDataType[] redmineDataTypes;
+
+ @Override
+ protected boolean init() throws Exception {
+
+ if (offline) {
+ // can not download data where offline
+ throw new MojoFailureException("can not download data when offline flag is on");
+ }
+
+ redmineDataTypes = getRedmineDataTypes(types);
+
+ if (redmineDataTypes.length == 0) {
+ // no data to treate
+ getLog().warn("no data types detected, you must fill the required parameter dataTypes");
+ return false;
+ }
+ return super.init();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+
+ for (RedmineDataType type : redmineDataTypes) {
+
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("treate : " + type);
+ }
+
+ File f = helper.uptodateLocalDataFile(type);
+
+ getLog().info("data [" + type + "] stored in " + f);
+ if (verbose) {
+ String t = PluginHelper.readAsString(f, encoding);
+ getLog().info(t);
+
+ }
+ }
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/DownloadDataMojo.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Modified: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GenerateChangesMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GenerateChangesMojo.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GenerateChangesMojo.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,7 +1,43 @@
package org.nuiton.redmine.plugin;
+import org.nuiton.redmine.RedmineDataException;
+import org.nuiton.redmine.DataNotFoundException;
+import java.io.File;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.changes.model.Action;
+import org.apache.maven.plugins.changes.model.Author;
+import org.apache.maven.plugins.changes.model.Body;
+import org.apache.maven.plugins.changes.model.ChangesDocument;
+import org.apache.maven.plugins.changes.model.Properties;
+import org.apache.maven.plugins.changes.model.Release;
+import org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Writer;
+import org.codehaus.plexus.util.xml.XmlStreamWriter;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.nuiton.redmine.IssueCollectorConfiguration;
+import org.nuiton.redmine.IssuesCollector;
+import org.nuiton.redmine.RedmineConfigurationHelper;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.IssueCategory;
+import org.nuiton.redmine.model.IssueStatus;
+import org.nuiton.redmine.model.Project;
+import org.nuiton.redmine.model.Tracker;
+import org.nuiton.redmine.model.User;
+import org.nuiton.redmine.model.Version;
+
/**
- * Generates the changes.xml file from the Redmine's server
+ * Generates the changes.xml file from the Redmine's server to be used
+ * by the maven-changes-plugin to generates the release report and send
+ * the annoncement mail at a release time.
*
* @author tchemit
* @goal generate-changes
@@ -9,10 +45,547 @@
*
* @since 1.0.0
*/
-public class GenerateChangesMojo extends AbstractRedmineMojo {
+public class GenerateChangesMojo extends AbstractRedmineMojo implements IssueCollectorConfiguration {
+ enum Actions {
+
+ add,
+ fix,
+ update,
+ remove
+ }
+ /**
+ * The path of the <code>changes.xml</code> file that will be converted into an HTML report.
+ *
+ * @parameter expression="${changes.xmlPath}" default-value="target/changes/changes.xml"
+ * @required
+ * @since 1.0.0
+ */
+ protected File xmlPath;
+ /**
+ * The description of the release.
+ *
+ * <b>Note :</b> if not sets - will use the redmine version description (if exists).
+ *
+ * @parameter expression="${releaseDescription}"
+ * @since 1.0.0
+ */
+ protected String releaseDescription;
+ /**
+ * The changes file title.
+ *
+ * @parameter expression="${changesTitle}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String changesTitle;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersion;
+ /**
+ * The action mapping to the redmine tracker ids.
+ *
+ * Possible actions are {@code add}, {@code fix}, {@code update}, {@code remove}
+ *
+ * The syntax of mapping is {@ocode action:id [,action:id]*}
+ *
+ * Example :
+ *
+ * <pre>
+ * fix:1
+ * fix:1, add:1
+ * </pre>
+ *
+ * @parameter expression="${redmine.actionMapping}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String actionMapping;
+ /**
+ * The comma separated list of statuses ids to include in the changes.xml
+ *
+ * @parameter expression="${redmine.statusIds}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String statusIds;
+ /**
+ * The comma separated list of category ids to include in the changes.xml
+ *
+ * <b>Note :</b> If a value is set to empty - that means to include all categories.
+ * <p/>
+ * @parameter expression="${redmine.categoryIds}"
+ * @since 1.0.0
+ */
+ protected String categoryIds;
+ /**
+ * le mapping entre l'id d'un tracker et le type d'action
+ */
+ protected Map<Integer, String> trackerToAction;
+ protected Map<String, String> filters;
+ private Project redmineProject;
+ private Version releaseVersion;
+ private User redmineUser;
+ private boolean needCreateVersion;
+ private Version[] versions;
+ private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+
@Override
+ protected boolean init() throws Exception {
+
+ if (xmlPath == null || xmlPath.getAbsolutePath().trim().isEmpty()) {
+ throw new MojoExecutionException("required a xmlPath parameter");
+ }
+
+ if (projectId == null || projectId.trim().isEmpty()) {
+ throw new MojoExecutionException("required a projectId parameter");
+ }
+ if (versionId == null || versionId.trim().isEmpty()) {
+ throw new MojoExecutionException("required a versionId parameter");
+ }
+
+ versionId = RedmineConfigurationHelper.removeSnapshotSuffix(versionId);
+
+ File xmlParent = xmlPath.getParentFile();
+ if (!xmlParent.exists()) {
+ xmlParent.mkdirs();
+ }
+ boolean result = super.init();
+ if (!result) {
+ return false;
+ }
+
+ // check project exists
+
+ try {
+ Project p = helper.getProject(true);
+ this.redmineProject = p;
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("the project named '" + projectId + "' does not exists on redmine server...", e);
+ }
+
+ // get version
+ try {
+ Version v = helper.getVersion(true);
+ this.releaseVersion = v;
+ } catch (RedmineDataException e) {
+ // la version n'existe pas
+ // must create a new version
+ // must create a versions ?
+ getLog().warn("the version " + versionId + " does not exist, will create it on redmine");
+ if (offline) {
+ throw new MojoExecutionException("offline is on, can not reach nuiton server");
+ }
+ //TODO use rest/add_versions
+ // and reload versions
+ this.needCreateVersion = true;
+ }
+
+ // get user
+ try {
+ User user = helper.getUserByLogin(overwrite, redmineUsername);
+
+ if (user == null) {
+ throw new MojoExecutionException("user named " + redmineUsername + "' is not part of the project, can not execute the plugin...");
+ }
+ this.redmineUser = user;
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("the user named '" + redmineUsername + "' could not be found on the project, can not execute the plugin...", e);
+ }
+
+ // get trackers
+
+ Tracker[] trackers;
+ try {
+
+ trackers = helper.getTrackers(overwrite);
+
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("could not obtain trackers for reason " + e.getMessage(), e);
+ }
+
+ // get statuses
+
+ IssueStatus[] statuses;
+ try {
+
+ statuses = helper.getIssueSatuses(overwrite);
+
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("could not obtain statuses for reason " + e.getMessage(), e);
+ }
+
+ // get categories
+
+ IssueCategory[] categories;
+ try {
+
+ categories = helper.getIssueCategories(overwrite);
+
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("could not obtain categories for reason " + e.getMessage(), e);
+ }
+
+ // get versions
+
+ try {
+
+ versions = helper.getVersions(overwrite);
+
+ } catch (RedmineDataException e) {
+ throw new MojoExecutionException("could not obtain versions for reason " + e.getMessage(), e);
+ }
+
+ filters = new HashMap<String, String>();
+
+ // build trackerToAction and tracker filter
+
+ trackerToAction = new HashMap<Integer, String>();
+
+ String[] entries = actionMapping.split(",");
+ StringBuilder buffer = new StringBuilder();
+ for (String entry : entries) {
+ String[] parts = entry.split(":");
+ if (parts.length != 2) {
+ // error in syntax
+ throw new MojoExecutionException("the trackerMapping entry " + Arrays.toString(parts) + " is not well formed");
+ }
+ String action = parts[0].trim().toLowerCase();
+
+ try {
+ Actions.valueOf(action);
+ } catch (Exception e) {
+ throw new MojoExecutionException("the action " + action + " is unknown... authorized : " + Arrays.toString(Actions.values()));
+ }
+
+ Integer id = Integer.valueOf(parts[1].trim());
+
+ Tracker t = Tracker.getTrackerById(id, trackers);
+
+ if (t == null) {
+ throw new MojoExecutionException("could not obtain the tracker with id " + id);
+ }
+
+ trackerToAction.put(id, action);
+ buffer.append(",").append(id);
+ }
+
+ filters.put("tracker", buffer.substring(1));
+
+ // create status filters
+
+ for (String s : statusIds.split(",")) {
+ Integer id = Integer.valueOf(s.trim());
+
+ IssueStatus t = IssueStatus.getIssueStatusById(id, statuses);
+
+ if (t == null) {
+ throw new MojoExecutionException("could not obtain the status with id " + id);
+ }
+ }
+
+ filters.put("status", statusIds);
+
+ if (categoryIds != null && !categoryIds.trim().isEmpty()) {
+
+ // create category filters
+
+ for (String s : categoryIds.split(",")) {
+ Integer id = Integer.valueOf(s.trim());
+
+ IssueCategory t = IssueCategory.getIssueCategoryById(id, categories);
+
+ if (t == null) {
+ throw new MojoExecutionException("could not obtain the category with id " + id);
+ }
+ }
+
+ filters.put("category", categoryIds);
+ }
+
+ // create version filters
+
+ List<Version> versionList = new ArrayList<Version>();
+ if (onlyCurrentVersion) {
+ // nothing to do here, the issue collector will treate this simple case
+ versionList.add(releaseVersion);
+
+ } else {
+
+ buffer = new StringBuilder();
+
+ for (Version v : versions) {
+
+ int id = v.getId();
+
+ boolean keep = true;
+ if (id != releaseVersion.getId()) {
+
+ //TODO TC-20090914 make this better, since this is a very soft test
+ // to test only the effective date
+
+ if (v.getEffectiveDate() == null) {
+ // skip this unclosed version
+ keep = false;
+ }
+ }
+
+ if (keep) {
+
+ buffer.append(",").append(v.getName());
+ versionList.add(v);
+ }
+ }
+
+ versions = versionList.toArray(new Version[versionList.size()]);
+ filters.put("version", buffer.substring(1));
+ }
+ return result;
+ }
+
+ @Override
protected void doAction() throws Exception {
- //TODO-FILL_ME
+
+ // create version if required
+
+ if (needCreateVersion) {
+ //TODO call the rest service rest/add_version
+
+ // then reload versions
+ releaseVersion = helper.getVersionByName(true, versionId);
+ }
+
+ if (releaseVersion.getEffectiveDate() == null) {
+ getLog().warn("the version " + versionId + " is not effective on redmine, will update effective-date property to today");
+ //TODO call the reset service rest/update_version
+
+ releaseVersion.setEffectiveDate(new Date());
+ }
+
+ getLog().info("project " + redmineProject.getName());
+ getLog().info("version " + releaseVersion.getName());
+ getLog().info("release date " + releaseVersion.getEffectiveDate());
+ getLog().info("release user " + redmineUser.getFirstname() + " " + redmineUser.getLastname());
+
+ // init issues collector
+
+ IssuesCollector collector = new IssuesCollector(helper, getLog(), verbose);
+
+ // collects issues
+
+ try {
+
+ collector.collect(this);
+
+ } catch (RedmineDataException ex) {
+ collector.clearFilters();
+ throw new MojoExecutionException("could not obtains issues for reason " + ex.getMessage(), ex);
+ }
+
+ //TODO make some logic checks : version must be
+ // build the maven changes.xml as memory model
+ ChangesDocument doc = buildChangesDocument(redmineProject, releaseVersion, redmineUser, collector);
+
+ // store the generated file
+ ChangesXpp3Writer xppWriter = new ChangesXpp3Writer();
+
+ XmlStreamWriter writer = new XmlStreamWriter(xmlPath);
+
+ xppWriter.write(writer, doc);
+
+ getLog().info("changes.xml saved in " + xmlPath.getParentFile().getAbsolutePath());
}
+
+ protected Version prepareVersion() throws XmlPullParserException, IOException, DataNotFoundException, MojoExecutionException, RedmineDataException {
+
+ Version version = helper.getVersionByName(true, versionId);
+ if (version == null) {
+ // must create a new version
+ // must create a versions ?
+ getLog().warn("the version " + versionId + " does not exist, will create it on redmine");
+ if (offline) {
+ throw new MojoExecutionException("offline is on, can not reach nuiton server");
+ }
+ //TODO use rest/add_versions
+ // and reload versions
+
+ version = helper.getVersionByName(true, versionId);
+ }
+
+ if (version == null) {
+ throw new MojoExecutionException("could not retreave version " + versionId);
+ }
+
+ if (version.getEffectiveDate() == null) {
+ //TODO do an update rest request to set effectiveDate to today
+ getLog().warn("the version " + versionId + " is not effective on redmine, will update effective-date property to today");
+
+ }
+ return version;
+ }
+
+ protected ChangesDocument buildChangesDocument(Project project, Version version, User user, IssuesCollector collector) throws DataNotFoundException, RedmineDataException {
+ ChangesDocument doc = new ChangesDocument();
+ Properties properties = new Properties();
+ Author author = new Author();
+ author.setAuthorEmail(user.getMail());
+ author.setName(user.getFirstname() + " " + user.getLastname());
+ properties.setAuthor(author);
+ properties.setTitle(changesTitle);
+ doc.setProperties(properties);
+
+ Body body = new Body();
+ doc.setBody(body);
+ body.setModelEncoding(encoding);
+
+ Issue[] issues = collector.getIssues();
+// Version[] versions = collector.getVersions();
+
+ // iterate on versions
+ for (Version v : versions) {
+
+ boolean treateReleaseVersion = v.getId() == version.getId();
+
+ Issue[] issuesForVersion = Issue.filterByVersionId(v.getId(), issues);
+
+ helper.setVersionId(v.getName());
+
+ Release release = new Release();
+ body.addRelease(release);
+
+ release.setVersion(v.getName());
+
+ if (v.getEffectiveDate() != null) {
+
+ release.setDateRelease(dateFormat.format(v.getEffectiveDate()));
+ }
+
+ if (v.getDescription() != null) {
+ release.setDescription(v.getDescription());
+ }
+
+ if (treateReleaseVersion) {
+ if (releaseDescription != null) {
+
+ // override the release description
+ // this is the main version to release
+ release.setDescription(releaseDescription);
+ }
+ if (release.getDateRelease() == null) {
+
+ release.setDateRelease(dateFormat.format(new Date()));
+ }
+ }
+
+ // iterate on actions ? or order it
+
+ for (Entry<Integer, String> entry : trackerToAction.entrySet()) {
+
+ String type = entry.getValue();
+
+ // get issues for the tracker
+ Issue[] issuesForTracker = Issue.filterByTrackerId(entry.getKey(), issuesForVersion);
+
+ for (Issue issue : issuesForTracker) {
+
+ // new action
+ Action action = new Action();
+ action.setSystem("redmine");
+ action.setAction(issue.getSubject());
+ action.setIssue(issue.getId() + "");
+ action.setType(type);
+
+ if (issue.getDueDate() != null) {
+ action.setDate(dateFormat.format(issue.getDueDate()));
+ } else {
+ getLog().warn("issue " + issue.getSubject() + " has no dueDate...");
+ }
+
+
+ int id = issue.getAssignedToId();
+ if (id == 0) {
+ getLog().warn("issue " + issue.getSubject() + " is not assigned to any user, this is not normal...");
+ id = issue.getAuthorId();
+ }
+ User a = helper.getUserById(overwrite, issue.getAuthorId());
+ if (a != null) {
+ action.setDueTo(a.getFirstname() + " " + a.getLastname());
+ action.setDueToEmail(a.getMail());
+
+ //TODO should check this is a developper name on pom.xml
+ action.setDev(a.getLogin());
+ }
+
+ release.addAction(action);
+ }
+ }
+ }
+
+ return doc;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectId;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionId;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersion;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ // no filter on priority for building the changes.xml file
+ return 0;
+ }
+
+ @Override
+ public String getPriorityIds() {
+ // no filter on priority for building the changes.xml file
+ return null;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionId = versionId;
+ }
+
+ @Override
+ public String getCategoryIds() {
+ return getFilters().get("category");
+ }
+
+ @Override
+ public String getVersionNames() {
+ return getFilters().get("version");
+ }
+
+ @Override
+ public String getStatusIds() {
+ return getFilters().get("status");
+ }
+
+ @Override
+ public String getTrackerIds() {
+ return getFilters().get("tracker");
+ }
+
+ protected Map<String, String> getFilters() {
+ return filters;
+ }
}
Deleted: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectDataMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectDataMojo.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectDataMojo.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,73 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-import java.util.Arrays;
-import org.apache.maven.plugin.MojoFailureException;
-
-/**
- * Retreave some datas on a project.
- *
- * Given the {@link #dataType}, the {link #dataFormat} and the
- * {@link #projectId}, will ask to redmine server, all datas required.
- *
- * @author tchemit
- * @goal get-project-data
- * @requiresProject true
- *
- * @since 1.0.0
- */
-public class GetProjectDataMojo extends AbstractGetProjectDataMojo {
-
- /**
- * The data type to retreave (all values of enum {@link #DataType} :
- * <ul>
- * <li>project</li>
- * <li>users</li>
- * <li>trackers</li>
- * <li>versions</li>
- * </ul>
- * <p/>
- *
- * @parameter expression="${redmine.projectDataType}"
- * @required
- * @since 1.0.0
- */
- protected String dataType;
-
- @Override
- protected DataType getDataType() throws MojoFailureException {
- VersionDataType _dataType;
- try {
- _dataType = VersionDataType.valueOf(dataType);
- } catch (Exception e) {
- throw new MojoFailureException("could not obtain data type " + dataType + " in " + Arrays.toString(VersionDataType.values()));
- }
- return _dataType;
- }
-
- @Override
- protected void doAction() throws Exception {
-
- String result = session.askContent("rest", action, projectId);
- if (getLog().isDebugEnabled()) {
- getLog().debug("result : " + result);
- }
- }
-
- public enum VersionDataType implements DataType {
-
- project("get_project"),
- users("get_project_users"),
- trackers("get_project_trackers"),
- versions("get_project_versions");
- final String action;
-
- private VersionDataType(String action) {
- this.action = action;
- }
-
- @Override
- public String getAction() {
- return action;
- }
- }
-}
Deleted: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojo.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojo.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,81 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-import java.util.Arrays;
-import org.apache.maven.plugin.MojoFailureException;
-
-/**
- * Retreave some datas on a given version of a project.
- *
- * Given the {@link #dataType}, the {link #dataFormat} and the
- * {@link #projectId}, and {@link #versionId} will ask to redmine server,
- * all datas required.
- *
- * @author tchemit
- * @goal get-project-version-data
- * @requiresProject true
- *
- * @since 1.0.0
- */
-public class GetProjectVersionDataMojo extends AbstractGetProjectDataMojo {
-
- /**
- * Version identifier.
- *
- * @parameter expression="${versionId}"
- * @required
- * @since 1.0.0
- */
- protected String versionId;
- /**
- * The data type to retreave (all values of enum {@link #DataType} :
- * <ul>
- * <li>version</li>
- * <li>issues</li>
- * <li>files</li>
- * </ul>
- * <p/>
- *
- * @parameter expression="${redmine.versionDataType}"
- * @required
- * @since 1.0.0
- */
- protected String dataType;
-
- @Override
- protected void doAction() throws Exception {
-
- String result = session.askData(new String[]{"rest", action, projectId}, "version_name", versionId);
-
- if (getLog().isDebugEnabled()) {
- getLog().info(result);
- }
- }
-
- @Override
- protected DataType getDataType() throws MojoFailureException {
- VersionDataType _dataType;
- try {
- _dataType = VersionDataType.valueOf(dataType);
- } catch (Exception e) {
- throw new MojoFailureException("could not obtain data type " + dataType + " in " + Arrays.toString(VersionDataType.values()));
- }
- return _dataType;
- }
-
- public enum VersionDataType implements DataType {
-
- version("get_version"),
- issues("get_version_issues"),
- files("get_version_files");
- final String action;
-
- private VersionDataType(String action) {
- this.action = action;
- }
-
- @Override
- public String getAction() {
- return action;
- }
- }
-}
Deleted: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/RedmineReportMojo.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/RedmineReportMojo.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/RedmineReportMojo.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,19 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-/**
- * Generates a report for issues from Redmine's server
- *
- * @author tchemit
- * @goal redmine-report
- * @requiresProject true
- * @requiresDirectInvocation
- *
- * @since 1.0.0
- */
-public class RedmineReportMojo extends AbstractRedmineMojo {
-
- @Override
- protected void doAction() throws Exception {
- //TODO-FILL_ME
- }
-}
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractIssuesReport.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractIssuesReport.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractIssuesReport.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,183 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.redmine.IssuesCollector;
+import org.nuiton.redmine.IssueCollectorConfiguration;
+import org.nuiton.redmine.RedmineDataException;
+import org.nuiton.redmine.RedmineDataHelper;
+import java.util.Locale;
+import java.util.Map;
+import org.apache.maven.reporting.MavenReportException;
+import org.nuiton.redmine.RedmineConfigurationHelper;
+import org.nuiton.redmine.model.Issue;
+
+/**
+ * Abstract Generates a report for issues from Redmine's server
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public abstract class AbstractIssuesReport extends AbstractRedmineReport implements IssueCollectorConfiguration {
+
+ /**
+ * Model helper
+ *
+ * @since 1.0.0
+ */
+ protected RedmineDataHelper modelHelper;
+ /**
+ * The meta to group issues (or null if no grouping)
+ *
+ * @since 1.0.0
+ */
+ protected final String group;
+
+ protected AbstractIssuesReport(String group) {
+ this.group = group;
+ }
+
+ protected abstract String getColumnNames();
+
+ protected abstract Map<String, String> getFilters();
+
+ protected abstract String getIssueLinkTemplate();
+
+ protected abstract String getVersionLinkTemplate();
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// MavenReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public final String getOutputName() {
+ return "redmine-report" + (group == null ? "" : ("-by-" + group));
+ }
+
+ @Override
+ public final String getName(Locale locale) {
+ return getBundle(locale).getString("report.name" + (group == null ? "" : "-" + group));
+ }
+
+ @Override
+ public final String getDescription(Locale locale) {
+ return getBundle(locale).getString("report.description" + (group == null ? "" : "-" + group));
+ }
+
+ @Override
+ public boolean canGenerateReport() {
+
+ boolean result = super.canGenerateReport();
+ if (result) {
+
+ setVersionId(RedmineConfigurationHelper.removeSnapshotSuffix(getVersionId()));
+
+ modelHelper = new RedmineDataHelper(dataProvider);
+ modelHelper.setProjectId(getProjectId());
+ modelHelper.setVersionId(getVersionId());
+
+ }
+
+ return true;
+ }
+
+ @Override
+ public void executeReport(Locale locale)
+ throws MavenReportException {
+
+ if (isOnlyCurrentVersion()) {
+ getLog().info(getBundle(locale).getString("report.message.only.for.current.version") + " " + getVersionId());
+ }
+
+ if (verbose) {
+ getLog().info("project " + getProjectId());
+ getLog().info("version " + getVersionId());
+ }
+
+ // init issues collector
+
+ IssuesCollector collector = new IssuesCollector(modelHelper, getLog(), verbose);
+
+ try {
+
+ collector.collect(this);
+
+ } catch (RedmineDataException ex) {
+ collector.clearFilters();
+ throw new MavenReportException("could not obtains issues for reason " + ex.getMessage(), ex);
+ }
+
+ // get issues from collector
+
+ Issue[] issues = collector.getIssues();
+
+ try {
+
+ if (issues.length == 0) {
+ getLog().warn("no issue to treate, will generate an empty raport.");
+
+ IssueReportGenerator reportGenerator = new IssueReportGenerator();
+
+ reportGenerator.doGenerateEmptyReport(getBundle(locale), getSink());
+
+ } else {
+ IssueReportGenerator report = new IssueReportGenerator(getLog(), getColumnNames(), getGroup());
+
+ report.setIssueLinkTemplate(getIssueLinkTemplate());
+ report.setVersionLinkTemplate(getVersionLinkTemplate());
+ report.setUrl(redmineUrl.toString());
+
+ report.setIssues(issues);
+ report.setUsers(modelHelper.getUsers(true));
+ report.setIssueCategories(modelHelper.getIssueCategories(true));
+ report.setIssueStatuses(modelHelper.getIssueSatuses(true));
+ report.setIssuePriorities(modelHelper.getIssuePriorities(true));
+ report.setTrackers(modelHelper.getTrackers(true));
+ report.setVersions(modelHelper.getVersions(true));
+
+ report.doGenerateReport(getBundle(locale), getSink(), getLog());
+ }
+
+ } catch (MavenReportException mre) {
+ // Rethrow this error from RedmineReportGenerator( String, String )
+ // so that the build fails
+ throw mre;
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ collector.clearFilters();
+ }
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getCategoryIds() {
+ return getFilters() == null ? null : getFilters().get("category");
+ }
+
+ @Override
+ public String getVersionNames() {
+ return getFilters() == null ? null : getFilters().get("version");
+ }
+
+ @Override
+ public String getPriorityIds() {
+ return getFilters() == null ? null : getFilters().get("priority");
+ }
+
+ @Override
+ public String getStatusIds() {
+ return getFilters() == null ? null : getFilters().get("status");
+ }
+
+ @Override
+ public String getTrackerIds() {
+ return getFilters() == null ? null : getFilters().get("tracker");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// Others
+ ///////////////////////////////////////////////////////////////////////////
+ protected final String getGroup() {
+ return group;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractIssuesReport.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractRedmineReport.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractRedmineReport.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractRedmineReport.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,432 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
+import org.apache.maven.doxia.site.decoration.Body;
+import org.apache.maven.doxia.site.decoration.DecorationModel;
+import org.apache.maven.doxia.site.decoration.Skin;
+import org.apache.maven.doxia.siterenderer.Renderer;
+import org.apache.maven.doxia.siterenderer.RendererException;
+import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
+import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
+import org.apache.maven.model.IssueManagement;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.reporting.AbstractMavenReport;
+import org.apache.maven.reporting.MavenReportException;
+import org.apache.maven.settings.Settings;
+import org.codehaus.plexus.i18n.I18N;
+import org.nuiton.Plugin;
+import org.nuiton.redmine.RedmineConfiguration;
+import org.nuiton.redmine.RedmineConfigurationHelper;
+import org.nuiton.redmine.RedmineDataProvider;
+import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
+
+/**
+ * Abstract redmine report mojo.
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public abstract class AbstractRedmineReport extends AbstractMavenReport implements RedmineConfiguration, Plugin {
+
+ /**
+ * The Maven Project.
+ *
+ * @parameter expression="${project}"
+ * @required
+ * @readonly
+ */
+ protected MavenProject project;
+ /**
+ * Dependance du settings.
+ *
+ * @parameter default-value="${settings}"
+ * @required
+ * @readonly
+ * @since 1.0.0
+ */
+ protected Settings settings;
+ /**
+ * Local Repository.
+ *
+ * @parameter expression="${localRepository}"
+ * @required
+ * @readonly
+ */
+ protected ArtifactRepository localRepository;
+ /**
+ * Report output directory. Note that this parameter is only relevant if the goal is run from the command line or
+ * from the default build lifecycle. If the goal is run indirectly as part of a site generation, the output
+ * directory configured in the Maven Site Plugin is used instead.
+ *
+ * @parameter default-value="${project.reporting.outputDirectory}"
+ */
+ protected File outputDirectory;
+ /**
+ * Server id to use for authentication (must be defined in your setting
+ * and use the maven >= 2.1.0 password encryption mecanism).
+ * <p/>
+ *
+ * @parameter expression="${redmine.serverId}"
+ * @since 1.0.0
+ */
+ protected String serverId;
+ /**
+ * The real basedir redmine url.
+ *
+ * @parameter expression="${redmine.url}"
+ * @since 1.0.0
+ */
+ protected URL redmineUrl;
+ /**
+ * The redmine's server login.
+ *
+ * @parameter expression="${redmine.username}"
+ * @since 1.0.0
+ */
+ protected String redmineUsername;
+ /**
+ * The redmine's server password.
+ *
+ * @parameter expression="${redmine.password}"
+ * @since 1.0.0
+ */
+ protected String redminePassword;
+ /**
+ * The encoding to use to read and write files.
+ *
+ * @parameter expression="${redmine.encoding}" default-value="${project.reporting.outputEncoding}"
+ * @since 1.0.0
+ */
+ protected String encoding;
+ /**
+ * Un flag pour activer le mode verbeux.
+ *
+ * @parameter expression="${redmine.verbose}" default-value="${maven.verbose}"
+ * @since 1.0.0
+ */
+ protected boolean verbose;
+ /**
+ * Un flag pour activer le mode connecté.
+ *
+ * @parameter expression="${redmine.offline}" default-value="${settings.offline}"
+ * @since 1.0.0
+ */
+ protected boolean offline;
+ /**
+ * Un flag pour recharger les données locales si elles existent.
+ *
+ * @parameter expression="${redmine.overwrite}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean overwrite;
+ /**
+ * Le répertoire où écrire les données rapatriées depuis redmine au format xml.
+ *
+ * @parameter expression="${redmine.localDir}" default-value="${project.build.directory}/redmine-cache"
+ * @since 1.0.0
+ * @required
+ */
+ protected File localDir;
+ /**
+ * password decypher
+ *
+ * @component role="org.sonatype.plexus.components.sec.dispatcher.SecDispatcher" roleHint="maven-redmine-plugin"
+ * @readonly
+ * @required
+ * @since 1.0.0
+ */
+ protected SecDispatcher sec;
+ /**
+ * @component
+ */
+ protected ArtifactResolver resolver;
+ /**
+ * @component
+ */
+ protected ArtifactFactory factory;
+ /**
+ * Internationalization.
+ *
+ * @component
+ */
+ protected I18N i18n;
+ /**
+ * Doxia Site Renderer.
+ *
+ * @component
+ */
+ protected Renderer siteRenderer;
+// /**
+// * SiteTool component.
+// *
+// * @since 1.0.0
+// * @component
+// */
+// protected SiteTool siteTool;
+ /**
+ * Redmine data provider
+ * @readonly
+ * @since 1.0.0
+ */
+ protected RedmineDataProvider dataProvider;
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// Mojo
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public void execute() throws MojoExecutionException {
+ if (!canGenerateReport()) {
+ String reportName = getName(Locale.FRENCH);
+ getLog().warn("Due to previously errors, No " + reportName + " will be generated.");
+ return;
+ }
+
+ // TODO: push to a helper? Could still be improved by taking more of the site information from the site plugin
+ try {
+ DecorationModel model = new DecorationModel();
+ model.setBody(new Body());
+ Map<String, String> attributes = new HashMap<String, String>();
+ attributes.put("outputEncoding", encoding);
+ Locale locale = Locale.getDefault();
+ SiteRenderingContext siteContext = siteRenderer.createContextForSkin(getSkinArtifactFile(), attributes,
+ model, getName(locale), locale);
+
+ RenderingContext context = new RenderingContext(outputDirectory, getOutputName() + ".html");
+
+ SiteRendererSink sink = new SiteRendererSink(context);
+ generate(sink, locale);
+
+ outputDirectory.mkdirs();
+
+ Writer writer = new FileWriter(new File(outputDirectory, getOutputName() + ".html"));
+
+ siteRenderer.generateDocument(writer, sink, siteContext);
+
+ siteRenderer.copyResources(siteContext, new File(project.getBasedir(), "src/site/resources"),
+ outputDirectory);
+ } catch (RendererException e) {
+ throw new MojoExecutionException(
+ "An error has occurred in " + getName(Locale.ENGLISH) + " report generation.", e);
+ } catch (IOException e) {
+ throw new MojoExecutionException(
+ "An error has occurred in " + getName(Locale.ENGLISH) + " report generation.", e);
+ } catch (MavenReportException e) {
+ throw new MojoExecutionException(
+ "An error has occurred in " + getName(Locale.ENGLISH) + " report generation.", e);
+ }
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// MavenReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public boolean canGenerateReport() {
+ IssueManagement issueManagement = project.getIssueManagement();
+
+ if (issueManagement == null) {
+ getLog().error("No Issue Management set.");
+
+ return false;
+ } else if ((issueManagement.getUrl() == null) || (issueManagement.getUrl().trim().equals(""))) {
+ getLog().error("No URL set in Issue Management.");
+
+ return false;
+ } else if ((issueManagement.getSystem() != null) && !(issueManagement.getSystem().equalsIgnoreCase(RedmineConfigurationHelper.REDMINE_SYSTEM))) {
+ getLog().error("Redmine's Reports only supports 'redmine' Issue Management system.");
+
+ return false;
+ }
+
+ if (offline) {
+ getLog().error("Redmine's Reports can not be generated when Maven is offline.");
+
+ return false;
+ }
+
+ // obtain a data provider
+
+ try {
+ dataProvider = RedmineConfigurationHelper.initDataProvider(
+ this,
+ getLog(),
+ serverId,
+ settings,
+ project.getIssueManagement(),
+ sec);
+ } catch (Exception ex) {
+ getLog().error("Could not initialize redmine data provider for reason " + ex.getMessage(), ex);
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String getName(Locale locale) {
+ return getBundle(locale).getString("report.name");
+ }
+
+ @Override
+ public String getDescription(Locale locale) {
+ return getBundle(locale).getString("report.description");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractMavenReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getOutputDirectory() {
+ return outputDirectory.getAbsolutePath();
+ }
+
+ @Override
+ protected Renderer getSiteRenderer() {
+ return siteRenderer;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// Plugin
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public MavenProject getProject() {
+ return project;
+ }
+
+ @Override
+ public void setProject(MavenProject project) {
+ this.project = project;
+ }
+
+ @Override
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ @Override
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// RedmineConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public URL getRedmineUrl() {
+ return redmineUrl;
+ }
+
+ @Override
+ public void setRedmineUrl(URL redmineUrl) {
+ this.redmineUrl = redmineUrl;
+ }
+
+ @Override
+ public File getLocalDir() {
+ return localDir;
+ }
+
+ @Override
+ public void setLocalDir(File localDir) {
+ this.localDir = localDir;
+ }
+
+ @Override
+ public boolean isOffline() {
+ return offline;
+ }
+
+ @Override
+ public void setOffline(boolean offline) {
+ this.offline = offline;
+ }
+
+ @Override
+ public boolean isOverwrite() {
+ return overwrite;
+ }
+
+ @Override
+ public void setOverwrite(boolean overwrite) {
+ this.overwrite = overwrite;
+ }
+
+ @Override
+ public String getRedminePassword() {
+ return redminePassword;
+ }
+
+ @Override
+ public void setRedminePassword(String redminePassword) {
+ this.redminePassword = redminePassword;
+ }
+
+ @Override
+ public String getRedmineUsername() {
+ return redmineUsername;
+ }
+
+ @Override
+ public void setRedmineUsername(String redmineUsername) {
+ this.redmineUsername = redmineUsername;
+ }
+
+ @Override
+ public String getEncoding() {
+ return encoding;
+ }
+
+ @Override
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// Others
+ ///////////////////////////////////////////////////////////////////////////
+ protected ResourceBundle getBundle(Locale locale) {
+ return ResourceBundle.getBundle("redmine-report", locale, this.getClass().getClassLoader());
+ }
+
+ protected File getSkinArtifactFile()
+ throws MojoExecutionException {
+ Skin skin = Skin.getDefaultSkin();
+
+ String version = skin.getVersion();
+ Artifact artifact;
+ try {
+ if (version == null) {
+ version = Artifact.RELEASE_VERSION;
+ }
+ VersionRange versionSpec = VersionRange.createFromVersionSpec(version);
+ artifact = factory.createDependencyArtifact(skin.getGroupId(), skin.getArtifactId(), versionSpec, "jar",
+ null, null);
+
+ resolver.resolve(artifact, project.getRemoteArtifactRepositories(), localRepository);
+ } catch (InvalidVersionSpecificationException e) {
+ throw new MojoExecutionException("The skin version '" + version + "' is not valid: " + e.getMessage());
+ } catch (ArtifactResolutionException e) {
+ throw new MojoExecutionException("Unable to find skin", e);
+ } catch (ArtifactNotFoundException e) {
+ throw new MojoExecutionException("The skin does not exist: " + e.getMessage());
+ }
+
+ return artifact.getFile();
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/AbstractRedmineReport.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssueReportGenerator.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssueReportGenerator.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssueReportGenerator.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,683 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import org.apache.maven.doxia.sink.Sink;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.reporting.MavenReportException;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.ResourceBundle;
+import java.util.TreeMap;
+import org.codehaus.plexus.util.StringUtils;
+import org.nuiton.redmine.model.I18nAble;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.IssueCategory;
+import org.nuiton.redmine.model.IssuePriority;
+import org.nuiton.redmine.model.IssueStatus;
+import org.nuiton.redmine.model.Tracker;
+import org.nuiton.redmine.model.User;
+import org.nuiton.redmine.model.Version;
+
+/**
+ * Generates a Redmine report.
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssueReportGenerator {
+
+ /**
+ * The token any of urls denoting the base URL for the issue management.
+ */
+ private static final String URL_TOKEN = "%URL%";
+ /**
+ * The token in {@link #issueLinkTemplate} denoting the issue ID.
+ */
+ private static final String ISSUE_TOKEN = "%ISSUE%";
+ /**
+ * The token in {@link #versionLinkTemplate} denoting the version ID.
+ */
+ private static final String VERSION_TOKEN = "%VERSION%";
+
+ /**
+ * Universe of columns of the report.
+ *
+ * Can retreave th i18n header key by {@link #getI18nKey()} and have the
+ * logic of each cell generation in the methd {@link #sinkInsideCell(Sink, RedmineReportGenerator, Version, Issue)}
+ *
+ * @see #columnOrder
+ */
+ public enum ReportColumn {
+
+ key(false, "report.label.key") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ generator.constructIssueLink(issue, sink);
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ throw new UnsupportedOperationException(name() + "does not supports grouping");
+ }
+ },
+ summary(false, "report.label.summary") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ generator.sinkRawText(sink, issue.getDescription());
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ throw new UnsupportedOperationException(name() + "does not supports grouping");
+ }
+ },
+ status(true, "report.label.status") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+
+ int id = issue.getStatusId();
+ String t = id + "";
+ IssueStatus status = generator.getIssueStatus(id);
+ if (status == null) {
+ t = id == 0 ? "-" : t;
+ } else {
+ t = status.getName();
+ }
+ generator.sinkI18nAble(sink, id, status);
+
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ return issue.getStatusId();
+ }
+ },
+ assignee(true, "report.label.by") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ int id = issue.getAssignedToId();
+ User u = generator.getUser(id);
+ String t = issue.getAssignedToId() + "";
+ if (u == null) {
+ generator.sinkRawText(sink, id == 0 ? " - " : t);
+ } else {
+ // ajout d'un lien (mailto:)
+ sink.link("mailto:" + u.getMail());
+ sink.text(u.getLogin());
+ sink.link_();
+ }
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ return issue.getAssignedToId();
+ }
+ },
+ reporter(true, "report.label.reporter") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ int id = issue.getAuthorId();
+ User u = generator.getUser(id);
+ String t = issue.getAuthorId() + "";
+ if (u == null) {
+ generator.sinkRawText(sink, id == 0 ? " - " : t);
+ } else {
+ // ajout d'un lien (mailto:)
+ sink.link("mailto:" + u.getMail());
+ sink.text(u.getLogin());
+ sink.link_();
+ }
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ return issue.getAuthorId();
+ }
+ },
+ tracker(true, "report.label.type") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ int id = issue.getTrackerId();
+ Tracker status = generator.getTracker(id);
+ generator.sinkI18nAble(sink, id, status);
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ return issue.getTrackerId();
+ }
+ },
+ priority(true, "report.label.priority") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ int id = issue.getPriorityId();
+ IssuePriority p = generator.getIssuePriority(id);
+ generator.sinkI18nAble(sink, id, p);
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ return issue.getPriorityId();
+ }
+ },
+ version(true, "report.label.version") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ int id = issue.getFixedVersionId();
+ Version v2 = generator.getVersion(id);
+ generator.sinkI18nAble(sink, id, v2);
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ return issue.getFixedVersionId();
+ }
+ },
+ category(true, "report.label.category") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ int id = issue.getCategoryId();
+ IssueCategory status = generator.getIssueCategory(id);
+ generator.sinkI18nAble(sink, id, status);
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ return issue.getCategoryId();
+ }
+ },
+ createdon(false, "report.label.created") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ Date d = issue.getCreatedOn();
+ generator.sinkDate(sink, d);
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ throw new UnsupportedOperationException(name() + "does not supports grouping");
+ }
+ },
+ updatedon(false, "report.label.updated") {
+
+ @Override
+ public void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue) {
+ Date d = issue.getUpdatedOn();
+ generator.sinkDate(sink, d);
+ }
+
+ @Override
+ protected Integer getGroupId(Issue issue) {
+ throw new UnsupportedOperationException(name() + "does not supports grouping");
+ }
+ };
+ private boolean canGroup;
+ private String i18nKey;
+
+ private ReportColumn(boolean canGroup, String i18nKey) {
+ this.canGroup = canGroup;
+ this.i18nKey = i18nKey;
+ }
+
+ public boolean isCanGroup() {
+ return canGroup;
+ }
+
+ public String getI18nKey() {
+ return i18nKey;
+ }
+
+ public abstract void sinkInsideCell(Sink sink, IssueReportGenerator generator, Issue issue);
+
+ protected abstract Integer getGroupId(Issue issue);
+
+ public void collectGroups(Issue[] issues, Map<Integer, List<Issue>> groups) {
+ for (Issue issue : issues) {
+ Integer id = getGroupId(issue);
+ List<Issue> c = groups.get(id);
+ if (c == null) {
+ c = new ArrayList<Issue>();
+ groups.put(id, c);
+ }
+ c.add(issue);
+ }
+ }
+ }
+ private ReportColumn[] columns;
+ private ReportColumn groupColumn;
+ private String url;
+ private String issueLinkTemplate;
+ private String versionLinkTemplate;
+ private Issue[] issues;
+ private Map<Integer, IssueCategory> issueCategories;
+ private Map<Integer, IssuePriority> issuePriorities;
+ private Map<Integer, Version> versions;
+ private Map<Integer, IssueStatus> issueStatuses;
+ private Map<Integer, User> users;
+ private Map<Integer, Tracker> trackers;
+ private DateFormat dateFormat;
+
+ public IssueReportGenerator() {
+ }
+
+ /**
+ *
+ * @param log the logger
+ * @param columnNames The names of the columns to include in the report
+ * @param groupBy the group by column name (or null if not grouped)
+ * @throws MavenReportException
+ */
+ public IssueReportGenerator(Log log, String columnNames, String groupBy)
+ throws MavenReportException {
+
+ String[] columnNamesArray = columnNames.split(",");
+ int nbCols = columnNamesArray.length;
+ List<ReportColumn> tmp = new ArrayList<ReportColumn>(nbCols);
+ for (String col : columnNames.split(",")) {
+ try {
+ ReportColumn valueOf = ReportColumn.valueOf(col.trim().toLowerCase());
+ tmp.add(valueOf);
+ } catch (Exception e) {
+ log.warn(col + " is an unkown column name, authorized : " + Arrays.toString(ReportColumn.values()));
+ if (log.isDebugEnabled()) {
+ log.debug(e);
+ }
+ }
+ }
+ if (tmp.isEmpty()) {
+ // This can happen if the user has configured column names and they are all invalid
+ throw new MavenReportException(
+ "maven-redmine-plugin: None of the configured columnNames '" + columnNames + "' are valid.");
+ }
+ if (groupBy != null && !groupBy.trim().isEmpty()) {
+ try {
+ groupColumn = ReportColumn.valueOf(groupBy.trim().toLowerCase());
+
+ if (!groupColumn.isCanGroup()) {
+ log.warn(groupColumn + " is not a grouping columne, grouping will be skip.");
+ groupColumn = null;
+ } else {
+ // remove the group column from the table
+ tmp.remove(groupColumn);
+ }
+
+ log.info("group by " + groupColumn);
+
+ } catch (Exception e) {
+ log.warn(groupBy + " is an unkown group column name, grouping will be skip.");
+ if (log.isDebugEnabled()) {
+ log.debug(e);
+ }
+ }
+ }
+
+ columns = tmp.toArray(new ReportColumn[tmp.size()]);
+ }
+
+ public void doGenerateEmptyReport(ResourceBundle bundle, Sink sink) {
+ sinkBeginReport(sink, bundle);
+
+ sink.text(bundle.getString("report.error"));
+
+ sinkEndReport(sink);
+ }
+
+ public void doGenerateReport(ResourceBundle bundle, Sink sink, Log log)
+ throws MojoExecutionException {
+
+ if (issues != null && issues.length == 0) {
+ throw new MojoExecutionException(
+ "maven-redmine-plugin: Can not generate report if no issues, use the doGenerateEmptyReport instead");
+ }
+
+ String d = bundle.getString("report.date.format");
+
+ dateFormat = new SimpleDateFormat(d);
+
+ sinkBeginReport(sink, bundle);
+
+ if (groupColumn == null) {
+
+ sink.table();
+
+ constructHeaderRow(sink, bundle);
+
+ constructDetailRows(sink, issues);
+
+ sink.table_();
+
+ } else {
+
+ // group data
+
+ Map<Integer, List<Issue>> groups = new TreeMap<Integer, List<Issue>>();
+
+ groupColumn.collectGroups(issues, groups);
+
+ for (Entry<Integer, List<Issue>> e : groups.entrySet()) {
+
+ List<Issue> currentIssues = e.getValue();
+
+ sink.sectionTitle2();
+
+ sinkRawText(sink, bundle.getString(groupColumn.getI18nKey()) + " : ");
+
+ groupColumn.sinkInsideCell(sink, this, currentIssues.get(0));
+
+ sink.sectionTitle2_();
+
+ sink.table();
+
+ constructHeaderRow(sink, bundle);
+
+ constructDetailRows(sink, currentIssues.toArray(new Issue[currentIssues.size()]));
+
+ sink.table_();
+ }
+
+ }
+
+ sinkEndReport(sink);
+ }
+
+ /**
+ * Checks whether links to the issues can be generated.
+ *
+ * @return <code>true</code> if issue links can be generated, <code>false</code> otherwise.
+ */
+ public boolean canGenerateIssueLinks() {
+ if (!StringUtils.isEmpty(issueLinkTemplate)) {
+ return false;
+ }
+ return !StringUtils.isBlank(issueLinkTemplate) && (!StringUtils.isBlank(getUrl()) || issueLinkTemplate.indexOf(URL_TOKEN) < 0);
+ }
+
+ /**
+ * Checks whether links to the issues can be generated.
+ *
+ * @return <code>true</code> if issue links can be generated, <code>false</code> otherwise.
+ */
+ public boolean canGenerateVersionLinks() {
+ if (!StringUtils.isEmpty(versionLinkTemplate)) {
+ return false;
+ }
+ return !StringUtils.isBlank(versionLinkTemplate) && (!StringUtils.isBlank(getUrl()) || versionLinkTemplate.indexOf(URL_TOKEN) < 0);
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setIssueLinkTemplate(String issueLinkTemplate) {
+ this.issueLinkTemplate = issueLinkTemplate;
+ }
+
+ public void setVersionLinkTemplate(String versionLinkTemplate) {
+ this.versionLinkTemplate = versionLinkTemplate;
+ }
+
+ public void setIssueCategories(IssueCategory[] issueCategories) {
+ Map<Integer, IssueCategory> t = new TreeMap<Integer, IssueCategory>();
+ for (IssueCategory s : issueCategories) {
+ t.put(s.getId(), s);
+ }
+ this.issueCategories = t;
+ }
+
+ public void setIssueStatuses(IssueStatus[] issueStatuses) {
+ Map<Integer, IssueStatus> t = new TreeMap<Integer, IssueStatus>();
+ for (IssueStatus s : issueStatuses) {
+ t.put(s.getId(), s);
+ }
+ this.issueStatuses = t;
+ }
+
+ public void setIssuePriorities(IssuePriority[] issuePriorities) {
+ Map<Integer, IssuePriority> t = new TreeMap<Integer, IssuePriority>();
+ for (IssuePriority s : issuePriorities) {
+ t.put(s.getId(), s);
+ }
+ this.issuePriorities = t;
+ }
+
+ public void setUsers(User[] users) {
+ Map<Integer, User> t = new TreeMap<Integer, User>();
+ for (User s : users) {
+ t.put(s.getId(), s);
+ }
+ this.users = t;
+ }
+
+ public void setVersions(Version[] users) {
+ Map<Integer, Version> t = new TreeMap<Integer, Version>();
+ for (Version s : users) {
+ t.put(s.getId(), s);
+ }
+ this.versions = t;
+ }
+
+ public void setTrackers(Tracker[] users) {
+ Map<Integer, Tracker> t = new TreeMap<Integer, Tracker>();
+ for (Tracker s : users) {
+ t.put(s.getId(), s);
+ }
+ this.trackers = t;
+ }
+
+ public void setIssues(Issue[] issues) {
+ this.issues = issues;
+ }
+
+ protected void constructHeaderRow(Sink sink, ResourceBundle bundle) {
+
+ sink.tableRow();
+
+ for (ReportColumn c : columns) {
+ sinkHeader(sink, bundle.getString(c.getI18nKey()));
+ }
+
+ sink.tableRow_();
+ }
+
+ protected void constructDetailRows(Sink sink, Issue[] issues) {
+
+ for (Issue issue : issues) {
+
+ sink.tableRow();
+
+ for (ReportColumn col : columns) {
+
+ sink.tableCell();
+
+ col.sinkInsideCell(sink, this, issue);
+
+ sink.tableCell_();
+
+ }
+
+ sink.tableRow_();
+ }
+ }
+
+ protected String parseIssueLink(String issue) {
+ String parseLink;
+ String issueLink = this.issueLinkTemplate;
+ parseLink = issueLink.replaceFirst(ISSUE_TOKEN, issue);
+
+ if (parseLink.indexOf(URL_TOKEN) >= 0) {
+ String u = this.url.substring(0, this.url.lastIndexOf("/"));
+ parseLink = parseLink.replaceFirst(URL_TOKEN, u);
+ }
+
+ return parseLink;
+ }
+
+ protected String parseVersionLink(String issue) {
+ String parseLink;
+ String issueLink = this.versionLinkTemplate;
+ parseLink = issueLink.replaceFirst(VERSION_TOKEN, issue);
+
+ if (parseLink.indexOf(URL_TOKEN) >= 0) {
+ String u = this.url.substring(0, this.url.lastIndexOf("/"));
+ parseLink = parseLink.replaceFirst(URL_TOKEN, u);
+ }
+
+ return parseLink;
+ }
+
+ protected void constructIssueLink(Issue issue, Sink sink) {
+ String id = issue.getId() + "";
+
+ if (StringUtils.isNotEmpty(id)) {
+
+ sink.link(parseIssueLink(id));
+
+ sink.text(issue.getSubject());
+
+ sink.link_();
+ }
+ }
+
+ protected void constructVersionLink(Version v, Sink sink, String prefix) {
+ String id = v.getId() + "";
+
+ if (StringUtils.isNotEmpty(id)) {
+
+ sink.link(parseVersionLink(id));
+
+ sink.text(prefix + " " + v.getName());
+
+ sink.link_();
+ }
+ }
+
+ protected boolean isGroup() {
+ return groupColumn != null;
+ }
+
+ protected IssueStatus getIssueStatus(int id) {
+ return issueStatuses == null ? null : issueStatuses.get(id);
+ }
+
+ protected IssueCategory getIssueCategory(int id) {
+ return issueCategories == null ? null : issueCategories.get(id);
+ }
+
+ protected IssuePriority getIssuePriority(int id) {
+ return issuePriorities == null ? null : issuePriorities.get(id);
+ }
+
+ protected Version getVersion(int id) {
+ return versions == null ? null : versions.get(id);
+ }
+
+ protected User getUser(int id) {
+ return users == null ? null : users.get(id);
+ }
+
+ protected Tracker getTracker(int id) {
+ return trackers == null ? null : trackers.get(id);
+ }
+
+ protected void sinkBeginReport(Sink sink, ResourceBundle bundle) {
+ sink.head();
+
+ String title;
+ if (isGroup()) {
+ title = bundle.getString("report.header-" + groupColumn.name());
+ } else {
+ title = bundle.getString("report.header");
+ }
+
+ sink.title();
+
+ sink.text(title);
+
+ sink.title_();
+
+ sink.head_();
+
+ sink.body();
+
+ sinkSectionTitle1(sink, title);
+
+ }
+
+ protected void sinkEndReport(Sink sink) {
+ sink.body_();
+
+ sink.flush();
+
+ sink.close();
+ }
+
+ protected void sinkHeader(Sink sink, String header) {
+ sink.tableHeaderCell();
+
+ sink.text(header);
+
+ sink.tableHeaderCell_();
+ }
+
+ protected void sinkRawText(Sink sink, String text) {
+
+ if (text != null) {
+ sink.rawText(text);
+ } else {
+ sink.rawText(" ");
+ }
+ }
+
+ protected void sinkDate(Sink sink, Date d) {
+ String text = null;
+ if (d == null) {
+ text = " - ";
+ } else {
+ text = dateFormat.format(d);
+ }
+ sinkRawText(sink, text);
+ }
+
+ protected void sinkI18nAble(Sink sink, int id, I18nAble obj) {
+ String t = null;
+ if (obj == null) {
+ t = id == 0 ? " - " : id + "";
+ } else {
+ t = obj.getName();
+ if (obj instanceof Version) {
+ constructVersionLink((Version) obj, sink, "");
+ return;
+ }
+ }
+ sinkRawText(sink, t);
+ }
+
+ protected void sinkSectionTitle1(Sink sink, String text) {
+ sink.sectionTitle1();
+
+ sink.text(text);
+
+ sink.sectionTitle1_();
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssueReportGenerator.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Copied: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReport.java (from rev 31, maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/RedmineReportMojo.java)
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReport.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReport.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,177 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.util.Map;
+
+/**
+ * Generates a report for issues from Redmine's server
+ *
+ * @goal issues-report
+ * @requiresProject true
+ * @requiresReports true
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReport extends AbstractIssuesReport {
+
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectId;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionId;
+ /**
+ * Maximum number of entries to be fetched from redmine.
+ *
+ * <b>Note:</b> use value 0 to have no limits
+ *
+ * @parameter expression="${redmine.maxEntries}" default-value="100"
+ * @since 1.0.0
+ */
+ protected int maxEntries;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersion;
+ /**
+ * Sets some filters on issues to include.
+ * the possible keys are :
+ * <ul>
+ * <li><b>version</b> : to restrict on version fixed </li>
+ * <li><b>status</b> : to restrict on some status</li>
+ * <li><b>priority</b> : to restrict on some priorties</li>
+ * <li><b>category</b> : to restrict on some categories</li>
+ * <li><b>tracker</b> : to restrict on some tracker (says type of issues)</li>
+ * </ul>
+ * <p/>
+ * Values are Redmine's internal ids (except for the version entry
+ * which use Redmine's version names).
+ * <p/>
+ * Multiple values can be separated by commas.
+ * <p/>
+ *
+ * <b>Note :</b> If a value is set to empty - that means to not filter on
+ * that property.
+ * <p/>
+ *
+ * To see the internal ids, use the command :
+ * <pre>
+ * mvn redmine:display-ids -Dtype=<entry key>
+ * </pre>
+ *
+ * @parameter
+ * @since 1.0.0
+ */
+ protected Map<String, String> filters;
+ /**
+ * Sets the column names that you want to show in the report. The columns
+ * will appear in the report in the same order as you specify them here.
+ * Multiple values can be separated by commas.
+ * <p>
+ * Valid columns are: <code>Key</code>, <code>Summary</code>,
+ * <code>Status</code>, <code>Assignee</code>,
+ * <code>Reporter</code>, <code>Tracker</code>, <code>Priority</code>,
+ * <code>Version</code>, <code>Category</code>, <code>Created</code> and
+ * <code>Updated</code>.
+ * </p>
+ *
+ * @parameter expression="${redmine.columnNames}" default-value="Tracker,Category,Key,Summary,Status,Assignee,Version"
+ * @since 1.0.0
+ */
+ protected String columnNames;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%ISSUE%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.issueLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String issueLinkTemplate;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%VERSION%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.versionLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String versionLinkTemplate;
+
+ public IssuesReport() {
+ super(null);
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectId;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionId;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersion;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ return maxEntries;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionId = versionId;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractIssuesReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getColumnNames() {
+ return columnNames;
+ }
+
+ @Override
+ protected Map<String, String> getFilters() {
+ return filters;
+ }
+
+ @Override
+ protected String getIssueLinkTemplate() {
+ return issueLinkTemplate;
+ }
+
+ @Override
+ protected String getVersionLinkTemplate() {
+ return versionLinkTemplate;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReport.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: svn:mergeinfo
+
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByAssignee.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByAssignee.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByAssignee.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,177 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.util.Map;
+
+/**
+ * Generates a report for issues from Redmine's server organized by assignee.
+ *
+ * @goal issues-report-by-assignee
+ * @requiresProject true
+ * @requiresReports true
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByAssignee extends AbstractIssuesReport {
+
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectIdByAssignee;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionIdByAssignee;
+ /**
+ * Maximum number of entries to be fetched from redmine.
+ *
+ * <b>Note:</b> use value 0 to have no limits
+ *
+ * @parameter expression="${redmine.maxEntries}" default-value="100"
+ * @since 1.0.0
+ */
+ protected int maxEntriesByAssignee;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersionByAssignee;
+ /**
+ * Sets some filters on issues to include.
+ * the possible keys are :
+ * <ul>
+ * <li><b>version</b> : to restrict on version fixed </li>
+ * <li><b>status</b> : to restrict on some status</li>
+ * <li><b>priority</b> : to restrict on some priorties</li>
+ * <li><b>category</b> : to restrict on some categories</li>
+ * <li><b>tracker</b> : to restrict on some tracker (says type of issues)</li>
+ * </ul>
+ * <p/>
+ * Values are Redmine's internal ids (except for the version entry
+ * which use Redmine's version names).
+ * <p/>
+ * Multiple values can be separated by commas.
+ * <p/>
+ *
+ * <b>Note :</b> If a value is set to empty - that means to not filter on
+ * that property.
+ * <p/>
+ *
+ * To see the internal ids, use the command :
+ * <pre>
+ * mvn redmine:display-ids -Dtype=<entry key>
+ * </pre>
+ *
+ * @parameter
+ * @since 1.0.0
+ */
+ protected Map<String, String> filtersByAssignee;
+ /**
+ * Sets the column names that you want to show in the report. The columns
+ * will appear in the report in the same order as you specify them here.
+ * Multiple values can be separated by commas.
+ * <p>
+ * Valid columns are: <code>Key</code>, <code>Summary</code>,
+ * <code>Status</code>, <code>Assignee</code>,
+ * <code>Reporter</code>, <code>Tracker</code>, <code>Priority</code>,
+ * <code>Version</code>, <code>Category</code>, <code>Created</code> and
+ * <code>Updated</code>.
+ * </p>
+ *
+ * @parameter expression="${redmine.columnNames}" default-value="Tracker,Category,Key,Summary,Status,Assignee,Version"
+ * @since 2.0
+ */
+ protected String columnNamesByAssignee;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%ISSUE%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.issueLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String issueLinkTemplateByAssignee;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%VERSION%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.versionLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String versionLinkTemplateByAssignee;
+
+ public IssuesReportByAssignee() {
+ super("assignee");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectIdByAssignee;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionIdByAssignee;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersionByAssignee;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ return maxEntriesByAssignee;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionIdByAssignee = versionId;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractIssuesReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getColumnNames() {
+ return columnNamesByAssignee;
+ }
+
+ @Override
+ protected Map<String, String> getFilters() {
+ return filtersByAssignee;
+ }
+
+ @Override
+ protected String getIssueLinkTemplate() {
+ return issueLinkTemplateByAssignee;
+ }
+
+ @Override
+ protected String getVersionLinkTemplate() {
+ return versionLinkTemplateByAssignee;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByAssignee.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByCategory.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByCategory.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByCategory.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,177 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.util.Map;
+
+/**
+ * Generates a report for issues from Redmine's server organized by category.
+ *
+ * @goal issues-report-by-category
+ * @requiresProject true
+ * @requiresReports true
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByCategory extends AbstractIssuesReport {
+
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectIdByCategory;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionIdByCategory;
+ /**
+ * Maximum number of entries to be fetched from redmine.
+ *
+ * <b>Note:</b> use value 0 to have no limits
+ *
+ * @parameter expression="${redmine.maxEntries}" default-value="100"
+ * @since 1.0.0
+ */
+ protected int maxEntriesByCategory;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersionByCategory;
+ /**
+ * Sets some filters on issues to include.
+ * the possible keys are :
+ * <ul>
+ * <li><b>version</b> : to restrict on version fixed </li>
+ * <li><b>status</b> : to restrict on some status</li>
+ * <li><b>priority</b> : to restrict on some priorties</li>
+ * <li><b>category</b> : to restrict on some categories</li>
+ * <li><b>tracker</b> : to restrict on some tracker (says type of issues)</li>
+ * </ul>
+ * <p/>
+ * Values are Redmine's internal ids (except for the version entry
+ * which use Redmine's version names).
+ * <p/>
+ * Multiple values can be separated by commas.
+ * <p/>
+ *
+ * <b>Note :</b> If a value is set to empty - that means to not filter on
+ * that property.
+ * <p/>
+ *
+ * To see the internal ids, use the command :
+ * <pre>
+ * mvn redmine:display-ids -Dtype=<entry key>
+ * </pre>
+ *
+ * @parameter
+ * @since 1.0.0
+ */
+ protected Map<String, String> filtersByCategory;
+ /**
+ * Sets the column names that you want to show in the report. The columns
+ * will appear in the report in the same order as you specify them here.
+ * Multiple values can be separated by commas.
+ * <p>
+ * Valid columns are: <code>Key</code>, <code>Summary</code>,
+ * <code>Status</code>, <code>Assignee</code>,
+ * <code>Reporter</code>, <code>Tracker</code>, <code>Priority</code>,
+ * <code>Version</code>, <code>Category</code>, <code>Created</code> and
+ * <code>Updated</code>.
+ * </p>
+ *
+ * @parameter expression="${redmine.columnNames}" default-value="Tracker,Category,Key,Summary,Status,Assignee,Version"
+ * @since 2.0
+ */
+ protected String columnNamesByCategory;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%ISSUE%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.issueLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String issueLinkTemplateByCategory;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%VERSION%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.versionLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String versionLinkTemplateByCategory;
+
+ public IssuesReportByCategory() {
+ super("category");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectIdByCategory;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionIdByCategory;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersionByCategory;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ return maxEntriesByCategory;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionIdByCategory = versionId;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractIssuesReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getColumnNames() {
+ return columnNamesByCategory;
+ }
+
+ @Override
+ protected Map<String, String> getFilters() {
+ return filtersByCategory;
+ }
+
+ @Override
+ protected String getIssueLinkTemplate() {
+ return issueLinkTemplateByCategory;
+ }
+
+ @Override
+ protected String getVersionLinkTemplate() {
+ return versionLinkTemplateByCategory;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByCategory.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByPriority.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByPriority.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByPriority.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,177 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.util.Map;
+
+/**
+ * Generates a report for issues from Redmine's server organized by priority.
+ *
+ * @goal issues-report-by-priority
+ * @requiresProject true
+ * @requiresReports true
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByPriority extends AbstractIssuesReport {
+
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectIdByPriority;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionIdByPriority;
+ /**
+ * Maximum number of entries to be fetched from redmine.
+ *
+ * <b>Note:</b> use value 0 to have no limits
+ *
+ * @parameter expression="${redmine.maxEntries}" default-value="100"
+ * @since 1.0.0
+ */
+ protected int maxEntriesByPriority;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersionByPriority;
+ /**
+ * Sets some filters on issues to include.
+ * the possible keys are :
+ * <ul>
+ * <li><b>version</b> : to restrict on version fixed </li>
+ * <li><b>status</b> : to restrict on some status</li>
+ * <li><b>priority</b> : to restrict on some priorties</li>
+ * <li><b>category</b> : to restrict on some categories</li>
+ * <li><b>tracker</b> : to restrict on some tracker (says type of issues)</li>
+ * </ul>
+ * <p/>
+ * Values are Redmine's internal ids (except for the version entry
+ * which use Redmine's version names).
+ * <p/>
+ * Multiple values can be separated by commas.
+ * <p/>
+ *
+ * <b>Note :</b> If a value is set to empty - that means to not filter on
+ * that property.
+ * <p/>
+ *
+ * To see the internal ids, use the command :
+ * <pre>
+ * mvn redmine:display-ids -Dtype=<entry key>
+ * </pre>
+ *
+ * @parameter
+ * @since 1.0.0
+ */
+ protected Map<String, String> filtersByPriority;
+ /**
+ * Sets the column names that you want to show in the report. The columns
+ * will appear in the report in the same order as you specify them here.
+ * Multiple values can be separated by commas.
+ * <p>
+ * Valid columns are: <code>Key</code>, <code>Summary</code>,
+ * <code>Status</code>, <code>Assignee</code>,
+ * <code>Reporter</code>, <code>Tracker</code>, <code>Priority</code>,
+ * <code>Version</code>, <code>Category</code>, <code>Created</code> and
+ * <code>Updated</code>.
+ * </p>
+ *
+ * @parameter expression="${redmine.columnNames}" default-value="Tracker,Category,Key,Summary,Status,Assignee,Version"
+ * @since 2.0
+ */
+ protected String columnNamesByPriority;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%ISSUE%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.issueLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String issueLinkTemplateByPriority;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%VERSION%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.versionLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String versionLinkTemplateByPriority;
+
+ public IssuesReportByPriority() {
+ super("priority");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectIdByPriority;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionIdByPriority;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersionByPriority;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ return maxEntriesByPriority;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionIdByPriority = versionId;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractIssuesReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getColumnNames() {
+ return columnNamesByPriority;
+ }
+
+ @Override
+ protected Map<String, String> getFilters() {
+ return filtersByPriority;
+ }
+
+ @Override
+ protected String getIssueLinkTemplate() {
+ return issueLinkTemplateByPriority;
+ }
+
+ @Override
+ protected String getVersionLinkTemplate() {
+ return versionLinkTemplateByPriority;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByPriority.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByReporter.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByReporter.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByReporter.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,177 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.util.Map;
+
+/**
+ * Generates a report for issues from Redmine's server organized by reporter.
+ *
+ * @goal issues-report-by-reporter
+ * @requiresProject true
+ * @requiresReports true
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByReporter extends AbstractIssuesReport {
+
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectIdByReporter;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionIdByReporter;
+ /**
+ * Maximum number of entries to be fetched from redmine.
+ *
+ * <b>Note:</b> use value 0 to have no limits
+ *
+ * @parameter expression="${redmine.maxEntries}" default-value="100"
+ * @since 1.0.0
+ */
+ protected int maxEntriesByReporter;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersionByReporter;
+ /**
+ * Sets some filters on issues to include.
+ * the possible keys are :
+ * <ul>
+ * <li><b>version</b> : to restrict on version fixed </li>
+ * <li><b>status</b> : to restrict on some status</li>
+ * <li><b>priority</b> : to restrict on some priorties</li>
+ * <li><b>category</b> : to restrict on some categories</li>
+ * <li><b>tracker</b> : to restrict on some tracker (says type of issues)</li>
+ * </ul>
+ * <p/>
+ * Values are Redmine's internal ids (except for the version entry
+ * which use Redmine's version names).
+ * <p/>
+ * Multiple values can be separated by commas.
+ * <p/>
+ *
+ * <b>Note :</b> If a value is set to empty - that means to not filter on
+ * that property.
+ * <p/>
+ *
+ * To see the internal ids, use the command :
+ * <pre>
+ * mvn redmine:display-ids -Dtype=<entry key>
+ * </pre>
+ *
+ * @parameter
+ * @since 1.0.0
+ */
+ protected Map<String, String> filtersByReporter;
+ /**
+ * Sets the column names that you want to show in the report. The columns
+ * will appear in the report in the same order as you specify them here.
+ * Multiple values can be separated by commas.
+ * <p>
+ * Valid columns are: <code>Key</code>, <code>Summary</code>,
+ * <code>Status</code>, <code>Assignee</code>,
+ * <code>Reporter</code>, <code>Tracker</code>, <code>Priority</code>,
+ * <code>Version</code>, <code>Category</code>, <code>Created</code> and
+ * <code>Updated</code>.
+ * </p>
+ *
+ * @parameter expression="${redmine.columnNames}" default-value="Tracker,Category,Key,Summary,Status,Assignee,Version"
+ * @since 2.0
+ */
+ protected String columnNamesByReporter;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%ISSUE%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.issueLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String issueLinkTemplateByReporter;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%VERSION%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.versionLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String versionLinkTemplateByReporter;
+
+ public IssuesReportByReporter() {
+ super("reporter");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectIdByReporter;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionIdByReporter;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersionByReporter;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ return maxEntriesByReporter;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionIdByReporter = versionId;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractIssuesReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getColumnNames() {
+ return columnNamesByReporter;
+ }
+
+ @Override
+ protected Map<String, String> getFilters() {
+ return filtersByReporter;
+ }
+
+ @Override
+ protected String getIssueLinkTemplate() {
+ return issueLinkTemplateByReporter;
+ }
+
+ @Override
+ protected String getVersionLinkTemplate() {
+ return versionLinkTemplateByReporter;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByReporter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByStatus.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByStatus.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByStatus.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,177 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.util.Map;
+
+/**
+ * Generates a report for issues from Redmine's server organized by status.
+ *
+ * @goal issues-report-by-status
+ * @requiresProject true
+ * @requiresReports true
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByStatus extends AbstractIssuesReport {
+
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectIdByStatus;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionIdByStatus;
+ /**
+ * Maximum number of entries to be fetched from redmine.
+ *
+ * <b>Note:</b> use value 0 to have no limits
+ *
+ * @parameter expression="${redmine.maxEntries}" default-value="100"
+ * @since 1.0.0
+ */
+ protected int maxEntriesByStatus;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersionByStatus;
+ /**
+ * Sets some filters on issues to include.
+ * the possible keys are :
+ * <ul>
+ * <li><b>version</b> : to restrict on version fixed </li>
+ * <li><b>status</b> : to restrict on some status</li>
+ * <li><b>priority</b> : to restrict on some priorties</li>
+ * <li><b>category</b> : to restrict on some categories</li>
+ * <li><b>tracker</b> : to restrict on some tracker (says type of issues)</li>
+ * </ul>
+ * <p/>
+ * Values are Redmine's internal ids (except for the version entry
+ * which use Redmine's version names).
+ * <p/>
+ * Multiple values can be separated by commas.
+ * <p/>
+ *
+ * <b>Note :</b> If a value is set to empty - that means to not filter on
+ * that property.
+ * <p/>
+ *
+ * To see the internal ids, use the command :
+ * <pre>
+ * mvn redmine:display-ids -Dtype=<entry key>
+ * </pre>
+ *
+ * @parameter
+ * @since 1.0.0
+ */
+ protected Map<String, String> filtersByStatus;
+ /**
+ * Sets the column names that you want to show in the report. The columns
+ * will appear in the report in the same order as you specify them here.
+ * Multiple values can be separated by commas.
+ * <p>
+ * Valid columns are: <code>Key</code>, <code>Summary</code>,
+ * <code>Status</code>, <code>Assignee</code>,
+ * <code>Reporter</code>, <code>Tracker</code>, <code>Priority</code>,
+ * <code>Version</code>, <code>Category</code>, <code>Created</code> and
+ * <code>Updated</code>.
+ * </p>
+ *
+ * @parameter expression="${redmine.columnNames}" default-value="Tracker,Category,Key,Summary,Status,Assignee,Version"
+ * @since 2.0
+ */
+ protected String columnNamesByStatus;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%ISSUE%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.issueLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String issueLinkTemplateByStatus;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%VERSION%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.versionLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String versionLinkTemplateByStatus;
+
+ public IssuesReportByStatus() {
+ super("status");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectIdByStatus;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionIdByStatus;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersionByStatus;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ return maxEntriesByStatus;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionIdByStatus = versionId;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractIssuesReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getColumnNames() {
+ return columnNamesByStatus;
+ }
+
+ @Override
+ protected Map<String, String> getFilters() {
+ return filtersByStatus;
+ }
+
+ @Override
+ protected String getIssueLinkTemplate() {
+ return issueLinkTemplateByStatus;
+ }
+
+ @Override
+ protected String getVersionLinkTemplate() {
+ return versionLinkTemplateByStatus;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByStatus.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByTracker.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByTracker.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByTracker.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,177 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.util.Map;
+
+/**
+ * Generates a report for issues from Redmine's server organized by tracker.
+ *
+ * @goal issues-report-by-tracker
+ * @requiresProject true
+ * @requiresReports true
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByTracker extends AbstractIssuesReport {
+
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectIdByTracker;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionIdByTracker;
+ /**
+ * Maximum number of entries to be fetched from redmine.
+ *
+ * <b>Note:</b> use value 0 to have no limits
+ *
+ * @parameter expression="${redmine.maxEntries}" default-value="100"
+ * @since 1.0.0
+ */
+ protected int maxEntriesByTracker;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersionByTracker;
+ /**
+ * Sets some filters on issues to include.
+ * the possible keys are :
+ * <ul>
+ * <li><b>version</b> : to restrict on version fixed </li>
+ * <li><b>status</b> : to restrict on some status</li>
+ * <li><b>priority</b> : to restrict on some priorties</li>
+ * <li><b>category</b> : to restrict on some categories</li>
+ * <li><b>tracker</b> : to restrict on some tracker (says type of issues)</li>
+ * </ul>
+ * <p/>
+ * Values are Redmine's internal ids (except for the version entry
+ * which use Redmine's version names).
+ * <p/>
+ * Multiple values can be separated by commas.
+ * <p/>
+ *
+ * <b>Note :</b> If a value is set to empty - that means to not filter on
+ * that property.
+ * <p/>
+ *
+ * To see the internal ids, use the command :
+ * <pre>
+ * mvn redmine:display-ids -Dtype=<entry key>
+ * </pre>
+ *
+ * @parameter
+ * @since 1.0.0
+ */
+ protected Map<String, String> filtersByTracker;
+ /**
+ * Sets the column names that you want to show in the report. The columns
+ * will appear in the report in the same order as you specify them here.
+ * Multiple values can be separated by commas.
+ * <p>
+ * Valid columns are: <code>Key</code>, <code>Summary</code>,
+ * <code>Status</code>, <code>Assignee</code>,
+ * <code>Reporter</code>, <code>Tracker</code>, <code>Priority</code>,
+ * <code>Version</code>, <code>Category</code>, <code>Created</code> and
+ * <code>Updated</code>.
+ * </p>
+ *
+ * @parameter expression="${redmine.columnNames}" default-value="Tracker,Category,Key,Summary,Status,Assignee,Version"
+ * @since 2.0
+ */
+ protected String columnNamesByTracker;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%ISSUE%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.issueLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String issueLinkTemplateByTracker;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%VERSION%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.versionLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String versionLinkTemplateByTracker;
+
+ public IssuesReportByTracker() {
+ super("tracker");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectIdByTracker;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionIdByTracker;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersionByTracker;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ return maxEntriesByTracker;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionIdByTracker = versionId;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractIssuesReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getColumnNames() {
+ return columnNamesByTracker;
+ }
+
+ @Override
+ protected Map<String, String> getFilters() {
+ return filtersByTracker;
+ }
+
+ @Override
+ protected String getIssueLinkTemplate() {
+ return issueLinkTemplateByTracker;
+ }
+
+ @Override
+ protected String getVersionLinkTemplate() {
+ return versionLinkTemplateByTracker;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByTracker.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByVersion.java
===================================================================
--- maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByVersion.java (rev 0)
+++ maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByVersion.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,177 @@
+package org.nuiton.redmine.plugin.report;
+
+import java.util.Map;
+
+/**
+ * Generates a report for issues from Redmine's server organized by version.
+ *
+ * @goal issues-report-by-version
+ * @requiresProject true
+ * @requiresReports true
+ *
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByVersion extends AbstractIssuesReport {
+
+ /**
+ * Project identifier.
+ *
+ * @parameter expression="${redmine.projectId}" default-value="${project.artifactId}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectIdByVersion;
+ /**
+ * Version identifier.
+ *
+ * @parameter expression="${redmine.versionId}" default-value="${project.version}"
+ * @since 1.0.0
+ */
+ protected String versionIdByVersion;
+ /**
+ * Maximum number of entries to be fetched from redmine.
+ *
+ * <b>Note:</b> use value 0 to have no limits
+ *
+ * @parameter expression="${redmine.maxEntries}" default-value="100"
+ * @since 1.0.0
+ */
+ protected int maxEntriesByVersion;
+ /**
+ * If you only want to show issues for the current version in the report.
+ * The current version being used is <code>${project.version}</code> minus
+ * any "-SNAPSHOT" suffix.
+ *
+ * @parameter expression="${redmine.onlyCurrentVersion}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean onlyCurrentVersionByVersion;
+ /**
+ * Sets some filters on issues to include.
+ * the possible keys are :
+ * <ul>
+ * <li><b>version</b> : to restrict on version fixed </li>
+ * <li><b>status</b> : to restrict on some status</li>
+ * <li><b>priority</b> : to restrict on some priorties</li>
+ * <li><b>category</b> : to restrict on some categories</li>
+ * <li><b>tracker</b> : to restrict on some tracker (says type of issues)</li>
+ * </ul>
+ * <p/>
+ * Values are Redmine's internal ids (except for the version entry
+ * which use Redmine's version names).
+ * <p/>
+ * Multiple values can be separated by commas.
+ * <p/>
+ *
+ * <b>Note :</b> If a value is set to empty - that means to not filter on
+ * that property.
+ * <p/>
+ *
+ * To see the internal ids, use the command :
+ * <pre>
+ * mvn redmine:display-ids -Dtype=<entry key>
+ * </pre>
+ *
+ * @parameter
+ * @since 1.0.0
+ */
+ protected Map<String, String> filtersByVersion;
+ /**
+ * Sets the column names that you want to show in the report. The columns
+ * will appear in the report in the same order as you specify them here.
+ * Multiple values can be separated by commas.
+ * <p>
+ * Valid columns are: <code>Key</code>, <code>Summary</code>,
+ * <code>Status</code>, <code>Assignee</code>,
+ * <code>Reporter</code>, <code>Tracker</code>, <code>Priority</code>,
+ * <code>Version</code>, <code>Category</code>, <code>Created</code> and
+ * <code>Updated</code>.
+ * </p>
+ *
+ * @parameter expression="${redmine.columnNames}" default-value="Tracker,Category,Key,Summary,Status,Assignee,Version"
+ * @since 2.0
+ */
+ protected String columnNamesByVersion;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%ISSUE%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.issueLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String issueLinkTemplateByVersion;
+ /**
+ * Template strings per system that is used to discover the URL to use to display an issue report. Each key in this
+ * map denotes the (case-sensitive) identifier of the issue tracking system and its value gives the URL template.
+ * <p>
+ * There are 2 template tokens you can use. <code>%URL%</code>: this is computed by getting the
+ * <code><issueManagement>/<url></code> value from the POM, and removing the last '/'
+ * and everything that comes after it. <code>%VERSION%</code>: this is the issue number.
+ * </p>
+ *
+ * @parameter expression="${redmine.versionLinkTemplate}"
+ * @since 1.0.0
+ */
+ protected String versionLinkTemplateByVersion;
+
+ public IssuesReportByVersion() {
+ super("version");
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// IssueCollectionConfiguration
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getProjectId() {
+ return projectIdByVersion;
+ }
+
+ @Override
+ public String getVersionId() {
+ return versionIdByVersion;
+ }
+
+ @Override
+ public boolean isOnlyCurrentVersion() {
+ return onlyCurrentVersionByVersion;
+ }
+
+ @Override
+ public int getMaxEntries() {
+ return maxEntriesByVersion;
+ }
+
+ @Override
+ public void setVersionId(String versionId) {
+ this.versionIdByVersion = versionId;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ /// AbstractIssuesReport
+ ///////////////////////////////////////////////////////////////////////////
+ @Override
+ protected String getColumnNames() {
+ return columnNamesByVersion;
+ }
+
+ @Override
+ protected Map<String, String> getFilters() {
+ return filtersByVersion;
+ }
+
+ @Override
+ protected String getIssueLinkTemplate() {
+ return issueLinkTemplateByVersion;
+ }
+
+ @Override
+ protected String getVersionLinkTemplate() {
+ return versionLinkTemplateByVersion;
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/main/java/org/nuiton/redmine/plugin/report/IssuesReportByVersion.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/main/resources/META-INF/plexus/components.xml
===================================================================
--- maven-redmine-plugin/trunk/src/main/resources/META-INF/plexus/components.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/main/resources/META-INF/plexus/components.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<component-set>
+ <components>
+ <component>
+ <role>org.sonatype.plexus.components.sec.dispatcher.SecDispatcher</role>
+ <role-hint>maven-redmine-plugin</role-hint>
+ <implementation>org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher</implementation>
+ <requirements>
+ <requirement>
+ <role>org.sonatype.plexus.components.cipher.PlexusCipher</role>
+ <field-name>_cipher</field-name>
+ </requirement>
+ <requirement>
+ <role>org.sonatype.plexus.components.sec.dispatcher.PasswordDecryptor</role>
+ <field-name>_decryptors</field-name>
+ </requirement>
+ </requirements>
+ <configuration>
+ <_configurationFile>~/.m2/settings-security.xml</_configurationFile>
+ </configuration>
+ </component>
+ <!--component>
+ <role>org.codehaus.plexus.velocity.VelocityComponent</role>
+ <role-hint>maven-changes-plugin</role-hint>
+ <implementation>org.codehaus.plexus.velocity.DefaultVelocityComponent</implementation>
+ <configuration>
+ <properties>
+ <property>
+ <name>resource.loader</name>
+ <value>file,class</value>
+ </property>
+ <property>
+ <name>class.resource.loader.class</name>
+ <value>org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader</value>
+ </property>
+ <property>
+ <name>file.resource.loader.class</name>
+ <value>org.apache.maven.plugin.resource.loader.ProjectResourceLoader</value>
+ </property>
+ </properties>
+ </configuration>
+ </component-->
+ </components>
+</component-set>
\ No newline at end of file
Modified: maven-redmine-plugin/trunk/src/main/resources/META-INF/services/org.nuiton.io.xpp3.Xpp3Reader
===================================================================
--- maven-redmine-plugin/trunk/src/main/resources/META-INF/services/org.nuiton.io.xpp3.Xpp3Reader 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/main/resources/META-INF/services/org.nuiton.io.xpp3.Xpp3Reader 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,5 +1,8 @@
org.nuiton.redmine.model.io.xpp3.AttachmentXpp3Reader
org.nuiton.redmine.model.io.xpp3.IssueXpp3Reader
+org.nuiton.redmine.model.io.xpp3.IssueStatusXpp3Reader
+org.nuiton.redmine.model.io.xpp3.IssueCategoryXpp3Reader
+org.nuiton.redmine.model.io.xpp3.IssuePriorityXpp3Reader
org.nuiton.redmine.model.io.xpp3.ProjectXpp3Reader
org.nuiton.redmine.model.io.xpp3.TrackerXpp3Reader
org.nuiton.redmine.model.io.xpp3.UserXpp3Reader
Added: maven-redmine-plugin/trunk/src/main/resources/redmine-report.properties
===================================================================
--- maven-redmine-plugin/trunk/src/main/resources/redmine-report.properties (rev 0)
+++ maven-redmine-plugin/trunk/src/main/resources/redmine-report.properties 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,66 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+report.name=Issues Report
+report.header=Redmine Issues Report
+report.description=Report on Issues from the Redmine Issue Tracking System.
+
+report.name-assignee=Issues / Assignee
+report.header-assignee=Redmine Issues Report organized by Assignee.
+report.description-assignee=Report on Issues from the Redmine Issue Tracking System (organized by assignees).
+
+report.name-reporter=Issues / Reporter
+report.header-reporter=Redmine Issues Report organized by Reporter.
+report.description-reporter=Report on Issues from the Redmine Issue Tracking System (organized by reporters).
+
+report.name-tracker=Issues / Tracker
+report.header-tracker=Redmine Issues Report organized by Tracker.
+report.description-tracker=Report on Issues from the Redmine Issue Tracking System (organized by trackers).
+
+report.name-status=Issues / Status
+report.header-status=Redmine Issues Report organized by Status.
+report.description-status=Report on Issues from the Redmine Issue Tracking System (organized by status).
+
+report.name-category=Issues / Category
+report.header-category=Redmine Issues Report organized by Category.
+report.description-category=Report on Issues from the Redmine Issue Tracking System (organized by category).
+
+report.name-priority=Issues / Priority
+report.header-priority=Redmine Issues Report organized by Priority.
+report.description-priority=Report on Issues from the Redmine Issue Tracking System (organized by priority).
+
+report.name-version=Issues / Version
+report.header-version=Redmine Issues Report organized by Version.
+report.description-version=Report on Issues from the Redmine Issue Tracking System (organized by version).
+
+report.error=An error occured that made it impossible to generate this report. \
+ Please check the console for information on what might be the cause of this.
+report.date.format=yyy-MM-dd 'at' mm:hh
+report.label.key=Key
+report.label.summary=Summary
+report.label.status=Status
+report.label.resolution=Resolution
+report.label.by=By
+report.label.reporter=Reporter
+report.label.type=Type
+report.label.priority=Priority
+report.label.version=Version
+report.label.fixVersion=Fix Version
+report.label.category=Component
+report.message.only.for.current.version=The Redmine Report will contain issues only for the current version
+report.label.created=Created on
+report.label.updated=Updated on
Added: maven-redmine-plugin/trunk/src/main/resources/redmine-report_de.properties
===================================================================
--- maven-redmine-plugin/trunk/src/main/resources/redmine-report_de.properties (rev 0)
+++ maven-redmine-plugin/trunk/src/main/resources/redmine-report_de.properties 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,36 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+report.name=Redmine-Bericht
+report.description=Bericht \u00FCber die Probleme aus dem Problemverwaltungssystem Redmine.
+report.error=Es ist ein Fehler aufgetreten, der die Erstellung dieses Berichts unm\u00F6glich macht. \
+ Bitte werten Sie die Konsolenausgabe zur Feststellung der Ursache aus.
+report.header=Redmine-Bericht
+report.label.key=Schl\u00FCssel
+report.label.summary=Zusammenfassung
+report.label.status=Status
+report.label.resolution=L\u00F6sung
+report.label.by=Durch
+report.label.reporter=Reporter
+report.label.type=Typ
+report.label.priority=Priorit\u00E4t
+report.label.version=Version
+report.label.fixVersion=Korrigierte Version
+report.label.category=Komponente
+report.message.only.for.current.version=The Redmine Report will contain issues only for the current version
+report.label.created=Created on
+report.label.updated=Updated on
Added: maven-redmine-plugin/trunk/src/main/resources/redmine-report_en.properties
===================================================================
--- maven-redmine-plugin/trunk/src/main/resources/redmine-report_en.properties (rev 0)
+++ maven-redmine-plugin/trunk/src/main/resources/redmine-report_en.properties 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,3 @@
+
+report.label.created=Created on
+report.label.updated=Updated on
Added: maven-redmine-plugin/trunk/src/main/resources/redmine-report_fr.properties
===================================================================
--- maven-redmine-plugin/trunk/src/main/resources/redmine-report_fr.properties (rev 0)
+++ maven-redmine-plugin/trunk/src/main/resources/redmine-report_fr.properties 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,66 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+report.name=Rapport des demandes
+report.description=Rapport des issues sur le server de type Redmine.
+report.header=Rapport des demandes du serveur Redmine
+
+report.name-reporter=Demandes / Reporteur
+report.description-reporter=Rapport des issues sur un server de type Redmine organis\u00E9s par reporteur.
+report.header-reporter=Rapport des demandes sur le serveur Redmine organis\u00E9 par reporteur.
+
+report.name-assignee=Demandes / Contributeur
+report.description-assignee=Rapport des issues sur un server de type Redmine organis\u00E9s par contributeur.
+report.header-assignee=Rapport des demandes sur le serveur Redmine organis\u00E9 par contributeur.
+
+report.name-tracker=Demandes / Tracker
+report.description-tracker=Rapport des issues sur un server de type Redmine organis\u00E9s par tracker.
+report.header-tracker=Rapport des demandes sur le serveur Redmine organis\u00E9 par type de demandes.
+
+report.name-status=Demandes / Statut
+report.description-status=Rapport des issues sur un server de type Redmine organis\u00E9s par statut.
+report.header-status=Rapport des demandes sur le serveur Redmine organis\u00E9s par statut.
+
+report.name-category=Demandes / Cat\u00E9gorie
+report.description-category=Rapport des issues sur un server de type Redmine organis\u00E9s par cat\u00E9gorie.
+report.header-category=Rapport des demandes sur le serveur Redmine organis\u00E9s par cat\u00E9gorie.
+
+report.name-priority=Demandes / Priorit\u00E9
+report.description-priority=Rapport des issues sur un server de type Redmine organis\u00E9s par priorit\u00E9.
+report.header-priority=Rapport des demandes sur le serveur Redmine organis\u00E9s par priorit\u00E9.
+
+report.name-version=Demandes / Version
+report.description-version=Rapport des issues sur un server de type Redmine organis\u00E9s par version.
+report.header-version=Rapport des demandes sur le serveur Redmine organis\u00E9s par version.
+
+report.error=An error occured that made it impossible to generate this report. \
+ Please check the console for information on what might be the cause of this.
+report.date.format=dd/MM/yyyy '\u00E0' mm:hh
+report.label.key=Sujet
+report.label.summary=Description
+report.label.status=Statut
+report.label.resolution=Resolution
+report.label.by=Par
+report.label.reporter=Cr\u00E9ateur
+report.label.type=Type
+report.label.priority=Priorit\u00E9
+report.label.version=Version
+report.label.fixVersion=Version fix\u00E9e
+report.label.category=Cat\u00E9gorie
+report.message.only.for.current.version=Le rapport Redmine n'utilisera que les demandes de la version courante
+report.label.created=Date de cr\u00E9ation
+report.label.updated=Date de mise \u00E0 jour
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineDataProviderTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineDataProviderTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineDataProviderTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,136 @@
+package org.nuiton.redmine;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import org.apache.maven.plugin.logging.SystemStreamLog;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.nuiton.redmine.model.Attachment;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.Project;
+import org.nuiton.redmine.model.Tracker;
+import org.nuiton.redmine.model.User;
+import org.nuiton.redmine.model.Version;
+
+/**
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class RedmineDataProviderTest {
+
+ protected static SystemStreamLog log;
+ protected static File testDir;
+ protected RedmineDataProvider store;
+ List<Attachment> attachments;
+ List<Issue> issues;
+ List<Project> projects;
+ List<Tracker> trackers;
+ List<User> users;
+ List<Version> versions;
+ File file;
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+
+ log = new SystemStreamLog();
+
+ testDir = TestHelper.getTestDir(RedmineDataProviderTest.class, "target" + File.separator + "test-classes");
+
+ log.info("test dir : " + testDir.getAbsolutePath().substring(TestHelper.getBaseDir().getAbsolutePath().length() + 1));
+
+ // setup memory model
+ TestHelper.loadMemoryModel();
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ testDir = null;
+ }
+
+ @Before
+ public void setUp() {
+ attachments = TestHelper.getAttachments();
+ issues = TestHelper.getIssues();
+ projects = TestHelper.getProjects();
+ trackers = TestHelper.getTrackers();
+ users = TestHelper.getUsers();
+ versions = TestHelper.getVersions();
+ }
+
+ @After
+ public void tearDown() throws IOException {
+ file = null;
+ attachments = null;
+ issues = null;
+ projects = null;
+ trackers = null;
+ users = null;
+ versions = null;
+ if (store != null) {
+ store.close();
+ store = null;
+ }
+ }
+
+ /**
+ * Test of getData method, of class RedmineModelFactory.
+ * @throws Exception
+ */
+ @Test
+ public void testGetDataOffLine() throws Exception {
+ System.out.println("getDataOffLine");
+
+ File basedir = new File(testDir, "off-line");
+
+ store = new RedmineDataProvider(TestHelper.ENCODING, log, basedir, null);
+ store.setOffline(true);
+
+ Project p = store.getData(Project.class, "one", null);
+ Assert.assertNotNull(p);
+ TestHelper.assertMyEquals(Project.class, projects.get(0), p);
+
+ Version v = store.getData(Version.class, "one", "yo");
+ Assert.assertNotNull(v);
+ TestHelper.assertMyEquals(Version.class, versions.get(0), v);
+ }
+
+ /**
+ * Test of getDatas method, of class RedmineModelFactory.
+ * @throws Exception
+ */
+ @Test
+ public void testGetDatasOffLine() throws Exception {
+ System.out.println("getDatasOffLine");
+
+ File basedir = new File(testDir, "off-line");
+
+ store = new RedmineDataProvider(TestHelper.ENCODING, log, basedir, null);
+ store.setOffline(true);
+
+ Attachment[] a = store.getDatas(Attachment.class, "one", "yo");
+ Assert.assertNotNull(a);
+ TestHelper.assertMyListEquals(Attachment.class, attachments, a);
+
+ Issue[] i = store.getDatas(Issue.class, "one", "yo");
+ Assert.assertNotNull(i);
+ TestHelper.assertMyListEquals(Issue.class, issues, i);
+
+ Tracker[] t = store.getDatas(Tracker.class, "one", null);
+ Assert.assertNotNull(t);
+ TestHelper.assertMyListEquals(Tracker.class, trackers, t);
+
+ User[] u = store.getDatas(User.class, "one", null);
+ Assert.assertNotNull(u);
+ TestHelper.assertMyListEquals(User.class, users, u);
+
+ Version[] v = store.getDatas(Version.class, "one", null);
+ Assert.assertNotNull(v);
+ TestHelper.assertMyListEquals(Version.class, versions, v);
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineDataProviderTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Deleted: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineModelBuilderTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineModelBuilderTest.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineModelBuilderTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,475 +0,0 @@
-package org.nuiton.redmine;
-
-import org.nuiton.redmine.model.*;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import org.apache.maven.plugin.logging.SystemStreamLog;
-import org.codehaus.plexus.PlexusTestCase;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.nuiton.io.xpp3.AbstractXpp3Reader;
-import org.nuiton.io.xpp3.Xpp3Helper;
-import org.nuiton.io.xpp3.PropertyMapper;
-import org.nuiton.redmine.model.io.xpp3.RedmineDataConverter;
-
-/**
- *
- * @author chemit
- * @since 1.0.0
- */
-public class RedmineModelBuilderTest {
-
- protected static File basedir;
- protected static SystemStreamLog log;
- protected static File testDir;
- protected static RedmineModelBuilder builder;
-// static Attachment attachment;
-// static Issue issue;
-// static Project project;
-// static Tracker tracker;
-// static User user;
-// static Version version;
- static List<Attachment> attachments;
- static List<Issue> issues;
- static List<Project> projects;
- static List<Tracker> trackers;
- static List<User> users;
- static List<Version> versions;
-
- protected static File getBaseDir() {
- if (basedir == null) {
-
- String path = PlexusTestCase.getBasedir();
- basedir = new File(path);
- }
- return basedir;
- }
-
- protected static File getTestDir() {
- return testDir;
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
-
- log = new SystemStreamLog();
-
- String rep = RedmineModelBuilderTest.class.getName();
- rep = rep.replaceAll("\\.", File.separator);
-
- File f = new File(getBaseDir(), "target" + File.separator + "test-classes");
-// File f = new File(getBaseDir(), "src" + File.separator + "test" + File.separator + "resources");
- testDir = new File(f, rep);
- log.info("test dir : " + testDir.getAbsolutePath().substring(getBaseDir().getAbsolutePath().length() + 1));
- builder = new RedmineModelBuilder(log);
-
- // setup memory model
- loadMemoryModel();
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
- File file;
-
- @Before
- public void setUp() {
- }
-
- @After
- public void tearDown() {
- file = null;
- }
-
- /**
- * Test the method {@code read} of class ModelBuilder.
- *
- * @throws Exception
- */
- @Test
- public void testRead() throws Exception {
-
- File rootDir = new File(testDir, "single");
-
- file = new File(rootDir, "attachment.xml");
- assertMyEquals(attachments.get(0), builder.readAttachment(file));
-
- file = new File(rootDir, "issue.xml");
- assertMyEquals(issues.get(0), builder.readIssue(file));
-
- file = new File(rootDir, "project.xml");
- assertMyEquals(projects.get(0), builder.readProject(file));
-
- file = new File(rootDir, "tracker.xml");
- assertMyEquals(trackers.get(0), builder.readTracker(file));
-
- file = new File(rootDir, "user.xml");
- assertMyEquals(users.get(0), builder.readUser(file));
-
- file = new File(rootDir, "version.xml");
- assertMyEquals(versions.get(0), builder.readVersion(file));
-
- }
-
- /**
- * Test the method {@code readArray} of class ModelBuilder.
- *
- * @throws Exception
- */
- @Test
- @SuppressWarnings("unchecked")
- public void testReadArray() throws Exception {
-
-
- doReadArrayTest("array-empty",
- Collections.EMPTY_LIST,
- Collections.EMPTY_LIST,
- Collections.EMPTY_LIST,
- Collections.EMPTY_LIST,
- Collections.EMPTY_LIST,
- Collections.EMPTY_LIST);
-
-
- doReadArrayTest("array-singleton",
- Arrays.asList(attachments.get(0)),
- Arrays.asList(issues.get(0)),
- Arrays.asList(projects.get(0)),
- Arrays.asList(trackers.get(0)),
- Arrays.asList(users.get(0)),
- Arrays.asList(versions.get(0)));
-
- doReadArrayTest("array-multi",
- attachments,
- issues,
- projects,
- trackers,
- users,
- versions);
-
- }
-
- protected <T> void assertMyEquals(List<T> expecteds, T[] actuals) throws Exception {
-
- Assert.assertNotNull(actuals);
- Assert.assertEquals(expecteds.size(), actuals.length);
- for (int i = 0, j = expecteds.size(); i < j; i++) {
- T actual = actuals[i];
- T expected = expecteds.get(i);
- assertMyEquals(expected, actual);
- }
-
- }
-
- protected void assertMyEquals(Object expected, Object actual) throws Exception {
-
- Assert.assertNotNull(expected);
- Assert.assertNotNull(actual);
- AbstractXpp3Reader<?> reader = (AbstractXpp3Reader<?>) Xpp3Helper.getReader(expected.getClass());
- Map<String, PropertyMapper> mappers = reader.getMappers(expected.getClass());
- for (PropertyMapper m : mappers.values()) {
-
- Object expectedValue = m.getDescriptor().getReadMethod().invoke(expected);
- Object actualValue = m.getDescriptor().getReadMethod().invoke(actual);
-
- Assert.assertEquals("error in attribute " + m.getPropertyName() + " for " + expected, expectedValue, actualValue);
- }
- }
-
- protected void doReadArrayTest(String name,
- List<Attachment> attachments,
- List<Issue> issues,
- List<Project> projects,
- List<Tracker> trackers,
- List<User> users,
- List<Version> versions) throws Exception {
-
- File rootDir = new File(testDir, name);
-
- file = new File(rootDir, "attachments.xml");
- assertMyEquals(attachments, builder.readAttachments(file));
-
- file = new File(rootDir, "issues.xml");
- assertMyEquals(issues, builder.readIssues(file));
-
- file = new File(rootDir, "projects.xml");
- assertMyEquals(projects, builder.readProjects(file));
-
- file = new File(rootDir, "trackers.xml");
- assertMyEquals(trackers, builder.readTrackers(file));
-
- file = new File(rootDir, "users.xml");
- assertMyEquals(users, builder.readUsers(file));
-
- file = new File(rootDir, "versions.xml");
- assertMyEquals(versions, builder.readVersions(file));
- }
-
- protected static void loadMemoryModel() throws Exception {
-
- attachments = new ArrayList<Attachment>();
- Attachment tempA = null;
- tempA = new Attachment();
- tempA.setAuthorId((Integer) RedmineDataConverter.Integer.convert("4"));
- tempA.setContainerId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempA.setId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempA.setFilesize((Integer) RedmineDataConverter.Integer.convert("411"));
- tempA.setDownloads((Integer) RedmineDataConverter.Integer.convert("0"));
- tempA.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T12:56:41+02:00"));
- tempA.setContainerType((String) RedmineDataConverter.Text.convert("Version"));
- tempA.setContentType((String) RedmineDataConverter.Text.convert("application/json"));
- tempA.setDigest((String) RedmineDataConverter.Text.convert("6ea84342c7475c05fb077b4aca832f9a"));
- tempA.setDiskFilename((String) RedmineDataConverter.Text.convert("090905125641_get_issue.json"));
- tempA.setFilename((String) RedmineDataConverter.Text.convert("get_issue.json"));
- attachments.add(tempA);
- tempA = new Attachment();
- tempA.setAuthorId((Integer) RedmineDataConverter.Integer.convert("4"));
- tempA.setContainerId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempA.setId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempA.setFilesize((Integer) RedmineDataConverter.Integer.convert("411"));
- tempA.setDownloads((Integer) RedmineDataConverter.Integer.convert("0"));
- tempA.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T12:56:41+02:00"));
- tempA.setContainerType((String) RedmineDataConverter.Text.convert("Version"));
- tempA.setContentType((String) RedmineDataConverter.Text.convert("application/json"));
- tempA.setDigest((String) RedmineDataConverter.Text.convert("6ea84342c7475c05fb077b4aca832f9a"));
- tempA.setDiskFilename((String) RedmineDataConverter.Text.convert("090905125641_get_issue.json2"));
- tempA.setFilename((String) RedmineDataConverter.Text.convert("get_issue.json2"));
- attachments.add(tempA);
-
- issues = new ArrayList<Issue>();
- Issue tempI = null;
- tempI = new Issue();
- tempI.setAuthorId((Integer) RedmineDataConverter.Integer.convert("5"));
- tempI.setCategoryId((Integer) RedmineDataConverter.Integer.convert("2"));
- tempI.setDoneRatio((Integer) RedmineDataConverter.Integer.convert("0"));
- tempI.setLockVersion((Integer) RedmineDataConverter.Integer.convert("7"));
- tempI.setPriorityId((Integer) RedmineDataConverter.Integer.convert("4"));
- tempI.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempI.setStatusId((Integer) RedmineDataConverter.Integer.convert("3"));
- tempI.setTrackerId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempI.setFixedVersionId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempI.setId((Integer) RedmineDataConverter.Integer.convert("3"));
- tempI.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T20:11:52+02:00"));
- tempI.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T00:37:40+02:00"));
- tempI.setStartDate((Date) RedmineDataConverter.Date.convert("2009-09-04"));
- tempI.setDescription((String) RedmineDataConverter.Text.convert("avec une description !"));
- tempI.setSubject((String) RedmineDataConverter.Text.convert("yes!"));
- issues.add(tempI);
- tempI = new Issue();
- tempI.setAuthorId((Integer) RedmineDataConverter.Integer.convert("5"));
- tempI.setCategoryId((Integer) RedmineDataConverter.Integer.convert("2"));
- tempI.setDoneRatio((Integer) RedmineDataConverter.Integer.convert("0"));
- tempI.setLockVersion((Integer) RedmineDataConverter.Integer.convert("7"));
- tempI.setPriorityId((Integer) RedmineDataConverter.Integer.convert("4"));
- tempI.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempI.setStatusId((Integer) RedmineDataConverter.Integer.convert("3"));
- tempI.setTrackerId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempI.setFixedVersionId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempI.setId((Integer) RedmineDataConverter.Integer.convert("4"));
- tempI.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T20:11:52+02:00"));
- tempI.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T00:37:40+02:00"));
- tempI.setStartDate((Date) RedmineDataConverter.Date.convert("2009-09-04"));
- tempI.setDescription((String) RedmineDataConverter.Text.convert("avec une description !2"));
- tempI.setSubject((String) RedmineDataConverter.Text.convert("yes!2"));
- issues.add(tempI);
-
- projects = new ArrayList<Project>();
- Project tempP = null;
- tempP = new Project();
- tempP.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:11:54+02:00"));
- tempP.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:11:54+02:00"));
- tempP.setIdentifier((String) RedmineDataConverter.Text.convert("one"));
- tempP.setName((String) RedmineDataConverter.Text.convert("one"));
- tempP.setId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempP.setProjectsCount((Integer) RedmineDataConverter.Integer.convert("0"));
- tempP.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
- tempP.setIsPublic((Boolean) RedmineDataConverter.Boolean.convert("true"));
- projects.add(tempP);
- tempP = new Project();
- tempP.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:11:54+02:00"));
- tempP.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:11:54+02:00"));
- tempP.setIdentifier((String) RedmineDataConverter.Text.convert("two"));
- tempP.setName((String) RedmineDataConverter.Text.convert("two"));
- tempP.setId((Integer) RedmineDataConverter.Integer.convert("2"));
- tempP.setProjectsCount((Integer) RedmineDataConverter.Integer.convert("0"));
- tempP.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
- tempP.setIsPublic((Boolean) RedmineDataConverter.Boolean.convert("true"));
- projects.add(tempP);
-
- trackers = new ArrayList<Tracker>();
- Tracker tempT = null;
- tempT = new Tracker();
- tempT.setId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempT.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempT.setTrackerId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempT.setPosition((Integer) RedmineDataConverter.Integer.convert("1"));
- tempT.setIsInChlog((Boolean) RedmineDataConverter.Boolean.convert("true"));
- tempT.setIsInRoadmap((Boolean) RedmineDataConverter.Boolean.convert("false"));
- tempT.setName((String) RedmineDataConverter.Text.convert("Anomalie"));
- trackers.add(tempT);
- tempT = new Tracker();
- tempT.setId((Integer) RedmineDataConverter.Integer.convert("2"));
- tempT.setIsInChlog((Boolean) RedmineDataConverter.Boolean.convert("true"));
- tempT.setIsInRoadmap((Boolean) RedmineDataConverter.Boolean.convert("true"));
- tempT.setName((String) RedmineDataConverter.Text.convert("Evolution"));
- tempT.setPosition((Integer) RedmineDataConverter.Integer.convert("2"));
- tempT.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempT.setTrackerId((Integer) RedmineDataConverter.Integer.convert("2"));
- trackers.add(tempT);
- tempT = new Tracker();
- tempT.setId((Integer) RedmineDataConverter.Integer.convert("3"));
- tempT.setIsInChlog((Boolean) RedmineDataConverter.Boolean.convert("false"));
- tempT.setIsInRoadmap((Boolean) RedmineDataConverter.Boolean.convert("false"));
- tempT.setName((String) RedmineDataConverter.Text.convert("Assistance"));
- tempT.setPosition((Integer) RedmineDataConverter.Integer.convert("3"));
- tempT.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempT.setTrackerId((Integer) RedmineDataConverter.Integer.convert("3"));
- trackers.add(tempT);
-
- users = new ArrayList<User>();
- User tempU = null;
- tempU = new User();
- tempU.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T17:24:46+02:00"));
- tempU.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T01:23:59+02:00"));
- tempU.setLastLoginOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T01:23:59+02:00"));
- tempU.setId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempU.setMemberId((Integer) RedmineDataConverter.Integer.convert("5"));
- tempU.setRoleId((Integer) RedmineDataConverter.Integer.convert("3"));
- tempU.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
- tempU.setAdmin((Boolean) RedmineDataConverter.Boolean.convert("true"));
- tempU.setMailNotification((Boolean) RedmineDataConverter.Boolean.convert("true"));
- tempU.setFirstname((String) RedmineDataConverter.Text.convert("Redmine"));
- tempU.setHashedPassword((String) RedmineDataConverter.Text.convert("70c881d4a26984ddce795f6f71817c9cf4480e79"));
- tempU.setLanguage((String) RedmineDataConverter.Text.convert("fr"));
- tempU.setLastname((String) RedmineDataConverter.Text.convert("Admin"));
- tempU.setLogin((String) RedmineDataConverter.Text.convert("admin"));
- tempU.setMail((String) RedmineDataConverter.Text.convert("dummy(a)codelutin.com"));
- users.add(tempU);
- tempU = new User();
- tempU.setAdmin((Boolean) RedmineDataConverter.Boolean.convert("true"));
- tempU.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T19:49:02+02:00"));
- tempU.setFirstname((String) RedmineDataConverter.Text.convert("tony"));
- tempU.setHashedPassword((String) RedmineDataConverter.Text.convert("8aed1322e5450badb078e1fb60a817a1df25a2ca"));
- tempU.setId((Integer) RedmineDataConverter.Integer.convert("5"));
- tempU.setLanguage((String) RedmineDataConverter.Text.convert("fr"));
- tempU.setLastLoginOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T19:49:38+02:00"));
- tempU.setLastname((String) RedmineDataConverter.Text.convert("chemit2"));
- tempU.setLogin((String) RedmineDataConverter.Text.convert("tchemit2"));
- tempU.setMail((String) RedmineDataConverter.Text.convert("chemit(a)codelutin.com"));
- tempU.setMailNotification((Boolean) RedmineDataConverter.Boolean.convert("false"));
- tempU.setMemberId((Integer) RedmineDataConverter.Integer.convert("4"));
- tempU.setRoleId((Integer) RedmineDataConverter.Integer.convert("3"));
- tempU.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
- tempU.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T19:49:38+02:00"));
- users.add(tempU);
- tempU = new User();
- tempU.setAdmin((Boolean) RedmineDataConverter.Boolean.convert("false"));
- tempU.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T16:24:11+02:00"));
- tempU.setFirstname((String) RedmineDataConverter.Text.convert("dev"));
- tempU.setHashedPassword((String) RedmineDataConverter.Text.convert("70c881d4a26984ddce795f6f71817c9cf4480e79"));
- tempU.setId((Integer) RedmineDataConverter.Integer.convert("7"));
- tempU.setLanguage((String) RedmineDataConverter.Text.convert("fr"));
- tempU.setLastLoginOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T16:34:39+02:00"));
- tempU.setLastname((String) RedmineDataConverter.Text.convert("dev"));
- tempU.setLogin((String) RedmineDataConverter.Text.convert("dev"));
- tempU.setMail((String) RedmineDataConverter.Text.convert("dev3(a)ynot-home.info"));
- tempU.setMailNotification((Boolean) RedmineDataConverter.Boolean.convert("false"));
- tempU.setMemberId((Integer) RedmineDataConverter.Integer.convert("9"));
- tempU.setRoleId((Integer) RedmineDataConverter.Integer.convert("4"));
- tempU.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
- tempU.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T16:34:39+02:00"));
- users.add(tempU);
-
- versions = new ArrayList<Version>();
- Version tempV = null;
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T02:47:39+02:00"));
- tempV.setDescription((String) RedmineDataConverter.Text.convert("yo"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("9"));
- tempV.setName((String) RedmineDataConverter.Text.convert("yor"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T02:50:49+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:05:09+02:00"));
- tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoye"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("13"));
- tempV.setName((String) RedmineDataConverter.Text.convert("rrrrrrrrrouuuuuua"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:05:09+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:07:58+02:00"));
- tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoye"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("15"));
- tempV.setName((String) RedmineDataConverter.Text.convert("aaaauuuuuua"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:07:58+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T04:12:25+02:00"));
- tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoyeppppppppppppppppp"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("16"));
- tempV.setName((String) RedmineDataConverter.Text.convert("aaaau"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T04:13:20+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:05:40+02:00"));
- tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoye"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("14"));
- tempV.setName((String) RedmineDataConverter.Text.convert("aaaaaaaaaarrrrrrrrrouuuuuua"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:05:40+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T00:39:15+02:00"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("5"));
- tempV.setName((String) RedmineDataConverter.Text.convert("2"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T00:39:15+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:13:05+02:00"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setName((String) RedmineDataConverter.Text.convert("1.0.0"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:13:05+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:00:12+02:00"));
- tempV.setDescription((String) RedmineDataConverter.Text.convert("yoye"));
- tempV.setEffectiveDate((Date) RedmineDataConverter.Date.convert("2009-09-06"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("11"));
- tempV.setName((String) RedmineDataConverter.Text.convert("yaouuuuuua"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:00:12+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T02:50:59+02:00"));
- tempV.setDescription((String) RedmineDataConverter.Text.convert("yoye"));
- tempV.setEffectiveDate((Date) RedmineDataConverter.Date.convert("2009-09-06"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("10"));
- tempV.setName((String) RedmineDataConverter.Text.convert("ya"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T02:54:16+02:00"));
- versions.add(tempV);
- tempV = new Version();
- tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:00:37+02:00"));
- tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoye"));
- tempV.setEffectiveDate((Date) RedmineDataConverter.Date.convert("2009-09-06"));
- tempV.setId((Integer) RedmineDataConverter.Integer.convert("12"));
- tempV.setName((String) RedmineDataConverter.Text.convert("ouuuuuua"));
- tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
- tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:00:42+02:00"));
- versions.add(tempV);
- }
-}
Modified: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineSessionTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineSessionTest.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/RedmineSessionTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,8 +1,9 @@
package org.nuiton.redmine;
import java.io.IOException;
-import java.net.URISyntaxException;
import java.net.URL;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugin.logging.SystemStreamLog;
import org.junit.After;
import org.junit.AfterClass;
@@ -18,38 +19,17 @@
*/
public class RedmineSessionTest {
- protected static SystemStreamLog log;
- protected static URL redmineURL;
- protected static final String redmineUsername = "chemit";
- protected static final String redminePassword = "azer";
+ protected static Log log;
protected static Boolean skip;
protected RedmineSession session;
+ protected static RedmineConfiguration configuration;
- /**
- * Test si on peut se connecter a un serveur Redmine.
- *
- * @param redmineURL l'url du serveur redmine
- * @param redmineUsername le login
- * @param redminePassword le password
- * @return <code>true</true> si une connection est possible sur le serveur
- */
- public static boolean canAccess(URL redmineURL, String redmineUsername, String redminePassword) {
- log = new SystemStreamLog();
- boolean result = false;
- try {
- RedmineSession.getSession(log, redmineURL, redmineUsername, redminePassword, true);
- result = true;
- } catch (Exception e) {
- log.warn("can not connect to " + redmineURL + ", test will be skip : " + e.getMessage());
- }
- return result;
- }
-
@BeforeClass
public static void setUpClass() throws Exception {
log = new SystemStreamLog();
- redmineURL = new URL("http://www.mynuiton.org");
- skip = !canAccess(redmineURL, redmineUsername, redminePassword);
+
+ configuration = TestHelper.getTestConfiguration(RedmineSessionTest.class.getSimpleName());
+ skip = !TestHelper.canAccess(log, configuration);
}
@AfterClass
@@ -69,15 +49,23 @@
}
}
- @Test(expected = IOException.class)
+ @Test(expected = org.apache.maven.plugin.MojoExecutionException.class)
public void testBadHost() throws Exception {
- RedmineSession.getSession(log, new URL("http://www.mynuiton.orgfake-" + System.nanoTime()), null, null, true);
+ RedmineConfiguration conf = new SimpleRedmineConfiguration();
+ TestHelper.copyConfiguration(configuration, conf);
+ conf.setRedmineUrl(new URL("http://www.mynuiton.orgfake-" + System.nanoTime()));
+
+ RedmineConfigurationHelper.openSession(conf, log);
}
- @Test(expected = IOException.class)
+ @Test(expected = org.apache.maven.plugin.MojoExecutionException.class)
public void testBadLogin() throws Exception {
- session = RedmineSession.getSession(log, redmineURL, redmineUsername + System.nanoTime(), redminePassword, true);
+ RedmineConfiguration conf = new SimpleRedmineConfiguration();
+ TestHelper.copyConfiguration(configuration, conf);
+ conf.setRedmineUsername(configuration.getRedmineUsername() + System.nanoTime());
+
+ RedmineConfigurationHelper.openSession(conf, log);
}
@Test
@@ -89,7 +77,7 @@
@Test
public void testAskData() throws Exception {
initSession();
- String result = session.askContent("rest", "get_project_users.xml", "one");
+ String result = session.askData("rest", "get_project_users.xml", "one");
Assert.assertFalse(result.isEmpty());
if (log.isDebugEnabled()) {
log.debug(result);
@@ -101,7 +89,7 @@
@Test
public void testAskDataAfterClosed() throws Exception {
initSession();
- String result = session.askContent("rest", "get_project_users.xml", "one");
+ String result = session.askData("rest", "get_project_users.xml", "one");
Assert.assertFalse(result.isEmpty());
if (log.isDebugEnabled()) {
log.debug(result);
@@ -109,14 +97,14 @@
session.logout();
Assert.assertFalse(session.isLogin());
try {
- result = session.askContent("rest", "get_project_users.json", "one");
+ result = session.askData("rest", "get_project_users.json", "one");
Assert.fail();
} catch (IOException e) {
Assert.assertTrue(true);
}
}
- protected void initSession() throws IOException, URISyntaxException {
- session = RedmineSession.getSession(log, redmineURL, redmineUsername, redminePassword, true);
+ protected void initSession() throws MojoExecutionException {
+ session = RedmineConfigurationHelper.openSession(configuration, log);
}
}
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/SimpleRedmineConfiguration.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/SimpleRedmineConfiguration.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/SimpleRedmineConfiguration.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,120 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.nuiton.redmine;
+
+import java.io.File;
+import java.net.URL;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+
+/**
+ *
+ * @author chemit
+ */
+public class SimpleRedmineConfiguration implements RedmineConfiguration {
+
+ URL redmineUrl;
+ String redmineUsername;
+ String redminePassword;
+ String encoding;
+ File localDir;
+ boolean offline;
+ boolean overwrite;
+ boolean verbose;
+
+ @Override
+ public File getLocalDir() {
+ return localDir;
+ }
+
+ @Override
+ public void setLocalDir(File localDir) {
+ this.localDir = localDir;
+ }
+
+ @Override
+ public boolean isOffline() {
+ return offline;
+ }
+
+ @Override
+ public void setOffline(boolean offline) {
+ this.offline = offline;
+ }
+
+ @Override
+ public boolean isOverwrite() {
+ return overwrite;
+ }
+
+ @Override
+ public void setOverwrite(boolean overwrite) {
+ this.overwrite = overwrite;
+ }
+
+ @Override
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ @Override
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ @Override
+ public String getRedminePassword() {
+ return redminePassword;
+ }
+
+ @Override
+ public void setRedminePassword(String redminePassword) {
+ this.redminePassword = redminePassword;
+ }
+
+ @Override
+ public URL getRedmineUrl() {
+ return redmineUrl;
+ }
+
+ @Override
+ public void setRedmineUrl(URL redmineUrl) {
+ this.redmineUrl = redmineUrl;
+ }
+
+ @Override
+ public String getRedmineUsername() {
+ return redmineUsername;
+ }
+
+ @Override
+ public void setRedmineUsername(String redmineUsername) {
+ this.redmineUsername = redmineUsername;
+ }
+
+ @Override
+ public String getEncoding() {
+ return encoding;
+ }
+
+ @Override
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
+ @Override
+ public String toString() {
+ ToStringBuilder b = new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE);
+ b.append("redmineUrl", redmineUrl);
+ b.append("redmineUsername", redmineUsername);
+ b.append("redminePassword", "***");
+ b.append("localDir", localDir);
+ b.append("encoding", encoding);
+ b.append("overwrite", overwrite);
+ b.append("offline", offline);
+ b.append("verbose", verbose);
+ return b.toString();
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/SimpleRedmineConfiguration.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/TestHelper.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/TestHelper.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/TestHelper.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,455 @@
+package org.nuiton.redmine;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import junit.framework.Assert;
+import org.apache.maven.plugin.logging.Log;
+import org.codehaus.plexus.PlexusTestCase;
+import org.nuiton.io.xpp3.AbstractXpp3Reader;
+import org.nuiton.io.xpp3.PropertyMapper;
+import org.nuiton.io.xpp3.Xpp3Helper;
+import org.nuiton.redmine.model.Attachment;
+import org.nuiton.redmine.model.Issue;
+import org.nuiton.redmine.model.Project;
+import org.nuiton.redmine.model.Tracker;
+import org.nuiton.redmine.model.User;
+import org.nuiton.redmine.model.Version;
+import org.nuiton.redmine.model.io.xpp3.RedmineDataConverter;
+
+/**
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public abstract class TestHelper {
+
+ public static final String ENCODING = "UTF-8";
+ protected static File basedir;
+ protected static List<Attachment> attachments;
+ protected static List<Issue> issues;
+ protected static List<Project> projects;
+ protected static List<Tracker> trackers;
+ protected static List<User> users;
+ protected static List<Version> versions;
+
+ public static File getBaseDir() {
+ if (basedir == null) {
+
+ String path = PlexusTestCase.getBasedir();
+ basedir = new File(path);
+ }
+ return basedir;
+ }
+
+ public static File getTestDir(Class<?> type, String prefix) {
+ String rep = type.getName();
+ rep = rep.replaceAll("\\.", File.separator);
+
+ File f = new File(getBaseDir(), prefix);
+ File testDir = new File(f, rep);
+ return testDir;
+ }
+
+ public static RedmineConfiguration getTestConfiguration(String testName) {
+
+ RedmineConfiguration configuration = new SimpleRedmineConfiguration();
+ String url = System.getenv("redmineUrl");
+ try {
+ if (url == null) {
+ configuration.setRedmineUrl(new URL("http://mynuiton.org"));
+ } else {
+ configuration.setRedmineUrl(new URL(url));
+ }
+ } catch (MalformedURLException ex) {
+ throw new IllegalStateException("could not convert url " + url);
+ }
+ String username = System.getenv("redmineUsername");
+ if (username == null) {
+ username = "chemit";
+ }
+ configuration.setRedmineUsername(username);
+ String password = System.getenv("redminePassword");
+ if (password == null) {
+ password = "azer";
+ }
+ configuration.setRedminePassword(password);
+
+ configuration.setEncoding(ENCODING);
+ String verbose = System.getenv("verbose");
+ if (verbose == null || verbose.trim().isEmpty()) {
+ verbose = "true";
+ }
+ configuration.setVerbose(Boolean.valueOf(verbose));
+ File localDir = new File(getBaseDir(), "target" + File.separator + "redmine-cache-" + testName);
+ configuration.setLocalDir(localDir);
+ if (configuration.isVerbose()) {
+ System.out.println("will use configuration : " + configuration);
+ }
+ return configuration;
+ }
+
+ public static void copyConfiguration(RedmineConfiguration src, RedmineConfiguration dst) {
+ if (src.getRedmineUrl() != null) {
+ dst.setRedmineUrl(src.getRedmineUrl());
+ }
+ if (src.getRedmineUsername() != null) {
+ dst.setRedmineUsername(src.getRedmineUsername());
+ }
+ if (src.getRedminePassword() != null) {
+ dst.setRedminePassword(src.getRedminePassword());
+ }
+ if (src.getEncoding() != null) {
+ dst.setEncoding(src.getEncoding());
+ }
+ if (src.getLocalDir() != null) {
+ dst.setLocalDir(src.getLocalDir());
+ }
+ dst.setOffline(src.isOffline());
+ dst.setOverwrite(src.isOverwrite());
+ dst.setVerbose(src.isVerbose());
+ }
+
+ /**
+ * Test si on peut se connecter a un serveur Redmine.
+ *
+ * @param log logger
+ * @param configuration configuration du server
+ * @return <code>true</true> si une connection est possible sur le serveur
+ */
+ public static boolean canAccess(Log log, RedmineConfiguration configuration) {
+ boolean result = false;
+ try {
+ RedmineConfigurationHelper.openSession(configuration, log);
+ result = true;
+ } catch (Exception e) {
+ log.warn("can not connect to " + configuration.getRedmineUrl() + ", test will be skip : " + e.getMessage());
+ }
+ return result;
+ }
+
+ public static List<Attachment> getAttachments() {
+ return attachments;
+ }
+
+ public static List<Issue> getIssues() {
+ return issues;
+ }
+
+ public static List<Project> getProjects() {
+ return projects;
+ }
+
+ public static List<Tracker> getTrackers() {
+ return trackers;
+ }
+
+ public static List<User> getUsers() {
+ return users;
+ }
+
+ public static List<Version> getVersions() {
+ return versions;
+ }
+
+ public static void tearDownClass() throws Exception {
+ basedir = null;
+ attachments = null;
+ issues = null;
+ projects = null;
+ trackers = null;
+ users = null;
+ versions = null;
+ }
+
+ public static <T> void assertMyListEquals(Class<T> type, List<T> expecteds, T... actuals) throws Exception {
+
+ Assert.assertNotNull(actuals);
+ Assert.assertEquals(expecteds.size(), actuals.length);
+ for (int i = 0, j = expecteds.size(); i < j; i++) {
+ T actual = actuals[i];
+ T expected = expecteds.get(i);
+ assertMyEquals(type, expected, actual);
+ }
+
+ }
+
+ public static void assertMyEquals(Class<?> type, Object expected, Object actual) throws Exception {
+
+ Assert.assertNotNull(expected);
+ Assert.assertNotNull(actual);
+ AbstractXpp3Reader<?> reader = (AbstractXpp3Reader<?>) Xpp3Helper.getReader(type);
+ Map<String, PropertyMapper> mappers = reader.getMappers(type);
+ for (PropertyMapper m : mappers.values()) {
+
+ Object expectedValue = m.getDescriptor().getReadMethod().invoke(expected);
+ Object actualValue = m.getDescriptor().getReadMethod().invoke(actual);
+
+ Assert.assertEquals("error in attribute " + m.getPropertyName() + " for " + expected, expectedValue, actualValue);
+ }
+ }
+
+ public static void loadMemoryModel() throws Exception {
+
+ attachments = new ArrayList<Attachment>();
+ Attachment tempA = null;
+ tempA = new Attachment();
+ tempA.setAuthorId((Integer) RedmineDataConverter.Integer.convert("4"));
+ tempA.setContainerId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempA.setId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempA.setFilesize((Integer) RedmineDataConverter.Integer.convert("411"));
+ tempA.setDownloads((Integer) RedmineDataConverter.Integer.convert("0"));
+ tempA.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T12:56:41+02:00"));
+ tempA.setContainerType((String) RedmineDataConverter.Text.convert("Version"));
+ tempA.setContentType((String) RedmineDataConverter.Text.convert("application/json"));
+ tempA.setDigest((String) RedmineDataConverter.Text.convert("6ea84342c7475c05fb077b4aca832f9a"));
+ tempA.setDiskFilename((String) RedmineDataConverter.Text.convert("090905125641_get_issue.json"));
+ tempA.setFilename((String) RedmineDataConverter.Text.convert("get_issue.json"));
+ attachments.add(tempA);
+ tempA = new Attachment();
+ tempA.setAuthorId((Integer) RedmineDataConverter.Integer.convert("4"));
+ tempA.setContainerId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempA.setId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempA.setFilesize((Integer) RedmineDataConverter.Integer.convert("411"));
+ tempA.setDownloads((Integer) RedmineDataConverter.Integer.convert("0"));
+ tempA.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T12:56:41+02:00"));
+ tempA.setContainerType((String) RedmineDataConverter.Text.convert("Version"));
+ tempA.setContentType((String) RedmineDataConverter.Text.convert("application/json"));
+ tempA.setDigest((String) RedmineDataConverter.Text.convert("6ea84342c7475c05fb077b4aca832f9a"));
+ tempA.setDiskFilename((String) RedmineDataConverter.Text.convert("090905125641_get_issue.json2"));
+ tempA.setFilename((String) RedmineDataConverter.Text.convert("get_issue.json2"));
+ attachments.add(tempA);
+
+ issues = new ArrayList<Issue>();
+ Issue tempI = null;
+ tempI = new Issue();
+ tempI.setAuthorId((Integer) RedmineDataConverter.Integer.convert("5"));
+ tempI.setCategoryId((Integer) RedmineDataConverter.Integer.convert("2"));
+ tempI.setDoneRatio((Integer) RedmineDataConverter.Integer.convert("0"));
+ tempI.setLockVersion((Integer) RedmineDataConverter.Integer.convert("7"));
+ tempI.setPriorityId((Integer) RedmineDataConverter.Integer.convert("4"));
+ tempI.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempI.setStatusId((Integer) RedmineDataConverter.Integer.convert("3"));
+ tempI.setTrackerId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempI.setFixedVersionId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempI.setId((Integer) RedmineDataConverter.Integer.convert("3"));
+ tempI.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T20:11:52+02:00"));
+ tempI.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T00:37:40+02:00"));
+ tempI.setStartDate((Date) RedmineDataConverter.Date.convert("2009-09-04"));
+ tempI.setDescription((String) RedmineDataConverter.Text.convert("avec une description !"));
+ tempI.setSubject((String) RedmineDataConverter.Text.convert("yes!"));
+ issues.add(tempI);
+ tempI = new Issue();
+ tempI.setAuthorId((Integer) RedmineDataConverter.Integer.convert("5"));
+ tempI.setCategoryId((Integer) RedmineDataConverter.Integer.convert("2"));
+ tempI.setDoneRatio((Integer) RedmineDataConverter.Integer.convert("0"));
+ tempI.setLockVersion((Integer) RedmineDataConverter.Integer.convert("7"));
+ tempI.setPriorityId((Integer) RedmineDataConverter.Integer.convert("4"));
+ tempI.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempI.setStatusId((Integer) RedmineDataConverter.Integer.convert("3"));
+ tempI.setTrackerId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempI.setFixedVersionId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempI.setId((Integer) RedmineDataConverter.Integer.convert("4"));
+ tempI.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T20:11:52+02:00"));
+ tempI.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T00:37:40+02:00"));
+ tempI.setStartDate((Date) RedmineDataConverter.Date.convert("2009-09-04"));
+ tempI.setDescription((String) RedmineDataConverter.Text.convert("avec une description !2"));
+ tempI.setSubject((String) RedmineDataConverter.Text.convert("yes!2"));
+ issues.add(tempI);
+
+ projects = new ArrayList<Project>();
+ Project tempP = null;
+ tempP = new Project();
+ tempP.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:11:54+02:00"));
+ tempP.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:11:54+02:00"));
+ tempP.setIdentifier((String) RedmineDataConverter.Text.convert("one"));
+ tempP.setName((String) RedmineDataConverter.Text.convert("one"));
+ tempP.setId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempP.setProjectsCount((Integer) RedmineDataConverter.Integer.convert("0"));
+ tempP.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempP.setIsPublic((Boolean) RedmineDataConverter.Boolean.convert("true"));
+ projects.add(tempP);
+ tempP = new Project();
+ tempP.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T16:22:14+02:00"));
+ tempP.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T16:22:29+02:00"));
+ tempP.setIdentifier((String) RedmineDataConverter.Text.convert("two"));
+ tempP.setName((String) RedmineDataConverter.Text.convert("two"));
+ tempP.setId((Integer) RedmineDataConverter.Integer.convert("2"));
+ tempP.setProjectsCount((Integer) RedmineDataConverter.Integer.convert("0"));
+ tempP.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempP.setIsPublic((Boolean) RedmineDataConverter.Boolean.convert("false"));
+ projects.add(tempP);
+
+ trackers = new ArrayList<Tracker>();
+ Tracker tempT = null;
+ tempT = new Tracker();
+ tempT.setId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempT.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempT.setTrackerId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempT.setPosition((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempT.setIsInChlog((Boolean) RedmineDataConverter.Boolean.convert("true"));
+ tempT.setIsInRoadmap((Boolean) RedmineDataConverter.Boolean.convert("false"));
+ tempT.setName((String) RedmineDataConverter.Text.convert("Anomalie"));
+ trackers.add(tempT);
+ tempT = new Tracker();
+ tempT.setId((Integer) RedmineDataConverter.Integer.convert("2"));
+ tempT.setIsInChlog((Boolean) RedmineDataConverter.Boolean.convert("true"));
+ tempT.setIsInRoadmap((Boolean) RedmineDataConverter.Boolean.convert("true"));
+ tempT.setName((String) RedmineDataConverter.Text.convert("Evolution"));
+ tempT.setPosition((Integer) RedmineDataConverter.Integer.convert("2"));
+ tempT.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempT.setTrackerId((Integer) RedmineDataConverter.Integer.convert("2"));
+ trackers.add(tempT);
+ tempT = new Tracker();
+ tempT.setId((Integer) RedmineDataConverter.Integer.convert("3"));
+ tempT.setIsInChlog((Boolean) RedmineDataConverter.Boolean.convert("false"));
+ tempT.setIsInRoadmap((Boolean) RedmineDataConverter.Boolean.convert("false"));
+ tempT.setName((String) RedmineDataConverter.Text.convert("Assistance"));
+ tempT.setPosition((Integer) RedmineDataConverter.Integer.convert("3"));
+ tempT.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempT.setTrackerId((Integer) RedmineDataConverter.Integer.convert("3"));
+ trackers.add(tempT);
+
+ users = new ArrayList<User>();
+ User tempU = null;
+ tempU = new User();
+ tempU.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T17:24:46+02:00"));
+ tempU.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T01:23:59+02:00"));
+ tempU.setLastLoginOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T01:23:59+02:00"));
+ tempU.setId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempU.setMemberId((Integer) RedmineDataConverter.Integer.convert("5"));
+ tempU.setRoleId((Integer) RedmineDataConverter.Integer.convert("3"));
+ tempU.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempU.setAdmin((Boolean) RedmineDataConverter.Boolean.convert("true"));
+ tempU.setMailNotification((Boolean) RedmineDataConverter.Boolean.convert("true"));
+ tempU.setFirstname((String) RedmineDataConverter.Text.convert("Redmine"));
+ tempU.setHashedPassword((String) RedmineDataConverter.Text.convert("70c881d4a26984ddce795f6f71817c9cf4480e79"));
+ tempU.setLanguage((String) RedmineDataConverter.Text.convert("fr"));
+ tempU.setLastname((String) RedmineDataConverter.Text.convert("Admin"));
+ tempU.setLogin((String) RedmineDataConverter.Text.convert("admin"));
+ tempU.setMail((String) RedmineDataConverter.Text.convert("dummy(a)codelutin.com"));
+ users.add(tempU);
+ tempU = new User();
+ tempU.setAdmin((Boolean) RedmineDataConverter.Boolean.convert("true"));
+ tempU.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T19:49:02+02:00"));
+ tempU.setFirstname((String) RedmineDataConverter.Text.convert("tony"));
+ tempU.setHashedPassword((String) RedmineDataConverter.Text.convert("8aed1322e5450badb078e1fb60a817a1df25a2ca"));
+ tempU.setId((Integer) RedmineDataConverter.Integer.convert("5"));
+ tempU.setLanguage((String) RedmineDataConverter.Text.convert("fr"));
+ tempU.setLastLoginOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T19:49:38+02:00"));
+ tempU.setLastname((String) RedmineDataConverter.Text.convert("chemit2"));
+ tempU.setLogin((String) RedmineDataConverter.Text.convert("tchemit2"));
+ tempU.setMail((String) RedmineDataConverter.Text.convert("chemit(a)codelutin.com"));
+ tempU.setMailNotification((Boolean) RedmineDataConverter.Boolean.convert("false"));
+ tempU.setMemberId((Integer) RedmineDataConverter.Integer.convert("4"));
+ tempU.setRoleId((Integer) RedmineDataConverter.Integer.convert("3"));
+ tempU.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempU.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T19:49:38+02:00"));
+ users.add(tempU);
+ tempU = new User();
+ tempU.setAdmin((Boolean) RedmineDataConverter.Boolean.convert("false"));
+ tempU.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T16:24:11+02:00"));
+ tempU.setFirstname((String) RedmineDataConverter.Text.convert("dev"));
+ tempU.setHashedPassword((String) RedmineDataConverter.Text.convert("70c881d4a26984ddce795f6f71817c9cf4480e79"));
+ tempU.setId((Integer) RedmineDataConverter.Integer.convert("7"));
+ tempU.setLanguage((String) RedmineDataConverter.Text.convert("fr"));
+ tempU.setLastLoginOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T16:34:39+02:00"));
+ tempU.setLastname((String) RedmineDataConverter.Text.convert("dev"));
+ tempU.setLogin((String) RedmineDataConverter.Text.convert("dev"));
+ tempU.setMail((String) RedmineDataConverter.Text.convert("dev3(a)ynot-home.info"));
+ tempU.setMailNotification((Boolean) RedmineDataConverter.Boolean.convert("false"));
+ tempU.setMemberId((Integer) RedmineDataConverter.Integer.convert("9"));
+ tempU.setRoleId((Integer) RedmineDataConverter.Integer.convert("4"));
+ tempU.setStatus((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempU.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T16:34:39+02:00"));
+ users.add(tempU);
+
+ versions = new ArrayList<Version>();
+ Version tempV = null;
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T02:47:39+02:00"));
+ tempV.setDescription((String) RedmineDataConverter.Text.convert("yo"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("9"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("yor"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T02:50:49+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:05:09+02:00"));
+ tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoye"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("13"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("rrrrrrrrrouuuuuua"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:05:09+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:07:58+02:00"));
+ tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoye"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("15"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("aaaauuuuuua"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:07:58+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T04:12:25+02:00"));
+ tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoyeppppppppppppppppp"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("16"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("aaaau"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T04:13:20+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:05:40+02:00"));
+ tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoye"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("14"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("aaaaaaaaaarrrrrrrrrouuuuuua"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:05:40+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T00:39:15+02:00"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("5"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("2"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-05T00:39:15+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:13:05+02:00"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("1.0.0"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-04T18:13:05+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:00:12+02:00"));
+ tempV.setDescription((String) RedmineDataConverter.Text.convert("yoye"));
+ tempV.setEffectiveDate((Date) RedmineDataConverter.Date.convert("2009-09-06"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("11"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("yaouuuuuua"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:00:12+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T02:50:59+02:00"));
+ tempV.setDescription((String) RedmineDataConverter.Text.convert("yoye"));
+ tempV.setEffectiveDate((Date) RedmineDataConverter.Date.convert("2009-09-06"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("10"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("ya"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T02:54:16+02:00"));
+ versions.add(tempV);
+ tempV = new Version();
+ tempV.setCreatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:00:37+02:00"));
+ tempV.setDescription((String) RedmineDataConverter.Text.convert("ysssoye"));
+ tempV.setEffectiveDate((Date) RedmineDataConverter.Date.convert("2009-09-06"));
+ tempV.setId((Integer) RedmineDataConverter.Integer.convert("12"));
+ tempV.setName((String) RedmineDataConverter.Text.convert("ouuuuuua"));
+ tempV.setProjectId((Integer) RedmineDataConverter.Integer.convert("1"));
+ tempV.setUpdatedOn((Date) RedmineDataConverter.Datetime.convert("2009-09-06T03:00:42+02:00"));
+ versions.add(tempV);
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/TestHelper.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,220 @@
+package org.nuiton.redmine.model.io.xpp3;
+
+import java.beans.Introspector;
+import org.nuiton.redmine.model.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.apache.maven.plugin.logging.SystemStreamLog;
+import org.codehaus.plexus.util.IOUtil;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.nuiton.redmine.TestHelper;
+
+/**
+ *
+ * @author chemit
+ * @since 1.0.0
+ */
+public class RedmineXpp3HelperTest {
+
+ private static final Class<?>[] TYPES = new Class<?>[]{
+ Attachment.class,
+ Issue.class,
+ Project.class,
+ Tracker.class,
+ User.class,
+ Version.class
+ };
+ protected static SystemStreamLog log;
+ protected static File testDir;
+ protected static RedmineXpp3Helper builder;
+ List<Attachment> attachments;
+ List<Issue> issues;
+ List<Project> projects;
+ List<Tracker> trackers;
+ List<User> users;
+ List<Version> versions;
+ File file;
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+
+ log = new SystemStreamLog();
+
+ testDir = TestHelper.getTestDir(RedmineXpp3HelperTest.class, "target" + File.separator + "test-classes");
+
+ builder = new RedmineXpp3Helper();
+
+ log.info("test dir : " + testDir.getAbsolutePath().substring(TestHelper.getBaseDir().getAbsolutePath().length() + 1));
+
+ // setup memory model
+ TestHelper.loadMemoryModel();
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ testDir = null;
+ builder = null;
+ log = null;
+ }
+
+ @Before
+ public void setUp() {
+ attachments = TestHelper.getAttachments();
+ issues = TestHelper.getIssues();
+ projects = TestHelper.getProjects();
+ trackers = TestHelper.getTrackers();
+ users = TestHelper.getUsers();
+ versions = TestHelper.getVersions();
+ }
+
+ @After
+ public void tearDown() {
+ file = null;
+ attachments = null;
+ issues = null;
+ projects = null;
+ trackers = null;
+ users = null;
+ versions = null;
+ }
+
+ /**
+ * Test the method {@code read} of class ModelBuilder.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testRead() throws Exception {
+
+ TestAction action = new TestAction() {
+
+ @Override
+ protected <T> void runForType(File rootDir, Class<T> type, List<?> expected) throws Exception {
+
+ File file = new File(rootDir, Introspector.decapitalize(type.getSimpleName()) + ".xml");
+
+ log.info("will test " + file.getAbsolutePath().substring(TestHelper.getBaseDir().getAbsolutePath().length() + 1));
+
+ // test from file
+
+ T actual = builder.readObject(type, file);
+
+ TestHelper.assertMyEquals(type, expected.get(0), actual);
+
+ // test from string
+
+ String txt = IOUtil.toString(new FileInputStream(file));
+
+ actual = builder.readObject(type, txt);
+
+ TestHelper.assertMyEquals(type, expected.get(0), actual);
+ }
+ };
+
+ action.run("single",
+ Arrays.asList(attachments.get(0)),
+ Arrays.asList(issues.get(0)),
+ Arrays.asList(projects.get(0)),
+ Arrays.asList(trackers.get(0)),
+ Arrays.asList(users.get(0)),
+ Arrays.asList(versions.get(0)));
+ }
+
+ /**
+ * Test the method {@code readArray} of class ModelBuilder.
+ *
+ * @throws Exception
+ */
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testReadArray() throws Exception {
+
+ TestAction action = new TestAction() {
+
+ @Override
+ protected <T> void runForType(File rootDir, Class<T> type, List<?> expected) throws Exception {
+
+ File file = new File(rootDir, Introspector.decapitalize(type.getSimpleName()) + "s.xml");
+
+ log.info("will test " + file.getAbsolutePath().substring(TestHelper.getBaseDir().getAbsolutePath().length() + 1));
+
+ // test from file
+
+ T[] actual = builder.readObjects(type, file);
+
+ TestHelper.assertMyListEquals(type, (List<T>) expected, actual);
+
+ // test from text
+ String txt = IOUtil.toString(new FileInputStream(file));
+
+ actual = builder.readObjects(type, txt);
+
+ TestHelper.assertMyListEquals(type, (List<T>) expected, actual);
+ }
+ };
+
+ action.run("array-empty",
+ Collections.EMPTY_LIST,
+ Collections.EMPTY_LIST,
+ Collections.EMPTY_LIST,
+ Collections.EMPTY_LIST,
+ Collections.EMPTY_LIST,
+ Collections.EMPTY_LIST);
+
+
+ action.run("array-singleton",
+ Arrays.asList(attachments.get(0)),
+ Arrays.asList(issues.get(0)),
+ Arrays.asList(projects.get(0)),
+ Arrays.asList(trackers.get(0)),
+ Arrays.asList(users.get(0)),
+ Arrays.asList(versions.get(0)));
+
+ action.run("array-multi",
+ attachments,
+ issues,
+ projects,
+ trackers,
+ users,
+ versions);
+
+ }
+
+ /**
+ * A little action wrapper to simplify this test class :)
+ *
+ */
+ public static abstract class TestAction {
+
+ /**
+ * Implements the logic of action for the given {@code type} and
+ * the {@code expected} datas.
+ *
+ * @param <T> the type of data used
+ * @param rootDir the rootdir file of the local cache
+ * @param type the type of data used
+ * @param expected the list of expected datas
+ * @throws Exception if any pb
+ */
+ protected abstract <T> void runForType(File rootDir, Class<T> type, List<?> expected) throws Exception;
+
+ public void run(String name, List<?>... expected) throws Exception {
+ int size = TYPES.length;
+ Assert.assertEquals(size, expected.length);
+ File rootDir = new File(testDir, name);
+
+
+ for (int i = 0; i < size; i++) {
+ runForType(rootDir, TYPES[i], expected[i]);
+ }
+ }
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Deleted: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/AbstractRedmineMojoTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/AbstractRedmineMojoTest.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/AbstractRedmineMojoTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,47 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Before;
-import org.nuiton.util.BasePluginTestCase;
-
-/**
- * @param <P> the goal to test
- * @author tchemit
- * @since 1.0.0
- */
-public abstract class AbstractRedmineMojoTest<P extends AbstractRedmineMojo> extends BasePluginTestCase<P> {
-
- @AfterClass
- public static void cleanAfterClass() throws Exception {
- if (log != null) {
- log.info("release test " + testDir.getName());
- log = null;
- }
- configItr = null;
- testDir = null;
- }
-
- @Before
- @Override
- public void setUp() throws Exception {
- super.setUp();
- Assert.assertNotNull(mojo);
- boolean canContinue = false;
- try {
- if (mojo.init()) {
- canContinue = true;
- }
- mojo.getLog().info("setup done for " + mojo.getProject().getFile().getName());
- } catch (MojoFailureException ex) {
- mojo.getLog().warn("can not init mojo" + mojo.getProject().getFile().getName() + ", test will be skip : " + ex.getMessage());
- throw ex;
- } catch (MojoExecutionException ex) {
- mojo.getLog().warn("can not connect to " + mojo.getRedmineUrl() + ", test will be skip : " + ex.getMessage());
- }
- Assume.assumeTrue(canContinue);
- }
-}
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DisplayDataMojoTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DisplayDataMojoTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DisplayDataMojoTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,103 @@
+package org.nuiton.redmine.plugin;
+
+import org.apache.maven.model.IssueManagement;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.nuiton.redmine.TestHelper;
+import org.nuiton.util.BasePluginTestCase;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class DisplayDataMojoTest extends BasePluginTestCase<DisplayDataMojo> {
+
+ private static final String GOAL_NAME="display-data";
+
+ @AfterClass
+ public static void cleanAfterClass() throws Exception {
+ if (log != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("release test " + testDir.getName());
+ }
+ log = null;
+ }
+ configItr = null;
+ testDir = null;
+ }
+
+ @Before
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ Assert.assertNotNull(mojo);
+ // copy redmine test server configuration
+ TestHelper.copyConfiguration(TestHelper.getTestConfiguration(DisplayDataMojoTest.class.getSimpleName() + "-" + pomFile.getName()), mojo);
+ // add a issue management
+ IssueManagement i = new IssueManagement();
+ i.setSystem("redmine");
+ i.setUrl(mojo.getRedmineUrl() + "/projects/one/issues");
+ mojo.getProject().setIssueManagement(i);
+ boolean canContinue = mojo.init();
+ if (canContinue) {
+ if (mojo.isVerbose()) {
+ log.info("setup done for " + mojo.getProject().getFile().getName());
+ }
+ } else {
+ log.warn("setup was not successfull, will skip this test class");
+ }
+
+ Assume.assumeTrue(canContinue);
+ }
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+
+ initConfigs(DisplayDataMojoTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "display-project-trackers.xml", goalName = GOAL_NAME)
+ public void testTrackers() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "display-project-users.xml", goalName = GOAL_NAME)
+ public void testProject() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "display-project-issue-categories.xml", goalName = GOAL_NAME)
+ public void testProject2() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "display-issue-statuses.xml", goalName = GOAL_NAME)
+ public void testUsers() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "display-all.xml", goalName = GOAL_NAME)
+ public void testAll() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DisplayDataMojoTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DownloadDataMojoTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DownloadDataMojoTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DownloadDataMojoTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,167 @@
+package org.nuiton.redmine.plugin;
+
+import org.apache.maven.model.IssueManagement;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.nuiton.redmine.TestHelper;
+import org.nuiton.util.BasePluginTestCase;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class DownloadDataMojoTest extends BasePluginTestCase<DownloadDataMojo> {
+
+ private static final String GOAL_NAME = "download";
+
+ @AfterClass
+ public static void cleanAfterClass() throws Exception {
+ if (log != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("release test " + testDir.getName());
+ }
+ log = null;
+ }
+ configItr = null;
+ testDir = null;
+ }
+
+ @Before
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ Assert.assertNotNull(mojo);
+ // copy redmine test server configuration
+ TestHelper.copyConfiguration(TestHelper.getTestConfiguration(DownloadDataMojoTest.class.getSimpleName() + "-" + pomFile.getName()), mojo);
+ // add a issue management
+ IssueManagement i = new IssueManagement();
+ i.setSystem("redmine");
+ i.setUrl(mojo.getRedmineUrl() + "/projects/one/issues");
+ mojo.getProject().setIssueManagement(i);
+ boolean canContinue = mojo.init();
+ if (canContinue) {
+ if (mojo.isVerbose()) {
+ log.info("setup done for " + mojo.getProject().getFile().getName());
+ }
+ } else {
+ log.warn("setup was not successfull, will skip this test class");
+ }
+
+ Assume.assumeTrue(canContinue);
+ }
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+
+ initConfigs(DownloadDataMojoTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-projects.xml", goalName = GOAL_NAME)
+ public void testProjects() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-project.xml", goalName = GOAL_NAME)
+ public void testProject() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-project2.xml", goalName = GOAL_NAME)
+ public void testProject2() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-project-users.xml", goalName = GOAL_NAME)
+ public void testUsers() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-project-trackers.xml", goalName = GOAL_NAME)
+ public void testTrakers() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-project-versions.xml", goalName = GOAL_NAME)
+ public void testVersions() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-version.xml", goalName = GOAL_NAME)
+ public void testVersion() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-version-issues.xml", goalName = GOAL_NAME)
+ public void testIssues() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-issue-statuses.xml", goalName = GOAL_NAME)
+ public void testIssueStatuses() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-issue-priorities.xml", goalName = GOAL_NAME)
+ public void testIssuePriorities() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-project-issue-categories.xml", goalName = GOAL_NAME)
+ public void testIssueCategories() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-version-attachments.xml", goalName = GOAL_NAME)
+ public void testAttachments() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+
+ @Test
+ @PluginConfig(pomName = "get-all.xml", goalName = GOAL_NAME)
+ public void testAll() throws Exception {
+
+ mojo.doAction();
+ //TODO check file is generated
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/DownloadDataMojoTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Modified: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GenerateChangesMojoTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GenerateChangesMojoTest.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GenerateChangesMojoTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,15 +1,63 @@
package org.nuiton.redmine.plugin;
+import org.apache.maven.model.IssueManagement;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
import org.nuiton.util.PluginConfig;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.nuiton.redmine.TestHelper;
+import org.nuiton.util.BasePluginTestCase;
/**
* @author tchemit
* @since 1.0.0
*/
-public class GenerateChangesMojoTest extends AbstractRedmineMojoTest<GenerateChangesMojo> {
+public class GenerateChangesMojoTest extends BasePluginTestCase<GenerateChangesMojo> {
+ private static final String GOAL_NAME="generate-changes";
+ @AfterClass
+ public static void cleanAfterClass() throws Exception {
+ if (log != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("release test " + testDir.getName());
+ }
+ log = null;
+ }
+ configItr = null;
+ testDir = null;
+ }
+
+ @Before
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ Assert.assertNotNull(mojo);
+
+ // copy redmine test server configuration
+ TestHelper.copyConfiguration(TestHelper.getTestConfiguration(GenerateChangesMojoTest.class.getSimpleName() + "-" + pomFile.getName()), mojo);
+ mojo.setVerbose(true);
+ // add a issue management
+ IssueManagement i = new IssueManagement();
+ i.setSystem("redmine");
+ i.setUrl(mojo.getRedmineUrl() + "/projects/one/issues");
+ mojo.getProject().setIssueManagement(i);
+
+ boolean canContinue = mojo.init();
+
+ if (canContinue) {
+ if (mojo.isVerbose()) {
+ log.info("setup done for " + mojo.getProject().getFile().getName());
+ }
+ } else {
+ log.warn("setup was not successfull, will skip this test class");
+ }
+
+ Assume.assumeTrue(canContinue);
+ }
+
@BeforeClass
public static void initClass() throws Exception {
@@ -17,9 +65,10 @@
}
@Test
- @PluginConfig(pomName = "generate-changes.xml", goalName = "generate-changes")
+ @PluginConfig(pomName = "generate-changes.xml", goalName = GOAL_NAME)
public void testGenerateChangesMojo() throws Exception {
+
mojo.doAction();
//TODO check file is generated
}
Deleted: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GetProjectDataMojoTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GetProjectDataMojoTest.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GetProjectDataMojoTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,50 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-import org.nuiton.util.PluginConfig;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * @author tchemit
- * @since 1.0.0
- */
-public class GetProjectDataMojoTest extends AbstractRedmineMojoTest<GetProjectDataMojo> {
-
- @BeforeClass
- public static void initClass() throws Exception {
-
- initConfigs(GetProjectDataMojoTest.class);
- }
-
- @Test
- @PluginConfig(pomName = "get-project.xml", goalName = "get-project-data")
- public void testProject() throws Exception {
-
- mojo.doAction();
- //TODO check file is generated
- }
-
- @Test
- @PluginConfig(pomName = "get-project-users.xml", goalName = "get-project-data")
- public void testUsers() throws Exception {
-
- mojo.doAction();
- //TODO check file is generated
- }
-
- @Test
- @PluginConfig(pomName = "get-project-trackers.xml", goalName = "get-project-data")
- public void testTrakers() throws Exception {
-
- mojo.doAction();
- //TODO check file is generated
- }
-
- @Test
- @PluginConfig(pomName = "get-project-versions.xml", goalName = "get-project-data")
- public void testVersions() throws Exception {
-
- mojo.doAction();
- //TODO check file is generated
- }
-}
Deleted: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojoTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojoTest.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/GetProjectVersionDataMojoTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,42 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-import org.nuiton.util.PluginConfig;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * @author tchemit
- * @since 1.0.0
- */
-public class GetProjectVersionDataMojoTest extends AbstractRedmineMojoTest<GetProjectVersionDataMojo> {
-
- @BeforeClass
- public static void initClass() throws Exception {
-
- initConfigs(GetProjectVersionDataMojoTest.class);
- }
-
- @Test
- @PluginConfig(pomName = "get-version.xml", goalName = "get-project-version-data")
- public void testVersion() throws Exception {
-
- mojo.doAction();
- //TODO check file is generated
- }
-
- @Test
- @PluginConfig(pomName = "get-version-issues.xml", goalName = "get-project-version-data")
- public void testIssues() throws Exception {
-
- mojo.doAction();
- //TODO check file is generated
- }
-
- @Test
- @PluginConfig(pomName = "get-version-files.xml", goalName = "get-project-version-data")
- public void testFiles() throws Exception {
-
- mojo.doAction();
- //TODO check file is generated
- }
-}
Deleted: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/RedmineReportMojoTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/RedmineReportMojoTest.java 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/RedmineReportMojoTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -1,42 +0,0 @@
-package org.nuiton.redmine.plugin;
-
-import org.nuiton.util.PluginConfig;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-
-/**
- * @author tchemit
- * @since 1.0.0
- */
-public class RedmineReportMojoTest extends AbstractRedmineMojoTest<RedmineReportMojo> {
-
- @BeforeClass
- public static void initClass() throws Exception {
- initConfigs(RedmineReportMojoTest.class);
-// initConfigs(RedmineReportMojoTest.class, "testRedmineReportMojo");
- }
-
-// @AfterClass
-// public static void afterClass() throws Exception {
-// configItr = null;
-// testDir = null;
-// }
-// @Before
-// @Override
-// public void setUp() throws Exception {
-// super.setUp();
-// assertNotNull(mojo);
-// mojo = (RedmineReportMojo) mojo;
-// }
-// @Test
-// public void testDummy() {
-//
-// }
- @Test
- @PluginConfig(pomName = "redmine-report.xml", goalName = "redmine-report")
- public void testRedmineReportMojo() throws Exception {
-
- mojo.doAction();
- }
-}
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/AbstractIssuesReportTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/AbstractIssuesReportTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/AbstractIssuesReportTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,53 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.apache.maven.model.IssueManagement;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.nuiton.redmine.TestHelper;
+import org.nuiton.util.BasePluginTestCase;
+
+/**
+ * @param <P> type of issue reports to test
+ * @author tchemit
+ * @since 1.0.0
+ */
+public abstract class AbstractIssuesReportTest<P extends AbstractIssuesReport> extends BasePluginTestCase<P> {
+
+ @AfterClass
+ public static void cleanAfterClass() throws Exception {
+ if (log != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("release test " + testDir.getName());
+ }
+ log = null;
+ }
+ configItr = null;
+ testDir = null;
+ }
+
+ @Before
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ Assert.assertNotNull(mojo);
+ // copy redmine test server configuration
+ TestHelper.copyConfiguration(TestHelper.getTestConfiguration(getClass().getSimpleName() + "-" + pomFile.getName()), mojo);
+ // add a issue management
+ IssueManagement i = new IssueManagement();
+ i.setSystem("redmine");
+ i.setUrl(mojo.getRedmineUrl() + "/projects/one/issues");
+ mojo.getProject().setIssueManagement(i);
+ boolean canContinue = mojo.canGenerateReport();
+ if (canContinue) {
+ if (mojo.isVerbose()) {
+ log.info("setup done for " + mojo.getProject().getFile().getName());
+ }
+ } else {
+ log.warn("setup was not successfull, will skip this test class");
+ }
+
+ Assume.assumeTrue(canContinue);
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/AbstractIssuesReportTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,25 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByAssigneeTest extends AbstractIssuesReportTest<IssuesReportByAssignee> {
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+ initConfigs(IssuesReportByAssigneeTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "issues-report.xml", goalName = "issues-report-by-assignee")
+ public void testRedmineReportMojo() throws Exception {
+ //TODO make this possible
+ //mojo.execute();
+ //TODO do some checks ?
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,25 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByCategoryTest extends AbstractIssuesReportTest<IssuesReportByCategory> {
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+ initConfigs(IssuesReportByCategoryTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "issues-report.xml", goalName = "issues-report-by-category")
+ public void testRedmineReportMojo() throws Exception {
+ //TODO make this possible
+ //mojo.execute();
+ //TODO do some checks ?
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,25 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByPriorityTest extends AbstractIssuesReportTest<IssuesReportByPriority> {
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+ initConfigs(IssuesReportByPriorityTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "issues-report.xml", goalName = "issues-report-by-priority")
+ public void testRedmineReportMojo() throws Exception {
+ //TODO make this possible
+ //mojo.execute();
+ //TODO do some checks ?
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,25 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByReporterTest extends AbstractIssuesReportTest<IssuesReportByReporter> {
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+ initConfigs(IssuesReportByReporterTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "issues-report.xml", goalName = "issues-report-by-reporter")
+ public void testRedmineReportMojo() throws Exception {
+ //TODO make this possible
+ //mojo.execute();
+ //TODO do some checks ?
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,25 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByStatusTest extends AbstractIssuesReportTest<IssuesReportByStatus> {
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+ initConfigs(IssuesReportByStatusTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "issues-report.xml", goalName = "issues-report-by-status")
+ public void testRedmineReportMojo() throws Exception {
+ //TODO make this possible
+ //mojo.execute();
+ //TODO do some checks ?
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,25 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByTrackerTest extends AbstractIssuesReportTest<IssuesReportByTracker> {
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+ initConfigs(IssuesReportByTrackerTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "issues-report.xml", goalName = "issues-report-by-tracker")
+ public void testRedmineReportMojo() throws Exception {
+ //TODO make this possible
+ //mojo.execute();
+ //TODO do some checks ?
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest.java
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,25 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportByVersionTest extends AbstractIssuesReportTest<IssuesReportByVersion> {
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+ initConfigs(IssuesReportByVersionTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "issues-report.xml", goalName = "issues-report-by-version")
+ public void testRedmineReportMojo() throws Exception {
+ //TODO make this possible
+ //mojo.execute();
+ //TODO do some checks ?
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Copied: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportTest.java (from rev 31, maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/RedmineReportMojoTest.java)
===================================================================
--- maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportTest.java (rev 0)
+++ maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportTest.java 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,25 @@
+package org.nuiton.redmine.plugin.report;
+
+import org.nuiton.util.PluginConfig;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author tchemit
+ * @since 1.0.0
+ */
+public class IssuesReportTest extends AbstractIssuesReportTest<IssuesReport> {
+
+ @BeforeClass
+ public static void initClass() throws Exception {
+ initConfigs(IssuesReportTest.class);
+ }
+
+ @Test
+ @PluginConfig(pomName = "issues-report.xml", goalName = "issues-report")
+ public void testRedmineReportMojo() throws Exception {
+ //TODO make this possible
+ //mojo.execute();
+ //TODO do some checks ?
+ }
+}
Property changes on: maven-redmine-plugin/trunk/src/test/java/org/nuiton/redmine/plugin/report/IssuesReportTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: svn:mergeinfo
+
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/attachments.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/attachments.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/attachments.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<attachments type="array">
+ <attachment>
+ <author-id type="integer">4</author-id>
+ <container-id type="integer">1</container-id>
+ <id type="integer">1</id>
+ <filesize type="integer">411</filesize>
+ <downloads type="integer">0</downloads>
+
+ <created-on type="datetime">2009-09-05T12:56:41+02:00</created-on>
+
+ <container-type>Version</container-type>
+ <content-type>application/json</content-type>
+ <description></description>
+ <digest>6ea84342c7475c05fb077b4aca832f9a</digest>
+ <disk-filename>090905125641_get_issue.json</disk-filename>
+ <filename>get_issue.json</filename>
+ </attachment>
+ <attachment>
+ <author-id type="integer">4</author-id>
+ <container-id type="integer">1</container-id>
+ <id type="integer">1</id>
+ <filesize type="integer">411</filesize>
+ <downloads type="integer">0</downloads>
+
+ <created-on type="datetime">2009-09-05T12:56:41+02:00</created-on>
+
+ <container-type>Version</container-type>
+ <content-type>application/json</content-type>
+ <description></description>
+ <digest>6ea84342c7475c05fb077b4aca832f9a</digest>
+ <disk-filename>090905125641_get_issue.json2</disk-filename>
+ <filename>get_issue.json2</filename>
+ </attachment>
+</attachments>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/issues.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/issues.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/issues.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues type="array">
+ <issue>
+ <assigned-to-id type="integer" nil="true"></assigned-to-id>
+ <author-id type="integer">5</author-id>
+ <category-id type="integer">2</category-id>
+ <done-ratio type="integer">0</done-ratio>
+ <lock-version type="integer">7</lock-version>
+ <priority-id type="integer">4</priority-id>
+ <project-id type="integer">1</project-id>
+ <status-id type="integer">3</status-id>
+ <tracker-id type="integer">1</tracker-id>
+ <fixed-version-id type="integer">1</fixed-version-id>
+ <id type="integer">3</id>
+
+ <estimated-hours type="float" nil="true"></estimated-hours>
+
+ <created-on type="datetime">2009-09-04T20:11:52+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T00:37:40+02:00</updated-on>
+ <due-date type="date" nil="true"></due-date>
+ <start-date type="date">2009-09-04</start-date>
+
+ <description>avec une description !</description>
+ <subject>yes!</subject>
+ </issue>
+ <issue>
+ <assigned-to-id type="integer" nil="true"></assigned-to-id>
+ <author-id type="integer">5</author-id>
+ <category-id type="integer">2</category-id>
+ <done-ratio type="integer">0</done-ratio>
+ <lock-version type="integer">7</lock-version>
+ <priority-id type="integer">4</priority-id>
+ <project-id type="integer">1</project-id>
+ <status-id type="integer">3</status-id>
+ <tracker-id type="integer">1</tracker-id>
+ <fixed-version-id type="integer">1</fixed-version-id>
+ <id type="integer">4</id>
+
+ <estimated-hours type="float" nil="true"></estimated-hours>
+
+ <created-on type="datetime">2009-09-04T20:11:52+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T00:37:40+02:00</updated-on>
+ <due-date type="date" nil="true"></due-date>
+ <start-date type="date">2009-09-04</start-date>
+
+ <description>avec une description !2</description>
+ <subject>yes!2</subject>
+ </issue>
+</issues>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/version.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/version.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/__Vyo/version.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<version>
+ <created-on type="datetime">2009-09-06T02:47:39+02:00</created-on>
+ <description>yo</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">9</id>
+ <name>yor</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T02:50:49+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+</version>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/project.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/project.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/project.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <created-on type="datetime">2009-09-04T18:11:54+02:00</created-on>
+ <updated-on type="datetime">2009-09-04T18:11:54+02:00</updated-on>
+
+ <description></description>
+ <homepage></homepage>
+ <identifier>one</identifier>
+ <name>one</name>
+
+ <id type="integer">1</id>
+ <parent-id type="integer" nil="true"></parent-id>
+ <projects-count type="integer">0</projects-count>
+ <status type="integer">1</status>
+
+ <is-public type="boolean">true</is-public>
+</project>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/trackers.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/trackers.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/trackers.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<trackers type="array">
+ <tracker>
+ <id type="integer">1</id>
+ <project-id type="NilClass">1</project-id>
+ <tracker-id type="NilClass">1</tracker-id>
+ <position type="integer">1</position>
+
+ <is-in-chlog type="boolean">true</is-in-chlog>
+ <is-in-roadmap type="boolean">false</is-in-roadmap>
+
+ <name>Anomalie</name>
+ </tracker>
+ <tracker>
+ <id type="integer">2</id>
+ <is-in-chlog type="boolean">true</is-in-chlog>
+ <is-in-roadmap type="boolean">true</is-in-roadmap>
+ <name>Evolution</name>
+ <position type="integer">2</position>
+ <project-id type="NilClass">1</project-id>
+ <tracker-id type="NilClass">2</tracker-id>
+ </tracker>
+ <tracker>
+ <id type="integer">3</id>
+ <is-in-chlog type="boolean">false</is-in-chlog>
+ <is-in-roadmap type="boolean">false</is-in-roadmap>
+ <name>Assistance</name>
+ <position type="integer">3</position>
+ <project-id type="NilClass">1</project-id>
+ <tracker-id type="NilClass">3</tracker-id>
+ </tracker>
+</trackers>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/users.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/users.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/users.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<users type="array">
+ <user>
+ <created-on type="datetime">2009-09-04T17:24:46+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T01:23:59+02:00</updated-on>
+ <last-login-on type="datetime">2009-09-06T01:23:59+02:00</last-login-on>
+
+ <id type="integer">1</id>
+ <auth-source-id type="integer" nil="true"></auth-source-id>
+ <member-id type="NilClass">5</member-id>
+ <role-id type="NilClass">3</role-id>
+ <status type="integer">1</status>
+
+ <admin type="boolean">true</admin>
+ <mail-notification type="boolean">true</mail-notification>
+
+ <firstname>Redmine</firstname>
+ <hashed-password>70c881d4a26984ddce795f6f71817c9cf4480e79</hashed-password>
+ <language>fr</language>
+ <lastname>Admin</lastname>
+ <login>admin</login>
+ <mail>dummy(a)codelutin.com</mail>
+ </user>
+ <user>
+ <admin type="boolean">true</admin>
+ <auth-source-id type="integer" nil="true"></auth-source-id>
+ <created-on type="datetime">2009-09-04T19:49:02+02:00</created-on>
+ <firstname>tony</firstname>
+ <hashed-password>8aed1322e5450badb078e1fb60a817a1df25a2ca</hashed-password>
+ <id type="integer">5</id>
+ <language>fr</language>
+ <last-login-on type="datetime">2009-09-04T19:49:38+02:00</last-login-on>
+ <lastname>chemit2</lastname>
+ <login>tchemit2</login>
+ <mail>chemit(a)codelutin.com</mail>
+ <mail-notification type="boolean">false</mail-notification>
+ <member-id type="NilClass">4</member-id>
+ <role-id type="NilClass">3</role-id>
+ <status type="integer">1</status>
+ <updated-on type="datetime">2009-09-04T19:49:38+02:00</updated-on>
+ </user>
+ <user>
+ <admin type="boolean">false</admin>
+ <auth-source-id type="integer" nil="true"></auth-source-id>
+ <created-on type="datetime">2009-09-05T16:24:11+02:00</created-on>
+ <firstname>dev</firstname>
+ <hashed-password>70c881d4a26984ddce795f6f71817c9cf4480e79</hashed-password>
+ <id type="integer">7</id>
+ <language>fr</language>
+ <last-login-on type="datetime">2009-09-06T16:34:39+02:00</last-login-on>
+ <lastname>dev</lastname>
+ <login>dev</login>
+ <mail>dev3(a)ynot-home.info</mail>
+ <mail-notification type="boolean">false</mail-notification>
+ <member-id type="NilClass">9</member-id>
+ <role-id type="NilClass">4</role-id>
+ <status type="integer">1</status>
+ <updated-on type="datetime">2009-09-06T16:34:39+02:00</updated-on>
+ </user>
+</users>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/versions.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/versions.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/__Pone/versions.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<versions type="array">
+ <version>
+ <created-on type="datetime">2009-09-06T02:47:39+02:00</created-on>
+ <description>yo</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">9</id>
+ <name>yor</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T02:50:49+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:05:09+02:00</created-on>
+ <description>ysssoye</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">13</id>
+ <name>rrrrrrrrrouuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:05:09+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:07:58+02:00</created-on>
+ <description>ysssoye</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">15</id>
+ <name>aaaauuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:07:58+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T04:12:25+02:00</created-on>
+ <description>ysssoyeppppppppppppppppp</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">16</id>
+ <name>aaaau</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T04:13:20+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:05:40+02:00</created-on>
+ <description>ysssoye</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">14</id>
+ <name>aaaaaaaaaarrrrrrrrrouuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:05:40+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-05T00:39:15+02:00</created-on>
+ <description></description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">5</id>
+ <name>2</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-05T00:39:15+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-04T18:13:05+02:00</created-on>
+ <description></description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">1</id>
+ <name>1.0.0</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-04T18:13:05+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:00:12+02:00</created-on>
+ <description>yoye</description>
+ <effective-date type="date">2009-09-06</effective-date>
+ <id type="integer">11</id>
+ <name>yaouuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:00:12+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T02:50:59+02:00</created-on>
+ <description>yoye</description>
+ <effective-date type="date">2009-09-06</effective-date>
+ <id type="integer">10</id>
+ <name>ya</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T02:54:16+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:00:37+02:00</created-on>
+ <description>ysssoye</description>
+ <effective-date type="date">2009-09-06</effective-date>
+ <id type="integer">12</id>
+ <name>ouuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:00:42+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+</versions>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/projects.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/projects.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineDataProviderTest/off-line/projects.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projects type="array">
+ <project>
+ <created-on type="datetime">2009-09-04T18:11:54+02:00</created-on>
+ <description/>
+ <homepage/>
+ <id type="integer">1</id>
+ <identifier>one</identifier>
+ <is-public type="boolean">true</is-public>
+ <name>one</name>
+ <parent-id type="integer" nil="true"/>
+ <projects-count type="integer">0</projects-count>
+ <status type="integer">1</status>
+ <updated-on type="datetime">2009-09-04T18:11:54+02:00</updated-on>
+ </project>
+ <project>
+ <created-on type="datetime">2009-09-05T16:22:14+02:00</created-on>
+ <description/>
+ <homepage/>
+ <id type="integer">2</id>
+ <identifier>two</identifier>
+ <is-public type="boolean">false</is-public>
+ <name>two</name>
+ <parent-id type="integer" nil="true"/>
+ <projects-count type="integer">0</projects-count>
+ <status type="integer">1</status>
+ <updated-on type="datetime">2009-09-05T16:22:29+02:00</updated-on>
+ </project>
+</projects>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/attachments.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/attachments.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/attachments.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<attachments type="array">
+</attachments>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/issues.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/issues.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/issues.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues type="array">
+</issues>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/projects.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/projects.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/projects.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projects type="array">
+</projects>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/trackers.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/trackers.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/trackers.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<trackers type="array">
+</trackers>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/users.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/users.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/users.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<users type="array">
+</users>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/versions.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/versions.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-empty/versions.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<versions type="array">
+</versions>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/attachments.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/attachments.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/attachments.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<attachments type="array">
+ <attachment>
+ <author-id type="integer">4</author-id>
+ <container-id type="integer">1</container-id>
+ <id type="integer">1</id>
+ <filesize type="integer">411</filesize>
+ <downloads type="integer">0</downloads>
+
+ <created-on type="datetime">2009-09-05T12:56:41+02:00</created-on>
+
+ <container-type>Version</container-type>
+ <content-type>application/json</content-type>
+ <description></description>
+ <digest>6ea84342c7475c05fb077b4aca832f9a</digest>
+ <disk-filename>090905125641_get_issue.json</disk-filename>
+ <filename>get_issue.json</filename>
+ </attachment>
+ <attachment>
+ <author-id type="integer">4</author-id>
+ <container-id type="integer">1</container-id>
+ <id type="integer">1</id>
+ <filesize type="integer">411</filesize>
+ <downloads type="integer">0</downloads>
+
+ <created-on type="datetime">2009-09-05T12:56:41+02:00</created-on>
+
+ <container-type>Version</container-type>
+ <content-type>application/json</content-type>
+ <description></description>
+ <digest>6ea84342c7475c05fb077b4aca832f9a</digest>
+ <disk-filename>090905125641_get_issue.json2</disk-filename>
+ <filename>get_issue.json2</filename>
+ </attachment>
+</attachments>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/issues.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/issues.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/issues.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues type="array">
+ <issue>
+ <assigned-to-id type="integer" nil="true"></assigned-to-id>
+ <author-id type="integer">5</author-id>
+ <category-id type="integer">2</category-id>
+ <done-ratio type="integer">0</done-ratio>
+ <lock-version type="integer">7</lock-version>
+ <priority-id type="integer">4</priority-id>
+ <project-id type="integer">1</project-id>
+ <status-id type="integer">3</status-id>
+ <tracker-id type="integer">1</tracker-id>
+ <fixed-version-id type="integer">1</fixed-version-id>
+ <id type="integer">3</id>
+
+ <estimated-hours type="float" nil="true"></estimated-hours>
+
+ <created-on type="datetime">2009-09-04T20:11:52+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T00:37:40+02:00</updated-on>
+ <due-date type="date" nil="true"></due-date>
+ <start-date type="date">2009-09-04</start-date>
+
+ <description>avec une description !</description>
+ <subject>yes!</subject>
+ </issue>
+ <issue>
+ <assigned-to-id type="integer" nil="true"></assigned-to-id>
+ <author-id type="integer">5</author-id>
+ <category-id type="integer">2</category-id>
+ <done-ratio type="integer">0</done-ratio>
+ <lock-version type="integer">7</lock-version>
+ <priority-id type="integer">4</priority-id>
+ <project-id type="integer">1</project-id>
+ <status-id type="integer">3</status-id>
+ <tracker-id type="integer">1</tracker-id>
+ <fixed-version-id type="integer">1</fixed-version-id>
+ <id type="integer">4</id>
+
+ <estimated-hours type="float" nil="true"></estimated-hours>
+
+ <created-on type="datetime">2009-09-04T20:11:52+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T00:37:40+02:00</updated-on>
+ <due-date type="date" nil="true"></due-date>
+ <start-date type="date">2009-09-04</start-date>
+
+ <description>avec une description !2</description>
+ <subject>yes!2</subject>
+ </issue>
+</issues>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/projects.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/projects.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/projects.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projects type="array">
+ <project>
+ <created-on type="datetime">2009-09-04T18:11:54+02:00</created-on>
+ <description/>
+ <homepage/>
+ <id type="integer">1</id>
+ <identifier>one</identifier>
+ <is-public type="boolean">true</is-public>
+ <name>one</name>
+ <parent-id type="integer" nil="true"/>
+ <projects-count type="integer">0</projects-count>
+ <status type="integer">1</status>
+ <updated-on type="datetime">2009-09-04T18:11:54+02:00</updated-on>
+ </project>
+ <project>
+ <created-on type="datetime">2009-09-05T16:22:14+02:00</created-on>
+ <description/>
+ <homepage/>
+ <id type="integer">2</id>
+ <identifier>two</identifier>
+ <is-public type="boolean">false</is-public>
+ <name>two</name>
+ <parent-id type="integer" nil="true"/>
+ <projects-count type="integer">0</projects-count>
+ <status type="integer">1</status>
+ <updated-on type="datetime">2009-09-05T16:22:29+02:00</updated-on>
+ </project>
+</projects>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/trackers.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/trackers.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/trackers.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<trackers type="array">
+ <tracker>
+ <id type="integer">1</id>
+ <project-id type="NilClass">1</project-id>
+ <tracker-id type="NilClass">1</tracker-id>
+ <position type="integer">1</position>
+
+ <is-in-chlog type="boolean">true</is-in-chlog>
+ <is-in-roadmap type="boolean">false</is-in-roadmap>
+
+ <name>Anomalie</name>
+ </tracker>
+ <tracker>
+ <id type="integer">2</id>
+ <is-in-chlog type="boolean">true</is-in-chlog>
+ <is-in-roadmap type="boolean">true</is-in-roadmap>
+ <name>Evolution</name>
+ <position type="integer">2</position>
+ <project-id type="NilClass">1</project-id>
+ <tracker-id type="NilClass">2</tracker-id>
+ </tracker>
+ <tracker>
+ <id type="integer">3</id>
+ <is-in-chlog type="boolean">false</is-in-chlog>
+ <is-in-roadmap type="boolean">false</is-in-roadmap>
+ <name>Assistance</name>
+ <position type="integer">3</position>
+ <project-id type="NilClass">1</project-id>
+ <tracker-id type="NilClass">3</tracker-id>
+ </tracker>
+</trackers>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/users.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/users.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/users.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<users type="array">
+ <user>
+ <created-on type="datetime">2009-09-04T17:24:46+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T01:23:59+02:00</updated-on>
+ <last-login-on type="datetime">2009-09-06T01:23:59+02:00</last-login-on>
+
+ <id type="integer">1</id>
+ <auth-source-id type="integer" nil="true"></auth-source-id>
+ <member-id type="NilClass">5</member-id>
+ <role-id type="NilClass">3</role-id>
+ <status type="integer">1</status>
+
+ <admin type="boolean">true</admin>
+ <mail-notification type="boolean">true</mail-notification>
+
+ <firstname>Redmine</firstname>
+ <hashed-password>70c881d4a26984ddce795f6f71817c9cf4480e79</hashed-password>
+ <language>fr</language>
+ <lastname>Admin</lastname>
+ <login>admin</login>
+ <mail>dummy(a)codelutin.com</mail>
+ </user>
+ <user>
+ <admin type="boolean">true</admin>
+ <auth-source-id type="integer" nil="true"></auth-source-id>
+ <created-on type="datetime">2009-09-04T19:49:02+02:00</created-on>
+ <firstname>tony</firstname>
+ <hashed-password>8aed1322e5450badb078e1fb60a817a1df25a2ca</hashed-password>
+ <id type="integer">5</id>
+ <language>fr</language>
+ <last-login-on type="datetime">2009-09-04T19:49:38+02:00</last-login-on>
+ <lastname>chemit2</lastname>
+ <login>tchemit2</login>
+ <mail>chemit(a)codelutin.com</mail>
+ <mail-notification type="boolean">false</mail-notification>
+ <member-id type="NilClass">4</member-id>
+ <role-id type="NilClass">3</role-id>
+ <status type="integer">1</status>
+ <updated-on type="datetime">2009-09-04T19:49:38+02:00</updated-on>
+ </user>
+ <user>
+ <admin type="boolean">false</admin>
+ <auth-source-id type="integer" nil="true"></auth-source-id>
+ <created-on type="datetime">2009-09-05T16:24:11+02:00</created-on>
+ <firstname>dev</firstname>
+ <hashed-password>70c881d4a26984ddce795f6f71817c9cf4480e79</hashed-password>
+ <id type="integer">7</id>
+ <language>fr</language>
+ <last-login-on type="datetime">2009-09-06T16:34:39+02:00</last-login-on>
+ <lastname>dev</lastname>
+ <login>dev</login>
+ <mail>dev3(a)ynot-home.info</mail>
+ <mail-notification type="boolean">false</mail-notification>
+ <member-id type="NilClass">9</member-id>
+ <role-id type="NilClass">4</role-id>
+ <status type="integer">1</status>
+ <updated-on type="datetime">2009-09-06T16:34:39+02:00</updated-on>
+ </user>
+</users>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/versions.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/versions.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-multi/versions.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<versions type="array">
+ <version>
+ <created-on type="datetime">2009-09-06T02:47:39+02:00</created-on>
+ <description>yo</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">9</id>
+ <name>yor</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T02:50:49+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:05:09+02:00</created-on>
+ <description>ysssoye</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">13</id>
+ <name>rrrrrrrrrouuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:05:09+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:07:58+02:00</created-on>
+ <description>ysssoye</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">15</id>
+ <name>aaaauuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:07:58+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T04:12:25+02:00</created-on>
+ <description>ysssoyeppppppppppppppppp</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">16</id>
+ <name>aaaau</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T04:13:20+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:05:40+02:00</created-on>
+ <description>ysssoye</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">14</id>
+ <name>aaaaaaaaaarrrrrrrrrouuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:05:40+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-05T00:39:15+02:00</created-on>
+ <description></description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">5</id>
+ <name>2</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-05T00:39:15+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-04T18:13:05+02:00</created-on>
+ <description></description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">1</id>
+ <name>1.0.0</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-04T18:13:05+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:00:12+02:00</created-on>
+ <description>yoye</description>
+ <effective-date type="date">2009-09-06</effective-date>
+ <id type="integer">11</id>
+ <name>yaouuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:00:12+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T02:50:59+02:00</created-on>
+ <description>yoye</description>
+ <effective-date type="date">2009-09-06</effective-date>
+ <id type="integer">10</id>
+ <name>ya</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T02:54:16+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+ <version>
+ <created-on type="datetime">2009-09-06T03:00:37+02:00</created-on>
+ <description>ysssoye</description>
+ <effective-date type="date">2009-09-06</effective-date>
+ <id type="integer">12</id>
+ <name>ouuuuuua</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T03:00:42+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+</versions>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/attachments.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/attachments.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/attachments.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<attachments type="array">
+ <attachment>
+ <author-id type="integer">4</author-id>
+ <container-id type="integer">1</container-id>
+ <id type="integer">1</id>
+ <filesize type="integer">411</filesize>
+ <downloads type="integer">0</downloads>
+
+ <created-on type="datetime">2009-09-05T12:56:41+02:00</created-on>
+
+ <container-type>Version</container-type>
+ <content-type>application/json</content-type>
+ <description></description>
+ <digest>6ea84342c7475c05fb077b4aca832f9a</digest>
+ <disk-filename>090905125641_get_issue.json</disk-filename>
+ <filename>get_issue.json</filename>
+ </attachment>
+</attachments>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/issues.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/issues.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/issues.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues type="array">
+ <issue>
+ <assigned-to-id type="integer" nil="true"></assigned-to-id>
+ <author-id type="integer">5</author-id>
+ <category-id type="integer">2</category-id>
+ <done-ratio type="integer">0</done-ratio>
+ <lock-version type="integer">7</lock-version>
+ <priority-id type="integer">4</priority-id>
+ <project-id type="integer">1</project-id>
+ <status-id type="integer">3</status-id>
+ <tracker-id type="integer">1</tracker-id>
+ <fixed-version-id type="integer">1</fixed-version-id>
+ <id type="integer">3</id>
+
+ <estimated-hours type="float" nil="true"></estimated-hours>
+
+ <created-on type="datetime">2009-09-04T20:11:52+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T00:37:40+02:00</updated-on>
+ <due-date type="date" nil="true"></due-date>
+ <start-date type="date">2009-09-04</start-date>
+
+ <description>avec une description !</description>
+ <subject>yes!</subject>
+ </issue>
+</issues>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/projects.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/projects.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/projects.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projects type="array">
+ <project>
+ <created-on type="datetime">2009-09-04T18:11:54+02:00</created-on>
+ <updated-on type="datetime">2009-09-04T18:11:54+02:00</updated-on>
+
+ <description></description>
+ <homepage></homepage>
+ <identifier>one</identifier>
+ <name>one</name>
+
+ <id type="integer">1</id>
+ <parent-id type="integer" nil="true"></parent-id>
+ <projects-count type="integer">0</projects-count>
+ <status type="integer">1</status>
+
+ <is-public type="boolean">true</is-public>
+ </project>
+</projects>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/trackers.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/trackers.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/trackers.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<trackers type="array">
+ <tracker>
+ <id type="integer">1</id>
+ <project-id type="NilClass">1</project-id>
+ <tracker-id type="NilClass">1</tracker-id>
+ <position type="integer">1</position>
+
+ <is-in-chlog type="boolean">true</is-in-chlog>
+ <is-in-roadmap type="boolean">false</is-in-roadmap>
+
+ <name>Anomalie</name>
+ </tracker>
+</trackers>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/users.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/users.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/users.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<users type="array">
+ <user>
+ <created-on type="datetime">2009-09-04T17:24:46+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T01:23:59+02:00</updated-on>
+ <last-login-on type="datetime">2009-09-06T01:23:59+02:00</last-login-on>
+
+ <id type="integer">1</id>
+ <auth-source-id type="integer" nil="true"></auth-source-id>
+ <member-id type="NilClass">5</member-id>
+ <role-id type="NilClass">3</role-id>
+ <status type="integer">1</status>
+
+ <admin type="boolean">true</admin>
+ <mail-notification type="boolean">true</mail-notification>
+
+ <firstname>Redmine</firstname>
+ <hashed-password>70c881d4a26984ddce795f6f71817c9cf4480e79</hashed-password>
+ <language>fr</language>
+ <lastname>Admin</lastname>
+ <login>admin</login>
+ <mail>dummy(a)codelutin.com</mail>
+ </user>
+</users>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/versions.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/versions.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/array-singleton/versions.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<versions type="array">
+ <version>
+ <created-on type="datetime">2009-09-06T02:47:39+02:00</created-on>
+ <description>yo</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">9</id>
+ <name>yor</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T02:50:49+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+ </version>
+</versions>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/attachment.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/attachment.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/attachment.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<attachment>
+ <author-id type="integer">4</author-id>
+ <container-id type="integer">1</container-id>
+ <id type="integer">1</id>
+ <filesize type="integer">411</filesize>
+ <downloads type="integer">0</downloads>
+
+ <created-on type="datetime">2009-09-05T12:56:41+02:00</created-on>
+
+ <container-type>Version</container-type>
+ <content-type>application/json</content-type>
+ <description></description>
+ <digest>6ea84342c7475c05fb077b4aca832f9a</digest>
+ <disk-filename>090905125641_get_issue.json</disk-filename>
+ <filename>get_issue.json</filename>
+</attachment>
+
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/issue.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/issue.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/issue.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issue>
+ <assigned-to-id type="integer" nil="true"></assigned-to-id>
+ <author-id type="integer">5</author-id>
+ <category-id type="integer">2</category-id>
+ <done-ratio type="integer">0</done-ratio>
+ <lock-version type="integer">7</lock-version>
+ <priority-id type="integer">4</priority-id>
+ <project-id type="integer">1</project-id>
+ <status-id type="integer">3</status-id>
+ <tracker-id type="integer">1</tracker-id>
+ <fixed-version-id type="integer">1</fixed-version-id>
+ <id type="integer">3</id>
+
+ <estimated-hours type="float" nil="true"></estimated-hours>
+
+ <created-on type="datetime">2009-09-04T20:11:52+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T00:37:40+02:00</updated-on>
+ <due-date type="date" nil="true"></due-date>
+ <start-date type="date">2009-09-04</start-date>
+
+ <description>avec une description !</description>
+ <subject>yes!</subject>
+</issue>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/project.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/project.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/project.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <created-on type="datetime">2009-09-04T18:11:54+02:00</created-on>
+ <updated-on type="datetime">2009-09-04T18:11:54+02:00</updated-on>
+
+ <description></description>
+ <homepage></homepage>
+ <identifier>one</identifier>
+ <name>one</name>
+
+ <id type="integer">1</id>
+ <parent-id type="integer" nil="true"></parent-id>
+ <projects-count type="integer">0</projects-count>
+ <status type="integer">1</status>
+
+ <is-public type="boolean">true</is-public>
+</project>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/tracker.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/tracker.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/tracker.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tracker>
+ <id type="integer">1</id>
+ <project-id type="NilClass">1</project-id>
+ <tracker-id type="NilClass">1</tracker-id>
+ <position type="integer">1</position>
+
+ <is-in-chlog type="boolean">true</is-in-chlog>
+ <is-in-roadmap type="boolean">false</is-in-roadmap>
+
+ <name>Anomalie</name>
+</tracker>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/user.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/user.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/user.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<user>
+ <created-on type="datetime">2009-09-04T17:24:46+02:00</created-on>
+ <updated-on type="datetime">2009-09-06T01:23:59+02:00</updated-on>
+ <last-login-on type="datetime">2009-09-06T01:23:59+02:00</last-login-on>
+
+ <id type="integer">1</id>
+ <auth-source-id type="integer" nil="true"></auth-source-id>
+ <member-id type="NilClass">5</member-id>
+ <role-id type="NilClass">3</role-id>
+ <status type="integer">1</status>
+
+ <admin type="boolean">true</admin>
+ <mail-notification type="boolean">true</mail-notification>
+
+ <firstname>Redmine</firstname>
+ <hashed-password>70c881d4a26984ddce795f6f71817c9cf4480e79</hashed-password>
+ <language>fr</language>
+ <lastname>Admin</lastname>
+ <login>admin</login>
+ <mail>dummy(a)codelutin.com</mail>
+</user>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/version.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/version.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/model/io/xpp3/RedmineXpp3HelperTest/single/version.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<version>
+ <created-on type="datetime">2009-09-06T02:47:39+02:00</created-on>
+ <description>yo</description>
+ <effective-date type="date" nil="true"></effective-date>
+ <id type="integer">9</id>
+ <name>yor</name>
+ <project-id type="integer">1</project-id>
+ <updated-on type="datetime">2009-09-06T02:50:49+02:00</updated-on>
+ <wiki-page-title nil="true"></wiki-page-title>
+</version>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-all.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-all.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-all.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <versionId>1.0.0</versionId>
+ <types>trackers,users,issueStatuses,issueCategories,issuePriorities,trackers</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>display-data</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-issue-priorities.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-issue-priorities.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-issue-priorities.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <types>issuePriorities</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>display-data</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-issue-statuses.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-issue-statuses.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-issue-statuses.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <types>issueStatuses</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>display-data</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-issue-categories.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-issue-categories.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-issue-categories.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>issueCategories</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>display-data</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-trackers.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-trackers.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-trackers.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>trackers</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>display-data</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-users.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-users.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DisplayDataMojoTest/display-project-users.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>users</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>display-data</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-all.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-all.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-all.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <versionId>1.0.0</versionId>
+ <types>attachments,
+ issues,
+ project,
+ projects,
+ trackers,
+ users,
+ versions,
+ version,
+ issueCategories,
+ issueStatuses,
+ issuePriorities
+ </types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-issue-priorities.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-issue-priorities.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-issue-priorities.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <types>issuePriorities</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-issue-statuses.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-issue-statuses.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-issue-statuses.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <types>issueStatuses</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-issue-categories.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-issue-categories.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-issue-categories.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>issueCategories</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-trackers.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-trackers.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-trackers.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>trackers</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-users.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-users.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-users.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>users</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-versions.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-versions.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project-versions.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>versions</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>project</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project2.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project2.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-project2.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>two</projectId>
+ <types>project</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-projects.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-projects.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-projects.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <types>projects</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version-attachments.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version-attachments.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version-attachments.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <versionId>1.0.0</versionId>
+ <types>attachments</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version-issues.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version-issues.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version-issues.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <versionId>1.0.0</versionId>
+ <types>issues</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/DownloadDataMojoTest/get-version.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-generate-changes</artifactId>
+ <version>0</version>
+
+ <name>generate-changes</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <versionId>1.0.0</versionId>
+ <types>version</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Modified: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/GenerateChangesMojoTest/generate-changes.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/GenerateChangesMojoTest/generate-changes.xml 2009-09-11 22:09:20 UTC (rev 85)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/GenerateChangesMojoTest/generate-changes.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
+
<groupId>org.nuiton.maven-redmine-plugin</groupId>
<artifactId>test-generate-changes</artifactId>
<version>0</version>
@@ -16,9 +16,14 @@
<groupId>org.nuiton</groupId>
<artifactId>maven-redmine-plugin</artifactId>
<configuration>
- <redmineUrl>http://mynuiton.org</redmineUrl>
- <redmineUsername>chemit</redmineUsername>
- <redminePassword>azer</redminePassword>
+ <xmlPath>target/GenerateChangesMojoTest-generate-changes.xml</xmlPath>
+ <projectId>one</projectId>
+ <versionId>1.0.0</versionId>
+ <actionMapping>fix:1, add:2</actionMapping>
+ <statusIds>3,4,5</statusIds>
+ <categoryIds>1</categoryIds>
+ <changesTitle>Title of the first release</changesTitle>
+ <!--<releaseDescription>Description of first release</releaseDescription>-->
</configuration>
<executions>
<execution>
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest/issues-report.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest/issues-report.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByAssigneeTest/issues-report.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-redmine-report</artifactId>
+ <version>0</version>
+
+ <name>redmine-report</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectIdByAssignee>one</projectIdByAssignee>
+ <versionIdByAssignee>1.0.0</versionIdByAssignee>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>issues-report-by-assignee</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest/issues-report.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest/issues-report.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByCategoryTest/issues-report.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-redmine-report</artifactId>
+ <version>0</version>
+
+ <name>redmine-report</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectIdByCategory>one</projectIdByCategory>
+ <versionIdByCategory>1.0.0</versionIdByCategory>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>issues-report-by-category</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest/issues-report.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest/issues-report.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByPriorityTest/issues-report.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-redmine-report</artifactId>
+ <version>0</version>
+
+ <name>redmine-report</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectIdByPriority>one</projectIdByPriority>
+ <versionIdByPriority>1.0.0</versionIdByPriority>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>issues-report-by-priority</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest/issues-report.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest/issues-report.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByReporterTest/issues-report.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-redmine-report</artifactId>
+ <version>0</version>
+
+ <name>redmine-report</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectIdByReporter>one</projectIdByReporter>
+ <versionIdByReporter>1.0.0</versionIdByReporter>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>issues-report-by-reporter</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest/issues-report.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest/issues-report.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByStatusTest/issues-report.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-redmine-report</artifactId>
+ <version>0</version>
+
+ <name>redmine-report</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectIdByStatus>one</projectIdByStatus>
+ <versionIdByStatus>1.0.0</versionIdByStatus>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>issues-report-by-status</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest/issues-report.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest/issues-report.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByTrackerTest/issues-report.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-redmine-report</artifactId>
+ <version>0</version>
+
+ <name>redmine-report</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectIdByTracker>one</projectIdByTracker>
+ <versionIdByTracker>1.0.0</versionIdByTracker>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>issues-report-by-tracker</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest/issues-report.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest/issues-report.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportByVersionTest/issues-report.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-redmine-report</artifactId>
+ <version>0</version>
+
+ <name>redmine-report</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectIdByVersion>one</projectIdByVersion>
+ <versionIdByVersion>1.0.0</versionIdByVersion>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>issues-report-by-version</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Copied: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportTest/issues-report.xml (from rev 31, maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/RedmineReportMojoTest/redmine-report.xml)
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportTest/issues-report.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportTest/issues-report.xml 2009-09-11 22:10:54 UTC (rev 86)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <groupId>org.nuiton.maven-redmine-plugin</groupId>
+ <artifactId>test-redmine-report</artifactId>
+ <version>0</version>
+
+ <name>redmine-report</name>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <projectId>one</projectId>
+ <versionId>1.0.0</versionId>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>issues-report</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Property changes on: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/report/IssuesReportTest/issues-report.xml
___________________________________________________________________
Added: svn:mergeinfo
+
1
0
r85 - in maven-redmine-plugin/trunk/src: . it it/download it/download/src it/download/src/changes
by tchemit@users.nuiton.org 11 Sep '09
by tchemit@users.nuiton.org 11 Sep '09
11 Sep '09
Author: tchemit
Date: 2009-09-12 00:09:20 +0200 (Sat, 12 Sep 2009)
New Revision: 85
Added:
maven-redmine-plugin/trunk/src/it/
maven-redmine-plugin/trunk/src/it/download/
maven-redmine-plugin/trunk/src/it/download/goals.txt
maven-redmine-plugin/trunk/src/it/download/pom.xml
maven-redmine-plugin/trunk/src/it/download/src/
maven-redmine-plugin/trunk/src/it/download/src/changes/
maven-redmine-plugin/trunk/src/it/download/src/changes/changes.xml
maven-redmine-plugin/trunk/src/it/download/verify.groovy
maven-redmine-plugin/trunk/src/it/settings.xml
Log:
add it test
Added: maven-redmine-plugin/trunk/src/it/download/goals.txt
===================================================================
--- maven-redmine-plugin/trunk/src/it/download/goals.txt (rev 0)
+++ maven-redmine-plugin/trunk/src/it/download/goals.txt 2009-09-11 22:09:20 UTC (rev 85)
@@ -0,0 +1 @@
+clean redmine:download
Added: maven-redmine-plugin/trunk/src/it/download/pom.xml
===================================================================
--- maven-redmine-plugin/trunk/src/it/download/pom.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/it/download/pom.xml 2009-09-11 22:09:20 UTC (rev 85)
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.nuiton.redmine</groupId>
+ <artifactId>test-download</artifactId>
+ <version>0</version>
+
+ <name>Maven</name>
+ <packaging>jar</packaging>
+ <description>Test report.</description>
+
+ <url>http://www.foo.com</url>
+ <!--dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies-->
+ <issueManagement>
+ <system>redmine</system>
+ <url>http://mynuiton.org/projects/one/issues</url>
+ </issueManagement>
+
+ <properties>
+ <changesPluginVersion>@pom.version@</changesPluginVersion>
+ </properties>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-changes-plugin</artifactId>
+ <version>${changesPluginVersion}</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.nuiton</groupId>
+ <artifactId>maven-redmine-plugin</artifactId>
+ <configuration>
+ <encoding>UTF-8</encoding>
+ <!--<redmineUrl></redmineUrl>-->
+ <redmineUsername>chemit</redmineUsername>
+ <redminePassword>azer</redminePassword>
+ <projectId>one</projectId>
+ <versionId>1.0.0</versionId>
+ <types>version</types>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>download</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: maven-redmine-plugin/trunk/src/it/download/src/changes/changes.xml
===================================================================
--- maven-redmine-plugin/trunk/src/it/download/src/changes/changes.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/it/download/src/changes/changes.xml 2009-09-11 22:09:20 UTC (rev 85)
@@ -0,0 +1,64 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<document xmlns="http://maven.apache.org/changes/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <properties>
+ <title>Changes report Project</title>
+ <author email="zloug(a)toto.com">Mr Zloug</author>
+ </properties>
+ <body>
+ <release version="1.1" date="2005-03-01" description="Subsequent release">
+ <action dev="me" type="add">
+ Added additional documentation on how to configure the plugin.
+ </action>
+ <action dev="me" type="fix" issue="MCHANGES-88">
+ Enable retrieving component-specific issues.
+ </action>
+ <action dev="jruiz" type="remove" issue="MCHANGES-899">
+ The element type " link " must be terminated by the matching end-tag.
+ Deleted the erroneous code.
+ <fixes issue="MCHANGES-1"/>
+ <fixes issue="JIRA-12"/>
+ <dueto name="John Doe" email="john(a)doe.com"/>
+ <dueto name="Jane Doe"/>
+ </action>
+ <action dev="you" type="update" issue="MCHANGES-999" system="bugzilla">
+ Handle different issue systems.
+ <fixes issue="bug-12345"/>
+ <dueto name="John Doe" email="john(a)doe.com"/>
+ </action>
+ <action dev="him" type="update">
+ Updated dependencies.
+ <dueto name="John Doe" email="john(a)doe.com"/>
+ <dueto name="Jane Doe"/>
+ </action>
+ </release>
+
+ <release version="1.0" date="2005-01-01" description="First release">
+ <action dev="me" type="update" issue="MCHANGES-47" due-to="others" due-to-email="others(a)users.com">
+ Uploaded documentation on how to use the plugin.
+ <fixes issue="MCHANGES-88"/>
+ <fixes issue="JIRA-YYY"/>
+ <dueto name="John Doe" email="john(a)doe.com"/>
+ <dueto name="Jane Doe"/>
+ </action>
+ </release>
+ </body>
+</document>
\ No newline at end of file
Added: maven-redmine-plugin/trunk/src/it/download/verify.groovy
===================================================================
--- maven-redmine-plugin/trunk/src/it/download/verify.groovy (rev 0)
+++ maven-redmine-plugin/trunk/src/it/download/verify.groovy 2009-09-11 22:09:20 UTC (rev 85)
@@ -0,0 +1,26 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+assert new File(basedir, 'target/redmine-cache').exists();
+
+//content = new File(basedir, 'target/announcement/announcement.vm').text;
+
+//assert content.contains( 'Test report.' );
+
+return true;
Added: maven-redmine-plugin/trunk/src/it/settings.xml
===================================================================
--- maven-redmine-plugin/trunk/src/it/settings.xml (rev 0)
+++ maven-redmine-plugin/trunk/src/it/settings.xml 2009-09-11 22:09:20 UTC (rev 85)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<settings>
+ <profiles>
+ <profile>
+ <id>it-repo</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <repositories>
+ <repository>
+ <id>local.central</id>
+ <url>file:///@localRepository@</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>nuiton.snapshots</id>
+ <name>Nuiton Snapshot Repository</name>
+ <url>http://maven.nuiton.org/snapshot</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>local.central</id>
+ <url>file:///@localRepository@</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ </profiles>
+</settings>
1
0
r84 - in maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine: . plugin plugin/IssuesReportTest
by tchemit@users.nuiton.org 11 Sep '09
by tchemit@users.nuiton.org 11 Sep '09
11 Sep '09
Author: tchemit
Date: 2009-09-12 00:07:20 +0200 (Sat, 12 Sep 2009)
New Revision: 84
Added:
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/IssuesReportTest/
Removed:
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/RedmineModelBuilderTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/GetProjectDataMojoTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/GetProjectVersionDataMojoTest/
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/IssuesReportTest/redmine-report.xml
maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/RedmineReportMojoTest/
Log:
redmine issue report generation ok
Property changes on: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/IssuesReportTest
___________________________________________________________________
Added: svn:mergeinfo
+
Deleted: maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/IssuesReportTest/redmine-report.xml
===================================================================
--- maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/RedmineReportMojoTest/redmine-report.xml 2009-09-09 15:19:30 UTC (rev 31)
+++ maven-redmine-plugin/trunk/src/test/resources/org/nuiton/redmine/plugin/IssuesReportTest/redmine-report.xml 2009-09-11 22:07:20 UTC (rev 84)
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <groupId>org.nuiton.maven-redmine-plugin</groupId>
- <artifactId>test-redmine-report</artifactId>
- <version>0</version>
-
- <name>redmine-report</name>
-
- <build>
-
- <plugins>
- <plugin>
- <groupId>org.nuiton</groupId>
- <artifactId>maven-redmine-plugin</artifactId>
- <configuration>
- <redmineUrl>http://mynuiton.org</redmineUrl>
- <redmineUsername>chemit</redmineUsername>
- <redminePassword>azer</redminePassword>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>redmine-report</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
1
0
Author: glorieux
Date: 2009-09-11 16:31:34 +0200 (Fri, 11 Sep 2009)
New Revision: 83
Modified:
test_rstedit/src/site/rst/index.rst
Log:
New_rst
Modified: test_rstedit/src/site/rst/index.rst
===================================================================
--- test_rstedit/src/site/rst/index.rst 2009-09-11 14:20:22 UTC (rev 82)
+++ test_rstedit/src/site/rst/index.rst 2009-09-11 14:31:34 UTC (rev 83)
@@ -1 +1,68 @@
-retest
\ No newline at end of file
+=================================
+Parseur reStructuredText : le JRst
+==================================
+
+Présentation
+------------
+
+Le format reStructuredText est un format de description de documents. A l'image
+d'autres LaTeX ou DocBook, il peut être décliné en une multitude de formats. Ces
+formats souffrent habituellement d'une syntaxe envahissante qui, si elle est
+nécessaire pour des documents tr�?s spécifiques, devient gênante quand il s'agit
+de créer rapidement un document pas trop complexe. RST dispose quant � lui d'une
+syntaxe tellement simple qu'elle en devient presque invisible.
+
+JRST est un parseur RST en Java permettant de créer une représentation en arbre
+d'un document. Il devient alors facile de générer une représentation du document
+vers différents formats.
+
+
+Usage
+-----
+
+Le parser JRST prend un fichier reStructuredText en entré et gén�?re un fichier XML
+qui pourra ensuite servir � produire divers formats de fichiers grâce � des fichiers
+XSL de générations. Les formats de sortie disponibles sont le html, le xhtml, le rst,
+le pdf, le docbook, le odt (Open-Office), le rtf, ou encore le XML.
+
+::
+
+ JRST myfile.rst
+
+Cette commande aura pour effet de convertir le fichier myfile.rst en XML qui sera affiché sur la sortie standard (console).
+Plusieurs options sont disponibles :
+
+-o file,--outFile=file pour rediriger la sortie vers un fichier.
+-t format,--outType format pour préciser un format de sortie, donc utiliser un ou des fichiers XSL de génération.
+ Plusieurs formats sont disponibles xhtml, docbook, xml, html, xdoc, rst, pdf, odt, rtf.
+-x xslFile,--xslFile xslFile sert � préciser le fichier xsl de génération � utiliser.
+--force forcer l'écriture d'un fichier, si le fichier de sortie existe, il sera remplacé.
+--help pour afficher les options disponibles :
+
+
+::
+
+ Usage: [options] FILE
+ [--force] : overwrite existing out file
+ [--help] : display this help and exit
+ [--outFile -o value] : Output file
+ [--outType -t /xhtml|docbook|xml|html|xdoc|rst/] : Output type
+ [--xslFile -x value] : XSL file list to apply, comma separated
+
+Note : Seul les formats html, xhtml, DocBook, xdoc et pdf sont disponible pour le moment.
+
+ex :
+
+::
+
+ JRST --force -t html -o myfile.html myfile.rst
+
+Cette commande produira un fichier html (myfile.html) � partir du fichier reStructuredText_ (myfile.rst)
+même si myfile.html existe déj� .
+
+
+Plugin Maven
+------------
+
+Un plugin Maven est disponible � l'adresse suivante http://jrst.labs.libre-entreprise.org/maven-jrst-plugin.
+Il permet l'utilisation depuis Maven de JRst.
\ No newline at end of file
1
0
Author: glorieux
Date: 2009-09-11 16:20:22 +0200 (Fri, 11 Sep 2009)
New Revision: 82
Modified:
test_rstedit/src/site/rst/index.rst
Log:
New_rst
Modified: test_rstedit/src/site/rst/index.rst
===================================================================
--- test_rstedit/src/site/rst/index.rst 2009-09-11 14:20:02 UTC (rev 81)
+++ test_rstedit/src/site/rst/index.rst 2009-09-11 14:20:22 UTC (rev 82)
@@ -1 +1 @@
-test suppr file
\ No newline at end of file
+retest
\ No newline at end of file
1
0
Author: glorieux
Date: 2009-09-11 16:20:02 +0200 (Fri, 11 Sep 2009)
New Revision: 81
Modified:
test_rstedit/src/site/rst/index.rst
Log:
New_rst
Modified: test_rstedit/src/site/rst/index.rst
===================================================================
--- test_rstedit/src/site/rst/index.rst 2009-09-11 14:17:42 UTC (rev 80)
+++ test_rstedit/src/site/rst/index.rst 2009-09-11 14:20:02 UTC (rev 81)
@@ -1 +1 @@
-test login mail
\ No newline at end of file
+test suppr file
\ No newline at end of file
1
0
Author: echatellier
Date: 2009-09-11 16:17:42 +0200 (Fri, 11 Sep 2009)
New Revision: 80
Modified:
test_rstedit/src/site/rst/index.rst
Log:
New_rst
Modified: test_rstedit/src/site/rst/index.rst
===================================================================
--- test_rstedit/src/site/rst/index.rst 2009-09-11 14:13:28 UTC (rev 79)
+++ test_rstedit/src/site/rst/index.rst 2009-09-11 14:17:42 UTC (rev 80)
@@ -1,68 +1 @@
-=================================
-Parseur reStructuredText : le JRst
-==================================
-
-Présentation
-------------
-
-Le format reStructuredText est un format de description de documents. A l'image
-d'autres LaTeX ou DocBook, il peut être décliné en une multitude de formats. Ces
-formats souffrent habituellement d'une syntaxe envahissante qui, si elle est
-nécessaire pour des documents tr�?s spécifiques, devient gênante quand il s'agit
-de créer rapidement un document pas trop complexe. RST dispose quant � lui d'une
-syntaxe tellement simple qu'elle en devient presque invisible.
-
-JRST est un parseur RST en Java permettant de créer une représentation en arbre
-d'un document. Il devient alors facile de générer une représentation du document
-vers différents formats.
-
-
-Usage
------
-
-Le parser JRST prend un fichier reStructuredText en entré et gén�?re un fichier XML
-qui pourra ensuite servir � produire divers formats de fichiers grâce � des fichiers
-XSL de générations. Les formats de sortie disponibles sont le html, le xhtml, le rst,
-le pdf, le docbook, le odt (Open-Office), le rtf, ou encore le XML.
-
-::
-
- JRST myfile.rst
-
-Cette commande aura pour effet de convertir le fichier myfile.rst en XML qui sera affiché sur la sortie standard (console).
-Plusieurs options sont disponibles :
-
--o file,--outFile=file pour rediriger la sortie vers un fichier.
--t format,--outType format pour préciser un format de sortie, donc utiliser un ou des fichiers XSL de génération.
- Plusieurs formats sont disponibles xhtml, docbook, xml, html, xdoc, rst, pdf, odt, rtf.
--x xslFile,--xslFile xslFile sert � préciser le fichier xsl de génération � utiliser.
---force forcer l'écriture d'un fichier, si le fichier de sortie existe, il sera remplacé.
---help pour afficher les options disponibles :
-
-
-::
-
- Usage: [options] FILE
- [--force] : overwrite existing out file
- [--help] : display this help and exit
- [--outFile -o value] : Output file
- [--outType -t /xhtml|docbook|xml|html|xdoc|rst/] : Output type
- [--xslFile -x value] : XSL file list to apply, comma separated
-
-Note : Seul les formats html, xhtml, DocBook, xdoc et pdf sont disponible pour le moment.
-
-ex :
-
-::
-
- JRST --force -t html -o myfile.html myfile.rst
-
-Cette commande produira un fichier html (myfile.html) � partir du fichier reStructuredText_ (myfile.rst)
-même si myfile.html existe déj� .
-
-
-Plugin Maven
-------------
-
-Un plugin Maven est disponible � l'adresse suivante http://jrst.labs.libre-entreprise.org/maven-jrst-plugin.
-Il permet l'utilisation depuis Maven de JRst.
\ No newline at end of file
+test login mail
\ No newline at end of file
1
0
Author: glorieux
Date: 2009-09-11 16:13:28 +0200 (Fri, 11 Sep 2009)
New Revision: 79
Modified:
test_rstedit/src/site/rst/index.rst
Log:
New_rst
Modified: test_rstedit/src/site/rst/index.rst
===================================================================
--- test_rstedit/src/site/rst/index.rst 2009-09-11 13:56:50 UTC (rev 78)
+++ test_rstedit/src/site/rst/index.rst 2009-09-11 14:13:28 UTC (rev 79)
@@ -1 +1,68 @@
-retest login
\ No newline at end of file
+=================================
+Parseur reStructuredText : le JRst
+==================================
+
+Présentation
+------------
+
+Le format reStructuredText est un format de description de documents. A l'image
+d'autres LaTeX ou DocBook, il peut être décliné en une multitude de formats. Ces
+formats souffrent habituellement d'une syntaxe envahissante qui, si elle est
+nécessaire pour des documents tr�?s spécifiques, devient gênante quand il s'agit
+de créer rapidement un document pas trop complexe. RST dispose quant � lui d'une
+syntaxe tellement simple qu'elle en devient presque invisible.
+
+JRST est un parseur RST en Java permettant de créer une représentation en arbre
+d'un document. Il devient alors facile de générer une représentation du document
+vers différents formats.
+
+
+Usage
+-----
+
+Le parser JRST prend un fichier reStructuredText en entré et gén�?re un fichier XML
+qui pourra ensuite servir � produire divers formats de fichiers grâce � des fichiers
+XSL de générations. Les formats de sortie disponibles sont le html, le xhtml, le rst,
+le pdf, le docbook, le odt (Open-Office), le rtf, ou encore le XML.
+
+::
+
+ JRST myfile.rst
+
+Cette commande aura pour effet de convertir le fichier myfile.rst en XML qui sera affiché sur la sortie standard (console).
+Plusieurs options sont disponibles :
+
+-o file,--outFile=file pour rediriger la sortie vers un fichier.
+-t format,--outType format pour préciser un format de sortie, donc utiliser un ou des fichiers XSL de génération.
+ Plusieurs formats sont disponibles xhtml, docbook, xml, html, xdoc, rst, pdf, odt, rtf.
+-x xslFile,--xslFile xslFile sert � préciser le fichier xsl de génération � utiliser.
+--force forcer l'écriture d'un fichier, si le fichier de sortie existe, il sera remplacé.
+--help pour afficher les options disponibles :
+
+
+::
+
+ Usage: [options] FILE
+ [--force] : overwrite existing out file
+ [--help] : display this help and exit
+ [--outFile -o value] : Output file
+ [--outType -t /xhtml|docbook|xml|html|xdoc|rst/] : Output type
+ [--xslFile -x value] : XSL file list to apply, comma separated
+
+Note : Seul les formats html, xhtml, DocBook, xdoc et pdf sont disponible pour le moment.
+
+ex :
+
+::
+
+ JRST --force -t html -o myfile.html myfile.rst
+
+Cette commande produira un fichier html (myfile.html) � partir du fichier reStructuredText_ (myfile.rst)
+même si myfile.html existe déj� .
+
+
+Plugin Maven
+------------
+
+Un plugin Maven est disponible � l'adresse suivante http://jrst.labs.libre-entreprise.org/maven-jrst-plugin.
+Il permet l'utilisation depuis Maven de JRst.
\ No newline at end of file
1
0