use of org.kuali.kfs.datadictionary.FormAttribute in project cu-kfs by CU-CommunityApps.
the class LookupResource method doesAttrWithGivenNameExistForClass.
private boolean doesAttrWithGivenNameExistForClass(BusinessObjectEntry businessObjectEntry, String attributeName) {
Class boClass = businessObjectEntry.getBusinessObjectClass();
List<FormAttribute> attributeDefinitions = getLookupAttributeForClass(boClass);
for (FormAttribute attributeDefn : attributeDefinitions) {
if (attributeDefn.getName().equalsIgnoreCase(attributeName)) {
return true;
}
}
return false;
}
use of org.kuali.kfs.datadictionary.FormAttribute in project cu-kfs by CU-CommunityApps.
the class LookupResource method buildLookupControlValuesMap.
private Map<String, Object> buildLookupControlValuesMap(BusinessObjectEntry businessObjectEntry) {
Class classForType = businessObjectEntry.getBusinessObjectClass();
if (!isAuthorizedForLookup(classForType)) {
throw new ForbiddenException();
}
Map<String, Object> valuesMap = new LinkedHashMap<>();
List<FormAttribute> attributes = getLookupAttributeForClass(classForType);
for (FormAttribute attribute : attributes) {
Control control = attribute.getControl();
if (control == null) {
continue;
}
String singleAttributeName = attribute.getName();
if (control.getType() == Control.Type.TREE) {
// we have to do this bean resolution here b/c batch file (the only tree) is still a snowflake
// and the DDD doesn't do the bean lookup for us (mainly b/c of the typing); hope to get rid of the
// need for special VF type eventually
String valuesFinderName = control.getValuesFinderName();
if (StringUtils.isBlank(valuesFinderName)) {
LOG.warn("A tree control without ValuesFinder name is most likely a mistake. BOE: " + businessObjectEntry.getName() + " attribute: " + singleAttributeName);
continue;
}
HierarchicalControlValuesFinder valuesFinder = getDataDictionaryService().getDDBean(HierarchicalControlValuesFinder.class, valuesFinderName);
if (valuesFinder == null) {
LOG.warn("A tree control without a valid HierarchicalControlValuesFinder is most likely a " + "mistake. BOE:" + businessObjectEntry.getName() + " attribute: " + singleAttributeName);
continue;
}
List<HierarchicalData> values = valuesFinder.getHierarchicalControlValues();
valuesMap.put(singleAttributeName, values);
} else {
KeyValuesFinder valuesFinder = control.getValuesFinder();
if (valuesFinder == null) {
continue;
}
// CU Customization: keyValues list now comes from the helper method below.
List<KeyValue> keyValues = getKeyValuesForLookup(valuesFinder);
valuesMap.put(singleAttributeName, keyValues);
}
}
return valuesMap;
}
use of org.kuali.kfs.datadictionary.FormAttribute in project cu-kfs by CU-CommunityApps.
the class LookupResource method getLookupAttributeForClass.
// todo move this to converter code
protected List<FormAttribute> getLookupAttributeForClass(Class classForType) {
List<FormAttribute> attributes = getLookupDictionary().getLookupAttributes(classForType);
attributes.forEach(attribute -> {
final DefaultValueFinder defaultValueFinder = getDefaultValueFinderIfItExists(attribute);
if (defaultValueFinder != null) {
String defaultValue = defaultValueFinder.getDefaultValue();
attribute.setDefaultValue(defaultValue);
}
});
return attributes;
}
use of org.kuali.kfs.datadictionary.FormAttribute in project cu-kfs by CU-CommunityApps.
the class LookupResource method getLookup.
@GET
public Response getLookup() {
Class classForType = businessObjectEntry.getBusinessObjectClass();
if (!isAuthorizedForLookup(classForType)) {
Person user = getUserSessionFromRequest(this.servletRequest).getPerson();
AuthorizationException authorizationException = new AuthorizationException(user.getPrincipalName(), "lookup", classForType.getName());
Response.ResponseBuilder responseBuilder = Response.status(Response.Status.FORBIDDEN);
responseBuilder.entity(authorizationException);
throw new ForbiddenException(responseBuilder.build());
}
List<FormAttribute> lookupAttributes = getLookupAttributeForClass(classForType);
for (FormAttribute lookupAttribute : lookupAttributes) {
setNestedLookupFields(lookupAttribute, classForType);
}
String title = getLookupDictionary().getLookupTitle(classForType);
if (StringUtils.isEmpty(title)) {
title = businessObjectEntry.getObjectLabel() + " Lookup";
}
SearchService searchService = getLookupDictionary().getSearchService(classForType);
if (searchService == null) {
LOG.error(businessObjectEntry.getName() + " seems to be missing a SearchService! A lookup cannot " + "be queried without a SearchService.");
throw new InternalServerErrorException("The requested lookup is currently unavailable.");
}
LookupResponse.Create create = null;
if (shouldCreateNewUrlBeIncluded(classForType)) {
create = getCreateBlock(classForType);
}
LookupResponse.Results results = new LookupResponse.Results(searchService.getSearchResultsAttributes(classForType), getBusinessObjectDictionaryService().getLookupDefaultSortFieldNames(classForType));
LookupResponse lookupResponse = new LookupResponse(title, lookupAttributes, create, results);
return Response.ok(lookupResponse).build();
}
Aggregations