Skip to content
Snippets Groups Projects
Commit 76a4a5f4 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

Merge branch '945-refresh-the-left-panel-overlay-list-after-changing-overlay-s-owner' into 'master'

Resolve "refresh the left panel overlay list after changing overlay's owner"

Closes #945

See merge request !938
parents 4494fcad e67888fa
No related branches found
No related tags found
1 merge request!938Resolve "refresh the left panel overlay list after changing overlay's owner"
Pipeline #13957 passed
minerva (14.0.0~beta.2) unstable; urgency=low
* Small improvement: info window contains information about overlay No (#919)
* Bug fix: exported SBML passes online validation (#831)
* Bug fix: changing owner of data overlay should change order index (#945)
* Bug fix: allow user to remove own comments (#931)
* Bug fix: validation of project name length is provided (#950)
* Bug fix: after reducing privileges on himself interface is refreshed (#948)
......
......@@ -181,6 +181,7 @@ public class OverlayRestImpl extends BaseRestImpl {
if (overlayData == null) {
throw new QueryException("overlay field cannot be undefined");
}
List<User> reorderUsers = new ArrayList<>();
try {
Layout layout = getOverlay(projectId, overlayId);
for (String key : overlayData.keySet()) {
......@@ -202,8 +203,17 @@ public class OverlayRestImpl extends BaseRestImpl {
layout.setGoogleLicenseConsent((Boolean) overlayData.get("googleLicenseConsent"));
} else if (key.equalsIgnoreCase("creator")) {
if ("".equals(value)) {
if (layout.getCreator() != null) {
reorderUsers.add(layout.getCreator());
}
layout.setCreator(null);
} else {
if (layout.getCreator() == null) {
reorderUsers.add(getUserService().getUserByLogin((String) value));
} else if (!layout.getCreator().getLogin().equals(value)) {
reorderUsers.add(getUserService().getUserByLogin((String) value));
reorderUsers.add(layout.getCreator());
}
layout.setCreator(getUserService().getUserByLogin((String) value));
}
} else {
......@@ -211,6 +221,9 @@ public class OverlayRestImpl extends BaseRestImpl {
}
}
layoutDao.update(layout);
for (User user : reorderUsers) {
reorderOverlays(user, layout.getProject());
}
return getOverlayById(layout.getProject().getProjectId(), overlayId);
} catch (NumberFormatException e) {
throw new QueryException("invliad overlay id", e);
......@@ -231,7 +244,12 @@ public class OverlayRestImpl extends BaseRestImpl {
User owner = layout.getCreator();
Project project = layout.getProject();
layoutService.removeLayout(layout, null);
reorderOverlays(owner, project);
return okStatus();
}
private void reorderOverlays(User owner, Project project) {
List<Layout> overlays = layoutService.getLayoutsByProject(project).stream()
.filter(lay -> lay.getCreator() == owner).collect(Collectors.toList());
......@@ -243,7 +261,6 @@ public class OverlayRestImpl extends BaseRestImpl {
layoutService.updateLayout(overlay);
}
}
return okStatus();
}
public Map<String, Object> addOverlay(String projectId, String name, String description, String content,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment