Skip to content

Commit

Permalink
The actual fix is in GridTabVOBasedDocumentEntityDescriptorFactory..
Browse files Browse the repository at this point in the history
also: 
* renamed a method in DocumentField to be more informative
* minor stuff

AD_Column.IsMandatory shall be overwritten by MandatoryLogic
#607
  • Loading branch information
metas-ts committed Sep 21, 2017
1 parent cbf3805 commit 6124a6e
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import de.metas.ui.web.window.model.IDocumentFieldValueProvider;
import de.metas.ui.web.window.model.lookup.LabelsLookup;
import de.metas.ui.web.window.model.sql.SqlDocumentsRepository;
import lombok.NonNull;

/*
* #%L
Expand Down Expand Up @@ -388,7 +389,7 @@ else if (actionType == ButtonFieldActionType.genericZoomInto)
//
.setReadonlyLogic(readonlyLogic)
.setAlwaysUpdateable(alwaysUpdateable)
.setMandatoryLogic(gridFieldVO.isMandatory() ? ConstantLogicExpression.TRUE : gridFieldVO.getMandatoryLogic())
.setMandatoryLogic(extractMandatoryLogic(gridFieldVO))
.setDisplayLogic(gridFieldVO.getDisplayLogic())
//
.setDefaultFilterField(gridFieldVO.isSelectionColumn())
Expand Down Expand Up @@ -631,6 +632,13 @@ private static boolean extractAlwaysUpdateable(final GridFieldVO gridFieldVO)
return gridFieldVO.isAlwaysUpdateable();
}

private static ILogicExpression extractMandatoryLogic(@NonNull final GridFieldVO gridFieldVO)
{
final ILogicExpression mandatoryLogic = gridFieldVO.getMandatoryLogic();

return mandatoryLogic.isNullExpression() ? ConstantLogicExpression.of(gridFieldVO.isMandatory()) : mandatoryLogic;
}

private final void collectSpecialField(final DocumentFieldDescriptor.Builder field)
{
if (_specialFieldsCollector == null)
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/de/metas/ui/web/window/model/Document.java
Original file line number Diff line number Diff line change
Expand Up @@ -1707,7 +1707,7 @@ public DocumentValidStatus checkAndGetValidStatus()
continue;
}

final DocumentValidStatus validState = documentField.updateStatusIfInvalidAndGet(changesCollector);
final DocumentValidStatus validState = documentField.updateStatusIfInitialInvalidAndGet(changesCollector);
if (!validState.isValid())
{
logger.trace("Considering document invalid because {} is not valid: {}", documentField, validState);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,7 @@ public DocumentValidStatus getValidStatus()
}

@Override
public DocumentValidStatus updateStatusIfInvalidAndGet(final IDocumentChangesCollector changesCollector)
public DocumentValidStatus updateStatusIfInitialInvalidAndGet(final IDocumentChangesCollector changesCollector)
{
if (_validStatus.isInitialInvalid())
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,11 @@ default DocumentPath getDocumentPath()
@Override
DocumentValidStatus getValidStatus();

DocumentValidStatus updateStatusIfInvalidAndGet(IDocumentChangesCollector changesCollector);
/**
* Note: it's not clear why it is enough to only evaluate the while the <i>initial</i> status is invalid..<br>
* Yet I keep it that way for now, because it works as far as we see. And changing it might result in a performance degradation.
*/
DocumentValidStatus updateStatusIfInitialInvalidAndGet(IDocumentChangesCollector changesCollector);

IDocumentField copy(Document document, CopyMode copyMode);
}

0 comments on commit 6124a6e

Please sign in to comment.