Skip to content

Commit 31b52fa

Browse files
Eric MuhrEric Muhr
authored andcommitted
basline initial
1 parent a071b76 commit 31b52fa

4 files changed

Lines changed: 179 additions & 1 deletion

File tree

pom.xml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,34 @@
4848
<artifactId>h2</artifactId>
4949
<scope>runtime</scope>
5050
</dependency>
51-
</dependencies>
51+
<dependency>
52+
<groupId>org.projectlombok</groupId>
53+
<artifactId>lombok</artifactId>
54+
</dependency>
55+
<dependency>
56+
<groupId>org.springframework.boot</groupId>
57+
<artifactId>spring-boot-starter-actuator</artifactId>
58+
</dependency>
59+
</dependencies>
5260

5361
<build>
5462
<plugins>
5563
<plugin>
5664
<groupId>org.springframework.boot</groupId>
5765
<artifactId>spring-boot-maven-plugin</artifactId>
5866
</plugin>
67+
<plugin>
68+
<groupId>org.apache.maven.plugins</groupId>
69+
<artifactId>maven-compiler-plugin</artifactId>
70+
<configuration>
71+
<annotationProcessorPaths>
72+
<path>
73+
<groupId>org.projectlombok</groupId>
74+
<artifactId>lombok</artifactId>
75+
</path>
76+
</annotationProcessorPaths>
77+
</configuration>
78+
</plugin>
5979
</plugins>
6080
</build>
6181

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package de.flix29.sprout_study.entities;
2+
3+
import org.springframework.data.util.Pair;
4+
import org.springframework.http.ResponseEntity;
5+
import org.springframework.security.access.prepost.PreAuthorize;
6+
import org.springframework.web.bind.annotation.DeleteMapping;
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.PathVariable;
9+
import org.springframework.web.bind.annotation.PostMapping;
10+
import org.springframework.web.bind.annotation.PutMapping;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
import org.springframework.web.bind.annotation.RestController;
13+
14+
import java.net.URI;
15+
import java.util.List;
16+
17+
@RestController
18+
@RequestMapping("/employees")
19+
public class EmployeeController {
20+
21+
private EmployeeService employeeService;
22+
23+
public EmployeeController(EmployeeService employeeService) {
24+
this.employeeService = employeeService;
25+
}
26+
27+
@GetMapping
28+
@PreAuthorize("hasRole('USER')")
29+
public ResponseEntity<List<Employee>> findAll() {
30+
return ResponseEntity.ok(employeeService.findAll());
31+
}
32+
33+
@GetMapping("/{id}")
34+
@PreAuthorize("hasRole('USER')")
35+
public ResponseEntity<Employee> findById(@PathVariable Long id) {
36+
return employeeService.getByID(id).
37+
map(ResponseEntity::ok)
38+
.orElseGet(() -> ResponseEntity.notFound().build());
39+
}
40+
41+
@PostMapping
42+
@PreAuthorize("hasRole('ADMIN')")
43+
public ResponseEntity<Void> createEmployee(Employee employee) {
44+
var savedEmployee = employeeService.newEmployee(employee);
45+
return ResponseEntity.created(URI.create("/api/empoyee/" + savedEmployee.getId())).build();
46+
}
47+
48+
@PutMapping("/{id}")
49+
@PreAuthorize("hasRole('ADMIN')")
50+
public ResponseEntity<Void> updateEmployee(@PathVariable Long id, Employee employee) {
51+
Employee updateEmployee = employeeService.updateEmployee(id, employee);
52+
if (updateEmployee == null){
53+
return ResponseEntity.notFound().build();
54+
}
55+
return ResponseEntity.ok().build();
56+
}
57+
58+
@DeleteMapping("/{id}")
59+
@PreAuthorize("hasRole('ADMIN')")
60+
public ResponseEntity<Void> delete(@PathVariable Long id) {
61+
boolean deleted = employeeService.deleteEmployee(id);
62+
63+
if (deleted) {
64+
return ResponseEntity.noContent().build();
65+
}
66+
67+
return ResponseEntity.notFound().build();
68+
}
69+
70+
@GetMapping("/{id}/generate-user-employee")
71+
@PreAuthorize("hasRole('ADMIN')")
72+
public ResponseEntity<String> generateUserEmployee(@PathVariable Long id) {
73+
Pair<String, String> userEmployee = employeeService.generateUserEmployee(id);
74+
75+
if(userEmployee == null){
76+
return ResponseEntity.notFound().build();
77+
}
78+
79+
return ResponseEntity.ok().body(String.format("Here is the User/Pass for the employee with id %s: %s/%s", id, userEmployee.getFirst(), userEmployee.getSecond()));
80+
}
81+
82+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package de.flix29.sprout_study.entities;
2+
3+
import org.springframework.data.repository.CrudRepository;
4+
import org.springframework.stereotype.Repository;
5+
6+
@Repository
7+
public interface EmployeeRepo extends CrudRepository<Employee, Long> {
8+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package de.flix29.sprout_study.entities;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.data.util.Pair;
5+
import org.springframework.stereotype.Service;
6+
7+
import java.util.List;
8+
import java.util.Optional;
9+
10+
@Service
11+
@Slf4j
12+
public class EmployeeService {
13+
14+
private EmployeeRepo employeeRepo;
15+
16+
public EmployeeService(EmployeeRepo employeeRepo) {
17+
this.employeeRepo = employeeRepo;
18+
}
19+
20+
public List<Employee> findAll() {
21+
return (List<Employee>) employeeRepo.findAll();
22+
}
23+
24+
public Optional<Employee> getByID(Long id) {
25+
return employeeRepo.findById(id);
26+
}
27+
28+
public Employee newEmployee(Employee employee) {
29+
Employee newEmployee = employeeRepo.save(employee);
30+
log.info("Saved new Employee with id {}", newEmployee.getId());
31+
return newEmployee;
32+
}
33+
34+
public Employee updateEmployee(Long id, Employee updatedEmployee) {
35+
log.info("Updating Employee with id {}", id);
36+
Optional<Employee> byId = employeeRepo.findById(id);
37+
if (byId.isPresent()) {
38+
updatedEmployee.setId(id);
39+
return employeeRepo.save(updatedEmployee);
40+
}
41+
return null;
42+
}
43+
44+
public boolean deleteEmployee(Long id){
45+
try {
46+
employeeRepo.deleteById(id);
47+
return true;
48+
} catch (Exception e){
49+
log.error("Employee with id {} was not deleted", id);
50+
return false;
51+
}
52+
}
53+
54+
public Pair<String, String> generateUserEmployee(Long id){
55+
Optional<Employee> optionalEmployee = employeeRepo.findById(id);
56+
if(optionalEmployee.isEmpty()) {
57+
return null;
58+
}
59+
60+
Employee employee = optionalEmployee.get();
61+
String intial = employee.getFirstName().toUpperCase().substring(0, 1);
62+
String end = employee.getLastName().toLowerCase();
63+
String user = intial.concat(end);
64+
65+
log.info("generated new User: {}", user);
66+
return Pair.of(user, "CHANGEME");
67+
}
68+
}

0 commit comments

Comments
 (0)