@Nullable protected String resolveLookupDataContainer(Element window, Class<? extends FrameOwner> controllerClass) { String lookupId = resolveLookupComponentId(controllerClass); if (Strings.isNullOrEmpty(lookupId)) { return null; } Element lookupElement = elementByID(window, lookupId); return lookupElement != null ? findLookupElementDataAttributeId(lookupElement, "dataContainer") : null; }
public void findScreenComponents(List<ScreenComponentDescriptor> components, @Nullable ScreenComponentDescriptor parent, Element root) { List<Element> elements = isFrame(root) ? getFrameElements(root) : root.elements(); for (Element element : elements) { if (isComponentElement(element)) { //noinspection IncorrectCreateEntity ScreenComponentDescriptor descriptor = new ScreenComponentDescriptor(element, parent); components.add(descriptor); findScreenComponents(components, descriptor, element); } } }
public Map<String, String> getAvailableBrowserScreens(Class entityClass) { return getAvailableScreensMap(entityClass, ScreenType.BROWSER); }
@Nullable protected String resolveLookupDatasource(Element window) { String lookupId = window.attributeValue("lookupComponent"); Element lookupElement = null; if (StringUtils.isNotBlank(lookupId)) { lookupElement = elementByID(window, lookupId); } return lookupElement != null ? findLookupElementDataAttributeId(lookupElement, "datasource") : null; }
protected Map<String, String> getAvailableScreensMap(Class entityClass, ScreenType filterScreenType) { String key = getScreensCacheKey(entityClass.getName(), userSessionSource.getLocale(), filterScreenType); Map<String, String> screensMap = availableScreensCache.get(key); if (screensMap != null) { if (StringUtils.isNotEmpty(src)) { try { Element windowElement = getWindowElement(src); if (windowElement != null) { if (isEntityAvailable(windowElement, windowInfo.getControllerClass(), entityClass, filterScreenType)) { String caption = getScreenCaption(windowElement, src); caption = getDetailedScreenCaption(caption, windowId); screensMap.put(caption, windowId); cacheScreens(key, screensMap); return screensMap;
public List<ScreenComponentDescriptor> getScreenComponents(String screenId) { String key = getScreenComponentsCacheKey(screenId, userSessionSource.getLocale()); List<ScreenComponentDescriptor> screenComponents = screenComponentsCache.get(key); if (screenComponents != null) { return screenComponents; } List<ScreenComponentDescriptor> components = new ArrayList<>(); WindowInfo windowInfo = windowConfig.findWindowInfo(screenId); if (windowInfo != null) { String template = windowInfo.getTemplate(); try { Element layoutElement = getRootLayoutElement(template); if (layoutElement != null) { findScreenComponents(components, null, layoutElement); } } catch (FileNotFoundException e) { log.error("Can't obtain screen's root layout: ", e); } } components = ImmutableList.copyOf(components); cacheScreenComponents(key, components); return components; }
protected String getScreenCaption(Element window, String src, Locale locale) { String key = getCaptionCacheKey(src, locale); String caption = captionCache.get(key); if (caption != null) return caption; caption = window.attributeValue("caption"); if (StringUtils.isNotEmpty(caption)) { if (!caption.startsWith("msg://")) { cacheCaption(key, caption); return caption; } String messagePack = window.attributeValue("messagesPack"); if (StringUtils.isEmpty(messagePack)) { messagePack = packageFromFilePath(src); } if (StringUtils.isNotEmpty(messagePack)) { caption = messageTools.loadString(messagePack, caption); cacheCaption(key, caption); return caption; } } caption = StringUtils.EMPTY; cacheCaption(key, caption); return caption; }
@Nullable public String getScreenCaption(WindowInfo windowInfo, Locale locale) throws FileNotFoundException { String src = windowInfo.getTemplate(); if (StringUtils.isNotEmpty(src)) { String key = getCaptionCacheKey(src, locale); String caption = captionCache.get(key); if (caption != null) { return caption; } Element window = getWindowElement(src); if (window != null) { return getScreenCaption(window, src); } } Class screenClass = windowInfo.getControllerClass(); return screenClass.getSimpleName(); }
protected void fillSelectEntityScreens(Class entityClass) { Map<String, String> screensMap = screensHelper.getAvailableBrowserScreens(entityClass); screenField.setOptionsMap(screensMap); String value = attribute.getScreen(); screenField.setValue(screensMap.containsValue(value) ? value : null); }
@Nullable protected Element elementByID(Element root, String elementId) { for (Element element : root.elements()) { String id = element.attributeValue("id"); if (StringUtils.isNotEmpty(id) && elementId.equals(id)) { return element; } else { element = elementByID(element, elementId); if (element != null) { return element; } } } return null; }
new HashMap<>(screensHelper.getAvailableScreens(categorizedEntityMetaClass.getJavaClass())) : new HashMap<>();
protected void initScreensLookup() { ReportInputParameter parameter = getItem(); if (parameter.getType() == ParameterType.ENTITY || parameter.getType() == ParameterType.ENTITY_LIST) { Class clazz = parameterClassResolver.resolveClass(parameter); if (clazz != null) { Map<String, String> screensMap = screensHelper.getAvailableBrowserScreens(clazz); screen.setOptionsMap(screensMap); } } }
protected boolean isEntityAvailableInDataElement(Class entityClass, Element dataElement, String datasourceId) { Element datasource = elementByID(dataElement, datasourceId); if (datasource == null) { return false; } String dsClassValue = datasource.attributeValue("class"); if (StringUtils.isEmpty(dsClassValue)) { return false; } Class entity = entityClass; boolean isAvailable; boolean process; do { isAvailable = dsClassValue.equals(entity.getName()); entity = entity.getSuperclass(); process = metadata.getClass(entity) != null && metadataTools.isPersistent(entity); } while (process && !isAvailable); return isAvailable; }
public Map<String, String> getAvailableScreens(Class entityClass) { return getAvailableScreensMap(entityClass, ScreenType.ALL); }