RuoliUtilities.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.web.ctrlstat.servlet.ruoli;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import org.openspcoop2.core.commons.ErrorsHandlerCostant;
- import org.openspcoop2.core.config.PortaApplicativa;
- import org.openspcoop2.core.config.PortaDelegata;
- import org.openspcoop2.core.config.ServizioApplicativo;
- import org.openspcoop2.core.config.driver.FiltroRicercaPorteApplicative;
- import org.openspcoop2.core.config.driver.FiltroRicercaPorteDelegate;
- import org.openspcoop2.core.config.driver.FiltroRicercaServiziApplicativi;
- import org.openspcoop2.core.controllo_traffico.AttivazionePolicy;
- import org.openspcoop2.core.controllo_traffico.constants.RuoloPolicy;
- import org.openspcoop2.core.id.IDPortaApplicativa;
- import org.openspcoop2.core.id.IDPortaDelegata;
- import org.openspcoop2.core.id.IDRuolo;
- import org.openspcoop2.core.id.IDServizioApplicativo;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.registry.Ruolo;
- import org.openspcoop2.core.registry.Soggetto;
- import org.openspcoop2.core.registry.driver.FiltroRicercaSoggetti;
- import org.openspcoop2.protocol.engine.utils.DBOggettiInUsoUtils;
- import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
- import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
- import org.openspcoop2.web.ctrlstat.servlet.pa.PorteApplicativeCore;
- import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateCore;
- import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCore;
- import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
- /**
- * RuoliUtilities
- *
- * @author Andrea Poli (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public class RuoliUtilities {
- public static void findOggettiDaAggiornare(IDRuolo oldIdRuolo, Ruolo ruoloNEW, RuoliCore ruoliCore, List<Object> listOggettiDaAggiornare) throws Exception {
-
-
- // Cerco se utilizzato in soggetti
- SoggettiCore soggettiCore = new SoggettiCore(ruoliCore);
- FiltroRicercaSoggetti filtroRicercaSoggetti = new FiltroRicercaSoggetti();
- filtroRicercaSoggetti.setIdRuolo(oldIdRuolo);
- List<IDSoggetto> listSoggetti = soggettiCore.getAllIdSoggettiRegistro(filtroRicercaSoggetti);
- if(listSoggetti!=null && listSoggetti.size()>0){
- for (IDSoggetto idSoggettoWithRuolo : listSoggetti) {
- Soggetto soggettoWithRuolo = soggettiCore.getSoggettoRegistro(idSoggettoWithRuolo);
- if(soggettoWithRuolo.getRuoli()!=null){
- for (org.openspcoop2.core.registry.RuoloSoggetto ruoloSoggetto : soggettoWithRuolo.getRuoli().getRuoloList()) {
- if(ruoloSoggetto.getNome().equals(oldIdRuolo.getNome())){
- ruoloSoggetto.setNome(ruoloNEW.getNome());
- }
- }
- }
- listOggettiDaAggiornare.add(soggettoWithRuolo);
- }
- }
-
-
-
-
- // Cerco se utilizzato in servizi applicativi
- ServiziApplicativiCore saCore = new ServiziApplicativiCore(ruoliCore);
- FiltroRicercaServiziApplicativi filtroRicercaSA = new FiltroRicercaServiziApplicativi();
- filtroRicercaSA.setIdRuolo(oldIdRuolo);
- List<IDServizioApplicativo> listSA = saCore.getAllIdServiziApplicativi(filtroRicercaSA);
- if(listSA!=null && listSA.size()>0){
- for (IDServizioApplicativo idServizioApplicativo : listSA) {
- ServizioApplicativo sa = saCore.getServizioApplicativo(idServizioApplicativo);
- if(sa.getInvocazionePorta()!=null && sa.getInvocazionePorta().getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : sa.getInvocazionePorta().getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- listOggettiDaAggiornare.add(sa);
- }
- }
-
-
- // Cerco se utilizzato in porte delegate
- PorteDelegateCore pdCore = new PorteDelegateCore(ruoliCore);
-
- List<PortaDelegata> listPDdaAggiornare = new ArrayList<PortaDelegata>();
-
- FiltroRicercaPorteDelegate filtroRicercaPD = new FiltroRicercaPorteDelegate();
- filtroRicercaPD.setIdRuolo(oldIdRuolo);
- List<IDPortaDelegata> _listPD = pdCore.getAllIdPorteDelegate(filtroRicercaPD);
- if(_listPD!=null && _listPD.size()>0){
- for (IDPortaDelegata idPD : _listPD) {
- PortaDelegata portaDelegata = pdCore.getPortaDelegata(idPD);
- if(portaDelegata.getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : portaDelegata.getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- if(portaDelegata.getAutorizzazioneToken()!=null && portaDelegata.getAutorizzazioneToken().getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : portaDelegata.getAutorizzazioneToken().getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- listPDdaAggiornare.add(portaDelegata);
- }
- }
-
- filtroRicercaPD = new FiltroRicercaPorteDelegate();
- filtroRicercaPD.setIdRuoloToken(oldIdRuolo);
- _listPD = pdCore.getAllIdPorteDelegate(filtroRicercaPD);
- if(_listPD!=null && _listPD.size()>0){
- for (IDPortaDelegata idPD : _listPD) {
- boolean find = false;
- if(listPDdaAggiornare!=null && !listPDdaAggiornare.isEmpty()) {
- for (PortaDelegata pd : listPDdaAggiornare) {
- if(pd.getNome().equals(idPD.getNome())) {
- find = true;
- break;
- }
- }
- }
- if(!find) {
- PortaDelegata portaDelegata = pdCore.getPortaDelegata(idPD);
- if(portaDelegata.getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : portaDelegata.getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- if(portaDelegata.getAutorizzazioneToken()!=null && portaDelegata.getAutorizzazioneToken().getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : portaDelegata.getAutorizzazioneToken().getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- listPDdaAggiornare.add(portaDelegata);
- }
- }
- }
-
- if(listPDdaAggiornare!=null && !listPDdaAggiornare.isEmpty()) {
- for (PortaDelegata pd : listPDdaAggiornare) {
- listOggettiDaAggiornare.add(pd);
- }
- }
-
-
-
- // Cerco se utilizzato in porte applicative
- PorteApplicativeCore paCore = new PorteApplicativeCore(ruoliCore);
-
- List<PortaApplicativa> listPAdaAggiornare = new ArrayList<PortaApplicativa>();
-
- FiltroRicercaPorteApplicative filtroRicercaPA = new FiltroRicercaPorteApplicative();
- filtroRicercaPA.setIdRuolo(oldIdRuolo);
- List<IDPortaApplicativa> _listPA = paCore.getAllIdPorteApplicative(filtroRicercaPA);
- if(_listPA!=null && _listPA.size()>0){
- for (IDPortaApplicativa idPA : _listPA) {
- PortaApplicativa portaApplicativa = paCore.getPortaApplicativa(idPA);
- if(portaApplicativa.getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : portaApplicativa.getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- if(portaApplicativa.getAutorizzazioneToken()!=null && portaApplicativa.getAutorizzazioneToken().getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : portaApplicativa.getAutorizzazioneToken().getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- listPAdaAggiornare.add(portaApplicativa);
- }
- }
-
- filtroRicercaPA = new FiltroRicercaPorteApplicative();
- filtroRicercaPA.setIdRuoloToken(oldIdRuolo);
- _listPA = paCore.getAllIdPorteApplicative(filtroRicercaPA);
- if(_listPA!=null && _listPA.size()>0){
- for (IDPortaApplicativa idPA : _listPA) {
- boolean find = false;
- if(listPAdaAggiornare!=null && !listPAdaAggiornare.isEmpty()) {
- for (PortaApplicativa pa : listPAdaAggiornare) {
- if(pa.getNome().equals(idPA.getNome())) {
- find = true;
- break;
- }
- }
- }
- if(!find) {
- PortaApplicativa portaApplicativa = paCore.getPortaApplicativa(idPA);
- if(portaApplicativa.getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : portaApplicativa.getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- if(portaApplicativa.getAutorizzazioneToken()!=null && portaApplicativa.getAutorizzazioneToken().getRuoli()!=null){
- for (org.openspcoop2.core.config.Ruolo ruoloConfig : portaApplicativa.getAutorizzazioneToken().getRuoli().getRuoloList()) {
- if(ruoloConfig.getNome().equals(oldIdRuolo.getNome())){
- ruoloConfig.setNome(ruoloNEW.getNome());
- }
- }
- }
- listPAdaAggiornare.add(portaApplicativa);
- }
- }
- }
-
- if(listPAdaAggiornare!=null && !listPAdaAggiornare.isEmpty()) {
- for (PortaApplicativa pa : listPAdaAggiornare) {
- listOggettiDaAggiornare.add(pa);
- }
- }
-
-
-
- // Cerco Rate Limiting policy
- ConfigurazioneCore confCore = new ConfigurazioneCore(ruoliCore);
-
- // Nelle erogazioni
- ConsoleSearch ricercaPolicies = new ConsoleSearch(true);
- List<AttivazionePolicy> listaPolicies = null;
- try {
- listaPolicies = confCore.attivazionePolicyListByFilter(ricercaPolicies, RuoloPolicy.APPLICATIVA, null,
- null, null, null,
- null, null,
- null, oldIdRuolo.getNome());
- }catch(Exception e) {
- // ignore
- }
- if(listaPolicies!=null && !listaPolicies.isEmpty()) {
- for (AttivazionePolicy attivazionePolicy : listaPolicies) {
- _updateAttivazionePolicy(attivazionePolicy, oldIdRuolo.getNome(), ruoloNEW.getNome());
- listOggettiDaAggiornare.add(attivazionePolicy);
- }
- }
-
- // Nelle fruizioni
- ricercaPolicies = new ConsoleSearch(true);
- listaPolicies = null;
- try {
- listaPolicies = confCore.attivazionePolicyListByFilter(ricercaPolicies, RuoloPolicy.DELEGATA, null,
- null, null, null,
- null, null,
- null, oldIdRuolo.getNome());
- }catch(Exception e) {
- // ignore
- }
- if(listaPolicies!=null && !listaPolicies.isEmpty()) {
- for (AttivazionePolicy attivazionePolicy : listaPolicies) {
- _updateAttivazionePolicy(attivazionePolicy, oldIdRuolo.getNome(), ruoloNEW.getNome());
- listOggettiDaAggiornare.add(attivazionePolicy);
- }
- }
-
- // Globali
- ricercaPolicies = new ConsoleSearch(true);
- listaPolicies = null;
- try {
- listaPolicies = confCore.attivazionePolicyListByFilter(ricercaPolicies, null, null,
- null, null, null,
- null, null,
- null, oldIdRuolo.getNome());
- }catch(Exception e) {
- // ignore
- }
- if(listaPolicies!=null && !listaPolicies.isEmpty()) {
- for (AttivazionePolicy attivazionePolicy : listaPolicies) {
- _updateAttivazionePolicy(attivazionePolicy, oldIdRuolo.getNome(), ruoloNEW.getNome());
- listOggettiDaAggiornare.add(attivazionePolicy);
- }
- }
-
- }
-
- private static void _updateAttivazionePolicy(AttivazionePolicy policy, String oldNomeRuolo, String nuovoNomeRuolo) {
- if(policy.getFiltro()!=null) {
- if(oldNomeRuolo.equals(policy.getFiltro().getRuoloFruitore())) {
- policy.getFiltro().setRuoloFruitore(nuovoNomeRuolo);
- }
- if(oldNomeRuolo.equals(policy.getFiltro().getRuoloErogatore())) {
- policy.getFiltro().setRuoloErogatore(nuovoNomeRuolo);
- }
- }
- }
-
- public static boolean deleteRuolo(Ruolo ruolo, String userLogin, RuoliCore ruoliCore, RuoliHelper ruoliHelper, StringBuilder inUsoMessage, String newLine) throws Exception {
- HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
- boolean normalizeObjectIds = !ruoliHelper.isModalitaCompleta();
- boolean ruoloInUso = ruoliCore.isRuoloInUso(ruolo.getNome(),whereIsInUso,normalizeObjectIds);
-
- if (ruoloInUso) {
- inUsoMessage.append(DBOggettiInUsoUtils.toString(new IDRuolo(ruolo.getNome()), whereIsInUso, true, newLine));
- inUsoMessage.append(newLine);
- } else {
- ruoliCore.performDeleteOperation(userLogin, ruoliHelper.smista(), ruolo);
- return true;
- }
-
- return false;
- }
- }