Report.java
package taskfusion.domain;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import taskfusion.helpers.DateHelper;
import taskfusion.exceptions.NotFoundException;
import taskfusion.exceptions.OperationNotAllowedException;
import taskfusion.viewModels.ReportViewModel;
public class Report implements ConvertibleToViewModelInterface {
private String title;
private String projectNumber;
private Employee projectLeader;
private Map<String, Employee> employees = new HashMap<>();
private String customer;
private List<ProjectActivity> activities = new ArrayList<>();
private Calendar reportDate;
public Report(Project project, Calendar date, Employee employee) throws NotFoundException, OperationNotAllowedException {
this.reportDate = date;
this.title = project.getProjectTitle();
this.projectNumber = project.getProjectNumber();
this.projectLeader = project.getProjectLeader();
this.employees = project.getAssignedEmployees();
this.customer = project.getCustomer();
this.activities = project.getActivities();
if(project.getProjectLeader() == null){
throw new NotFoundException("Projektet mangler en projektleder for at genererer rapporter");
}
if (!employee.getInitials().equals(projectLeader.getInitials())) {
throw new OperationNotAllowedException("Kun projektlederen kan generere rapporter");
}
}
@Override
public ReportViewModel toViewModel() {
return new ReportViewModel(this);
}
public String getTitle() {
return title;
}
public String getProjectNumber() {
return projectNumber;
}
public Employee getProjectLeader() {
return projectLeader;
}
public Map<String, Employee> getEmployees() {
return employees;
}
public Employee getEmployee(String initials) {
return employees.get(initials);
}
public String getCustomer() {
return customer;
}
public List<ProjectActivity> getActivities() {
return activities;
}
public Calendar getReportDate() {
return reportDate;
}
public String getDateAsString() {
return DateHelper.getDateAsString(reportDate);
}
public void saveReport(String saveDirectory) throws IOException, URISyntaxException {
new ReportPDFGenerator(this).save(saveDirectory);
}
}