/** * Performs additional indexing based on the view type associated with the view instance. The * {@code ViewTypeService} associated with the view type name on the instance is invoked to * retrieve the parameter key/value pairs from the configured property values, which are then used * to build up an index used to key the entry * * @param propertyValues - property values configured on the view bean definition * @param id - id (or bean name if id was not set) for the view */ protected void indexViewForType(PropertyValues propertyValues, String id) { String viewTypeName = ViewModelUtils.getStringValFromPVs(propertyValues, "viewTypeName"); if (StringUtils.isBlank(viewTypeName)) { return; } UifConstants.ViewType viewType = ViewType.valueOf(viewTypeName); ViewTypeService typeService = KRADServiceLocatorWeb.getViewService().getViewTypeService(viewType); if (typeService == null) { // don't do any further indexing return; } // invoke type service to retrieve it parameter name/value pairs Map<String, String> typeParameters = typeService.getParametersFromViewConfiguration(propertyValues); // build the index string from the parameters String index = buildTypeIndex(typeParameters); // get the index for the type and add the view entry ViewTypeDictionaryIndex typeIndex = getTypeIndex(viewType); typeIndex.put(index, id); }
/** * Gets all {@code View} prototypes configured for the given view type name * * @param viewTypeName - view type name to retrieve * @return List<View> view prototypes with the given type name, or empty list */ public List<View> getViewsForType(ViewType viewTypeName) { List<View> typeViews = new ArrayList<View>(); // get view ids for the type if (viewEntriesByType.containsKey(viewTypeName.name())) { ViewTypeDictionaryIndex typeIndex = viewEntriesByType.get(viewTypeName.name()); for (Entry<String, String> typeEntry : typeIndex.getViewIndex().entrySet()) { View typeView = ddBeans.getBean(typeEntry.getValue(), View.class); typeViews.add(typeView); } } else { throw new DataDictionaryException("Unable to find view index for type: " + viewTypeName); } return typeViews; }