मेरे पास डेटाबेस में भूमिकाओं की एक सूची है। वेऑब्जेक्ट्स की सूची में तारों की सूची को कैसे परिवर्तित करें?
application.Role1.read
application.Role1.write
application.Role2.read
application.Role3.read
इसलिए प्रत्येक भूमिका में पढ़ने/लिखने की अनुमति के आधार पर एक प्रविष्टि है। मैं भूमिकाओं को एक पीओजेओ में परिवर्तित करना चाहता हूं जिसे मैं यूआई में जेएसओएन के रूप में भेज सकता हूं। प्रत्येक POJO में भूमिका का नाम होगा, और पढ़ने या लिखने की अनुमति के लिए एक बूलियन होगा।
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;
}
}
मैं बहुत तरह परिवर्तन कर रहा हूँ:
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());
}
वहाँ जावा 8 धाराओं का इस्तेमाल करके ऊपर foreach पाश करने के लिए एक रास्ता है
यहाँ RolePermission वर्ग है?
यह एक नकली बैकएंड उदाहरण है कि बस की भूमिका निभाने की सूची लौटाता है:
public class Backend {
public List<String> getRoles() {
return Arrays.asList(
"application.Role1.read",
"application.Role1.write",
"application.Role2.read",
"application.Role3.read"
);
}
}
सुनिश्चित नहीं हैं कि जो नीचे जवाब मतदान रहता है, लेकिन –