@@ -62,35 +62,29 @@ public void synchronizeResource(ResourceDTO resourceDTO) {
6262
6363 private void updateResource (ResourceEntity existing , ResourceDTO dto ) {
6464 existing .setDescription (dto .getDescription ());
65- existing .setStatus (dto .getStatus ());
6665
67- // Update items
68- Set <String > incomingNames = dto .getItems ().stream ().map (ResourceItemDTO ::getName ).collect (Collectors .toSet ());
69- existing .getItems ().removeIf (item -> !incomingNames .contains (item .getName ()));
70-
71- for (ResourceItemDTO itemDto : dto .getItems ()) {
72- existing .getItems ().stream ()
73- .filter (it -> it .getName ().equals (itemDto .getName ()))
74- .findFirst ()
75- .ifPresentOrElse (
76- it -> {
77- var permissions = permissionRepository .findAllByNameIn (itemDto .getPermissions ());
78- var permissionsToAdd = permissions .stream ().filter (permission -> !it .getPermissions ().contains (permission )).toList ();
79- it .getPermissions ().addAll (permissionsToAdd );
80- it .getPermissions ().removeIf (permission -> !incomingNames .contains (permission .getName ()));
81- },
82- () -> existing .getItems ().add (resourceMapper .toItemEntity (itemDto , existing ))
83- );
84- }
85-
86- // Update permissions
87- Set <String > incomingPerms = new HashSet <>(dto .getPermissions ());
88- existing .getPermissions ().removeIf (p -> !incomingPerms .contains (p .getName ()));
66+ if (dto .getStatus () != null )
67+ existing .setStatus (dto .getStatus ());
8968
90- for (String perm : dto .getPermissions ()) {
91- PermissionEntity permission = permissionRepository .findByNameAndStatusNot (perm , Status .DELETED )
92- .orElseGet (() -> permissionRepository .save (new PermissionEntity (null , perm , perm , Status .ACTIVE , null , null , null )));
93- existing .getPermissions ().add (permission );
69+ // Update items
70+ if (dto .getItems () != null ) {
71+ Set <String > incomingNames = dto .getItems ().stream ().map (ResourceItemDTO ::getName ).collect (Collectors .toSet ());
72+ existing .getItems ().removeIf (item -> !incomingNames .contains (item .getName ()));
73+
74+ for (ResourceItemDTO itemDto : dto .getItems ()) {
75+ existing .getItems ().stream ()
76+ .filter (it -> it .getName ().equals (itemDto .getName ()))
77+ .findFirst ()
78+ .ifPresentOrElse (
79+ it -> {
80+ var permissions = permissionRepository .findAllByNameIn (itemDto .getPermissions ());
81+ var permissionsToAdd = permissions .stream ().filter (permission -> !it .getPermissions ().contains (permission )).toList ();
82+ it .getPermissions ().addAll (permissionsToAdd );
83+ it .getPermissions ().removeIf (permission -> !incomingNames .contains (permission .getName ()));
84+ },
85+ () -> existing .getItems ().add (resourceMapper .toItemEntity (itemDto , existing ))
86+ );
87+ }
9488 }
9589
9690 resourceRepository .save (existing );
0 commit comments