From 4cb0910a2e24fe644804be8b666874c93add0501 Mon Sep 17 00:00:00 2001 From: Teo Sarca Date: Fri, 12 May 2017 12:40:46 +0300 Subject: [PATCH 1/4] use ILanguageBL.getAvailableLanguages() https://github.com/metasfresh/metasfresh/issues/1517 --- src/main/java/de/metas/ui/web/login/LoginRestController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/metas/ui/web/login/LoginRestController.java b/src/main/java/de/metas/ui/web/login/LoginRestController.java index c05ab97e3..340ff6073 100644 --- a/src/main/java/de/metas/ui/web/login/LoginRestController.java +++ b/src/main/java/de/metas/ui/web/login/LoginRestController.java @@ -302,9 +302,10 @@ public String getAD_Language() @RequestMapping(value = "/availableLanguages", method = RequestMethod.GET) public JSONLookupValuesList getAvailableLanguages() { - return Services.get(ILanguageBL.class).getAvailableLanguages(userSession.getCtx()) + return Services.get(ILanguageBL.class).getAvailableLanguages() + .toValueNamePairs() .stream() - .map(adLanguageObj -> JSONLookupValue.of(adLanguageObj.getAD_Language(), adLanguageObj.getName())) + .map(JSONLookupValue::ofNamePair) .collect(JSONLookupValuesList.collect()) .setDefaultValue(userSession.getAD_Language()); } From 73eeb9a588c3bddd41399dfb63f98aaf0f8dbe87 Mon Sep 17 00:00:00 2001 From: Teo Sarca Date: Fri, 12 May 2017 12:45:18 +0300 Subject: [PATCH 2/4] prototype: HUEditorViewFactory custom filters https://github.com/metasfresh/metasfresh-webui-api/issues/364 --- .../filter/DocumentFilterDescriptor.java | 2 +- .../filter/DocumentFilterParamDescriptor.java | 4 +-- ...ableDocumentFilterDescriptorsProvider.java | 9 +++-- .../handlingunits/HUEditorViewFactory.java | 36 +++++++++++++++---- .../ui/web/view/descriptor/ViewLayout.java | 7 ++-- 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/main/java/de/metas/ui/web/document/filter/DocumentFilterDescriptor.java b/src/main/java/de/metas/ui/web/document/filter/DocumentFilterDescriptor.java index e4c81ca08..0a1d631a1 100644 --- a/src/main/java/de/metas/ui/web/document/filter/DocumentFilterDescriptor.java +++ b/src/main/java/de/metas/ui/web/document/filter/DocumentFilterDescriptor.java @@ -47,7 +47,7 @@ public final class DocumentFilterDescriptor { - static final Builder builder() + public static final Builder builder() { return new Builder(); } diff --git a/src/main/java/de/metas/ui/web/document/filter/DocumentFilterParamDescriptor.java b/src/main/java/de/metas/ui/web/document/filter/DocumentFilterParamDescriptor.java index c9da9ed1e..e4a07ea22 100644 --- a/src/main/java/de/metas/ui/web/document/filter/DocumentFilterParamDescriptor.java +++ b/src/main/java/de/metas/ui/web/document/filter/DocumentFilterParamDescriptor.java @@ -36,9 +36,9 @@ * #L% */ -public class DocumentFilterParamDescriptor +public final class DocumentFilterParamDescriptor { - static final Builder builder() + public static final Builder builder() { return new Builder(); } diff --git a/src/main/java/de/metas/ui/web/document/filter/ImmutableDocumentFilterDescriptorsProvider.java b/src/main/java/de/metas/ui/web/document/filter/ImmutableDocumentFilterDescriptorsProvider.java index 7a0c9f2a3..5372fac78 100644 --- a/src/main/java/de/metas/ui/web/document/filter/ImmutableDocumentFilterDescriptorsProvider.java +++ b/src/main/java/de/metas/ui/web/document/filter/ImmutableDocumentFilterDescriptorsProvider.java @@ -15,6 +15,9 @@ import com.google.common.collect.Maps; import groovy.transform.Immutable; +import lombok.Builder; +import lombok.Singular; +import lombok.ToString; /* * #%L @@ -39,7 +42,8 @@ */ @Immutable -final class ImmutableDocumentFilterDescriptorsProvider implements DocumentFilterDescriptorsProvider +@ToString +public final class ImmutableDocumentFilterDescriptorsProvider implements DocumentFilterDescriptorsProvider { public static final ImmutableDocumentFilterDescriptorsProvider of(final List descriptors) { @@ -76,7 +80,8 @@ public static final ImmutableDocumentFilterDescriptorsProvider of(final Document private final Map descriptorsByFilterId; - public ImmutableDocumentFilterDescriptorsProvider(final List descriptors) + @Builder + private ImmutableDocumentFilterDescriptorsProvider(@Singular final List descriptors) { super(); descriptorsByFilterId = Maps.uniqueIndex(descriptors, descriptor -> descriptor.getFilterId()); diff --git a/src/main/java/de/metas/ui/web/handlingunits/HUEditorViewFactory.java b/src/main/java/de/metas/ui/web/handlingunits/HUEditorViewFactory.java index 6e96cf0cf..cb3c389a2 100644 --- a/src/main/java/de/metas/ui/web/handlingunits/HUEditorViewFactory.java +++ b/src/main/java/de/metas/ui/web/handlingunits/HUEditorViewFactory.java @@ -2,9 +2,7 @@ import java.util.Collection; import java.util.Set; -import java.util.function.Supplier; -import org.adempiere.util.lang.ExtendedMemorizingSupplier; import org.compiere.util.CCache; import org.compiere.util.Util.ArrayKey; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +11,8 @@ import de.metas.handlingunits.model.I_M_HU; import de.metas.ui.web.document.filter.DocumentFilterDescriptor; +import de.metas.ui.web.document.filter.DocumentFilterDescriptorsProvider; +import de.metas.ui.web.document.filter.ImmutableDocumentFilterDescriptorsProvider; import de.metas.ui.web.view.IViewFactory; import de.metas.ui.web.view.ViewCreateRequest; import de.metas.ui.web.view.ViewFactory; @@ -57,14 +57,33 @@ public class HUEditorViewFactory implements IViewFactory @Autowired private DocumentDescriptorFactory documentDescriptorFactory; - private static final Supplier sqlViewBindingSupplier = ExtendedMemorizingSupplier.of(() -> createSqlViewBinding()); + private final transient CCache sqlViewBindingCache = CCache.newCache("SqlViewBinding", 1, 0); private final transient CCache layouts = CCache.newLRUCache("HUEditorViewFactory#Layouts", 10, 0); private SqlViewBinding getSqlViewBinding() { - return sqlViewBindingSupplier.get(); + final int key = 0; // not important + return sqlViewBindingCache.getOrLoad(key, () -> createSqlViewBinding()); } - + + private static final DocumentFilterDescriptorsProvider createFilterDescriptors() + { + // TODO: implement +// final ITranslatableString caption = Services.get(IMsgBL.class).translatable("Barcode"); + final DocumentFilterDescriptorsProvider viewFilterDescriptors = ImmutableDocumentFilterDescriptorsProvider.builder() +// .descriptor(DocumentFilterDescriptor.builder() +// .setFilterId("barcode") +// .setDisplayName(caption) +// .addParameter(DocumentFilterParamDescriptor.builder() +// .setFieldName("Barcode") +// .setDisplayName(caption) +// .setWidgetType(DocumentFieldWidgetType.Text)) +// .build()) + .build(); + + return viewFilterDescriptors; + } + private static SqlViewBinding createSqlViewBinding() { return SqlViewBinding.builder() @@ -81,6 +100,7 @@ private static SqlViewBinding createSqlViewBinding() .build()) // .setOrderBys(ImmutableList.of(DocumentQueryOrderBy.byFieldName(I_M_HU.COLUMNNAME_M_HU_ID, true))) + .setViewFilterDescriptors(createFilterDescriptors()) .build(); } @@ -96,7 +116,7 @@ public Collection getViewFilterDescriptors(final Windo { return getSqlViewBinding().getViewFilterDescriptors().getAll(); } - + private final ViewLayout createHUViewLayout(final WindowId windowId, JSONViewDataType viewDataType) { if (viewDataType == JSONViewDataType.includedView) @@ -117,6 +137,7 @@ private final ViewLayout createHUViewLayout_IncludedView(final WindowId windowId .setEmptyResultText(LayoutFactory.HARDCODED_TAB_EMPTY_RESULT_TEXT) .setEmptyResultHint(LayoutFactory.HARDCODED_TAB_EMPTY_RESULT_HINT) .setIdFieldName(IHUEditorRow.COLUMNNAME_M_HU_ID) + .setFilters(getSqlViewBinding().getViewFilterDescriptors().getAll()) // .setHasAttributesSupport(true) .setHasTreeSupport(true) @@ -153,6 +174,7 @@ private final ViewLayout createHUViewLayout_Grid(final WindowId windowId) .setEmptyResultText(LayoutFactory.HARDCODED_TAB_EMPTY_RESULT_TEXT) .setEmptyResultHint(LayoutFactory.HARDCODED_TAB_EMPTY_RESULT_HINT) .setIdFieldName(IHUEditorRow.COLUMNNAME_M_HU_ID) + .setFilters(getSqlViewBinding().getViewFilterDescriptors().getAll()) // .setHasAttributesSupport(true) .setHasTreeSupport(true) @@ -220,7 +242,7 @@ public HUEditorView createView(final ViewCreateRequest request) { referencingTableName = null; } - + final Set huIds = request.getFilterOnlyIds(); return HUEditorView.builder(getSqlViewBinding()) .setParentViewId(request.getParentViewId()) diff --git a/src/main/java/de/metas/ui/web/view/descriptor/ViewLayout.java b/src/main/java/de/metas/ui/web/view/descriptor/ViewLayout.java index 2160498a3..840385695 100644 --- a/src/main/java/de/metas/ui/web/view/descriptor/ViewLayout.java +++ b/src/main/java/de/metas/ui/web/view/descriptor/ViewLayout.java @@ -1,6 +1,7 @@ package de.metas.ui.web.view.descriptor; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Set; import java.util.stream.Stream; @@ -172,7 +173,7 @@ public static final class Builder private ITranslatableString emptyResultText; private ITranslatableString emptyResultHint; - private List filters = null; + private Collection filters = null; private boolean hasAttributesSupport = false; private boolean hasTreeSupport = false; @@ -296,7 +297,7 @@ public boolean hasElement(final String fieldName) return findElementBuilderByFieldName(fieldName) != null; } - public List getFilters() + private Collection getFilters() { if(filters == null || filters.isEmpty()) { @@ -305,7 +306,7 @@ public List getFilters() return filters; } - public Builder setFilters(List filters) + public Builder setFilters(final Collection filters) { this.filters = filters; return this; From f5b4729619b1fa1a136c98db0b808e4693efaf88 Mon Sep 17 00:00:00 2001 From: Teo Sarca Date: Fri, 12 May 2017 13:47:28 +0300 Subject: [PATCH 3/4] move ILanguageBL to de.metas.i18n https://github.com/metasfresh/metasfresh/issues/1517 --- src/main/java/de/metas/ui/web/login/LoginRestController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/metas/ui/web/login/LoginRestController.java b/src/main/java/de/metas/ui/web/login/LoginRestController.java index 340ff6073..68c7f0b6f 100644 --- a/src/main/java/de/metas/ui/web/login/LoginRestController.java +++ b/src/main/java/de/metas/ui/web/login/LoginRestController.java @@ -5,7 +5,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; -import org.adempiere.ad.api.ILanguageBL; import org.adempiere.ad.session.ISessionBL; import org.adempiere.ad.session.MFSession; import org.adempiere.exceptions.AdempiereException; @@ -30,6 +29,7 @@ import com.google.common.base.Joiner; import com.google.common.collect.ImmutableSet; +import de.metas.i18n.ILanguageBL; import de.metas.ui.web.base.session.UserPreference; import de.metas.ui.web.config.WebConfig; import de.metas.ui.web.login.exceptions.NotAuthenticatedException; From 732916e163832c5734ebb9896552acacfa1c08a6 Mon Sep 17 00:00:00 2001 From: Teo Sarca Date: Fri, 12 May 2017 15:47:21 +0300 Subject: [PATCH 4/4] move Language to de.metas.i18n package https://github.com/metasfresh/metasfresh/issues/1517 --- .../java/de/metas/ui/web/session/InternalUserSessionData.java | 2 +- src/main/java/de/metas/ui/web/session/UserSession.java | 2 +- .../de/metas/ui/web/session/UserSessionRestController.java | 2 +- .../java/de/metas/ui/web/session/json/JSONUserSession.java | 3 +-- .../factory/standard/GenericDocumentSummaryValueProvider.java | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/metas/ui/web/session/InternalUserSessionData.java b/src/main/java/de/metas/ui/web/session/InternalUserSessionData.java index a79f67222..ce0d802d5 100644 --- a/src/main/java/de/metas/ui/web/session/InternalUserSessionData.java +++ b/src/main/java/de/metas/ui/web/session/InternalUserSessionData.java @@ -6,7 +6,6 @@ import java.util.Properties; import org.compiere.util.Env; -import org.compiere.util.Language; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Primary; @@ -19,6 +18,7 @@ import com.google.common.base.MoreObjects; +import de.metas.i18n.Language; import de.metas.ui.web.base.session.UserPreference; /* diff --git a/src/main/java/de/metas/ui/web/session/UserSession.java b/src/main/java/de/metas/ui/web/session/UserSession.java index 7d5205151..58c04e6d1 100644 --- a/src/main/java/de/metas/ui/web/session/UserSession.java +++ b/src/main/java/de/metas/ui/web/session/UserSession.java @@ -11,13 +11,13 @@ import org.compiere.util.Env; import org.compiere.util.Evaluatee; import org.compiere.util.Evaluatees; -import org.compiere.util.Language; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.web.context.request.RequestContextHolder; +import de.metas.i18n.Language; import de.metas.logging.LogManager; import de.metas.ui.web.base.session.UserPreference; import de.metas.ui.web.exceptions.DeprecatedRestAPINotAllowedException; diff --git a/src/main/java/de/metas/ui/web/session/UserSessionRestController.java b/src/main/java/de/metas/ui/web/session/UserSessionRestController.java index 9c9ac1377..a92c6366e 100644 --- a/src/main/java/de/metas/ui/web/session/UserSessionRestController.java +++ b/src/main/java/de/metas/ui/web/session/UserSessionRestController.java @@ -1,6 +1,5 @@ package de.metas.ui.web.session; -import org.compiere.util.Language; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -8,6 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import de.metas.i18n.Language; import de.metas.ui.web.config.WebConfig; import de.metas.ui.web.session.json.JSONUserSession; import de.metas.ui.web.window.datatypes.json.JSONLookupValue; diff --git a/src/main/java/de/metas/ui/web/session/json/JSONUserSession.java b/src/main/java/de/metas/ui/web/session/json/JSONUserSession.java index 8c782e09e..a71b72af9 100644 --- a/src/main/java/de/metas/ui/web/session/json/JSONUserSession.java +++ b/src/main/java/de/metas/ui/web/session/json/JSONUserSession.java @@ -1,12 +1,11 @@ package de.metas.ui.web.session.json; -import org.compiere.util.Language; - import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import de.metas.i18n.Language; import de.metas.ui.web.session.UserSession; import de.metas.ui.web.window.datatypes.json.JSONDate; import de.metas.ui.web.window.datatypes.json.JSONLookupValue; diff --git a/src/main/java/de/metas/ui/web/window/descriptor/factory/standard/GenericDocumentSummaryValueProvider.java b/src/main/java/de/metas/ui/web/window/descriptor/factory/standard/GenericDocumentSummaryValueProvider.java index 875923259..17c451d94 100644 --- a/src/main/java/de/metas/ui/web/window/descriptor/factory/standard/GenericDocumentSummaryValueProvider.java +++ b/src/main/java/de/metas/ui/web/window/descriptor/factory/standard/GenericDocumentSummaryValueProvider.java @@ -13,13 +13,13 @@ import org.compiere.model.ILookupDisplayColumn; import org.compiere.util.DisplayType; import org.compiere.util.Env; -import org.compiere.util.Language; import org.slf4j.Logger; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import de.metas.i18n.Language; import de.metas.logging.LogManager; import de.metas.printing.esb.base.util.Check; import de.metas.ui.web.window.WindowConstants;