Commit ab34a069e8b1852a75c135bd650c04cd233cd78f

Authored by Erick.sato
1 parent fb514732
Exists in master

[Redmine PCS: Atendimento #4698]Add grupo master

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
... ... @@ -232,4 +232,6 @@ public interface MenuService extends GenericService&lt;Menu, Long&gt; {
232 232 * @return List<Menu>
233 233 */
234 234 List<Menu> findAllMenusPorPagina(String pagina);
  235 +
  236 + void adicionarGrupoMasterMenu(Menu menu);
235 237 }
... ...
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&lt;MenuGrupo, Long&gt; 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&lt;Menu, Long&gt; 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&lt;Menu, Long&gt; 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&lt;Menu, Long&gt; 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&lt;Menu, Long&gt; 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
... ... @@ -0,0 +1,6 @@
  1 +-- Erick 29/04/2016 - INICIO
  2 +
  3 +ALTER TABLE Grupo ADD COLUMN ismaster BOOLEAN DEFAULT FALSE;
  4 +UPDATE MENU SET permissaoDeAcessoDefinida = true;
  5 +
  6 +-- Erick 29/04/2016 - FIM
... ...