package org.jboss.seam.rest.examples.client.tasks;
import java.util.List;
import java.util.Map;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.jboss.solder.logging.Logger;
import org.jboss.seam.rest.client.RestClient;
import org.jboss.seam.rest.examples.client.ConnectionException;
import org.jboss.seam.rest.examples.client.tasks.spi.ReportResultEvent;
/**
* Loads Seam Tasks's Categories and Tasks and fires an event for each of these objects for analyzers to be able to process
* statistics.
*
* @author <a href="http://community.jboss.org/people/jharting">Jozef Hartinger</a>
*/
@Singleton
public class SeamTasksAction {
private static final Logger log = Logger.getLogger(SeamTasksAction.class);
@Inject
@RestClient("http://localhost:8080/rest-tasks")
private SeamTasksService service;
@Inject
private BeanManager manager;
private ReportResultEvent reportResultEvent = new ReportResultEvent();
public void loadStatistics() {
reportResultEvent.clear();
List<Category> categories;
List<Task> tasksResponse;
try {
categories = service.getCategories(0, 0);
tasksResponse = service.getTasks("all", 0, 0);
} catch (Exception e) {
log.error(e.getMessage());
throw new ConnectionException(e);
}
for (Category category : categories) {
manager.fireEvent(category);
}
for (Task task : tasksResponse) {
manager.fireEvent(task);
}
manager.fireEvent(reportResultEvent);
}
public String[][] getResultArray() {
Map<String, String> result = reportResultEvent.getResults();
String[][] resultArray = new String[result.size()][2];
int i = 0;
for (Map.Entry<String, String> entry : result.entrySet()) {
resultArray[i] = new String[]{entry.getKey(), entry.getValue()};
}
return resultArray;
}
public Map<String, String> getResult() {
return reportResultEvent.getResults();
}
}