Skip to content

Commit 54c3669

Browse files
committed
MockDataGenerator part1
1 parent 00d0e90 commit 54c3669

File tree

8 files changed

+153
-4
lines changed

8 files changed

+153
-4
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
<artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
8686
<version>2.1.0</version>
8787
</dependency>
88+
<dependency>
89+
<groupId>com.github.javafaker</groupId>
90+
<artifactId>javafaker</artifactId>
91+
<version>1.0.2</version>
92+
</dependency>
8893
</dependencies>
8994
<build>
9095
<plugins>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.skia.lab.Components;
2+
3+
import org.springframework.boot.context.event.ApplicationReadyEvent;
4+
import org.springframework.context.ApplicationListener;
5+
import org.springframework.stereotype.Component;
6+
7+
@Component
8+
public class ApplicationStartupListener implements ApplicationListener<ApplicationReadyEvent> {
9+
private final MockDataGenerator mockDataGenerator;
10+
11+
public ApplicationStartupListener(MockDataGenerator mockDataGenerator) {
12+
this.mockDataGenerator = mockDataGenerator;
13+
}
14+
15+
@Override
16+
public void onApplicationEvent(ApplicationReadyEvent event) {
17+
mockDataGenerator.generateMockData();
18+
}
19+
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package com.skia.lab.Components;
2+
3+
import java.time.LocalDate;
4+
import java.time.LocalTime;
5+
6+
import org.springframework.stereotype.Component;
7+
8+
import com.github.javafaker.Faker;
9+
import com.skia.lab.models.usecase.AbsenceType;
10+
import com.skia.lab.models.usecase.Attendance;
11+
import com.skia.lab.models.usecase.Department;
12+
import com.skia.lab.models.usecase.Employee;
13+
import com.skia.lab.models.usecase.Hire;
14+
import com.skia.lab.repository.usecase.AttendanceRepository;
15+
import com.skia.lab.repository.usecase.DepartmentRepository;
16+
import com.skia.lab.repository.usecase.EmployeeRepository;
17+
import com.skia.lab.repository.usecase.HireRepository;
18+
import com.skia.lab.repository.usecase.PerformanceEvaluationRepository;
19+
import com.skia.lab.repository.usecase.TrainingRepository;
20+
import com.skia.lab.repository.usecase.WageRepository;
21+
22+
@Component
23+
public class MockDataGenerator {
24+
private final EmployeeRepository employeeRepository;
25+
private final DepartmentRepository departmentRepository;
26+
private final HireRepository hireRepository;
27+
private final AttendanceRepository attendanceRepository;
28+
private final PerformanceEvaluationRepository performanceEvaluationRepository;
29+
private final TrainingRepository trainingRepository;
30+
private final WageRepository wageRepository;
31+
private final Faker faker;
32+
33+
public MockDataGenerator(EmployeeRepository employeeRepository,
34+
DepartmentRepository departmentRepository,
35+
HireRepository hireRepository,
36+
AttendanceRepository attendanceRepository,
37+
PerformanceEvaluationRepository performanceEvaluationRepository,
38+
TrainingRepository trainingRepository,
39+
WageRepository wageRepository
40+
) {
41+
this.employeeRepository = employeeRepository;
42+
this.departmentRepository = departmentRepository;
43+
this.hireRepository = hireRepository;
44+
this.attendanceRepository = attendanceRepository;
45+
this.performanceEvaluationRepository = performanceEvaluationRepository;
46+
this.trainingRepository = trainingRepository;
47+
this.wageRepository = wageRepository;
48+
this.faker = new Faker();
49+
}
50+
51+
public void generateMockData() {
52+
53+
if(departmentRepository.count() == 0){
54+
for (int i = 0; i < 5; i++) {
55+
Department department = new Department(faker.name().title());
56+
57+
}
58+
}
59+
60+
if(employeeRepository.count() == 0){
61+
62+
for (int i = 0; i < 20; i++) {
63+
Employee employee = new Employee();
64+
employee.setFirstName(faker.name().firstName());
65+
employee.setLastName(faker.name().lastName());
66+
employee.setBirthDate(LocalDate.now());
67+
employee.setAddress(faker.address().fullAddress());
68+
employee.setPhoneNumber(faker.name().fullName());
69+
employee.setEmail(faker.internet().emailAddress());
70+
71+
// employee.setDepartment(i<10 ? department1 : department2);
72+
employeeRepository.save(employee);
73+
}
74+
}
75+
76+
if(hireRepository.count() == 0){
77+
78+
var e0 =employeeRepository.findById((long)0);
79+
Hire hire0 = new Hire(LocalDate.now(), "Patata"+0, 50000, "commercio", e0.get());
80+
hireRepository.save(hire0);
81+
for (int i = 1; i < 20; i++) {
82+
var e =employeeRepository.findById((long)i);
83+
Hire hire = new Hire(LocalDate.now(), "Sales", 30000, "commercio", e.get());
84+
85+
hireRepository.save(hire);
86+
}
87+
88+
}
89+
if(attendanceRepository.count() == 0){
90+
91+
var e0 =employeeRepository.findById((long)0);
92+
Attendance att0 = new Attendance(LocalDate.of(2023,2,1), LocalTime.of(8,0,0),LocalTime.of(18,0,0), null, e0.get());
93+
attendanceRepository.save(att0);
94+
95+
for (int i = 1; i < 28; i++){
96+
97+
Attendance attX = new Attendance(LocalDate.of(2023,2,1), LocalTime.of(8,0,0),LocalTime.of(18,0,0), null , e0.get());
98+
attX.setAbsenceType(AbsenceType.sickness.ordinal());
99+
attendanceRepository.save(attX);
100+
}
101+
102+
for (int j = 1; j < 20; j++) {
103+
var e =employeeRepository.findById((long)j);
104+
105+
for (int i = 1; i < 28; i++) attendanceRepository.save( new Attendance(LocalDate.of(2023,2,i), LocalTime.of(8,0,0),LocalTime.of(18,0,0), null, e.get()));
106+
107+
}
108+
}
109+
110+
}
111+
}

src/main/java/com/skia/lab/controllers/usecase/EmployeeController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
//@CrossOrigin(origins = "http://localhost:8081")
1616
@RestController
1717
@RequestMapping("/api/employee")
18-
public class EmployeeController {
18+
public class EmployeeController { //Any presentation layer
1919

20+
21+
//if I want separate BusinessLogic from classes/endpoint, I can create a Service //Any service layer class where we have business logic.
2022
@Autowired
2123
EmployeeRepository employeeRepository;
2224

src/main/java/com/skia/lab/models/usecase/Attendance.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
@Table(name = "attendances")
1919
public class Attendance {
2020
@Id
21-
@GeneratedValue(strategy = GenerationType.IDENTITY)
21+
@GeneratedValue(strategy = GenerationType.AUTO)
2222
private Long id;
2323

2424
private LocalDate date;
@@ -43,6 +43,15 @@ public class Attendance {
4343

4444
// Other methods (if needed)
4545

46+
public Attendance(LocalDate date, LocalTime entryTime, LocalTime exitTime, AbsenceType absenceType,
47+
Employee employee) {
48+
this.date = date;
49+
this.entryTime = entryTime;
50+
this.exitTime = exitTime;
51+
this.absenceType = absenceType;
52+
this.employee = employee;
53+
}
54+
4655
/**
4756
* @return Long return the id
4857
*/

src/main/java/com/skia/lab/models/usecase/Employee.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ public Employee(String firstName, String lastName, LocalDate dateOfBirth, String
4747

4848
// Getters and Setters
4949

50+
public Employee() {
51+
}
52+
5053
public Long getId() {
5154
return id;
5255
}

src/main/java/com/skia/lab/repository/usecase/EmployeeRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import com.skia.lab.models.usecase.Employee;
1111

12-
@Repository
12+
@Repository //Any persistent layer which is going to communicate with the database
1313
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
1414

1515
@Query("SELECT e FROM Employee e WHERE e.manager.id = :managerId")

src/main/java/com/skia/lab/security/WebSecurityConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
9595
.authorizeHttpRequests().requestMatchers("/api/auth/**").permitAll()
9696
.requestMatchers("/api/test/**").permitAll()
9797
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()
98-
.anyRequest().authenticated();
98+
.anyRequest().permitAll();//.authenticated();
9999
http.authenticationProvider(authenticationProvider());
100100

101101
http.addFilterBefore(authenticationJwtTokenFilter(), UsernamePasswordAuthenticationFilter.class);

0 commit comments

Comments
 (0)