[umbrella]: Add reorder methods in updateUmbrella.
This commit is contained in:
parent
1bc576ea69
commit
00b17fad1c
|
@ -155,7 +155,7 @@ public class StakeholderController {
|
||||||
|
|
||||||
@PreAuthorize("isAuthenticated()")
|
@PreAuthorize("isAuthenticated()")
|
||||||
@RequestMapping(value = "/{stakeholderId}/umbrella", method = RequestMethod.POST)
|
@RequestMapping(value = "/{stakeholderId}/umbrella", method = RequestMethod.POST)
|
||||||
public Umbrella<Stakeholder> changeStakeholderVisibility(@PathVariable("stakeholderId") String stakeholderId, @RequestBody UpdateUmbrella update) {
|
public Umbrella<Stakeholder> updateUmbrella(@PathVariable("stakeholderId") String stakeholderId, @RequestBody UpdateUmbrella update) {
|
||||||
log.debug("update stakeholder umbrella");
|
log.debug("update stakeholder umbrella");
|
||||||
log.debug("Stakeholder: " + stakeholderId);
|
log.debug("Stakeholder: " + stakeholderId);
|
||||||
Stakeholder stakeholder = this.stakeholderService.findByPath(stakeholderId);
|
Stakeholder stakeholder = this.stakeholderService.findByPath(stakeholderId);
|
||||||
|
|
|
@ -1,21 +1,25 @@
|
||||||
package eu.dnetlib.uoamonitorservice.dto;
|
package eu.dnetlib.uoamonitorservice.dto;
|
||||||
|
|
||||||
import eu.dnetlib.uoamonitorservice.primitives.Action;
|
import eu.dnetlib.uoamonitorservice.primitives.Action;
|
||||||
|
import eu.dnetlib.uoamonitorservice.primitives.StakeholderType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class UpdateUmbrella {
|
public class UpdateUmbrella {
|
||||||
String type;
|
StakeholderType type;
|
||||||
Action action;
|
Action action;
|
||||||
String child;
|
String child;
|
||||||
|
List<StakeholderType> types;
|
||||||
|
List<String> children;
|
||||||
|
|
||||||
public UpdateUmbrella() {
|
public UpdateUmbrella() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StakeholderType getType() {
|
||||||
public String getType() {
|
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setType(String type) {
|
public void setType(StakeholderType type) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,4 +38,20 @@ public class UpdateUmbrella {
|
||||||
public void setChild(String child) {
|
public void setChild(String child) {
|
||||||
this.child = child;
|
this.child = child;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<StakeholderType> getTypes() {
|
||||||
|
return types;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTypes(List<StakeholderType> types) {
|
||||||
|
this.types = types;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getChildren() {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChildren(List<String> children) {
|
||||||
|
this.children = children;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
package eu.dnetlib.uoamonitorservice.primitives;
|
package eu.dnetlib.uoamonitorservice.primitives;
|
||||||
|
|
||||||
public enum Action {
|
public enum Action {
|
||||||
ADD, REMOVE
|
ADD, REMOVE, UPDATE
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,7 @@ import eu.dnetlib.uoamonitorservice.entities.Stakeholder;
|
||||||
import eu.dnetlib.uoamonitorservice.generics.Common;
|
import eu.dnetlib.uoamonitorservice.generics.Common;
|
||||||
import eu.dnetlib.uoamonitorservice.service.StakeholderService;
|
import eu.dnetlib.uoamonitorservice.service.StakeholderService;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class Umbrella<T> {
|
public class Umbrella<T> {
|
||||||
|
@ -99,4 +96,30 @@ public class Umbrella<T> {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean update(List<StakeholderType> types) {
|
||||||
|
if(types == null) {
|
||||||
|
return false;
|
||||||
|
} else if(types.size() != this.types.size()) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
if(new HashSet<>(this.types).containsAll(types)) {
|
||||||
|
this.types = types;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean update(StakeholderType type, List<T> children) {
|
||||||
|
if(children == null) {
|
||||||
|
return false;
|
||||||
|
} else if(this.children.get(type) == null) {
|
||||||
|
return false;
|
||||||
|
} else if(children.size() != this.children.get(type).size()) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return new HashSet<>(this.children.get(type)).containsAll(children);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -246,15 +246,21 @@ public class StakeholderService {
|
||||||
if (this.commonService.hasEditAuthority(stakeholder.getType(), stakeholder.getAlias())) {
|
if (this.commonService.hasEditAuthority(stakeholder.getType(), stakeholder.getAlias())) {
|
||||||
if(update.getAction().equals(Action.ADD)) {
|
if(update.getAction().equals(Action.ADD)) {
|
||||||
if(update.getChild() != null) {
|
if(update.getChild() != null) {
|
||||||
return this.addChild(stakeholder.getId(), StakeholderType.valueOf(update.getType()), update.getChild());
|
return this.addChild(stakeholder.getId(), update.getType(), update.getChild());
|
||||||
} else {
|
} else {
|
||||||
return this.addType(stakeholder.getId(), StakeholderType.valueOf(update.getType()));
|
return this.addType(stakeholder.getId(), update.getType());
|
||||||
}
|
}
|
||||||
} else if(update.getAction().equals(Action.REMOVE)) {
|
} else if(update.getAction().equals(Action.REMOVE)) {
|
||||||
if(update.getChild() != null) {
|
if(update.getChild() != null) {
|
||||||
return this.removeChild(stakeholder.getId(), StakeholderType.valueOf(update.getType()), update.getChild());
|
return this.removeChild(stakeholder.getId(), update.getType(), update.getChild());
|
||||||
} else {
|
} else {
|
||||||
return this.removeType(stakeholder.getId(), StakeholderType.valueOf(update.getType()));
|
return this.removeType(stakeholder.getId(), update.getType());
|
||||||
|
}
|
||||||
|
} else if(update.getAction().equals(Action.UPDATE)) {
|
||||||
|
if(update.getType() != null) {
|
||||||
|
return this.updateChildren(stakeholder.getId(), update.getType(), update.getChildren());
|
||||||
|
} else {
|
||||||
|
return this.updateTypes(stakeholder.getId(), update.getTypes());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -308,4 +314,26 @@ public class StakeholderService {
|
||||||
}
|
}
|
||||||
throw new BadRequestException("Cannot remove child: " + childId + " to stakeholder with id " + id);
|
throw new BadRequestException("Cannot remove child: " + childId + " to stakeholder with id " + id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Umbrella<Stakeholder> updateTypes(String id, List<StakeholderType> types) {
|
||||||
|
Stakeholder stakeholder = this.findByPath(id);
|
||||||
|
Umbrella<String> umbrella = stakeholder.getUmbrellaOptional().orElseThrow(() -> new EntityNotFoundException("Umbrella not found in the stakeholder with id " + id));
|
||||||
|
if (stakeholder.getUmbrella().update(types)) {
|
||||||
|
stakeholder.setUmbrella(umbrella);
|
||||||
|
stakeholder.setUpdateDate(new Date());
|
||||||
|
return this.getFullStakeholder(this.dao.save(stakeholder)).getUmbrella();
|
||||||
|
}
|
||||||
|
throw new BadRequestException("Cannot update types in umbrella of stakeholder with id " + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Umbrella<Stakeholder> updateChildren(String id, StakeholderType type, List<String> children) {
|
||||||
|
Stakeholder stakeholder = this.findByPath(id);
|
||||||
|
Umbrella<String> umbrella = stakeholder.getUmbrellaOptional().orElseThrow(() -> new EntityNotFoundException("Umbrella not found in the stakeholder with id " + id));
|
||||||
|
if (stakeholder.getUmbrella().update(type, children)) {
|
||||||
|
stakeholder.setUmbrella(umbrella);
|
||||||
|
stakeholder.setUpdateDate(new Date());
|
||||||
|
return this.getFullStakeholder(this.dao.save(stakeholder)).getUmbrella();
|
||||||
|
}
|
||||||
|
throw new BadRequestException("Cannot update children of " + type + " in umbrella of stakeholder with id " + id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue