Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package stuff;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.text.MessageFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.LinkedHashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import org.apache.commons.csv.CSVFormat;
- import org.apache.commons.csv.CSVPrinter;
- import org.apache.commons.lang3.time.DateUtils;
- import com.taskadapter.redmineapi.Include;
- import com.taskadapter.redmineapi.RedmineException;
- import com.taskadapter.redmineapi.RedmineManager;
- import com.taskadapter.redmineapi.RedmineManagerFactory;
- import com.taskadapter.redmineapi.bean.Issue;
- import com.taskadapter.redmineapi.bean.Journal;
- import com.taskadapter.redmineapi.bean.JournalDetail;
- import com.taskadapter.redmineapi.internal.ResultsWrapper;
- public class Change3 {
- static String[] toStringArray(IssueBean bean) {
- return new String[] { String.valueOf(bean.getProject_id()), String.valueOf(bean.getIssue_id()),
- bean.getStatus_id(), bean.getAssinged_to_id(), bean.getSubject() };
- }
- static void saveIssueInTheCollection(Issue issueToBeSaved, Set<IssueBean> set) {
- IssueBean p = new IssueBean();
- p.setProject_id(issueToBeSaved.getProjectId());
- p.setIssue_id(issueToBeSaved.getId());
- p.setSubject(issueToBeSaved.getSubject());
- p.setStatus_id(issueToBeSaved.getStatusName());
- p.setAssinged_to_id(issueToBeSaved.getAssigneeName());
- set.add(p);
- }
- static void filterIssues(RedmineManager mgr, Set<IssueBean> setWithIssues, Date filterDate,
- ResultsWrapper<Issue> result, String nameOfUpdate) throws RedmineException {
- for (Issue issue : result.getResults()) {
- Issue filteredIssue = mgr.getIssueManager().getIssueById(issue.getId(), Include.journals);
- if (!filteredIssue.getJournals().isEmpty()) {
- boolean hasStatusId = false;
- Date mostRecentUpdate = new Date(0L);
- for (Journal journal : filteredIssue.getJournals()) {
- for (JournalDetail details : journal.getDetails()) {
- if (details.getName().equals(nameOfUpdate)) {
- hasStatusId = true;
- if (mostRecentUpdate.before(journal.getCreatedOn())) {
- mostRecentUpdate = journal.getCreatedOn();
- }
- }
- }
- }
- if (!mostRecentUpdate.equals(new Date(0L)) && mostRecentUpdate.before(filterDate)) {
- saveIssueInTheCollection(filteredIssue, setWithIssues);
- }
- if (!hasStatusId) {
- for (Journal journal : filteredIssue.getJournals()) {
- for (JournalDetail details : journal.getDetails()) {
- if (filteredIssue.getCreatedOn().before(filterDate)) {
- saveIssueInTheCollection(filteredIssue, setWithIssues);
- }
- }
- if (journal.getNotes() != null && filteredIssue.getCreatedOn().before(filterDate)) {
- saveIssueInTheCollection(filteredIssue, setWithIssues);
- }
- }
- }
- } else if (filteredIssue.getCreatedOn().before(filterDate)) {
- saveIssueInTheCollection(filteredIssue, setWithIssues);
- }
- }
- }
- private static final String NEW_LINE_SEPARATOR = "\n";
- private static final Object[] FILE_HEADER = { "project_id", "issue_id", "status_id", "assigned_to", "subject" };
- public static void main(String[] args) throws RedmineException {
- String status_id = args[0];
- String project_id = args[1];
- String daysFromToday = args[2];
- String nameOfUpdate = args[3];
- org.apache.log4j.BasicConfigurator.configure();
- String uri = "http://projects.westum.com";
- String login = "hvoynova";
- String password = "gorillaz88";
- RedmineManager mgr = RedmineManagerFactory.createWithUserAuth(uri, login, password);
- final Map<String, String> params = new HashMap<>();
- params.put("project_id", project_id);
- params.put("status_id", status_id);
- Set<IssueBean> setWithIssues = new LinkedHashSet<>();
- Date filterDate = DateUtils.addDays(new Date(), Integer.parseInt(daysFromToday));
- ResultsWrapper<Issue> result = mgr.getIssueManager().getIssues(params);
- int count = result.getTotalFoundOnServer();
- int n = ((count / 100) + 1);
- params.put("limit", Integer.toString(100));
- filterIssues(mgr, setWithIssues, filterDate, result, nameOfUpdate);
- for(int i=1;i<n;i++){
- params.put("limit", Integer.toString(100));
- params.put("offset", Integer.toString(100));
- ResultsWrapper<Issue> results = mgr.getIssueManager().getIssues(params);
- filterIssues(mgr, setWithIssues, filterDate, results, nameOfUpdate);
- }
- CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR);
- List<String[]> listForPrinting = new ArrayList<>();
- for (IssueBean issueBean : setWithIssues) {
- listForPrinting.add(toStringArray(issueBean));
- }
- try (FileWriter fileWriter = new FileWriter("exported.csv");
- CSVPrinter csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat)) {
- csvFilePrinter.printRecord(FILE_HEADER);
- csvFilePrinter.printRecords(listForPrinting);
- csvFilePrinter.flush();
- } catch (IOException e) {
- System.out.println(MessageFormat.format("There was a mistake", e));
- }
- System.out.print(setWithIssues.toString());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement