+ /**
+ * getUserId.
+ *
+ * @param data PolicyEntity
+ * @param value String
+ * @return String
+ */
+ public String getUserId(PolicyEntity data, String value) {
+ String userId = "";
+ String userValue = value; // Why?
+ String description = getDescription(data);
+ if (description.contains(userValue)) {
+ userId = description.substring(description.indexOf(userValue) + userValue.length(),
+ description.lastIndexOf(userValue));
+ }
+ UserInfo userInfo = (UserInfo) getEntityItem(UserInfo.class, "userLoginId", userId);
+ if (userInfo == null) {
+ return SUPERADMIN;
+ }
+ return userInfo.getUserName();
+ }
+
+ /**
+ * getDescription.
+ *
+ * @param data PolicyEntity
+ * @return String
+ */
+ public String getDescription(PolicyEntity data) {
+ InputStream stream = new ByteArrayInputStream(data.getPolicyData().getBytes(StandardCharsets.UTF_8));
+ Object policy = XACMLPolicyScanner.readPolicy(stream);
+ if (policy instanceof PolicySetType) {
+ return ((PolicySetType) policy).getDescription();
+ } else if (policy instanceof PolicyType) {
+ return ((PolicyType) policy).getDescription();
+ }
+ PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Expecting a PolicySet/Policy/Rule object. Got: "
+ + policy.getClass().getCanonicalName());
+ return null;
+ }
+
+ /**
+ * getUserInfo.
+ *
+ * @param data PolicyEntity
+ * @param activePolicies list of active policies
+ * @return array of String
+ */
+ public String[] getUserInfo(PolicyEntity data, List<PolicyVersion> activePolicies) {
+ String policyName = data.getScope().replace(".", File.separator) + File.separator
+ + data.getPolicyName().substring(0, data.getPolicyName().indexOf('.'));
+ PolicyVersion polVersion =
+ activePolicies.stream().filter(a -> policyName.equals(a.getPolicyName())).findAny().orElse(null);
+ String[] result = new String[2];
+ UserInfo userCreate = null;
+ UserInfo userModify = null;
+ if (polVersion != null) {
+ userCreate = (UserInfo) getEntityItem(UserInfo.class, "userLoginId", polVersion.getCreatedBy());
+ userModify = (UserInfo) getEntityItem(UserInfo.class, "userLoginId", polVersion.getModifiedBy());
+ }
+
+ result[0] = userCreate != null ? userCreate.getUserName() : SUPERADMIN;
+ result[1] = userModify != null ? userModify.getUserName() : SUPERADMIN;
+
+ return result;
+ }
+