use of edu.cornell.kfs.ksr.businessobject.SecurityRequestRoleQualificationDetail in project cu-kfs by CU-CommunityApps.
the class SecurityRequestDocumentRule method isDocumentAttributesValid.
@Override
public boolean isDocumentAttributesValid(Document document, boolean validateRequired) {
boolean success = true;
SecurityRequestDocument securityRequestDocument = (SecurityRequestDocument) document;
for (int i = 0; i < securityRequestDocument.getSecurityRequestRoles().size(); i++) {
SecurityRequestRole securityRequestRole = securityRequestDocument.getSecurityRequestRoles().get(i);
KimType tempTypeInfo = KimApiServiceLocator.getKimTypeInfoService().getKimType(securityRequestRole.getRoleInfo().getKimTypeId());
if (!securityRequestRole.isActive()) {
continue;
} else if (!securityRequestRole.isQualifiedRole()) {
continue;
} else {
String[] requiredQualifications = getRequiredQualificationsMap().get(tempTypeInfo.getServiceName());
if (requiredQualifications != null && requiredQualifications.length > 0) {
boolean qualsValid = true;
boolean[] hasQuals = new boolean[requiredQualifications.length];
for (SecurityRequestRoleQualification roleQualification : securityRequestRole.getRequestRoleQualifications()) {
Arrays.fill(hasQuals, false);
for (SecurityRequestRoleQualificationDetail qualDetail : roleQualification.getRoleQualificationDetails()) {
for (int j = requiredQualifications.length - 1; j >= 0; j--) {
if (requiredQualifications[j].equals(qualDetail.getAttributeName()) && StringUtils.isNotBlank(qualDetail.getAttributeValue())) {
hasQuals[j] = true;
}
}
}
for (boolean hasQual : hasQuals) {
qualsValid &= hasQual;
}
}
if (!qualsValid || securityRequestRole.getRequestRoleQualifications().size() == 0) {
success = false;
GlobalVariables.getMessageMap().putError(KSRPropertyConstants.SECURITY_REQUEST_DOC_REQUEST_ROLE + "[" + i + "].active", KSRKeyConstants.ERROR_SECURITY_REQUEST_DOC_QUALIFIER_MULTI_MISSING, new String[] { securityRequestRole.getRoleInfo().getName() });
}
} else if (securityRequestRole.getRequestRoleQualifications().size() == 0) {
securityRequestRole.getRequestRoleQualifications().add(SpringContext.getBean(SecurityRequestDocumentService.class).buildRoleQualificationLine(securityRequestRole, null));
}
}
for (int j = 0; j < securityRequestRole.getRequestRoleQualifications().size(); j++) {
SecurityRequestRoleQualification requestRoleQualification = securityRequestRole.getRequestRoleQualifications().get(j);
String typeId = securityRequestRole.getRoleInfo().getKimTypeId();
KimType typeInfo = KimApiServiceLocator.getKimTypeInfoService().getKimType(typeId);
String fieldKeyPrefix = KSRPropertyConstants.SECURITY_REQUEST_DOC_REQUEST_ROLE + "[" + i + "]." + KSRPropertyConstants.SECURITY_REQUEST_DOC_ROLE_QUAL + "[" + j + "].";
success &= validateQualification(typeInfo, requestRoleQualification, fieldKeyPrefix);
}
}
return super.isDocumentAttributesValid(document, validateRequired) && success;
}
use of edu.cornell.kfs.ksr.businessobject.SecurityRequestRoleQualificationDetail in project cu-kfs by CU-CommunityApps.
the class SecurityRequestDocumentServiceImpl method buildRoleQualificationLine.
public SecurityRequestRoleQualification buildRoleQualificationLine(SecurityRequestRole requestRole, Map<String, String> qualification) {
SecurityRequestRoleQualification requestQualification = new SecurityRequestRoleQualification();
requestQualification.setDocumentNumber(requestRole.getDocumentNumber());
requestQualification.setRoleRequestId(requestRole.getRoleRequestId());
KimType typeInfo = KSRUtil.getTypeInfoForRoleRequest(requestRole);
List<KimTypeAttribute> typeAttributes = KSRUtil.getTypeAttributesForRoleRequest(requestRole);
for (KimTypeAttribute attributeInfo : typeAttributes) {
SecurityRequestRoleQualificationDetail requestQualificationDetail = new SecurityRequestRoleQualificationDetail();
requestQualificationDetail.setDocumentNumber(requestRole.getDocumentNumber());
requestQualificationDetail.setRoleRequestId(requestRole.getRoleRequestId());
requestQualificationDetail.setQualificationId(requestRole.getNextQualificationId());
requestQualificationDetail.setAttributeId(attributeInfo.getKimAttribute().getId());
requestQualificationDetail.setRoleTypeId(typeInfo.getId());
if ((qualification != null) && qualification.containsKey(attributeInfo.getKimAttribute().getAttributeName())) {
requestQualificationDetail.setAttributeValue(qualification.get(attributeInfo.getKimAttribute().getAttributeName()));
}
requestQualification.getRoleQualificationDetails().add(requestQualificationDetail);
}
requestQualification.setQualificationId(requestRole.getNextQualificationId());
requestRole.setNextQualificationId(requestRole.getNextQualificationId() + 1);
return requestQualification;
}
Aggregations