Skip to content

Commit

Permalink
Revert "refactor (partial)"
Browse files Browse the repository at this point in the history
This reverts commit 6bf05de.
  • Loading branch information
teosarca committed Nov 7, 2018
1 parent 6bf05de commit 7875c81
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import org.adempiere.ad.expression.api.ILogicExpression;
import org.adempiere.ad.table.api.IADTableDAO;
import org.adempiere.model.InterfaceWrapperHelper;
import org.adempiere.util.lang.IPair;
import org.adempiere.util.lang.ImmutablePair;
import org.compiere.Adempiere;
import org.compiere.model.GridFieldDefaultFilterDescriptor;
import org.compiere.model.GridFieldVO;
Expand Down Expand Up @@ -51,7 +53,6 @@
import de.metas.ui.web.window.descriptor.LookupDescriptor;
import de.metas.ui.web.window.descriptor.LookupDescriptorProvider;
import de.metas.ui.web.window.descriptor.sql.SqlDocumentEntityDataBindingDescriptor;
import de.metas.ui.web.window.descriptor.sql.SqlDocumentEntityDataBindingDescriptor.ParentAndChildLinkColumnNames;
import de.metas.ui.web.window.descriptor.sql.SqlDocumentFieldDataBindingDescriptor;
import de.metas.ui.web.window.descriptor.sql.SqlLookupDescriptor;
import de.metas.ui.web.window.model.DocumentsRepository;
Expand Down Expand Up @@ -192,7 +193,7 @@ private DocumentEntityDescriptor.Builder createDocumentEntityBuilder(
.setDocumentsRepository(documentsRepository)
.setTableName(tableName)
.setTableAliasFromDetailId(detailId)
.setParentLink(extractChildAndParentLinkColumnNames(gridTabVO, parentTabVO))
.setChildToParentLinkColumnNames(extractChildParentLinkColumnNames(gridTabVO, parentTabVO))
.setSqlWhereClause(gridTabVO.getWhereClause());

final ILogicExpression allowInsert = ConstantLogicExpression.of(gridTabVO.isInsertRecord());
Expand Down Expand Up @@ -292,7 +293,7 @@ DocumentFieldDescriptor.Builder documentField(final String fieldName)
private final void createAndAddDocumentField(
final DocumentEntityDescriptor.Builder entityDescriptorBuilder,
final GridFieldVO gridFieldVO,
final boolean keyColumnX)
final boolean keyColumn)
{
// From entry data-binding:
final SqlDocumentEntityDataBindingDescriptor.Builder entityBindings = entityDescriptorBuilder.getDataBindingBuilder(SqlDocumentEntityDataBindingDescriptor.Builder.class);
Expand Down Expand Up @@ -422,7 +423,6 @@ else if (actionType == ButtonFieldActionType.genericZoomInto)
.setDefaultOrderBy(orderBySortNo)
.build();

final ParentAndChildLinkColumnNames parentLink = isParentLinkColumn ? entityBindings.getParentLink() : null;
final String parentLinkFieldName = isParentLinkColumn ? entityBindings.getSqlParentLinkColumnName() : null;
final DocumentFieldDescriptor.Builder fieldBuilder = DocumentFieldDescriptor.builder(sqlColumnName)
.setCaption(gridFieldVO.getHeaderTrls(), gridFieldVO.getHeader())
Expand Down Expand Up @@ -481,14 +481,10 @@ private static boolean isCurrentlyUsedParentLinkField(
// }

final SqlDocumentEntityDataBindingDescriptor.Builder entityBindings = entityDescriptorBuilder.getDataBindingBuilder(SqlDocumentEntityDataBindingDescriptor.Builder.class);
final ParentAndChildLinkColumnNames parentLink = entityBindings.getParentLink();
if(parentLink == null)
{
return false;
}
final String parentLinkColumnName = entityBindings.getSqlParentLinkColumnName();

// if there is a parent link column, only the respective gridFieldVO is a key
return Objects.equals(gridFieldVO.getColumnName(), parentLink.getParentColumnName());
return Objects.equals(gridFieldVO.getColumnName(), parentLinkColumnName);
}

private LookupDescriptorProvider wrapFullTextSeachFilterDescriptorProvider(@NonNull final LookupDescriptorProvider databaseLookupDescriptorProvider)
Expand Down Expand Up @@ -789,11 +785,9 @@ public final DocumentFieldDescriptor.Builder addInternalVirtualField(
}

/**
* @return a pair of "child link column name" (left) and "parent link column name" (right); might be null
* @return a pair of "child link column name" - "parent link column name"
*/
private static final ParentAndChildLinkColumnNames extractChildAndParentLinkColumnNames(
@NonNull final GridTabVO childTabVO,
@Nullable final GridTabVO parentTabVO)
private static final IPair<String, String> extractChildParentLinkColumnNames(final GridTabVO childTabVO, final GridTabVO parentTabVO)
{
// If this is the master tab then there is no parent link
if (parentTabVO == null)
Expand Down Expand Up @@ -824,17 +818,13 @@ private static final ParentAndChildLinkColumnNames extractChildAndParentLinkColu
}
else if (childLinkColumnNames.size() == 1)
{
return ParentAndChildLinkColumnNames.builder()
.parentColumnName(parentLinkColumnName)
.childColumnName(childLinkColumnNames.iterator().next())
.build();
final String childLinkColumnName = childLinkColumnNames.iterator().next();
return ImmutablePair.of(childLinkColumnName, parentLinkColumnName);
}
else if (childLinkColumnNames.contains(parentLinkColumnName))
{
return ParentAndChildLinkColumnNames.builder()
.parentColumnName(parentLinkColumnName)
.childColumnName(parentLinkColumnName)
.build();
final String childLinkColumnName = parentLinkColumnName;
return ImmutablePair.of(childLinkColumnName, parentLinkColumnName);
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.adempiere.ad.security.IUserRolePermissions;
import org.adempiere.ad.security.impl.AccessSqlStringExpression;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.util.lang.IPair;
import org.compiere.model.POInfo;

import com.google.common.base.Joiner;
Expand Down Expand Up @@ -80,7 +81,8 @@ public static final SqlDocumentEntityDataBindingDescriptor cast(final DocumentEn
private final DocumentsRepository documentsRepository;
private final String sqlTableName;
private final String sqlTableAlias;
private final ParentAndChildLinkColumnNames parentLink;
private final String sqlLinkColumnName;
private final String sqlParentLinkColumnName;

private final ICachedStringExpression sqlSelectAllFrom;
private final ICachedStringExpression sqlWhereClause;
Expand All @@ -101,7 +103,8 @@ private SqlDocumentEntityDataBindingDescriptor(final Builder builder)
sqlTableAlias = builder.getTableAlias();
Check.assumeNotEmpty(sqlTableAlias, "sqlTableAlias is not empty");

parentLink = builder.getParentLink();
sqlLinkColumnName = builder.getSqlLinkColumnName();
sqlParentLinkColumnName = builder.getSqlParentLinkColumnName();

_fieldsByFieldName = ImmutableMap.copyOf(builder.getFieldsByFieldName());
keyFields = ImmutableList.copyOf(builder.getKeyFields());
Expand Down Expand Up @@ -166,9 +169,20 @@ private String getSingleKeyColumnName()
return keyFields.get(0).getColumnName();
}

public ParentAndChildLinkColumnNames getParentLink()
/**
* @return the column name from this entity which will link to parent
*/
public String getLinkColumnName()
{
return parentLink;
return sqlLinkColumnName;
}

/**
* @return the column name from parent entity on which {@link #getLinkColumnName()} shall join
*/
public String getParentLinkColumnName()
{
return sqlParentLinkColumnName;
}

public IStringExpression getSqlSelectAllFrom()
Expand Down Expand Up @@ -227,7 +241,8 @@ public static final class Builder implements DocumentEntityDataBindingDescriptor
private DocumentsRepository documentsRepository;
private String _sqlTableName;
private String _tableAlias;
private ParentAndChildLinkColumnNames parentLink;
private String _sqlLinkColumnName;
private String _sqlParentLinkColumnName;
private String _sqlWhereClause = null;
private IStringExpression _sqlWhereClauseExpression;

Expand Down Expand Up @@ -421,16 +436,31 @@ public String getTableAlias()
return _tableAlias;
}

public Builder setParentLink(final ParentAndChildLinkColumnNames parentLink)
public Builder setChildToParentLinkColumnNames(final IPair<String, String> childToParentLinkColumnNames)
{
assertNotBuilt();
this.parentLink = parentLink;

if (childToParentLinkColumnNames != null)
{
_sqlLinkColumnName = childToParentLinkColumnNames.getLeft();
_sqlParentLinkColumnName = childToParentLinkColumnNames.getRight();
}
else
{
_sqlLinkColumnName = null;
_sqlParentLinkColumnName = null;
}
return this;
}

public ParentAndChildLinkColumnNames getParentLink()

public String getSqlLinkColumnName()
{
return _sqlLinkColumnName;
}

public String getSqlParentLinkColumnName()
{
return parentLink;
return _sqlParentLinkColumnName;
}

public Builder setSqlWhereClause(final String sqlWhereClause)
Expand Down Expand Up @@ -493,14 +523,4 @@ private Optional<String> getSqlSelectVersionById()
return Optional.of(sql);
}
}

@lombok.Value
@lombok.Builder
public static class ParentAndChildLinkColumnNames
{
@NonNull
String childColumnName;
@NonNull
String parentColumnName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import de.metas.ui.web.window.descriptor.DocumentFieldDescriptor;
import de.metas.ui.web.window.descriptor.DocumentFieldWidgetType;
import de.metas.ui.web.window.descriptor.sql.SqlDocumentEntityDataBindingDescriptor;
import de.metas.ui.web.window.descriptor.sql.SqlDocumentEntityDataBindingDescriptor.ParentAndChildLinkColumnNames;
import de.metas.ui.web.window.descriptor.sql.SqlDocumentFieldDataBindingDescriptor;
import de.metas.ui.web.window.descriptor.sql.SqlEntityFieldBinding;
import de.metas.ui.web.window.model.Document;
Expand Down Expand Up @@ -182,12 +181,13 @@ private String getPermissionsKey()
*/
public String getSqlSelectParentId(final List<Object> outSqlParams, final DocumentEntityDescriptor parentEntityDescriptor)
{
final ParentAndChildLinkColumnNames parentLink = entityBinding.getParentLink();
// final String linkColumnName = entityBinding.getLinkColumnName();
// final String parentLinkColumnName = entityBinding.getParentLinkColumnName();
if (parentLink == null)
final String linkColumnName = entityBinding.getLinkColumnName();
final String parentLinkColumnName = entityBinding.getParentLinkColumnName();
if (parentLinkColumnName == null || linkColumnName == null)
{
throw new AdempiereException("Selecting parent ID is not possible because this entity does not have a parent link")
.setParameter("linkColumnName", linkColumnName)
.setParameter("parentLinkColumnName", parentLinkColumnName)
.setParameter("entityBinding", entityBinding);
}

Expand All @@ -201,7 +201,7 @@ public String getSqlSelectParentId(final List<Object> outSqlParams, final Docume
final List<Object> sqlWhereParams = sqlWhereAndParams.getRight();

sqlSelectLinkColumnName
.append("SELECT " + parentLink.getChildColumnName())
.append("SELECT " + linkColumnName)
.append(" FROM " + entityBinding.getTableName() + " " + entityBinding.getTableAlias()) // NOTE: we need table alias because the where clause is using it
.append("\n WHERE ").append(sqlWhere);
sqlSelectLinkColumnNameParams.addAll(sqlWhereParams);
Expand All @@ -210,7 +210,7 @@ public String getSqlSelectParentId(final List<Object> outSqlParams, final Docume
//
//
final String parentKeyColumnName = extractSingleKeyColumnName(parentEntityDescriptor);
if (Objects.equals(parentKeyColumnName, parentLink.getParentColumnName()))
if (Objects.equals(parentKeyColumnName, parentLinkColumnName))
{
final Evaluatee evalCtx = getEvaluationContext();

Expand All @@ -224,7 +224,7 @@ public String getSqlSelectParentId(final List<Object> outSqlParams, final Docume

final String sql = IStringExpression.composer()
.append("SELECT " + parentKeyColumnName + " FROM " + parentEntityDescriptor.getTableName())
.append("\n WHERE " + parentLink.getParentColumnName() + " IN (").append(sqlSelectLinkColumnName).append(")")
.append("\n WHERE " + parentLinkColumnName + " IN (").append(sqlSelectLinkColumnName).append(")")
.build()
.evaluate(evalCtx, OnVariableNotFound.Fail);
outSqlParams.addAll(sqlSelectLinkColumnNameParams);
Expand Down Expand Up @@ -420,12 +420,10 @@ else if (keyFields.size() == 1)
final Document parentDocument = getParentDocument();
if (parentDocument != null)
{
final ParentAndChildLinkColumnNames parentLink = entityBinding.getParentLink();
if (parentLink != null)
final String parentLinkColumnName = entityBinding.getParentLinkColumnName();
final String linkColumnName = entityBinding.getLinkColumnName();
if (parentLinkColumnName != null && linkColumnName != null)
{
final String parentLinkColumnName = parentLink.getParentColumnName();
final String linkColumnName = parentLink.getChildColumnName();

final IDocumentFieldView parentLinkField = parentDocument.getFieldView(parentLinkColumnName);
final Object parentLinkValue = parentLinkField.getValue();
final DocumentFieldWidgetType parentLinkWidgetType = parentLinkField.getWidgetType();
Expand Down

0 comments on commit 7875c81

Please sign in to comment.