package husacct.validate.task.imexporting;
import husacct.common.enums.ExtensionTypes;
import husacct.validate.domain.exception.FileNotAccessibleException;
import husacct.validate.domain.validation.Violation;
import husacct.validate.domain.validation.ViolationHistory;
import husacct.validate.task.TaskServiceImpl;
import husacct.validate.task.imexporting.reporting.ExportReportFactory;
import java.io.File;
import java.io.IOException;
import java.util.AbstractMap.SimpleEntry;
import java.util.Calendar;
import java.util.List;
import org.jdom2.Document;
public class ReportService {
private final ExportReportFactory reportFactory;
private final TaskServiceImpl taskServiceImpl;
public ReportService(TaskServiceImpl taskServiceImpl) {
this.reportFactory = new ExportReportFactory(taskServiceImpl);
this.taskServiceImpl = taskServiceImpl;
}
public String[] getExportExtentions() {
return ExtensionTypes.getExtensionTypes();
}
public void createReport(File file, String fileType) {
try {
if (file.createNewFile()) {
reportFactory.exportReport(fileType, taskServiceImpl.getAllViolations(), file.getName(), file.getParent(), taskServiceImpl.getAllSeverities());
return;
}
} catch (IOException e) {
throw new FileNotAccessibleException(file);
}
throw new FileNotAccessibleException(file);
}
public void createReport(File file, String fileType, Calendar date) {
try {
if (file.createNewFile()) {
ViolationHistory violationHistory = taskServiceImpl.getViolationHistoryByDate(date);
reportFactory.exportReport(fileType, new SimpleEntry<Calendar, List<Violation>>(violationHistory.getDate(), violationHistory.getViolations()), file.getName(), file.getParent(), violationHistory.getSeverities());
return;
}
} catch (IOException e) {
throw new FileNotAccessibleException(file);
}
throw new FileNotAccessibleException(file);
}
public Document createAllViolationsXmlDocument(SimpleEntry<Calendar, List<Violation>> violations) {
Document document = reportFactory.createAllViolationsXmlDocument(violations, taskServiceImpl.getAllSeverities());
return document;
}
}