diff --git a/src/main/java/de/metas/ui/web/document/filter/provider/DocumentFilterDescriptorsProviderFactory.java b/src/main/java/de/metas/ui/web/document/filter/provider/DocumentFilterDescriptorsProviderFactory.java index 628d2f071..dc7430031 100644 --- a/src/main/java/de/metas/ui/web/document/filter/provider/DocumentFilterDescriptorsProviderFactory.java +++ b/src/main/java/de/metas/ui/web/document/filter/provider/DocumentFilterDescriptorsProviderFactory.java @@ -34,4 +34,6 @@ public interface DocumentFilterDescriptorsProviderFactory { @Nullable DocumentFilterDescriptorsProvider createFiltersProvider(AdTabId adTabId, String tableName, Collection fields); + + default boolean isActive() { return true; } } diff --git a/src/main/java/de/metas/ui/web/document/filter/provider/DocumentFilterDescriptorsProvidersService.java b/src/main/java/de/metas/ui/web/document/filter/provider/DocumentFilterDescriptorsProvidersService.java index a5833aff0..fdd8197f1 100644 --- a/src/main/java/de/metas/ui/web/document/filter/provider/DocumentFilterDescriptorsProvidersService.java +++ b/src/main/java/de/metas/ui/web/document/filter/provider/DocumentFilterDescriptorsProvidersService.java @@ -62,17 +62,12 @@ public DocumentFilterDescriptorsProvider createFiltersProvider( @Nullable final String tableName, @NonNull final Collection fields) { - final List providers = new ArrayList<>(); - for (DocumentFilterDescriptorsProviderFactory providerFactory : providerFactories) - { - final DocumentFilterDescriptorsProvider provider = providerFactory.createFiltersProvider(adTabId, tableName, fields); - if (NullDocumentFilterDescriptorsProvider.isNull(provider)) - { - continue; - } - - providers.add(provider); - } + final ImmutableList providers = providerFactories + .stream() + .filter(DocumentFilterDescriptorsProviderFactory::isActive) + .map(provider -> provider.createFiltersProvider(adTabId, tableName, fields)) + .filter(NullDocumentFilterDescriptorsProvider::isNotNull) + .collect(ImmutableList.toImmutableList()); return CompositeDocumentFilterDescriptorsProvider.compose(providers); } diff --git a/src/main/java/de/metas/ui/web/document/filter/provider/NullDocumentFilterDescriptorsProvider.java b/src/main/java/de/metas/ui/web/document/filter/provider/NullDocumentFilterDescriptorsProvider.java index a5d15eae7..edbda1687 100644 --- a/src/main/java/de/metas/ui/web/document/filter/provider/NullDocumentFilterDescriptorsProvider.java +++ b/src/main/java/de/metas/ui/web/document/filter/provider/NullDocumentFilterDescriptorsProvider.java @@ -3,6 +3,7 @@ import java.util.Collection; import java.util.Map; +import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import com.fasterxml.jackson.annotation.JsonValue; @@ -38,12 +39,12 @@ public final class NullDocumentFilterDescriptorsProvider implements DocumentFilt { public static final transient NullDocumentFilterDescriptorsProvider instance = new NullDocumentFilterDescriptorsProvider(); - public static boolean isNull(final DocumentFilterDescriptorsProvider provider) + public static boolean isNull(@Nullable final DocumentFilterDescriptorsProvider provider) { return provider == null || provider == instance; } - public static boolean isNotNull(final DocumentFilterDescriptorsProvider provider) + public static boolean isNotNull(@Nullable final DocumentFilterDescriptorsProvider provider) { return !isNull(provider); } diff --git a/src/main/java/de/metas/ui/web/document/geo_location/GeoLocationDocumentService.java b/src/main/java/de/metas/ui/web/document/geo_location/GeoLocationDocumentService.java index 67ce9440b..a01844c3c 100644 --- a/src/main/java/de/metas/ui/web/document/geo_location/GeoLocationDocumentService.java +++ b/src/main/java/de/metas/ui/web/document/geo_location/GeoLocationDocumentService.java @@ -7,6 +7,7 @@ import org.adempiere.ad.element.api.AdTabId; import org.adempiere.exceptions.AdempiereException; +import org.adempiere.service.ISysConfigBL; import org.compiere.model.I_C_BPartner_Location; import org.compiere.model.I_C_Country; import org.compiere.model.I_C_Location; @@ -59,8 +60,10 @@ public class GeoLocationDocumentService implements DocumentFilterDescriptorsProviderFactory { private final transient IMsgBL msgBL = Services.get(IMsgBL.class); + private final transient ISysConfigBL sysConfigBL = Services.get(ISysConfigBL.class); private static final String MSG_FILTER_CAPTION = "LocationAreaSearch"; + private static final String SYS_CONFIG_ENABLE_GEO_LOCATION_SEARCH = "de.metas.ui.web.document.geo_location.filter_enabled"; private static final GeoLocationDocumentDescriptor DESCRIPTOR_FOR_LocationId = GeoLocationDocumentDescriptor.builder() .type(LocationColumnNameType.LocationId) @@ -121,6 +124,10 @@ public boolean hasGeoLocationSupport(@NonNull final Set fieldNames) return getGeoLocationDocumentDescriptorOrNull(fieldNames) != null; } + public boolean isActive() { + return sysConfigBL.getBooleanValue(SYS_CONFIG_ENABLE_GEO_LOCATION_SEARCH, Boolean.TRUE); + } + @Nullable private static GeoLocationDocumentDescriptor getGeoLocationDocumentDescriptorOrNull(@NonNull final Set fieldNames) {