Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.08 KB | None | 0 0
  1. package stuff;
  2.  
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.text.MessageFormat;
  6. import java.util.ArrayList;
  7. import java.util.Date;
  8. import java.util.HashMap;
  9.  
  10. import java.util.LinkedHashSet;
  11. import java.util.List;
  12. import java.util.Map;
  13. import java.util.Set;
  14.  
  15. import org.apache.commons.csv.CSVFormat;
  16. import org.apache.commons.csv.CSVPrinter;
  17. import org.apache.commons.lang3.time.DateUtils;
  18.  
  19. import com.taskadapter.redmineapi.Include;
  20. import com.taskadapter.redmineapi.RedmineException;
  21. import com.taskadapter.redmineapi.RedmineManager;
  22. import com.taskadapter.redmineapi.RedmineManagerFactory;
  23. import com.taskadapter.redmineapi.bean.Issue;
  24. import com.taskadapter.redmineapi.bean.Journal;
  25. import com.taskadapter.redmineapi.bean.JournalDetail;
  26. import com.taskadapter.redmineapi.internal.ResultsWrapper;
  27.  
  28. public class Change3 {
  29.     static String[] toStringArray(IssueBean bean) {
  30.         return new String[] { String.valueOf(bean.getProject_id()), String.valueOf(bean.getIssue_id()),
  31.                 bean.getStatus_id(), bean.getAssinged_to_id(), bean.getSubject() };
  32.     }
  33.  
  34.     static void saveIssueInTheCollection(Issue issueToBeSaved, Set<IssueBean> set) {
  35.         IssueBean p = new IssueBean();
  36.         p.setProject_id(issueToBeSaved.getProjectId());
  37.         p.setIssue_id(issueToBeSaved.getId());
  38.         p.setSubject(issueToBeSaved.getSubject());
  39.         p.setStatus_id(issueToBeSaved.getStatusName());
  40.         p.setAssinged_to_id(issueToBeSaved.getAssigneeName());
  41.         set.add(p);
  42.     }
  43.  
  44.     static void filterIssues(RedmineManager mgr, Set<IssueBean> setWithIssues, Date filterDate,
  45.             ResultsWrapper<Issue> result, String nameOfUpdate) throws RedmineException {
  46.  
  47.         for (Issue issue : result.getResults()) {
  48.             Issue filteredIssue = mgr.getIssueManager().getIssueById(issue.getId(), Include.journals);
  49.  
  50.             if (!filteredIssue.getJournals().isEmpty()) {
  51.                 boolean hasStatusId = false;
  52.                 Date mostRecentUpdate = new Date(0L);
  53.                 for (Journal journal : filteredIssue.getJournals()) {
  54.                     for (JournalDetail details : journal.getDetails()) {
  55.                         if (details.getName().equals(nameOfUpdate)) {
  56.                             hasStatusId = true;
  57.  
  58.                             if (mostRecentUpdate.before(journal.getCreatedOn())) {
  59.                                 mostRecentUpdate = journal.getCreatedOn();
  60.                             }
  61.  
  62.                         }
  63.                     }
  64.                 }
  65.                 if (!mostRecentUpdate.equals(new Date(0L)) && mostRecentUpdate.before(filterDate)) {
  66.                     saveIssueInTheCollection(filteredIssue, setWithIssues);
  67.                 }
  68.  
  69.                 if (!hasStatusId) {
  70.                     for (Journal journal : filteredIssue.getJournals()) {
  71.                         for (JournalDetail details : journal.getDetails()) {
  72.                             if (filteredIssue.getCreatedOn().before(filterDate)) {
  73.                                 saveIssueInTheCollection(filteredIssue, setWithIssues);
  74.                             }
  75.                         }
  76.                         if (journal.getNotes() != null && filteredIssue.getCreatedOn().before(filterDate)) {
  77.                             saveIssueInTheCollection(filteredIssue, setWithIssues);
  78.                         }
  79.                     }
  80.                 }
  81.  
  82.             } else if (filteredIssue.getCreatedOn().before(filterDate)) {
  83.                 saveIssueInTheCollection(filteredIssue, setWithIssues);
  84.             }
  85.         }
  86.  
  87.     }
  88.  
  89.     private static final String NEW_LINE_SEPARATOR = "\n";
  90.     private static final Object[] FILE_HEADER = { "project_id", "issue_id", "status_id", "assigned_to", "subject" };
  91.  
  92.     public static void main(String[] args) throws RedmineException {
  93.         String status_id = args[0];
  94.         String project_id = args[1];
  95.         String daysFromToday = args[2];
  96.         String nameOfUpdate = args[3];
  97.  
  98.         org.apache.log4j.BasicConfigurator.configure();
  99.         String uri = "http://projects.westum.com";
  100.         String login = "hvoynova";
  101.         String password = "gorillaz88";
  102.  
  103.         RedmineManager mgr = RedmineManagerFactory.createWithUserAuth(uri, login, password);
  104.  
  105.         final Map<String, String> params = new HashMap<>();
  106.         params.put("project_id", project_id);
  107.         params.put("status_id", status_id);
  108.  
  109.         Set<IssueBean> setWithIssues = new LinkedHashSet<>();
  110.  
  111.         Date filterDate = DateUtils.addDays(new Date(), Integer.parseInt(daysFromToday));
  112.  
  113.         ResultsWrapper<Issue> result = mgr.getIssueManager().getIssues(params);
  114.         int count = result.getTotalFoundOnServer();
  115.         int n = ((count / 100) + 1);
  116.         params.put("limit", Integer.toString(100));
  117.         filterIssues(mgr, setWithIssues, filterDate, result, nameOfUpdate);
  118.        
  119.         for(int i=1;i<n;i++){
  120.         params.put("limit", Integer.toString(100));
  121.         params.put("offset", Integer.toString(100));
  122.         ResultsWrapper<Issue> results = mgr.getIssueManager().getIssues(params);
  123.         filterIssues(mgr, setWithIssues, filterDate, results, nameOfUpdate);
  124.         }
  125.        
  126.         CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR);
  127.  
  128.         List<String[]> listForPrinting = new ArrayList<>();
  129.         for (IssueBean issueBean : setWithIssues) {
  130.             listForPrinting.add(toStringArray(issueBean));
  131.         }
  132.         try (FileWriter fileWriter = new FileWriter("exported.csv");
  133.                 CSVPrinter csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat)) {
  134.             csvFilePrinter.printRecord(FILE_HEADER);
  135.             csvFilePrinter.printRecords(listForPrinting);
  136.             csvFilePrinter.flush();
  137.         } catch (IOException e) {
  138.             System.out.println(MessageFormat.format("There was a mistake", e));
  139.         }
  140.  
  141.         System.out.print(setWithIssues.toString());
  142.     }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement