Search in sources :

Example 1 with DocumentQueryOrderByList

use of de.metas.ui.web.window.model.DocumentQueryOrderByList in project metasfresh-webui-api by metasfresh.

the class HUEditorViewBuffer_HighVolume method huIdsPageFetcher.

private PageFetcher<HuId> huIdsPageFetcher(final DocumentQueryOrderByList orderBys) {
    final ViewEvaluationCtx viewEvalCtx = getViewEvaluationCtx();
    final ViewRowIdsOrderedSelection selection = getSelection(orderBys);
    return (firstRow, maxRows) -> huEditorRepo.retrieveHUIdsPage(viewEvalCtx, selection, firstRow, maxRows);
}
Also used : JSONOptions(de.metas.ui.web.window.datatypes.json.JSONOptions) ViewRowIdsOrderedSelection(de.metas.ui.web.view.ViewRowIdsOrderedSelection) ViewEvaluationCtx(de.metas.ui.web.view.ViewEvaluationCtx) DocumentId(de.metas.ui.web.window.datatypes.DocumentId) UnaryOperator(java.util.function.UnaryOperator) HUIdsFilterData(de.metas.ui.web.handlingunits.HUIdsFilterHelper.HUIdsFilterData) Supplier(java.util.function.Supplier) SynchronizedMutable(org.adempiere.util.lang.SynchronizedMutable) Mutables(org.adempiere.util.lang.Mutables) IteratorUtils(de.metas.util.collections.IteratorUtils) DocumentFilterList(de.metas.ui.web.document.filter.DocumentFilterList) I_M_HU(de.metas.handlingunits.model.I_M_HU) DocumentIdsSelection(de.metas.ui.web.window.datatypes.DocumentIdsSelection) SqlDocumentFilterConverterContext(de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverterContext) ImmutableSet(com.google.common.collect.ImmutableSet) Iterator(java.util.Iterator) DocumentQueryOrderByList(de.metas.ui.web.window.model.DocumentQueryOrderByList) NonNull(lombok.NonNull) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) CCache(de.metas.cache.CCache) Objects(java.util.Objects) PageFetcher(de.metas.util.collections.PagedIterator.PageFetcher) EntityNotFoundException(de.metas.ui.web.exceptions.EntityNotFoundException) Stream(java.util.stream.Stream) HuId(de.metas.handlingunits.HuId) ViewRowsOrderBy(de.metas.ui.web.view.ViewRowsOrderBy) ViewId(de.metas.ui.web.view.ViewId) ViewEvaluationCtx(de.metas.ui.web.view.ViewEvaluationCtx) ViewRowIdsOrderedSelection(de.metas.ui.web.view.ViewRowIdsOrderedSelection)

Example 2 with DocumentQueryOrderByList

use of de.metas.ui.web.window.model.DocumentQueryOrderByList in project metasfresh-webui-api by metasfresh.

the class WindowRestController method getIncludedTabRows.

@GetMapping("/{windowId}/{documentId}/{tabId}")
public List<JSONDocument> getIncludedTabRows(@PathVariable("windowId") final String windowIdStr, @PathVariable("documentId") final String documentIdStr, @PathVariable("tabId") final String tabIdStr, @RequestParam(name = "ids", required = false) @ApiParam("comma separated rowIds") final String rowIdsListStr, @RequestParam(name = PARAM_FieldsList, required = false) @ApiParam("comma separated field names") final String fieldsListStr, @RequestParam(name = PARAM_Advanced, required = false, defaultValue = PARAM_Advanced_DefaultValue) final boolean advanced, @RequestParam(name = "orderBy", required = false) final String orderBysListStr) {
    final WindowId windowId = WindowId.fromJson(windowIdStr);
    final DocumentId documentId = DocumentId.of(documentIdStr);
    final DetailId tabId = DetailId.fromJson(tabIdStr);
    final DocumentIdsSelection onlyRowIds = DocumentIdsSelection.ofCommaSeparatedString(rowIdsListStr);
    final DocumentPath documentPath;
    if (onlyRowIds.isEmpty() || onlyRowIds.isAll()) {
        documentPath = DocumentPath.includedDocumentPath(windowId, documentId, tabId);
    } else {
        documentPath = DocumentPath.includedDocumentPath(windowId, documentId, tabId, onlyRowIds);
    }
    final DocumentQueryOrderByList orderBys = DocumentQueryOrderByList.parse(orderBysListStr);
    final JSONDocumentOptions jsonOpts = newJSONDocumentOptions().showOnlyFieldsListStr(fieldsListStr).showAdvancedFields(advanced).build();
    return getData(documentPath, orderBys, jsonOpts);
}
Also used : DetailId(de.metas.ui.web.window.descriptor.DetailId) WindowId(de.metas.ui.web.window.datatypes.WindowId) DocumentIdsSelection(de.metas.ui.web.window.datatypes.DocumentIdsSelection) DocumentId(de.metas.ui.web.window.datatypes.DocumentId) DocumentPath(de.metas.ui.web.window.datatypes.DocumentPath) JSONDocumentPath(de.metas.ui.web.window.datatypes.json.JSONDocumentPath) DocumentQueryOrderByList(de.metas.ui.web.window.model.DocumentQueryOrderByList) JSONDocumentOptions(de.metas.ui.web.window.datatypes.json.JSONDocumentOptions) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 3 with DocumentQueryOrderByList

use of de.metas.ui.web.window.model.DocumentQueryOrderByList in project metasfresh-webui-api by metasfresh.

the class HUEditorViewBuffer_HighVolume method streamByIds.

private Stream<HUEditorRow> streamByIds(@NonNull final HUEditorRowFilter filter) {
    final Stream<HUEditorRowId> huEditorRowIds;
    final ImmutableSet<HUEditorRowId> onlyRowIds = filter.getOnlyRowIds();
    if (onlyRowIds.isEmpty()) {
        final DocumentQueryOrderByList defaultOrderBys = getDefaultSelection().getOrderBys();
        huEditorRowIds = streamHUIdsByPage(0, Integer.MAX_VALUE, defaultOrderBys).map(HUEditorRowId::ofTopLevelHU);
    } else {
        huEditorRowIds = onlyRowIds.stream();
    }
    return HUEditorRowsPagedLoadingIterator.builder().huEditorRepo(huEditorRepo).cache(cache_huRowsById).rowIds(huEditorRowIds.iterator()).filter(filter).build().stream();
}
Also used : DocumentQueryOrderByList(de.metas.ui.web.window.model.DocumentQueryOrderByList)

Example 4 with DocumentQueryOrderByList

use of de.metas.ui.web.window.model.DocumentQueryOrderByList in project metasfresh-webui-api by metasfresh.

the class SqlViewSelectionQueryBuilder method buildSqlCreateSelectionFromSelection.

/**
 * @return
 *
 *         <pre>
 * INSERT INTO T_WEBUI_ViewSelection (UUID, Line, keys)
 * SELECT ... FROM T_WEBUI_ViewSelection sel INNER JOIN ourTable WHERE sel.UUID=[fromUUID]
 *         </pre>
 */
public SqlAndParams buildSqlCreateSelectionFromSelection(@NonNull final ViewEvaluationCtx viewEvalCtx, @NonNull final ViewId newViewId, @NonNull final String fromSelectionId, @NonNull final DocumentFilterList filters, @NonNull final DocumentQueryOrderByList orderBys, @NonNull final SqlDocumentFilterConverterContext filterConverterCtx) {
    final String sqlTableAlias = getTableAlias();
    final SqlViewKeyColumnNamesMap keyColumnNamesMap = getSqlViewKeyColumnNamesMap();
    final DocumentQueryOrderByList orderBysEffective = orderBys.stream().flatMap(this::flatMapEffectiveFieldNames).collect(DocumentQueryOrderByList.toDocumentQueryOrderByList());
    // 
    // Build the table we will join.
    final SqlAndParams sqlSourceTable;
    {
        final Set<String> addedFieldNames = new HashSet<>();
        final StringBuilder sqlKeyColumnNames;
        {
            sqlKeyColumnNames = new StringBuilder();
            for (final String keyColumnName : keyColumnNamesMap.getKeyColumnNames()) {
                if (!addedFieldNames.add(keyColumnName)) {
                    continue;
                }
                if (sqlKeyColumnNames.length() > 0) {
                    sqlKeyColumnNames.append("\n, ");
                }
                sqlKeyColumnNames.append(getSqlSelectValue(keyColumnName).withColumnNameAlias(keyColumnName).toSqlStringWithColumnNameAlias());
            }
        }
        final SqlAndParams.Builder sqlSourceTableBuilder = SqlAndParams.builder();
        sqlSourceTableBuilder.append("(SELECT ").append(sqlKeyColumnNames);
        for (final DocumentQueryOrderBy orderBy : orderBysEffective.toList()) {
            final String fieldName = orderBy.getFieldName();
            final SqlSelectDisplayValue sqlSelectDisplayValue = getSqlSelectDisplayValue(fieldName);
            if (sqlSelectDisplayValue != null && addedFieldNames.add(sqlSelectDisplayValue.getColumnNameAlias())) {
                sqlSourceTableBuilder.append("\n, ").append(sqlSelectDisplayValue.withJoinOnTableNameOrAlias(getTableName()).toSqlStringWithColumnNameAlias(viewEvalCtx.toEvaluatee()));
            }
            final SqlSelectValue sqlSelectValue = getSqlSelectValue(fieldName);
            if (sqlSelectValue != null && addedFieldNames.add(sqlSelectValue.getColumnNameAlias())) {
                sqlSourceTableBuilder.append("\n, ").append(sqlSelectValue.withJoinOnTableNameOrAlias(getTableName()).toSqlStringWithColumnNameAlias());
            }
        }
        sqlSourceTableBuilder.append("\n FROM ").append(getTableName());
        final SqlAndParams sqlFilters = buildSqlFiltersOrNull(filters, filterConverterCtx, SqlOptions.usingTableName(getTableName()));
        if (sqlFilters != null) {
            sqlSourceTableBuilder.append("\n WHERE ").append(sqlFilters);
        }
        sqlSourceTableBuilder.append(")");
        sqlSourceTable = sqlSourceTableBuilder.build();
    }
    // 
    // Order BY
    final String sqlOrderBys = SqlDocumentOrderByBuilder.newInstance(this::getFieldOrderBy).joinOnTableNameOrAlias(sqlTableAlias).useColumnNameAlias(true).buildSqlOrderBy(orderBysEffective).map(sqlOrderBysExpr -> sqlOrderBysExpr.evaluate(viewEvalCtx.toEvaluatee(), OnVariableNotFound.Fail)).map(sql -> _viewBinding.replaceTableNameWithTableAlias(sql, sqlTableAlias)).orElse(null);
    // 
    final String sqlJoinCondition = keyColumnNamesMap.getSqlJoinCondition(sqlTableAlias, "sel");
    // 
    return SqlAndParams.builder().append("INSERT INTO " + I_T_WEBUI_ViewSelection.Table_Name + " (" + " " + I_T_WEBUI_ViewSelection.COLUMNNAME_UUID + ", " + I_T_WEBUI_ViewSelection.COLUMNNAME_Line + ", " + keyColumnNamesMap.getWebuiSelectionColumnNamesCommaSeparated() + ")").append("\n SELECT ").append("\n  ?", // newUUID
    newViewId.getViewId()).append("\n, ").append("row_number() OVER (").append(sqlOrderBys != null ? "ORDER BY " + sqlOrderBys : "").append(// Line
    ")").append("\n, ").append(// keys
    keyColumnNamesMap.getKeyColumnNamesCommaSeparated()).append("\n FROM ").append(I_T_WEBUI_ViewSelection.Table_Name).append(" sel").append("\n INNER JOIN ").append(sqlSourceTable).append(" ").append(sqlTableAlias).append(" ON (").append(sqlJoinCondition).append(")").append("\n WHERE sel.").append(I_T_WEBUI_ViewSelection.COLUMNNAME_UUID).append("=?", // fromUUID
    fromSelectionId).build();
}
Also used : LogManager(de.metas.logging.LogManager) Arrays(java.util.Arrays) SqlSelectDisplayValue(de.metas.ui.web.window.descriptor.sql.SqlSelectDisplayValue) Access(de.metas.security.permissions.Access) ViewEvaluationCtx(de.metas.ui.web.view.ViewEvaluationCtx) DocumentId(de.metas.ui.web.window.datatypes.DocumentId) SqlOptions(de.metas.ui.web.window.model.sql.SqlOptions) SqlOrderByBindings(de.metas.ui.web.window.model.sql.SqlDocumentOrderByBuilder.SqlOrderByBindings) I_T_WEBUI_ViewSelection(de.metas.ui.web.base.model.I_T_WEBUI_ViewSelection) ArrayList(java.util.ArrayList) Value(lombok.Value) HashSet(java.util.HashSet) IUserRolePermissions(de.metas.security.IUserRolePermissions) IStringExpression(org.adempiere.ad.expression.api.IStringExpression) SqlDocumentFilterConverters(de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverters) DB(org.compiere.util.DB) DocumentFilterList(de.metas.ui.web.document.filter.DocumentFilterList) SqlSelectValue(de.metas.ui.web.window.descriptor.sql.SqlSelectValue) I_T_WEBUI_ViewSelectionLine(de.metas.ui.web.base.model.I_T_WEBUI_ViewSelectionLine) DocumentQueryOrderBy(de.metas.ui.web.window.model.DocumentQueryOrderBy) SqlOrderByValue(de.metas.ui.web.window.descriptor.sql.SqlOrderByValue) Nullable(javax.annotation.Nullable) OnVariableNotFound(org.adempiere.ad.expression.api.IExpressionEvaluator.OnVariableNotFound) DocumentIdsSelection(de.metas.ui.web.window.datatypes.DocumentIdsSelection) Check(de.metas.util.Check) SqlDocumentFilterConverterContext(de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverterContext) Logger(org.slf4j.Logger) DocumentQueryOrderByList(de.metas.ui.web.window.model.DocumentQueryOrderByList) NonNull(lombok.NonNull) Collection(java.util.Collection) SqlDocumentOrderByBuilder(de.metas.ui.web.window.model.sql.SqlDocumentOrderByBuilder) Set(java.util.Set) AccessSqlStringExpression(de.metas.security.impl.AccessSqlStringExpression) ConstantStringExpression(org.adempiere.ad.expression.api.impl.ConstantStringExpression) IStringExpressionWrapper(org.adempiere.ad.expression.api.IStringExpressionWrapper) Collectors(java.util.stream.Collectors) SqlDocumentFilterConverter(de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverter) List(java.util.List) Stream(java.util.stream.Stream) Builder(lombok.Builder) AdempiereException(org.adempiere.exceptions.AdempiereException) SqlParamsCollector(de.metas.ui.web.document.filter.sql.SqlParamsCollector) CompositeStringExpression(org.adempiere.ad.expression.api.impl.CompositeStringExpression) ViewId(de.metas.ui.web.view.ViewId) HashSet(java.util.HashSet) Set(java.util.Set) SqlDocumentOrderByBuilder(de.metas.ui.web.window.model.sql.SqlDocumentOrderByBuilder) Builder(lombok.Builder) DocumentQueryOrderByList(de.metas.ui.web.window.model.DocumentQueryOrderByList) SqlSelectDisplayValue(de.metas.ui.web.window.descriptor.sql.SqlSelectDisplayValue) DocumentQueryOrderBy(de.metas.ui.web.window.model.DocumentQueryOrderBy) SqlSelectValue(de.metas.ui.web.window.descriptor.sql.SqlSelectValue)

Example 5 with DocumentQueryOrderByList

use of de.metas.ui.web.window.model.DocumentQueryOrderByList in project metasfresh-webui-api by metasfresh.

the class SqlViewSelectionQueryBuilder method buildSqlCreateSelectionFromSelectionLines.

public SqlAndParams buildSqlCreateSelectionFromSelectionLines(@NonNull final ViewEvaluationCtx viewEvalCtx, @NonNull final ViewId newViewId, @NonNull final DocumentQueryOrderByList orderBys) {
    final String lineTableName = getTableName();
    final String lineTableAlias = getTableAlias();
    final SqlViewKeyColumnNamesMap keyColumnNamesMap = getSqlViewKeyColumnNamesMap();
    final String lineKeyColumnName = keyColumnNamesMap.getSingleKeyColumnName();
    final SqlOrderByBindings sqlOrderByBindings = fieldName -> {
        if (keyColumnNamesMap.isKeyPartFieldName(fieldName)) {
            return SqlOrderByValue.ofColumnName("sl", keyColumnNamesMap.getWebuiSelectionColumnNameForKeyColumnName(fieldName));
        } else if (isGroupBy(fieldName)) {
            return getFieldOrderBy(fieldName);
        } else if (isAggregated(fieldName)) {
            return SqlOrderByValue.builder().sqlSelectValue(getSqlAggregatedColumn(fieldName)).build();
        } else {
            // shall not happen
            return null;
        }
    };
    final DocumentQueryOrderByList orderBysEffective = orderBys.stream().flatMap(this::flatMapEffectiveFieldNames).filter(orderBy -> keyColumnNamesMap.isKeyPartFieldName(orderBy.getFieldName()) || isGroupBy(orderBy.getFieldName()) || isAggregated(orderBy.getFieldName())).collect(DocumentQueryOrderByList.toDocumentQueryOrderByList());
    final String sqlOrderBy = SqlDocumentOrderByBuilder.newInstance(sqlOrderByBindings).joinOnTableNameOrAlias(lineTableAlias).useColumnNameAlias(false).buildSqlOrderBy(orderBysEffective).map(sqlOrderByExpr -> sqlOrderByExpr.evaluate(viewEvalCtx.toEvaluatee(), OnVariableNotFound.Fail)).orElseGet(() -> keyColumnNamesMap.getWebuiSelectionColumnNamesCommaSeparated("sl"));
    final String sqlFrom = "SELECT " + "\n sl." + I_T_WEBUI_ViewSelectionLine.COLUMNNAME_UUID + "\n, " + keyColumnNamesMap.getWebuiSelectionColumnNamesCommaSeparated("sl") + "\n FROM " + I_T_WEBUI_ViewSelectionLine.Table_Name + " sl " + "\n INNER JOIN " + lineTableName + " " + lineTableAlias + " ON (" + lineTableAlias + "." + lineKeyColumnName + " = sl." + I_T_WEBUI_ViewSelectionLine.COLUMNNAME_Line_ID + // join lines
    ")" + "\n WHERE " + I_T_WEBUI_ViewSelectionLine.COLUMNNAME_UUID + "=?" + "\n GROUP BY " + "\n sl." + I_T_WEBUI_ViewSelectionLine.COLUMNNAME_UUID + "\n, " + keyColumnNamesMap.getWebuiSelectionColumnNamesCommaSeparated("sl") + "\n, " + getGroupByFieldNamesCommaSeparated() + "\n ORDER BY " + sqlOrderBy;
    final String sqlCreateSelectionFromLines = "INSERT INTO " + I_T_WEBUI_ViewSelection.Table_Name + "(" + "\n " + I_T_WEBUI_ViewSelection.COLUMNNAME_UUID + "\n, " + keyColumnNamesMap.getWebuiSelectionColumnNamesCommaSeparated() + "\n, " + // SeqNo
    I_T_WEBUI_ViewSelection.COLUMNNAME_Line + "\n)" + "\n SELECT " + "\n   sl." + I_T_WEBUI_ViewSelectionLine.COLUMNNAME_UUID + "\n , " + keyColumnNamesMap.getWebuiSelectionColumnNamesCommaSeparated("sl") + // SeqNo
    "\n , row_number() OVER ()" + "\n FROM (" + sqlFrom + ") sl";
    final List<Object> sqlCreateSelectionFromLinesParams = Arrays.asList(newViewId.getViewId());
    return SqlAndParams.of(sqlCreateSelectionFromLines, sqlCreateSelectionFromLinesParams);
}
Also used : LogManager(de.metas.logging.LogManager) Arrays(java.util.Arrays) SqlSelectDisplayValue(de.metas.ui.web.window.descriptor.sql.SqlSelectDisplayValue) Access(de.metas.security.permissions.Access) ViewEvaluationCtx(de.metas.ui.web.view.ViewEvaluationCtx) DocumentId(de.metas.ui.web.window.datatypes.DocumentId) SqlOptions(de.metas.ui.web.window.model.sql.SqlOptions) SqlOrderByBindings(de.metas.ui.web.window.model.sql.SqlDocumentOrderByBuilder.SqlOrderByBindings) I_T_WEBUI_ViewSelection(de.metas.ui.web.base.model.I_T_WEBUI_ViewSelection) ArrayList(java.util.ArrayList) Value(lombok.Value) HashSet(java.util.HashSet) IUserRolePermissions(de.metas.security.IUserRolePermissions) IStringExpression(org.adempiere.ad.expression.api.IStringExpression) SqlDocumentFilterConverters(de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverters) DB(org.compiere.util.DB) DocumentFilterList(de.metas.ui.web.document.filter.DocumentFilterList) SqlSelectValue(de.metas.ui.web.window.descriptor.sql.SqlSelectValue) I_T_WEBUI_ViewSelectionLine(de.metas.ui.web.base.model.I_T_WEBUI_ViewSelectionLine) DocumentQueryOrderBy(de.metas.ui.web.window.model.DocumentQueryOrderBy) SqlOrderByValue(de.metas.ui.web.window.descriptor.sql.SqlOrderByValue) Nullable(javax.annotation.Nullable) OnVariableNotFound(org.adempiere.ad.expression.api.IExpressionEvaluator.OnVariableNotFound) DocumentIdsSelection(de.metas.ui.web.window.datatypes.DocumentIdsSelection) Check(de.metas.util.Check) SqlDocumentFilterConverterContext(de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverterContext) Logger(org.slf4j.Logger) DocumentQueryOrderByList(de.metas.ui.web.window.model.DocumentQueryOrderByList) NonNull(lombok.NonNull) Collection(java.util.Collection) SqlDocumentOrderByBuilder(de.metas.ui.web.window.model.sql.SqlDocumentOrderByBuilder) Set(java.util.Set) AccessSqlStringExpression(de.metas.security.impl.AccessSqlStringExpression) ConstantStringExpression(org.adempiere.ad.expression.api.impl.ConstantStringExpression) IStringExpressionWrapper(org.adempiere.ad.expression.api.IStringExpressionWrapper) Collectors(java.util.stream.Collectors) SqlDocumentFilterConverter(de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverter) List(java.util.List) Stream(java.util.stream.Stream) Builder(lombok.Builder) AdempiereException(org.adempiere.exceptions.AdempiereException) SqlParamsCollector(de.metas.ui.web.document.filter.sql.SqlParamsCollector) CompositeStringExpression(org.adempiere.ad.expression.api.impl.CompositeStringExpression) ViewId(de.metas.ui.web.view.ViewId) SqlOrderByBindings(de.metas.ui.web.window.model.sql.SqlDocumentOrderByBuilder.SqlOrderByBindings) DocumentQueryOrderByList(de.metas.ui.web.window.model.DocumentQueryOrderByList)

Aggregations

DocumentQueryOrderByList (de.metas.ui.web.window.model.DocumentQueryOrderByList)5 DocumentId (de.metas.ui.web.window.datatypes.DocumentId)4 DocumentIdsSelection (de.metas.ui.web.window.datatypes.DocumentIdsSelection)4 DocumentFilterList (de.metas.ui.web.document.filter.DocumentFilterList)3 SqlDocumentFilterConverterContext (de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverterContext)3 ViewEvaluationCtx (de.metas.ui.web.view.ViewEvaluationCtx)3 ViewId (de.metas.ui.web.view.ViewId)3 Collection (java.util.Collection)3 Set (java.util.Set)3 Stream (java.util.stream.Stream)3 NonNull (lombok.NonNull)3 LogManager (de.metas.logging.LogManager)2 IUserRolePermissions (de.metas.security.IUserRolePermissions)2 AccessSqlStringExpression (de.metas.security.impl.AccessSqlStringExpression)2 Access (de.metas.security.permissions.Access)2 I_T_WEBUI_ViewSelection (de.metas.ui.web.base.model.I_T_WEBUI_ViewSelection)2 I_T_WEBUI_ViewSelectionLine (de.metas.ui.web.base.model.I_T_WEBUI_ViewSelectionLine)2 SqlDocumentFilterConverter (de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverter)2 SqlDocumentFilterConverters (de.metas.ui.web.document.filter.sql.SqlDocumentFilterConverters)2 SqlParamsCollector (de.metas.ui.web.document.filter.sql.SqlParamsCollector)2