From fbcda5eaf6835a5117acfcd35b95db2a6c3189e9 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 5 Aug 2021 15:25:06 +0200 Subject: [PATCH] Implementato servizio di retrieve menu --- .../core/menu/MenuService.java | 44 +++++++++++++- .../menu/exception/MenuNotFoundException.java | 8 +++ .../core/rest/RESTBuilder.java | 7 --- .../gest/main/MainActivity.java | 4 ++ .../gest/main/MainFragment.java | 57 ++++++++++++++++++- 5 files changed, 110 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/menu/exception/MenuNotFoundException.java diff --git a/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuService.java b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuService.java index 3fe5466d..bdc1f118 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuService.java @@ -1,11 +1,17 @@ package it.integry.integrywmsnative.core.menu; +import com.annimon.stream.Stream; + +import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; +import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; +import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.menu.exception.MenuNotFoundException; import it.integry.integrywmsnative.core.model.StbMenu; @Singleton @@ -16,6 +22,7 @@ public class MenuService { private final MenuRESTConsumer menuRESTConsumer; private List mInternalCachedMenu; + private List mInternalCachedFlatMenu; @Inject public MenuService(MenuRESTConsumer menuRESTConsumer) { @@ -24,13 +31,46 @@ public class MenuService { public void init(Runnable onMenuInitialized, RunnableArgs onFailed) { menuRESTConsumer.retrieveMenu(MENU_COD_OPZ, menu -> { - if(menu != null) this.mInternalCachedMenu = menu.getStbMenuChildren(); + if(menu != null) { + this.mInternalCachedMenu = menu.getStbMenuChildren(); + this.mInternalCachedFlatMenu = new ArrayList<>(); + flattenMenu(this.mInternalCachedMenu); + } + onMenuInitialized.run(); }, onFailed); } - public void getMenu() { + public List getMenu() throws Exception { + if(mInternalCachedMenu == null) throw new MenuNotFoundException(); + return mInternalCachedMenu; + } + + + public boolean isGroupEnabled(MenuConfiguration.MenuGroup androidMenuGroup) throws Exception { + List dbMenu = getMenu(); + + return Stream.of(this.mInternalCachedFlatMenu) + .anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuGroup.getCodMenu())); + } + + + public boolean isItemEnabled(BaseMenuConfiguration.MenuItem androidMenuItem) throws Exception { + List dbMenu = getMenu(); + + return Stream.of(this.mInternalCachedFlatMenu) + .anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuItem.getCodMenu())); + } + + private void flattenMenu(List menu) { + for(StbMenu stbMenu : menu) { + this.mInternalCachedFlatMenu.add(stbMenu); + + if(stbMenu.getStbMenuChildren() != null && !stbMenu.getStbMenuChildren().isEmpty()) { + flattenMenu(stbMenu.getStbMenuChildren()); + } + } } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/menu/exception/MenuNotFoundException.java b/app/src/main/java/it/integry/integrywmsnative/core/menu/exception/MenuNotFoundException.java new file mode 100644 index 00000000..c631fefd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/menu/exception/MenuNotFoundException.java @@ -0,0 +1,8 @@ +package it.integry.integrywmsnative.core.menu.exception; + +public class MenuNotFoundException extends Exception{ + + public MenuNotFoundException() { + super("Non è stato possibile caricare il menù"); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java index d3af8845..e3678e0a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java @@ -17,12 +17,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class RESTBuilder { public static T getService(final Class service) { -// return getService(service, "192.168.2.13", 8080); return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true); } public static T getService(final Class service, int timeout) { -// return getService(service, "192.168.2.13", 8080); return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true, true, timeout); } @@ -54,17 +52,12 @@ public class RESTBuilder { .setDateFormat("dd/MM/yyyy HH:mm:ss") .create(); - - - Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create(gson)) .baseUrl(endpoint) .client(client) .build(); - - return retrofit.create(service); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java index 03c328f3..703b1f3c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java @@ -43,6 +43,7 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.update.UpdatesManager; import it.integry.integrywmsnative.core.utility.UtilityContext; @@ -65,6 +66,9 @@ public class MainActivity extends BaseActivity @Inject ColliDataRecoverService mColliDataRecoverService; + @Inject + MenuService menuService; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index f80f2db3..c355c9fa 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -36,6 +36,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; @@ -59,6 +60,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab @Inject ColliDataRecoverService colliDataRecoverService; + @Inject + MenuService menuService; + private FragmentMainBinding mBindings; private final List mOnPreDestroyList = new ArrayList<>(); @@ -105,7 +109,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab mToolbar.setNestedScrollView(mBindings.fragmentMainScrollview); init(); - initGestMenuOLD(); + initGestMenu(); +// initGestMenuOLD(); initVersion(); } @@ -237,6 +242,56 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab mToolbar = toolbar; } + private void initGestMenu() { + int menuSpanCount = 2; + if(UtilityDimension.getDisplayInchs(this.getActivity()) > 8) menuSpanCount = 4; + else if(UtilityDimension.getDisplayInchs(this.getActivity()) > 6.5) menuSpanCount = 3; + + MenuConfiguration baseMenuConfiguration = new MenuConfiguration(); + List menuGroups = baseMenuConfiguration.getGroups(); + + for(int i = 0; i < menuGroups.size(); i++) { + try { + + BaseMenuConfiguration.MenuGroup menuGroup = menuGroups.get(i); + + if(menuService.isGroupEnabled(menuGroup)) { + + FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false); + + String title = this.getResources().getString(menuGroup.getGroupText()); + groupBinding.generalDashboardGroupTitle.setText(title); + + List enableMenuItems = new ArrayList<>(); + + for(int j = 0; j < menuGroup.getItems().size(); j++) { + if(menuService.isItemEnabled(menuGroup.getItems().get(j))) { + enableMenuItems.add(menuGroup.getItems().get(j)); + } + } + + MenuListAdapter menuListAdapter = new MenuListAdapter(getContext(), enableMenuItems); + + groupBinding.mainList.setLayoutManager(new GridLayoutManager(getContext(), menuSpanCount)); + groupBinding.mainList.setAdapter(menuListAdapter); + groupBinding.mainList.setNestedScrollingEnabled(false); + + menuListAdapter.setClickListener((view, position) -> { + onMenuClick(menuGroup.getItems().get(position)); + }); + + mBindings.menuContainer.addView(groupBinding.getRoot()); + + + } + + + } catch (Exception exception) { + exception.printStackTrace(); + } + } + + } private void initGestMenuOLD() { ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);