package com.azimo.tool.task;
import com.azimo.tool.firebase.FirebaseServiceManager;
import com.azimo.tool.firebase.collection.CreatedIssueCollection;
import com.azimo.tool.publisher.collection.ReviewCollection;
import com.azimo.tool.task.base.ReviewReporterTask;
import com.azimo.tool.task.provider.UncreatedIssuesProvider;
import com.azimo.tool.task.uploader.FirebaseIssuesUploader;
import com.azimo.tool.task.uploader.JiraUploader;
/**
* Created by F1sherKK on 25/01/17.
*/
public class CreateJiraIssuesTask extends ReviewReporterTask {
private static final String TAG = "CreateJiraIssuesTask:";
private FirebaseServiceManager firebaseServiceManager;
private UncreatedIssuesProvider uncreatedIssuesProvider;
private JiraUploader jiraUploader;
private FirebaseIssuesUploader firebaseIssuesUploader;
public CreateJiraIssuesTask(UncreatedIssuesProvider uncreatedIssuesProvider,
JiraUploader jiraUploader,
FirebaseServiceManager firebaseServiceManager,
FirebaseIssuesUploader firebaseIssuesUploader) {
this.uncreatedIssuesProvider = uncreatedIssuesProvider;
this.jiraUploader = jiraUploader;
this.firebaseServiceManager = firebaseServiceManager;
this.firebaseIssuesUploader = firebaseIssuesUploader;
System.out.println("CreateJiraIssuesTask runs!");
}
@Override
public void run() throws Exception {
attemptToCreateJiraIssues();
}
private void attemptToCreateJiraIssues() throws Exception {
System.out.println(TAG + "Attempts to create Jira issues.");
ReviewCollection reviewsWithoutIssuesCreated = uncreatedIssuesProvider.fetch();
ReviewCollection notReportedReviewsWithThreeOrLessStars = reviewsWithoutIssuesCreated.getWithMinThreeStars();
System.out.println(TAG + "There are " + notReportedReviewsWithThreeOrLessStars.size()
+ " reviews, with three stars or less, without Jira issue created.");
CreatedIssueCollection createdIssuesRecently = jiraUploader.upload(notReportedReviewsWithThreeOrLessStars);
System.out.println(TAG + "Created " + createdIssuesRecently.size() + " Jira issues.");
CreatedIssueCollection createdIssuesAllTime = firebaseServiceManager.getCreatedIssues();
createdIssuesAllTime.addAll(createdIssuesRecently);
firebaseIssuesUploader.upload(createdIssuesAllTime);
System.out.println(TAG + "Updated Firebase with reviews ids.");
System.out.println(TAG + "Finished work.\n");
}
}