import com.google.common.collect.Lists;
import lombok.Data;
import java.util.List;
@Data
public class Resource {
private Integer id;
private Integer parentId;
private String code;
private String pcode;
private String pcodes;
private String menuName;
private Integer menuType;
private String menuPath;
private String authIdenti;
private String memo;
private Integer idx;
private Integer levels;
private List<Resource> children = Lists.newArrayList();
private String icon;
private Integer roleId;
private String roleName;
}
public static List<Resource> processRoleResource(final List<Resource> resources) {
final List<Resource> roleResource = Lists.newArrayList();
final Map<Integer, Resource> permissionMap = Maps.newHashMap();
resources.forEach(resource -> permissionMap.put(resource.getId(), resource));
resources.forEach(resource -> {
final Resource child = resource;
if (child.getParentId() == 0) {
roleResource.add(resource);
} else {
final Resource parent = permissionMap.get(child.getParentId());
parent.getChildren().add(child);
}
});
roleResource.sort(Comparator.comparingInt(Resource::getIdx));
roleResource.forEach(resource -> resource.getChildren().sort(Comparator.comparingInt(Resource::getIdx)));
return roleResource;
}