Tôi có một danh sách các vai trò trong cơ sở dữ liệu. Chúng có dạngLàm thế nào để chuyển đổi một danh sách các chuỗi thành một danh sách các đối tượng?
application.Role1.read
application.Role1.write
application.Role2.read
application.Role3.read
Vì vậy, mỗi vai trò có mục nhập dựa trên quyền đọc/ghi. Tôi muốn chuyển đổi vai trò thành POJO mà sau đó tôi có thể gửi dưới dạng JSON sang giao diện người dùng. Mỗi POJO sẽ có tên vai trò, và một boolean cho phép đọc hoặc ghi.
Đây là lớp RolePermission:
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RolePermission {
private String roleName;
private boolean readAllowed;
private boolean writeAllowed;
public String getRoleName() {
return roleName;
}
public RolePermission setRoleName(String roleName) {
this.roleName = roleName;
return this;
}
public boolean isReadAllowed() {
return readAllowed;
}
public RolePermission setReadAllowed(boolean readAllowed) {
this.readAllowed = readAllowed;
return this;
}
public boolean isWriteAllowed() {
return writeAllowed;
}
public RolePermission setWriteAllowed(boolean writeAllowed) {
this.writeAllowed = writeAllowed;
return this;
}
}
Tôi đang làm việc chuyển đổi như sau:
public static final String ROLE_PREFIX = "application.";
public static final String ROLE_READ_PERMISSION = "read";
public static final String ROLE_WRITE_PERMISSION = "write";
@Override
public List<RolePermission> getRoles(Backend backend) {
List<String> allRoles = backend.getRoles()
.stream()
.map(s -> s.replace(ROLE_PREFIX, ""))
.sorted()
.collect(Collectors.toList());
Map<String, RolePermission> roleMap = new HashMap<>();
for (String role : allRoles) {
String[] tokens = role.split(".");
String roleName = tokens[0];
String permission = tokens[1];
if (!roleMap.containsKey(roleName))
roleMap.put(roleName, new RolePermission().setRoleName(roleName));
RolePermission permission = roleMap.get(roleName);
if (ROLE_READ_PERMISSION.equals(permission))
permission.setReadAllowed(true);
if (ROLE_WRITE_PERMISSION.equals(permission))
permission.setWriteAllowed(true);
}
return new LinkedList<>(roleMap.values());
}
Có cách nào để làm vòng lặp foreach trên sử dụng Java 8 suối?
Đây là một trường hợp Backend giả mà chỉ trả về một danh sách các vai trò:
public class Backend {
public List<String> getRoles() {
return Arrays.asList(
"application.Role1.read",
"application.Role1.write",
"application.Role2.read",
"application.Role3.read"
);
}
}
Không chắc người tiếp tục bỏ phiếu xuống câu trả lời, nhưng không cung cấp một ở vị trí của họ ... :-( –