Skip to content

Commit 39f54f6

Browse files
Merge pull request TalenticaSoftware#8 from TalenticaSoftware/spring-modulith-main
saving changes
2 parents 4786614 + 65a78ee commit 39f54f6

File tree

9 files changed

+149
-8
lines changed

9 files changed

+149
-8
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.talentica.services.common.util;
2+
3+
public class PdfGenerator {
4+
5+
public static String generatePdf(String textInfo) {
6+
7+
System.out.println("generating .....");
8+
return textInfo;
9+
}
10+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@NamedInterface("util")
2+
package com.talentica.services.common.util;
3+
4+
import org.springframework.modulith.NamedInterface;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
package com.talentica.services.department;
22

3+
import com.talentica.services.organization.OrganizationDTO;
4+
import java.util.ArrayList;
35
import java.util.List;
46

57
public interface DepartmentInternalAPI {
68

79
List<DepartmentDTO> getDepartmentsByOrganizationId(Long id);
810

911
List<DepartmentDTO> getDepartmentsByOrganizationIdWithEmployees(Long id);
12+
13+
/*
14+
department having dependency of organization
15+
organization is having dependency department internal api
16+
*/
17+
// default List<DepartmentDTO> getAllDepartmentsFromOgranization(OrganizationDTO organization) {
18+
// return new ArrayList<>();
19+
// }
1020
}

spring-modulith-demo/src/main/java/com/talentica/services/department/service/DepartmentManagementService.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.talentica.services.department.DepartmentExternalAPI;
77
import com.talentica.services.department.DepartmentInternalAPI;
88
import com.talentica.services.department.mapper.DepartmentMapper;
9-
import com.talentica.services.department.model.Department;
109
import com.talentica.services.department.repository.DepartmentRepository;
1110
import com.talentica.services.employee.EmployeeDTO;
1211
import com.talentica.services.employee.EmployeeInternalAPI;
@@ -20,22 +19,22 @@
2019
public class DepartmentManagementService implements DepartmentInternalAPI, DepartmentExternalAPI {
2120

2221
private final DepartmentRepository repository;
23-
private final EmployeeInternalAPI employeeManagementService;
22+
private final EmployeeInternalAPI employeeInternalAPI;
2423
private final DepartmentMapper mapper;
2524

2625
public DepartmentManagementService(DepartmentRepository repository,
2726
EmployeeInternalAPI employeeInternalAPI,
2827
DepartmentMapper mapper
2928
) {
3029
this.repository = repository;
31-
this.employeeManagementService = employeeInternalAPI;
30+
this.employeeInternalAPI = employeeInternalAPI;
3231
this.mapper = mapper;
3332
}
3433

3534
@Override
3635
public DepartmentDTO getDepartmentByIdWithEmployees(Long id) {
3736
DepartmentDTO d = repository.findDTOById(id);
38-
List<EmployeeDTO> dtos = employeeManagementService.getEmployeesByDepartmentId(id);
37+
List<EmployeeDTO> dtos = employeeInternalAPI.getEmployeesByDepartmentId(id);
3938
d.employees().addAll(dtos);
4039
return d;
4140
}
@@ -44,9 +43,9 @@ public DepartmentDTO getDepartmentByIdWithEmployees(Long id) {
4443
void onNewOrganizationEvent(OrganizationAddEvent event) throws Exception {
4544
log.info("onNewOrganizationEvent(orgId={})", event.getId());
4645

47-
// if (event != null) {
48-
// throw new Exception("failed due to some reason");
49-
// }
46+
if (true) {
47+
throw new Exception("failed due to some reason");
48+
}
5049
add(new DepartmentDTO(null, event.getId(), "HR"));
5150
add(new DepartmentDTO(null, event.getId(), "Management"));
5251
}
@@ -73,7 +72,7 @@ public List<DepartmentDTO> getDepartmentsByOrganizationId(Long id) {
7372
public List<DepartmentDTO> getDepartmentsByOrganizationIdWithEmployees(Long id) {
7473
List<DepartmentDTO> departments = repository.findByOrganizationId(id);
7574
for (DepartmentDTO dep : departments) {
76-
dep.employees().addAll(employeeManagementService.getEmployeesByDepartmentId(dep.id()));
75+
dep.employees().addAll(employeeInternalAPI.getEmployeesByDepartmentId(dep.id()));
7776
}
7877
return departments;
7978
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
//package com.talentica.services.department.service;
2+
//
3+
//import com.talentica.services.OrganizationAddEvent;
4+
//import com.talentica.services.OrganizationRemoveEvent;
5+
//import com.talentica.services.department.DepartmentDTO;
6+
//import com.talentica.services.department.DepartmentExternalAPI;
7+
//import com.talentica.services.department.DepartmentInternalAPI;
8+
//import com.talentica.services.department.mapper.DepartmentMapper;
9+
//import com.talentica.services.department.repository.DepartmentRepository;
10+
//import com.talentica.services.employee.EmployeeDTO;
11+
//import com.talentica.services.employee.service.EmployeeManagementService;
12+
//import java.util.List;
13+
//import lombok.extern.slf4j.Slf4j;
14+
//import org.springframework.modulith.ApplicationModuleListener;
15+
//import org.springframework.stereotype.Service;
16+
//
17+
//@Service
18+
//@Slf4j
19+
//public class DepartmentManagementService2 implements DepartmentInternalAPI, DepartmentExternalAPI {
20+
//
21+
// private final DepartmentRepository repository;
22+
// private final EmployeeManagementService employeeManagementService;
23+
// private final DepartmentMapper mapper;
24+
//
25+
// public DepartmentManagementService2(DepartmentRepository repository,
26+
// EmployeeManagementService employeeManagementService,
27+
// DepartmentMapper mapper
28+
// ) {
29+
// this.repository = repository;
30+
// this.employeeManagementService = employeeManagementService;
31+
// this.mapper = mapper;
32+
// }
33+
//
34+
// @Override
35+
// public DepartmentDTO getDepartmentByIdWithEmployees(Long id) {
36+
// DepartmentDTO d = repository.findDTOById(id);
37+
// List<EmployeeDTO> dtos = employeeManagementService.getEmployeesByDepartmentId(id);
38+
// d.employees().addAll(dtos);
39+
// return d;
40+
// }
41+
//
42+
// @ApplicationModuleListener
43+
// void onNewOrganizationEvent(OrganizationAddEvent event) throws Exception {
44+
// log.info("onNewOrganizationEvent(orgId={})", event.getId());
45+
//
46+
//// if (event != null) {
47+
//// throw new Exception("failed due to some reason");
48+
//// }
49+
// add(new DepartmentDTO(null, event.getId(), "HR"));
50+
// add(new DepartmentDTO(null, event.getId(), "Management"));
51+
// }
52+
//
53+
// @ApplicationModuleListener
54+
// void onRemovedOrganizationEvent(OrganizationRemoveEvent event) {
55+
// log.info("onRemovedOrganizationEvent(orgId={})", event.getId());
56+
// repository.deleteByOrganizationId(event.getId());
57+
// }
58+
//
59+
// @Override
60+
// public DepartmentDTO add(DepartmentDTO department) {
61+
// return mapper.departmentToDepartmentDTO(
62+
// repository.save(mapper.departmentDTOToDepartment(department))
63+
// );
64+
// }
65+
//
66+
// @Override
67+
// public List<DepartmentDTO> getDepartmentsByOrganizationId(Long id) {
68+
// return repository.findByOrganizationId(id);
69+
// }
70+
//
71+
// @Override
72+
// public List<DepartmentDTO> getDepartmentsByOrganizationIdWithEmployees(Long id) {
73+
// List<DepartmentDTO> departments = repository.findByOrganizationId(id);
74+
// for (DepartmentDTO dep : departments) {
75+
// dep.employees().addAll(employeeManagementService.getEmployeesByDepartmentId(dep.id()));
76+
// }
77+
// return departments;
78+
// }
79+
//}

spring-modulith-demo/src/main/java/com/talentica/services/employee/EmployeeExternalAPI.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
public interface EmployeeExternalAPI {
44

55
EmployeeDTO add(EmployeeDTO employee);
6+
7+
String getEmployeeReport(Long id);
68
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@ApplicationModule(allowedDependencies = "common::util")
2+
package com.talentica.services.employee;
3+
4+
import org.springframework.modulith.ApplicationModule;

spring-modulith-demo/src/main/java/com/talentica/services/employee/service/EmployeeManagementService.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package com.talentica.services.employee.service;
22

33
import com.talentica.services.OrganizationRemoveEvent;
4+
import com.talentica.services.common.util.PdfGenerator;
45
import com.talentica.services.employee.EmployeeDTO;
56
import com.talentica.services.employee.EmployeeExternalAPI;
67
import com.talentica.services.employee.EmployeeInternalAPI;
78
import com.talentica.services.employee.mapper.EmployeeMapper;
89
import com.talentica.services.employee.model.Employee;
910
import com.talentica.services.employee.repository.EmployeeRepository;
11+
import java.time.LocalDate;
1012
import java.util.List;
13+
import java.util.Optional;
14+
import java.util.concurrent.atomic.AtomicReference;
1115
import lombok.extern.slf4j.Slf4j;
1216
import org.springframework.modulith.ApplicationModuleListener;
1317
import org.springframework.stereotype.Service;
@@ -20,6 +24,7 @@ public class EmployeeManagementService implements EmployeeInternalAPI, EmployeeE
2024
private final EmployeeRepository repository;
2125
private final EmployeeMapper mapper;
2226

27+
private PdfGenerator pdfGenerator;
2328

2429
public EmployeeManagementService(EmployeeRepository repository,
2530
EmployeeMapper mapper) {
@@ -50,4 +55,27 @@ void onRemovedOrganizationEvent(OrganizationRemoveEvent event) {
5055
repository.deleteByOrganizationId(event.getId());
5156
}
5257

58+
@Override
59+
public String getEmployeeReport(Long id) {
60+
Optional<Employee> employee = repository.findById(id);
61+
62+
AtomicReference<String> report = new AtomicReference<>(" ");
63+
64+
employee.ifPresent(value -> {
65+
StringBuilder builder = new StringBuilder()
66+
.append("***** Employee Report *****\n")
67+
.append("===========================\n")
68+
.append("Name : ").append(value.getName()).append("\n")
69+
.append("Age : ").append(value.getAge()).append("\n")
70+
.append("Position : ").append(value.getPosition()).append("\n")
71+
.append("===========================\n")
72+
.append("Generated on: ").append(LocalDate.now()).append("\n");
73+
74+
report.set(PdfGenerator.generatePdf(builder.toString()));
75+
});
76+
77+
return report.get();
78+
}
79+
80+
5381
}

spring-modulith-demo/src/main/java/com/talentica/services/gateway/GatewayManagementService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ public EmployeeDTO apiAddEmployee(@RequestBody EmployeeDTO employee) {
5050
return employeeExternalAPI.add(employee);
5151
}
5252

53+
@GetMapping("/employee/report/{id}/")
54+
public String apiAddEmployee(@PathVariable Long id) {
55+
return employeeExternalAPI.getEmployeeReport(id);
56+
}
57+
5358
@GetMapping("/departments/{id}/with-employees")
5459
public DepartmentDTO apiDepartmentWithEmployees(@PathVariable("id") Long id) {
5560
return departmentExternalAPI.getDepartmentByIdWithEmployees(id);

0 commit comments

Comments
 (0)