package org.softlang.company.features; import org.softlang.company.features.tokens.AddressToken; import org.softlang.company.features.tokens.EmployeesToken; import org.softlang.company.features.tokens.ManagerToken; import org.softlang.company.features.tokens.NameToken; import org.softlang.company.features.tokens.SalaryToken; import org.softlang.company.model.Company; import org.softlang.company.model.Department; import org.softlang.company.model.Employee; public class CompanyBuilder { public static Company company(NameToken name, Department... departments) { Company company = new Company(); company.setName(name.getValue()); for (Department department : departments) { company.getDepts().add(department); } return company; } public static Department department(NameToken name, ManagerToken manager, EmployeesToken employees, Department... subDepartments) { Department department = new Department(); department.setName(name.getValue()); department.setManager(manager.getValue()); for(Employee employee : employees.getValue()){ department.getEmployees().add(employee); } for(Department depts : subDepartments){ department.getSubdepts().add(depts); } return department; } public static Employee employee(NameToken name, AddressToken address, SalaryToken salary){ Employee employee = new Employee(); employee.setName(name.getValue()); employee.setAddress(address.getValue()); employee.setSalary(salary.getValue()); return employee; } public static AddressToken address(String value){ return new AddressToken(value); } public static SalaryToken salary(double value){ return new SalaryToken(value); } public static ManagerToken manager(NameToken name, AddressToken address, SalaryToken salary) { return new ManagerToken(employee(name, address, salary)) ; } public static ManagerToken manager(Employee employee) { return new ManagerToken(employee); } public static NameToken name(String name) { return new NameToken(name); } public static EmployeesToken employees(Employee... employees) { return new EmployeesToken(employees); } }