/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.aspose.words.maven.utils;
import java.util.ArrayList;
import java.util.List;
import org.netbeans.api.progress.aggregate.AggregateProgressFactory;
import org.netbeans.api.progress.aggregate.AggregateProgressHandle;
import org.netbeans.api.progress.aggregate.ProgressContributor;
/**
* @author Adeel Ilyas <adeel.ilyas@aspose.com>
*/
public class TasksExecutor {
private final List<AbstractTask> tasks = new ArrayList<>();
private final String tasksName;
/**
*
* @param tasksName
*/
public TasksExecutor(String tasksName) {
this.tasksName = tasksName;
}
/**
*
* @param task
*/
public void addNewTask(AbstractTask task) {
tasks.add(task);
}
/**
* Clears added tasks
*/
public void clearTasks() {
tasks.clear();
}
/**
*
* @return boolean
*/
public boolean areThereTasks() {
return !tasks.isEmpty();
}
/**
* Executes Added Abstract Tasks
*/
public void processTasks() {
ProgressContributor cps[] = new ProgressContributor[tasks.size()];
int i = 0;
for (AbstractTask task : tasks) {
cps[i] = task.getProgressContributor();
i++;
}
AggregateProgressHandle aph = AggregateProgressFactory.createHandle(tasksName, cps, null, null);
aph.start();
for (AbstractTask task : tasks) {
task.start();
try {
task.join();
} catch (InterruptedException ie) {
}
}
}
}