Revize ba3279e3
Přidáno uživatelem stepanekp před více než 1 rok
src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/model/management/Person.java | ||
---|---|---|
16 | 16 |
public class Person implements DatabaseObject { |
17 | 17 |
|
18 | 18 |
@Id |
19 |
@GeneratedValue(strategy = GenerationType.AUTO)
|
|
19 |
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
20 | 20 |
@Column(name = "id", nullable = false) |
21 | 21 |
private Long id; |
22 | 22 |
|
src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/service/managment/PersonService.java | ||
---|---|---|
1 | 1 |
package cz.zcu.fav.kiv.antipatterndetectionapp.service.managment; |
2 | 2 |
|
3 |
import cz.zcu.fav.kiv.antipatterndetectionapp.model.Project; |
|
3 | 4 |
import cz.zcu.fav.kiv.antipatterndetectionapp.model.management.Person; |
5 |
import cz.zcu.fav.kiv.antipatterndetectionapp.v2.model.PersonDto; |
|
4 | 6 |
|
5 | 7 |
import java.util.List; |
6 | 8 |
|
... | ... | |
39 | 41 |
* @param id Identifier of person |
40 | 42 |
*/ |
41 | 43 |
void deletePerson(Long id); |
44 |
|
|
45 |
boolean mergePersons(Project project, List<PersonDto> personsToMerge, PersonDto personToMergeIn, String newName); |
|
42 | 46 |
} |
src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/service/managment/PersonServiceImpl.java | ||
---|---|---|
1 | 1 |
package cz.zcu.fav.kiv.antipatterndetectionapp.service.managment; |
2 | 2 |
|
3 |
import cz.zcu.fav.kiv.antipatterndetectionapp.model.Project; |
|
3 | 4 |
import cz.zcu.fav.kiv.antipatterndetectionapp.model.management.Person; |
4 | 5 |
import cz.zcu.fav.kiv.antipatterndetectionapp.repository.managment.PersonRepository; |
6 |
import cz.zcu.fav.kiv.antipatterndetectionapp.v2.model.PersonDto; |
|
5 | 7 |
import org.springframework.beans.factory.annotation.Autowired; |
6 | 8 |
import org.springframework.stereotype.Service; |
7 | 9 |
|
... | ... | |
57 | 59 |
public void deletePerson(Long id) { |
58 | 60 |
personRepository.deleteById(id); |
59 | 61 |
} |
62 |
|
|
63 |
public boolean mergePersons(Project project, List<PersonDto> personsToMerge, PersonDto personToMergeIn, String newName) { |
|
64 |
Person newPerson = null; |
|
65 |
|
|
66 |
if (newName == null) { |
|
67 |
newPerson = getPersonById(personToMergeIn.getId()); |
|
68 |
} |
|
69 |
else if (personToMergeIn == null) { |
|
70 |
newPerson = new Person(newName, project); |
|
71 |
newPerson = savePerson(newPerson); |
|
72 |
} |
|
73 |
else { |
|
74 |
return false; |
|
75 |
} |
|
76 |
|
|
77 |
if (newPerson == null || project == null || personsToMerge == null) |
|
78 |
return false; |
|
79 |
|
|
80 |
|
|
81 |
for(PersonDto personDto : personsToMerge) { // Relation update for every selected person |
|
82 |
if (personDto.getId().longValue() == newPerson.getId().longValue()) |
|
83 |
continue; |
|
84 |
|
|
85 |
Person person = getPersonById(personDto.getId()); |
|
86 |
updatePersonRelations(person.getId(), newPerson.getId()); |
|
87 |
deletePerson(person.getId()); |
|
88 |
} |
|
89 |
|
|
90 |
return true; |
|
91 |
} |
|
60 | 92 |
} |
src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/v2/controller/management/PersonController.java | ||
---|---|---|
4 | 4 |
import cz.zcu.fav.kiv.antipatterndetectionapp.model.Project; |
5 | 5 |
import cz.zcu.fav.kiv.antipatterndetectionapp.model.management.Person; |
6 | 6 |
import cz.zcu.fav.kiv.antipatterndetectionapp.service.ProjectService; |
7 |
import cz.zcu.fav.kiv.antipatterndetectionapp.service.managment.PersonService; |
|
7 | 8 |
import cz.zcu.fav.kiv.antipatterndetectionapp.v2.model.PersonDto; |
9 |
import cz.zcu.fav.kiv.antipatterndetectionapp.v2.model.PersonMergeRequest; |
|
8 | 10 |
import cz.zcu.fav.kiv.antipatterndetectionapp.v2.utils.converters.PersonToDto; |
9 | 11 |
import org.springframework.beans.factory.annotation.Autowired; |
10 | 12 |
import org.springframework.http.HttpStatus; |
... | ... | |
29 | 31 |
@Autowired |
30 | 32 |
private ProjectService projectService; |
31 | 33 |
|
34 |
@Autowired |
|
35 |
private PersonService personService; |
|
36 |
|
|
32 | 37 |
@PostMapping("/personsFromProject") |
33 | 38 |
public ResponseEntity<String> getPersonsFromProject(@RequestBody Map<String, String> requestData) { |
34 | 39 |
long ProjectId = Long.parseLong(requestData.get("projectId").toString()); |
... | ... | |
51 | 56 |
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to serialize data to JSON"); |
52 | 57 |
} |
53 | 58 |
} |
59 |
|
|
60 |
@PostMapping("/mergePersons") |
|
61 |
public ResponseEntity<String> mergeToSelected(@RequestBody PersonMergeRequest mergeRequest) { |
|
62 |
long projectId = mergeRequest.getProjectId(); |
|
63 |
Project personProject = projectService.getProjectById(projectId); |
|
64 |
|
|
65 |
List<PersonDto> personsToMerge = mergeRequest.getPersons(); |
|
66 |
PersonDto personToMergeIn = mergeRequest.getPerson(); |
|
67 |
String newName = mergeRequest.getNewPersonName(); |
|
68 |
|
|
69 |
if (personService.mergePersons(personProject, personsToMerge, personToMergeIn, newName)) { |
|
70 |
return ResponseEntity.status(HttpStatus.OK).body("Persons successfully merged"); |
|
71 |
} |
|
72 |
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Persons merge failed"); |
|
73 |
} |
|
54 | 74 |
} |
75 |
|
src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/v2/model/PersonMergeRequest.java | ||
---|---|---|
1 |
package cz.zcu.fav.kiv.antipatterndetectionapp.v2.model; |
|
2 |
|
|
3 |
import java.util.List; |
|
4 |
|
|
5 |
public class PersonMergeRequest { |
|
6 |
|
|
7 |
private List<PersonDto> persons; |
|
8 |
|
|
9 |
private String newPersonName; |
|
10 |
|
|
11 |
private PersonDto person; |
|
12 |
|
|
13 |
private long projectId; |
|
14 |
|
|
15 |
public List<PersonDto> getPersons() { |
|
16 |
return persons; |
|
17 |
} |
|
18 |
|
|
19 |
public void setPersons(List<PersonDto> persons) { |
|
20 |
this.persons = persons; |
|
21 |
} |
|
22 |
|
|
23 |
public String getNewPersonName() { |
|
24 |
return newPersonName; |
|
25 |
} |
|
26 |
|
|
27 |
public void setNewPersonName(String newPersonName) { |
|
28 |
this.newPersonName = newPersonName; |
|
29 |
} |
|
30 |
|
|
31 |
public PersonDto getPerson() { |
|
32 |
return person; |
|
33 |
} |
|
34 |
|
|
35 |
public void setPerson(PersonDto person) { |
|
36 |
this.person = person; |
|
37 |
} |
|
38 |
|
|
39 |
public long getProjectId() { |
|
40 |
return projectId; |
|
41 |
} |
|
42 |
|
|
43 |
public void setProjectId(long projectId) { |
|
44 |
this.projectId = projectId; |
|
45 |
} |
|
46 |
} |
Také k dispozici: Unified diff
https://kivprogrammers.atlassian.net/browse/TSP2-48 Implementace merge osob