public ConditionsTree createFakeConditionsTree(Filter filter, FilterEntity filterEntity) { boolean emptyFilter = filterEntity.getXml() == null || filterEntity.getXml().equals("<filter/>"); return conditionsTree != null ? conditionsTree : emptyFilter ? new ConditionsTree() : filterParser.getConditions(filter, filterEntity.getXml()); }
protected boolean isFilterModified() { boolean filterPropertiesModified = !Objects.equals(initialFilterEntity.getName(), filterEntity.getName()) || !Objects.equals(initialFilterEntity.getCode(), filterEntity.getCode()) || !Objects.equals(initialFilterEntity.getUser(), filterEntity.getUser()); if (filterPropertiesModified) return true; String filterXml = filterEntity.getFolder() == null ? filterParser.getXml(conditions, Param.ValueProperty.DEFAULT_VALUE) : filterParser.getXml(conditions, Param.ValueProperty.VALUE); return !Objects.equals(filterXml, initialFilterEntity.getXml()); }
@Override public void actionPerform(Component component) { if (filterEntity == null) { // todo add notification 'Filter not selected' return; } Frame frame = filter.getFrame(); String[] strings = ValuePathHelper.parse(ComponentsHelper.getFilterComponentPath(filter)); String windowAlias = strings[0]; StringBuilder lookupAlias = new StringBuilder(windowAlias); if (windowAlias.endsWith(Window.BROWSE_WINDOW_SUFFIX)) { int index = lookupAlias.lastIndexOf(Window.BROWSE_WINDOW_SUFFIX); lookupAlias.delete(index, lookupAlias.length()); lookupAlias.append(Window.LOOKUP_WINDOW_SUFFIX); } WindowManager wm = (WindowManager) ComponentsHelper.getScreenContext(frame).getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo(lookupAlias.toString()); wm.openLookup(windowInfo, items -> { String filterXml = filterEntity.getXml(); filterEntity.setXml(UserSetHelper.addEntities(filterXml, items)); filterEntity.getFolder().setFilterXml(filterEntity.getXml()); filterEntity.setFolder(saveFolder(filterEntity.getFolder())); setFilterEntity(filterEntity); }, OpenType.THIS_TAB); } }
protected void collectQueryAndParametersFromFilter() { FilterParser filterParser = AppBeans.get(FilterParser.class); filterEntity.setXml(filterParser.getXml(filterEditor.getConditions(), Param.ValueProperty.DEFAULT_VALUE)); if (filterEntity.getXml() != null) { Element element = Dom4j.readDocument(filterEntity.getXml()).getRootElement(); QueryFilter queryFilter = new QueryFilter(element); conditionsTree = filterEditor.getConditionsTree(); filter = filterEditor.getFilter(); wizard.query = collectQuery(queryFilter); wizard.queryParameters = collectQueryParameters(queryFilter); } else { wizard.showNotification(wizard.getMessage("defaultQueryHasBeenSet"), Frame.NotificationType.HUMANIZED); wizard.query = filter.getDatasource().getQuery(); wizard.queryParameters = Collections.emptyList(); } wizard.setQueryButton.setCaption(wizard.getMessage("changeQuery")); }
if (filterEntity.getXml() != null) { Element element = Dom4j.readDocument(filterEntity.getXml()).getRootElement(); com.haulmont.cuba.core.global.filter.FilterParser filterParser = new com.haulmont.cuba.core.global.filter.FilterParser(element); attribute.setJoinClause(joinsStr); attribute.setFilterXml(filterEntity.getXml());
protected void saveFilterEntity() { Boolean isDefault = filterEntity.getIsDefault(); Boolean applyDefault = filterEntity.getApplyDefault(); if (filterEntity.getFolder() == null) { CommitContext ctx = new CommitContext(Collections.singletonList(filterEntity)); Set<Entity> result = dataService.commit(ctx); FilterEntity savedFilterEntity = (FilterEntity) result.iterator().next(); filterEntities.remove(filterEntity); filterEntity = savedFilterEntity; filterEntities.add(filterEntity); filterEntity.setApplyDefault(applyDefault); filterEntity.setIsDefault(isDefault); } else { filterEntity.getFolder().setName(filterEntity.getName()); filterEntity.getFolder().setFilterXml(filterEntity.getXml()); AbstractSearchFolder folder = saveFolder(filterEntity.getFolder()); filterEntity.setFolder(folder); } saveInitialFilterState(); setFilterActionsEnabled(); updateFilterModifiedIndicator(); }
/** * Saves initial filter state. It is used for indicating of filter modifications */ protected void saveInitialFilterState() { initialFilterEntity = metadata.create(FilterEntity.class); initialFilterEntity.setName(filterEntity.getName()); initialFilterEntity.setCode(filterEntity.getCode()); initialFilterEntity.setUser(filterEntity.getUser()); initialFilterEntity.setXml(filterEntity.getXml()); }
windowManager.close(window); } else { String filterXml = filterEntity.getXml(); filterEntity.setXml(UserSetHelper.removeEntities(filterXml, selected)); filterEntity.getFolder().setFilterXml(filterEntity.getXml()); filterEntity.setFolder(saveFolder((filterEntity.getFolder()))); setFilterEntity(filterEntity);
if (filterEntity.getXml() != null) { Element element = Dom4j.readDocument(filterEntity.getXml()).getRootElement(); com.haulmont.cuba.core.global.filter.FilterParser filterParser = new com.haulmont.cuba.core.global.filter.FilterParser(element); constraint.setGroovyScript(groovy); constraint.setFilterXml(filterEntity.getXml());
newFilter.setName(filter.getName()); newFilter.setComponentId(filter.getComponentId()); newFilter.setXml(filter.getXml()); filtersMap.put(filter.getId(), newFilter); em.persist(newFilter);
public void setFilterEntity(FilterEntity filterEntity) { this.filterEntity = filterEntity; conditions = filterParser.getConditions(filter, filterEntity.getXml()); prevConditions = conditions; initialConditions = conditions.toConditionsList();