Lab3 is done (+ dop task)

This commit is contained in:
Katerina881 2023-03-21 09:37:08 +04:00
parent 755388d16b
commit 47f4a4eea7
4 changed files with 45 additions and 3 deletions

View File

@ -15,7 +15,7 @@ public class Position {
private String name; private String name;
//mappedBy - атрибут, указывающий, что классом-владельцем отношений является другой класс //mappedBy - атрибут, указывающий, что классом-владельцем отношений является другой класс
@ManyToMany(mappedBy = "positions", cascade = CascadeType.ALL, fetch = FetchType.EAGER) @ManyToMany(mappedBy = "positions", cascade = {CascadeType.REMOVE}, fetch = FetchType.EAGER)
private List<Employee> employees = new ArrayList<>(); private List<Employee> employees = new ArrayList<>();
public Position() { public Position() {

View File

@ -93,8 +93,20 @@ public class EmployeeService {
public void deletePosition(Long id, Position p) { public void deletePosition(Long id, Position p) {
Employee e = findEmployee(id); Employee e = findEmployee(id);
e.removePosition(p); e.removePosition(p);
System.out.println("Количество должностей после удаления: " + e.getPositions().size());
em.merge(e); em.merge(e);
em.flush(); em.flush();
} }
@Transactional
public List<Employee> getEmployeesByPosition(Position p) {
List<Employee> employees = em.createQuery("select e from Employee e INNER JOIN e.positions p WHERE p.id=:posit",
Employee.class)
.setParameter("posit", p.getId())
.getResultList();
for (Employee e : employees) {
System.out.println(e);
}
return employees;
}
} }

View File

@ -107,7 +107,6 @@ public class CompanyServiceTests {
Assertions.assertTrue(companyService.findCompany(c.getId()).getEmployees().contains(newEmployee)); Assertions.assertTrue(companyService.findCompany(c.getId()).getEmployees().contains(newEmployee));
companyService.deleteEmployee(c.getId(), newEmployee); companyService.deleteEmployee(c.getId(), newEmployee);
Company cFromDB = companyService.findCompany(c.getId());
Assertions.assertFalse(companyService.findCompany(c.getId()).getEmployees().contains(newEmployee)); Assertions.assertFalse(companyService.findCompany(c.getId()).getEmployees().contains(newEmployee));
employeeService.deleteAllEmployees(); employeeService.deleteAllEmployees();

View File

@ -2,8 +2,10 @@ package com.example.springip;
import com.example.springip.lab3.models.Company; import com.example.springip.lab3.models.Company;
import com.example.springip.lab3.models.Employee; import com.example.springip.lab3.models.Employee;
import com.example.springip.lab3.models.Position;
import com.example.springip.lab3.service.CompanyService; import com.example.springip.lab3.service.CompanyService;
import com.example.springip.lab3.service.EmployeeService; import com.example.springip.lab3.service.EmployeeService;
import com.example.springip.lab3.service.PositionService;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -17,6 +19,9 @@ public class EmployeeServiceTests {
@Autowired @Autowired
private CompanyService companyService; private CompanyService companyService;
@Autowired
private PositionService positionService;
@Test @Test
public void testAddEmployee() { public void testAddEmployee() {
employeeService.deleteAllEmployees(); employeeService.deleteAllEmployees();
@ -89,4 +94,30 @@ public class EmployeeServiceTests {
employeeService.deleteAllEmployees(); employeeService.deleteAllEmployees();
companyService.deleteAllCompanies(); companyService.deleteAllCompanies();
} }
@Test
public void testGetByPosition() {
employeeService.deleteAllEmployees();
positionService.deleteAllPositions();
Position p = positionService.addPosition("Position 1");
Position p2 = positionService.addPosition("Position 2");
final int n = 10;
for (int i = 0; i < n; i++) {
Employee e = employeeService.addEmployee("1111", "name" + i, "surname");
if (i % 2 == 0) {
employeeService.addPosition(e.getId(), p);
}
else {
employeeService.addPosition(e.getId(), p2);
}
}
Assertions.assertEquals(n / 2, employeeService.getEmployeesByPosition(p).size());
Assertions.assertEquals(n / 2, employeeService.getEmployeesByPosition(p2).size());
employeeService.deleteAllEmployees();
positionService.deleteAllPositions();
}
} }