Commit ab34a069e8b1852a75c135bd650c04cd233cd78f
1 parent
fb514732
Exists in
master
[Redmine PCS: Atendimento #4698]Add grupo master
Showing
6 changed files
with
115 additions
and
140 deletions
Show diff stats
cit-portal-api/src/main/java/br/com/centralit/api/service/MenuGrupoService.java
1 | 1 | package br.com.centralit.api.service; |
2 | 2 | |
3 | +import java.util.Collection; | |
4 | + | |
3 | 5 | import br.com.centralit.framework.model.Menu; |
4 | 6 | import br.com.centralit.framework.model.MenuGrupo; |
5 | 7 | import br.com.centralit.framework.service.arquitetura.GenericService; |
... | ... | @@ -54,5 +56,7 @@ public interface MenuGrupoService extends GenericService<MenuGrupo, Long> { |
54 | 56 | * @param entity |
55 | 57 | */ |
56 | 58 | void verificarRemocao(Menu entity); |
59 | + | |
60 | + public Collection<MenuGrupo> listaMenuGrupoVinculados(Menu entity); | |
57 | 61 | |
58 | 62 | } | ... | ... |
cit-portal-api/src/main/java/br/com/centralit/api/service/MenuService.java
cit-portal-api/src/main/java/br/com/centralit/api/service/impl/InicializarPortalServiceImpl.java
1 | 1 | package br.com.centralit.api.service.impl; |
2 | 2 | |
3 | 3 | import java.util.ArrayList; |
4 | -import java.util.Collection; | |
5 | 4 | import java.util.List; |
6 | 5 | |
7 | 6 | import org.apache.log4j.Logger; |
... | ... | @@ -9,18 +8,13 @@ import org.springframework.beans.factory.annotation.Autowired; |
9 | 8 | import org.springframework.stereotype.Service; |
10 | 9 | |
11 | 10 | import br.com.centralit.api.service.DominioService; |
12 | -import br.com.centralit.api.service.GrupoService; | |
13 | -import br.com.centralit.api.service.MenuGrupoService; | |
14 | 11 | import br.com.centralit.api.service.MenuService; |
15 | 12 | import br.com.centralit.api.service.ModuloService; |
16 | 13 | import br.com.centralit.api.service.PaginaService; |
17 | -import br.com.centralit.framework.model.Grupo; | |
18 | 14 | import br.com.centralit.framework.model.Menu; |
19 | 15 | import br.com.centralit.framework.model.MenuFile; |
20 | -import br.com.centralit.framework.model.MenuGrupo; | |
21 | 16 | import br.com.centralit.framework.model.Pagina; |
22 | 17 | import br.com.centralit.framework.model.UtilStartup; |
23 | -import br.com.centralit.framework.util.UtilColecao; | |
24 | 18 | |
25 | 19 | /** |
26 | 20 | * <p> |
... | ... | @@ -69,12 +63,6 @@ public class InicializarPortalServiceImpl extends UtilStartup { |
69 | 63 | @Autowired |
70 | 64 | PaginaService paginaService; |
71 | 65 | |
72 | - @Autowired | |
73 | - private GrupoService grupoService; | |
74 | - | |
75 | - @Autowired | |
76 | - private MenuGrupoService menuGrupoService; | |
77 | - | |
78 | 66 | private Menu menuDashboards; |
79 | 67 | |
80 | 68 | private Menu menuDefinicoesSistema; |
... | ... | @@ -90,73 +78,11 @@ public class InicializarPortalServiceImpl extends UtilStartup { |
90 | 78 | public void gerarCarga() { |
91 | 79 | criarPaginasMenus(); |
92 | 80 | |
93 | - if(UtilColecao.isVazio(menuDashboards.getMenuGrupos())){ | |
94 | - menuDashboards.setMenuGrupos(gerarGrupoMaster(menuDashboards)); | |
95 | - this.menuService.merge(menuDashboards); | |
96 | - }else{ | |
97 | - boolean grupoMasterPresente = false; | |
98 | - for (MenuGrupo menuGrupo : menuDashboards.getMenuGrupos()) { | |
99 | - if(menuGrupo.getGrupo().getIsMaster()){ | |
100 | - grupoMasterPresente = true; | |
101 | - break; | |
102 | - } | |
103 | - } | |
104 | - if(!grupoMasterPresente){ | |
105 | - menuDashboards.getMenuGrupos().addAll(gerarGrupoMaster(menuDashboards)); | |
106 | - this.menuService.merge(menuDashboards); | |
107 | - } | |
108 | - } | |
109 | - | |
110 | - if(UtilColecao.isVazio(menuDefinicoesSistema.getMenuGrupos())){ | |
111 | - menuDefinicoesSistema.setMenuGrupos(gerarGrupoMaster(menuDefinicoesSistema)); | |
112 | - this.menuService.merge(menuDefinicoesSistema); | |
113 | - }else{ | |
114 | - boolean grupoMasterPresente = false; | |
115 | - for (MenuGrupo menuGrupo : menuDefinicoesSistema.getMenuGrupos()) { | |
116 | - if(menuGrupo.getGrupo().getIsMaster()){ | |
117 | - grupoMasterPresente = true; | |
118 | - break; | |
119 | - } | |
120 | - } | |
121 | - if(!grupoMasterPresente){ | |
122 | - menuDefinicoesSistema.getMenuGrupos().addAll(gerarGrupoMaster(menuDefinicoesSistema)); | |
123 | - this.menuService.merge(menuDefinicoesSistema); | |
124 | - } | |
125 | - } | |
126 | - | |
127 | - if(UtilColecao.isVazio(menuAudit.getMenuGrupos())){ | |
128 | - menuAudit.setMenuGrupos(gerarGrupoMaster(menuAudit)); | |
129 | - this.menuService.merge(menuAudit); | |
130 | - }else{ | |
131 | - boolean grupoMasterPresente = false; | |
132 | - for (MenuGrupo menuGrupo : menuAudit.getMenuGrupos()) { | |
133 | - if(menuGrupo.getGrupo().getIsMaster()){ | |
134 | - grupoMasterPresente = true; | |
135 | - break; | |
136 | - } | |
137 | - } | |
138 | - if(!grupoMasterPresente){ | |
139 | - menuAudit.getMenuGrupos().addAll(gerarGrupoMaster(menuAudit)); | |
140 | - this.menuService.merge(menuAudit); | |
141 | - } | |
142 | - } | |
143 | - | |
81 | + this.menuService.adicionarGrupoMasterMenu(menuDashboards); | |
82 | + this.menuService.adicionarGrupoMasterMenu(menuDefinicoesSistema); | |
83 | + this.menuService.adicionarGrupoMasterMenu(menuAudit); | |
144 | 84 | } |
145 | 85 | |
146 | - private List<MenuGrupo> gerarGrupoMaster(Menu menu) { | |
147 | - List<MenuGrupo> menuGrupos = new ArrayList<>(); | |
148 | - Collection<Grupo> gruposMaster = this.grupoService.findGruposMaster(); | |
149 | - for (Grupo grupo : gruposMaster) { | |
150 | - MenuGrupo menuGrupo = new MenuGrupo(); | |
151 | - menuGrupo.setOrganizacao(grupo.getOrganizacao()); | |
152 | - menuGrupo.setMenu(menu); | |
153 | - menuGrupo.setGrupo(grupo); | |
154 | - this.menuGrupoService.save(menuGrupo); | |
155 | - menuGrupos.add(menuGrupo); | |
156 | - } | |
157 | - return menuGrupos; | |
158 | - } | |
159 | - | |
160 | 86 | /** |
161 | 87 | * Método responsável por criar Menu/Pagina |
162 | 88 | * | ... | ... |
cit-portal-api/src/main/java/br/com/centralit/api/service/impl/MenuGrupoServiceImpl.java
... | ... | @@ -111,4 +111,7 @@ public class MenuGrupoServiceImpl extends GenericServiceImpl<MenuGrupo, Long> im |
111 | 111 | return menuGrupoDao; |
112 | 112 | } |
113 | 113 | |
114 | + public Collection<MenuGrupo> listaMenuGrupoVinculados(Menu entity){ | |
115 | + return this.menuGrupoDao.findPorIdMenu(entity.getId()); | |
116 | + } | |
114 | 117 | } | ... | ... |
cit-portal-api/src/main/java/br/com/centralit/api/service/impl/MenuServiceImpl.java
... | ... | @@ -209,6 +209,8 @@ public class MenuServiceImpl extends GenericServiceImpl<Menu, Long> implements M |
209 | 209 | |
210 | 210 | this.menu = menu; |
211 | 211 | |
212 | + Collection<MenuGrupo> listaMenuGrupoVinculadosTemp = this.menuGrupoService.listaMenuGrupoVinculados(menu); | |
213 | + | |
212 | 214 | this.montarDadosMenu(menu); |
213 | 215 | |
214 | 216 | this.menuGrupoService.verificarRemocao(menu); |
... | ... | @@ -237,7 +239,23 @@ public class MenuServiceImpl extends GenericServiceImpl<Menu, Long> implements M |
237 | 239 | |
238 | 240 | this.validarChaveMenuEPagina(menu); |
239 | 241 | |
240 | - return super.merge(menu); | |
242 | + menu = super.merge(menu); | |
243 | + | |
244 | + if(!UtilColecao.isVazio(menu.getMenuGrupos())){ | |
245 | + List<Grupo> gruposAdd = new ArrayList<Grupo>(); | |
246 | + for (MenuGrupo menuGrupo : menu.getMenuGrupos()) { | |
247 | + gruposAdd.add(menuGrupo.getGrupo()); | |
248 | + } | |
249 | + boolean removidoGrupo = false; | |
250 | + if(!UtilColecao.isVazio(listaMenuGrupoVinculadosTemp) | |
251 | + && listaMenuGrupoVinculadosTemp.size() > menu.getMenuGrupos().size()){ | |
252 | + removidoGrupo = true; | |
253 | + } | |
254 | + | |
255 | + setGrupoMenuRecursivo(menu, gruposAdd, false, menu.getParent() != null ? false : true, removidoGrupo); | |
256 | + } | |
257 | + | |
258 | + return menu; | |
241 | 259 | } |
242 | 260 | |
243 | 261 | /** |
... | ... | @@ -403,74 +421,17 @@ public class MenuServiceImpl extends GenericServiceImpl<Menu, Long> implements M |
403 | 421 | |
404 | 422 | Collection<Long> idsGrupo = this.getIdsGrupoUsuario(usuario); |
405 | 423 | |
406 | - List<Menu> menusParents = new ArrayList<>(); | |
407 | - List<Menu> menusProcessada = new ArrayList<>(); | |
408 | - | |
409 | - List<Menu> menusAtivosUsuario = this.menuDao.getAllMenusAtivosUsuario(usuario, idsGrupo, idsPrivilegioUsuario); | |
410 | - for (Menu menu : menusAtivosUsuario) { | |
411 | - Menu menuParent = new Menu(); | |
412 | - buscaMenuAtivoUsuarioRecursivo(menuParent, menu, false); | |
413 | - menusParents.add(menuParent); | |
414 | - } | |
415 | - | |
416 | 424 | // Carrega menus parents |
417 | - List<Menu> menusGrupo = this.menuDao.getAllMenusAtivos(usuario, idsGrupo, idsPrivilegioUsuario); | |
425 | + List<Menu> menusParents = this.menuDao.getAllMenusAtivos(usuario, idsGrupo, idsPrivilegioUsuario); | |
426 | + | |
418 | 427 | // Estrutura de repeticao necessaria para setar classe e cor dos sub menus |
419 | 428 | for (Menu menuParent : menusParents) { |
420 | - for (Menu menu : menusGrupo) { | |
421 | - if(menu.getId() == menuParent.getId()){ | |
422 | - continue; | |
423 | - } | |
424 | - this.setarClasseCorParent(menu, idsGrupo, idsPrivilegioUsuario); | |
425 | - menu.setSubmenu(this.findMenuByIdParent(menu.getId())); | |
426 | - menusProcessada.add(menu); | |
427 | - } | |
428 | - menusProcessada.add(menuParent); | |
429 | - } | |
430 | - | |
431 | - return menusProcessada; | |
432 | - | |
433 | - } | |
434 | 429 | |
435 | - private void buscaMenuAtivoUsuarioRecursivo(Menu menuParent, Menu menu, boolean recursividadeExec) { | |
436 | - if(menu.getParent() != null){ | |
437 | - Menu menuRef = (Menu) this.getReference(menu.getParent().getId()); | |
438 | - List<Menu> subMenuAdd = new ArrayList<Menu>(); | |
439 | - for (Menu subMenu : menuRef.getSubmenu()) { | |
440 | - if(subMenu.getId() == menu.getId()){ | |
441 | - if(recursividadeExec){ | |
442 | - menu.setSubmenu(menuParent.getSubmenu()); | |
443 | - } | |
444 | - subMenuAdd.add(menu); | |
445 | - break; | |
446 | - } | |
447 | - } | |
448 | - getValusMenu(menuRef, menuParent); | |
449 | - menuParent.setParent(menuRef.getParent()); | |
450 | - menuParent.setSubmenu(subMenuAdd); | |
451 | - if(UtilObjeto.isReferencia(menuRef.getParent())){ | |
452 | - Menu menuTemp = new Menu(); | |
453 | - getValusMenu(menuRef, menuTemp); | |
454 | - menuTemp.setParent(menuRef.getParent()); | |
455 | - menuTemp.setSubmenu(subMenuAdd); | |
456 | - this.buscaMenuAtivoUsuarioRecursivo(menuParent, menuTemp, true); | |
457 | - } | |
430 | + this.setarClasseCorParent(menuParent, idsGrupo, idsPrivilegioUsuario); | |
458 | 431 | } |
459 | - } | |
460 | 432 | |
461 | - private void getValusMenu(Menu menu, Menu menuParent) { | |
462 | - menuParent.setId(menu.getId()); | |
463 | - menuParent.setNome(menu.getNome()); | |
464 | - menuParent.setIcone(menu.getIcone()); | |
465 | -// menuParent.setColuna(menu.getColuna()); | |
466 | - menuParent.setChave(menu.getChave()); | |
467 | - menuParent.setCor(menu.getCor()); | |
468 | - menuParent.setOrdem(menu.getOrdem()); | |
469 | - menuParent.setPagina(menu.getPagina()); | |
470 | - menuParent.setCssMenu(menu.getCssMenu()); | |
471 | - menuParent.setSubmenu(menu.getSubmenu()); | |
472 | - menuParent.setCssMenuOpacity(menu.getCssMenuOpacity()); | |
473 | - menuParent.setClassePagina(menu.getClassePagina()); | |
433 | + return menusParents; | |
434 | + | |
474 | 435 | } |
475 | 436 | |
476 | 437 | /** |
... | ... | @@ -1216,5 +1177,78 @@ public class MenuServiceImpl extends GenericServiceImpl<Menu, Long> implements M |
1216 | 1177 | public List<Menu> findAllMenusPorPagina(String pagina) { |
1217 | 1178 | return menuDao.findAllMenusPorPagina(pagina); |
1218 | 1179 | } |
1180 | + | |
1181 | + public void adicionarGrupoMasterMenu(Menu menu) { | |
1182 | + Collection<Grupo> gruposMaster = this.grupoService.findGruposMaster(); | |
1183 | + if(UtilColecao.isVazio(menu.getMenuGrupos())){ | |
1184 | + this.setGrupoMenuRecursivo(menu, gruposMaster, false, menu.getParent() != null ? false : true, false); | |
1185 | + }else{ | |
1186 | + boolean grupoMasterPresente = false; | |
1187 | + for (MenuGrupo menuGrupo : menu.getMenuGrupos()) { | |
1188 | + if(menuGrupo.getGrupo().getIsMaster()){ | |
1189 | + grupoMasterPresente = true; | |
1190 | + break; | |
1191 | + } | |
1192 | + } | |
1193 | + if(!grupoMasterPresente){ | |
1194 | + this.setGrupoMenuRecursivo(menu, gruposMaster, false , menu.getParent() != null ? false : true, false); | |
1195 | + } | |
1196 | + } | |
1197 | + } | |
1198 | + | |
1199 | + private void setGrupoMenuRecursivo(Menu menu, Collection<Grupo> gruposAdd, boolean recursivoMenuParent, boolean menuPrincialParent, boolean removidoGrupo) { | |
1200 | + if(menu.getMenuGrupos() == null){ | |
1201 | + menu.setMenuGrupos(new ArrayList<MenuGrupo>()); | |
1202 | + } | |
1203 | + if(menu.getSubmenu() == null || menu.getSubmenu().isEmpty()){ | |
1204 | + List<Menu> subMenus = this.findMenuByIdParent(menu.getId()); | |
1205 | + if(!UtilColecao.isVazio(subMenus)){ | |
1206 | + menu.setSubmenu(subMenus); | |
1207 | + } | |
1208 | + } | |
1209 | + if(!UtilColecao.isVazio(menu.getSubmenu()) && !recursivoMenuParent){ | |
1210 | + menu.getMenuGrupos().addAll(gerarGrupos(menu, gruposAdd, recursivoMenuParent)); | |
1211 | + super.merge(menu); | |
1212 | + for (Menu subMenu : menu.getSubmenu()) { | |
1213 | + this.setGrupoMenuRecursivo(subMenu, gruposAdd, false, menuPrincialParent, removidoGrupo); | |
1214 | + } | |
1215 | + }else{ | |
1216 | + menu.getMenuGrupos().addAll(gerarGrupos(menu, gruposAdd, recursivoMenuParent)); | |
1217 | + super.merge(menu); | |
1218 | + if(menu.getParent() != null && !menuPrincialParent && !removidoGrupo){ | |
1219 | + this.setGrupoMenuRecursivo(menu.getParent(), gruposAdd, true, menuPrincialParent, removidoGrupo); | |
1220 | + } | |
1221 | + } | |
1222 | + } | |
1223 | + | |
1224 | + private List<MenuGrupo> gerarGrupos(Menu menu, Collection<Grupo> gruposAdd, boolean recursivoMenuParent) { | |
1225 | + if(recursivoMenuParent && !UtilColecao.isVazio(menu.getMenuGrupos()) && menu.getMenuGrupos().size() > gruposAdd.size()){ | |
1226 | + menu.setMenuGrupos(new ArrayList<MenuGrupo>()); | |
1227 | + this.menuGrupoService.verificarRemocao(menu); | |
1228 | + } | |
1229 | + | |
1230 | + List<MenuGrupo> menuGrupos = new ArrayList<>(); | |
1231 | + boolean permiteAddGrupo = true; | |
1232 | + for (Grupo grupo : gruposAdd) { | |
1233 | + if(!UtilColecao.isVazio(menu.getMenuGrupos())){ | |
1234 | + for (MenuGrupo menuGrupoPresente : menu.getMenuGrupos()) { | |
1235 | + if(menuGrupoPresente.getGrupo().getId() == grupo.getId()){ | |
1236 | + permiteAddGrupo = false; | |
1237 | + break; | |
1238 | + } | |
1239 | + } | |
1240 | + } | |
1241 | + if(permiteAddGrupo){ | |
1242 | + MenuGrupo menuGrupo = new MenuGrupo(); | |
1243 | + menuGrupo.setOrganizacao(grupo.getOrganizacao()); | |
1244 | + menuGrupo.setMenu(menu); | |
1245 | + menuGrupo.setGrupo(grupo); | |
1246 | + this.menuGrupoService.save(menuGrupo); | |
1247 | + menuGrupos.add(menuGrupo); | |
1248 | + } | |
1249 | + permiteAddGrupo = true; | |
1250 | + } | |
1251 | + return menuGrupos; | |
1252 | + } | |
1219 | 1253 | |
1220 | 1254 | } | ... | ... |
cit-portal-api/src/main/resources/scripts-bd/postgres/v2.1.0/01-cit-portal-2.1.0-postgres.sql
0 → 100644