Implementato servizio di retrieve menu
This commit is contained in:
parent
fbe095b7f7
commit
fbcda5eaf6
@ -1,11 +1,17 @@
|
|||||||
package it.integry.integrywmsnative.core.menu;
|
package it.integry.integrywmsnative.core.menu;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
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.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.menu.exception.MenuNotFoundException;
|
||||||
import it.integry.integrywmsnative.core.model.StbMenu;
|
import it.integry.integrywmsnative.core.model.StbMenu;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
@ -16,6 +22,7 @@ public class MenuService {
|
|||||||
private final MenuRESTConsumer menuRESTConsumer;
|
private final MenuRESTConsumer menuRESTConsumer;
|
||||||
|
|
||||||
private List<StbMenu> mInternalCachedMenu;
|
private List<StbMenu> mInternalCachedMenu;
|
||||||
|
private List<StbMenu> mInternalCachedFlatMenu;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public MenuService(MenuRESTConsumer menuRESTConsumer) {
|
public MenuService(MenuRESTConsumer menuRESTConsumer) {
|
||||||
@ -24,13 +31,46 @@ public class MenuService {
|
|||||||
|
|
||||||
public void init(Runnable onMenuInitialized, RunnableArgs<Exception> onFailed) {
|
public void init(Runnable onMenuInitialized, RunnableArgs<Exception> onFailed) {
|
||||||
menuRESTConsumer.retrieveMenu(MENU_COD_OPZ, menu -> {
|
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();
|
onMenuInitialized.run();
|
||||||
}, onFailed);
|
}, onFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getMenu() {
|
public List<StbMenu> getMenu() throws Exception {
|
||||||
|
if(mInternalCachedMenu == null) throw new MenuNotFoundException();
|
||||||
|
|
||||||
|
return mInternalCachedMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isGroupEnabled(MenuConfiguration.MenuGroup androidMenuGroup) throws Exception {
|
||||||
|
List<StbMenu> dbMenu = getMenu();
|
||||||
|
|
||||||
|
return Stream.of(this.mInternalCachedFlatMenu)
|
||||||
|
.anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuGroup.getCodMenu()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isItemEnabled(BaseMenuConfiguration.MenuItem androidMenuItem) throws Exception {
|
||||||
|
List<StbMenu> dbMenu = getMenu();
|
||||||
|
|
||||||
|
return Stream.of(this.mInternalCachedFlatMenu)
|
||||||
|
.anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuItem.getCodMenu()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void flattenMenu(List<StbMenu> menu) {
|
||||||
|
for(StbMenu stbMenu : menu) {
|
||||||
|
this.mInternalCachedFlatMenu.add(stbMenu);
|
||||||
|
|
||||||
|
if(stbMenu.getStbMenuChildren() != null && !stbMenu.getStbMenuChildren().isEmpty()) {
|
||||||
|
flattenMenu(stbMenu.getStbMenuChildren());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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ù");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -17,12 +17,10 @@ import retrofit2.converter.gson.GsonConverterFactory;
|
|||||||
public class RESTBuilder {
|
public class RESTBuilder {
|
||||||
|
|
||||||
public static <T> T getService(final Class<T> service) {
|
public static <T> T getService(final Class<T> service) {
|
||||||
// return getService(service, "192.168.2.13", 8080);
|
|
||||||
return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true);
|
return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true);
|
||||||
|
|
||||||
}
|
}
|
||||||
public static <T> T getService(final Class<T> service, int timeout) {
|
public static <T> T getService(final Class<T> 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);
|
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")
|
.setDateFormat("dd/MM/yyyy HH:mm:ss")
|
||||||
.create();
|
.create();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Retrofit retrofit = new Retrofit.Builder()
|
Retrofit retrofit = new Retrofit.Builder()
|
||||||
.addConverterFactory(GsonConverterFactory.create(gson))
|
.addConverterFactory(GsonConverterFactory.create(gson))
|
||||||
.baseUrl(endpoint)
|
.baseUrl(endpoint)
|
||||||
.client(client)
|
.client(client)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return retrofit.create(service);
|
return retrofit.create(service);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,6 +43,7 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
|||||||
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
|
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
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.rest.watcher.ServerStatusChecker;
|
||||||
import it.integry.integrywmsnative.core.update.UpdatesManager;
|
import it.integry.integrywmsnative.core.update.UpdatesManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
||||||
@ -65,6 +66,9 @@ public class MainActivity extends BaseActivity
|
|||||||
@Inject
|
@Inject
|
||||||
ColliDataRecoverService mColliDataRecoverService;
|
ColliDataRecoverService mColliDataRecoverService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
MenuService menuService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|||||||
@ -36,6 +36,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
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.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||||
@ -59,6 +60,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
|||||||
@Inject
|
@Inject
|
||||||
ColliDataRecoverService colliDataRecoverService;
|
ColliDataRecoverService colliDataRecoverService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
MenuService menuService;
|
||||||
|
|
||||||
private FragmentMainBinding mBindings;
|
private FragmentMainBinding mBindings;
|
||||||
|
|
||||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||||
@ -105,7 +109,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
|||||||
mToolbar.setNestedScrollView(mBindings.fragmentMainScrollview);
|
mToolbar.setNestedScrollView(mBindings.fragmentMainScrollview);
|
||||||
|
|
||||||
init();
|
init();
|
||||||
initGestMenuOLD();
|
initGestMenu();
|
||||||
|
// initGestMenuOLD();
|
||||||
initVersion();
|
initVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,6 +242,56 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
|||||||
mToolbar = toolbar;
|
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<MenuConfiguration.MenuGroup> 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<BaseMenuConfiguration.MenuItem> 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() {
|
private void initGestMenuOLD() {
|
||||||
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
|
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user