Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions src/oops/SOLID/singleResponsibilityPrinciple/after/Employee.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package oops.SOLID.singleResponsibilityPrinciple.after;

/*
Models an employee form a business perspective
*/
public abstract class Employee {
private String firstName;
private String lastName;
private int monthlyIncome;
private int nbHoursPerWeek;

public Employee(String fullName, int monthlyIncome){
setMonthlyIncome(monthlyIncome);

String[] names = fullName.split(" ");
this.firstName = names[0];
this.lastName = names[1];
}

public String getEmail() {
return this.firstName + "." +
this.lastName +
"@globomanticshr.com";
}

@Override
public String toString() {
return this.firstName + " " +
this.lastName + " - " +
this.monthlyIncome;
}

public int getMonthlyIncome() {
return monthlyIncome;
}

public void setMonthlyIncome(int monthlyIncome) {
if(monthlyIncome < 0){
throw new IllegalArgumentException("Income must be positive");
}

this.monthlyIncome = monthlyIncome;
}

public int getNbHoursPerWeek() {
return nbHoursPerWeek;
}

public void setNbHoursPerWeek(int nbHoursPerWeek) {
if(nbHoursPerWeek <= 0){
throw new IllegalArgumentException("Income must be positive");
}

this.nbHoursPerWeek = nbHoursPerWeek;
}

public String getFullName(){
return this.firstName + " " + this.lastName;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package oops.SOLID.singleResponsibilityPrinciple.after;

import java.util.Arrays;
import java.util.List;

public class EmployeeRepository {

public List<Employee> findAll(){

// Employees are kept in memory for simplicity
Employee anna = new FullTimeEmployee("Anna Smith", 2000);
Employee billy = new FullTimeEmployee("Billy Leech", 920);

Employee steve = new PartTimeEmployee("Steve Jones", 800);
Employee magda = new PartTimeEmployee("Magda Iovan", 920);

return Arrays.asList(anna, billy, steve, magda);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package oops.SOLID.singleResponsibilityPrinciple.after;

public class FullTimeEmployee extends Employee {
public FullTimeEmployee(String fullName, int monthlyIncome) {
super(fullName, monthlyIncome);
this.setNbHoursPerWeek(40);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package oops.SOLID.singleResponsibilityPrinciple.after;

public class PartTimeEmployee extends Employee {
public PartTimeEmployee(String fullName, int monthlyIncome) {
super(fullName, monthlyIncome);
this.setNbHoursPerWeek(20);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package oops.SOLID.singleResponsibilityPrinciple.after;

import java.util.List;

public class SaveEmployeesMain {
public static void main(String[] args) {
// Grab employees
EmployeeRepository repository = new EmployeeRepository();
SaveToDisk util = new SaveToDisk();
List<Employee> employees = repository.findAll();

// Save all
for (Employee e : employees){
util.saveEmployee(e);
}
}
}
40 changes: 40 additions & 0 deletions src/oops/SOLID/singleResponsibilityPrinciple/after/SaveToDisk.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package oops.SOLID.singleResponsibilityPrinciple.after;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class SaveToDisk{
public void saveEmployee(Employee employee){
try {
StringBuilder employeeFileDetails = saveEmployeeHelper(employee);
Path path = Paths.get(employee.getFullName()
.replace(" ","_") + ".rec");
Files.write(path, employeeFileDetails.toString().getBytes());

System.out.println("Saved employee " + employee.toString());
} catch (IOException e){
System.out.println("ERROR: Could not save employee. " + e);
}
}
private StringBuilder saveEmployeeHelper(Employee employee){
StringBuilder sb = new StringBuilder();
String [] fullName = employee.getFullName().split(" ");
sb.append("### EMPLOYEE RECORD ####");
sb.append(System.lineSeparator());
sb.append("NAME: ");
sb.append(fullName[0] + " " + fullName[1]);
sb.append(System.lineSeparator());
sb.append("POSITION: ");
sb.append(employee.getClass().getTypeName());
sb.append(System.lineSeparator());
sb.append("EMAIL: ");
sb.append(employee.getEmail());
sb.append(System.lineSeparator());
sb.append("MONTHLY WAGE: ");
sb.append(employee.getMonthlyIncome());
sb.append(System.lineSeparator());
return sb;
}
}