use of de.metas.ui.web.window.descriptor.sql.SqlEntityFieldBinding in project metasfresh-webui-api by metasfresh.
the class SqlDocumentQueryBuilder method extractComposedKey.
/**
* @return map of (keyColumnName, value) pairs
*/
public static Map<String, Object> extractComposedKey(final DocumentId recordId, final List<? extends SqlEntityFieldBinding> keyFields) {
final int count = keyFields.size();
if (count < 1) {
throw new AdempiereException("Invalid composed key: " + keyFields);
}
final List<Object> composedKeyParts = recordId.toComposedKeyParts();
if (composedKeyParts.size() != count) {
throw new AdempiereException("Invalid composed key '" + recordId + "'. Expected " + count + " parts but it has " + composedKeyParts.size());
}
final ImmutableMap.Builder<String, Object> composedKey = ImmutableMap.builder();
for (int i = 0; i < count; i++) {
final SqlEntityFieldBinding keyField = keyFields.get(i);
final String keyColumnName = keyField.getColumnName();
final Object valueObj = composedKeyParts.get(i);
final Object valueConv = DocumentFieldDescriptor.convertToValueClass(keyColumnName, valueObj, keyField.getWidgetType(), keyField.getSqlValueClass(), (LookupValueByIdSupplier) null);
composedKey.put(keyColumnName, valueConv);
}
return composedKey.build();
}
use of de.metas.ui.web.window.descriptor.sql.SqlEntityFieldBinding in project metasfresh-webui-api by metasfresh.
the class SqlDefaultDocumentFilterConverter method buildSqlWhereClause_StandardWidget.
private final String buildSqlWhereClause_StandardWidget(final SqlParamsCollector sqlParams, final DocumentFilterParam filterParam, final SqlOptions sqlOpts) {
final SqlEntityFieldBinding paramBinding = getParameterBinding(filterParam.getFieldName());
final DocumentFieldWidgetType widgetType = paramBinding.getWidgetType();
//
// Regular filter
final IQueryFilterModifier fieldModifier = extractFieldModifier(widgetType);
final IQueryFilterModifier valueModifier = extractValueModifier(widgetType);
final String columnSql = extractColumnSql(paramBinding, fieldModifier, sqlOpts);
final Operator operator = filterParam.getOperator();
switch(operator) {
case EQUAL:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = false;
return buildSqlWhereClause_Equals(columnSql, sqlValue, negate, sqlParams);
}
case NOT_EQUAL:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = true;
return buildSqlWhereClause_Equals(columnSql, sqlValue, negate, sqlParams);
}
case IN_ARRAY:
{
final List<Object> sqlValuesList = filterParam.getValueAsList(itemObj -> convertToSqlValue(itemObj, paramBinding, valueModifier));
return buildSqlWhereClause_InArray(columnSql, sqlValuesList, sqlParams);
}
case GREATER:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
return buildSqlWhereClause_Compare(columnSql, ">", sqlValue, sqlParams);
}
case GREATER_OR_EQUAL:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
return buildSqlWhereClause_Compare(columnSql, ">=", sqlValue, sqlParams);
}
case LESS:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
return buildSqlWhereClause_Compare(columnSql, "<", sqlValue, sqlParams);
}
case LESS_OR_EQUAL:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
return buildSqlWhereClause_Compare(columnSql, "<=", sqlValue, sqlParams);
}
case LIKE:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = false;
final boolean ignoreCase = false;
return buildSqlWhereClause_Like(columnSql, negate, ignoreCase, sqlValue, sqlParams);
}
case NOT_LIKE:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = true;
final boolean ignoreCase = false;
return buildSqlWhereClause_Like(columnSql, negate, ignoreCase, sqlValue, sqlParams);
}
case LIKE_I:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = false;
final boolean ignoreCase = true;
return buildSqlWhereClause_Like(columnSql, negate, ignoreCase, sqlValue, sqlParams);
}
case NOT_LIKE_I:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final boolean negate = true;
final boolean ignoreCase = true;
return buildSqlWhereClause_Like(columnSql, negate, ignoreCase, sqlValue, sqlParams);
}
case BETWEEN:
{
final Object sqlValue = convertToSqlValue(filterParam.getValue(), paramBinding, valueModifier);
final Object sqlValueTo = convertToSqlValue(filterParam.getValueTo(), paramBinding, valueModifier);
return buildSqlWhereClause_Between(columnSql, sqlValue, sqlValueTo, sqlParams);
}
default:
{
throw new IllegalArgumentException("Operator not supported: " + operator);
}
}
}
use of de.metas.ui.web.window.descriptor.sql.SqlEntityFieldBinding in project metasfresh-webui-api by metasfresh.
the class SqlViewKeyColumnNamesMap method buildWebuiSelectionColumnNamesByKeyColumnName.
private static ImmutableMap<String, String> buildWebuiSelectionColumnNamesByKeyColumnName(final List<SqlEntityFieldBinding> keyFields) {
final List<String> availableIntKeys = new ArrayList<>(I_T_WEBUI_ViewSelection.COLUMNNAME_IntKeys);
final List<String> availableStringKeys = new ArrayList<>(I_T_WEBUI_ViewSelection.COLUMNNAME_StringKeys);
final ImmutableMap.Builder<String, String> keyColumnName2selectionColumnName = ImmutableMap.builder();
for (SqlEntityFieldBinding keyField : keyFields) {
final List<String> availableKeys;
final Class<?> sqlValueClass = keyField.getSqlValueClass();
if (Integer.class.equals(sqlValueClass) || int.class.equals(sqlValueClass)) {
availableKeys = availableIntKeys;
} else if (String.class.equals(sqlValueClass)) {
availableKeys = availableStringKeys;
} else {
throw new AdempiereException("Only integer or string types are supported for key columns: " + keyField);
}
if (availableKeys.isEmpty()) {
throw new AdempiereException("No more available key columns found in " + I_T_WEBUI_ViewSelection.Table_Name + " for " + keyField);
}
final String webuiSelectionColumnName = availableKeys.remove(0);
keyColumnName2selectionColumnName.put(keyField.getColumnName(), webuiSelectionColumnName);
}
return keyColumnName2selectionColumnName.build();
}
Aggregations