package com.azimo.tool.task; import com.azimo.tool.firebase.FirebaseServiceManager; import com.azimo.tool.firebase.collection.ReportedReviewsCollection; import com.azimo.tool.publisher.collection.ReviewCollection; import com.azimo.tool.task.base.ReviewReporterTask; import com.azimo.tool.task.provider.UnreportedReviewsProvider; import com.azimo.tool.task.uploader.FirebaseReviewsUploader; import com.azimo.tool.task.uploader.SlackUploader; /** * Created by F1sherKK on 25/01/17. */ public class ReportToSlackTask extends ReviewReporterTask { private static final String TAG = "ReportToSlackTask:"; private FirebaseServiceManager firebaseServiceManager; private UnreportedReviewsProvider unreportedReviewsProvider; private SlackUploader slackUploader; private FirebaseReviewsUploader firebaseReviewsUploader; public ReportToSlackTask(UnreportedReviewsProvider unreportedReviewsProvider, SlackUploader slackUploader, FirebaseServiceManager firebaseServiceManager, FirebaseReviewsUploader firebaseReviewsUploader) { this.unreportedReviewsProvider = unreportedReviewsProvider; this.slackUploader = slackUploader; this.firebaseServiceManager = firebaseServiceManager; this.firebaseReviewsUploader = firebaseReviewsUploader; System.out.println("ReportToSlackTask runs!"); } @Override public void run() throws Exception { attemptToSendReviewsToSlack(); } private void attemptToSendReviewsToSlack() throws Exception { System.out.println(TAG + "Attempts to report reviews to Slack."); ReviewCollection unreportedReviews = unreportedReviewsProvider.fetch(); System.out.println(TAG + "There are " + unreportedReviews.size() + " unreported reviews."); ReportedReviewsCollection reportedToSlackReviewsRecently = slackUploader.upload(unreportedReviews); System.out.println(TAG + "Sent " + reportedToSlackReviewsRecently.size() + " reviews as Slack messages."); ReportedReviewsCollection reportedToSlackReviewsAllTime = firebaseServiceManager.getReportedReviews(); reportedToSlackReviewsAllTime.addAll(reportedToSlackReviewsRecently); firebaseReviewsUploader.upload(reportedToSlackReviewsAllTime); System.out.println(TAG + "Updated Firebase with reviews ids."); System.out.println(TAG + "Finished work.\n"); } }