ErogazioniGruppiApiServiceImpl.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.core.config.rs.server.api.impl.erogazioni.gruppi;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import org.apache.commons.lang.StringEscapeUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.openspcoop2.core.commons.Filtri;
- import org.openspcoop2.core.commons.Liste;
- import org.openspcoop2.core.config.PortaApplicativa;
- import org.openspcoop2.core.config.constants.TipoAutenticazionePrincipal;
- import org.openspcoop2.core.config.rs.server.api.ErogazioniGruppiApi;
- import org.openspcoop2.core.config.rs.server.api.impl.Enums;
- import org.openspcoop2.core.config.rs.server.api.impl.Helper;
- import org.openspcoop2.core.config.rs.server.api.impl.IdServizio;
- import org.openspcoop2.core.config.rs.server.api.impl.erogazioni.ErogazioniApiHelper;
- import org.openspcoop2.core.config.rs.server.api.impl.erogazioni.ErogazioniEnv;
- import org.openspcoop2.core.config.rs.server.config.ServerProperties;
- import org.openspcoop2.core.config.rs.server.model.ApiDescrizione;
- import org.openspcoop2.core.config.rs.server.model.Gruppo;
- import org.openspcoop2.core.config.rs.server.model.GruppoAzioni;
- import org.openspcoop2.core.config.rs.server.model.GruppoEreditaConfigurazione;
- import org.openspcoop2.core.config.rs.server.model.GruppoItem;
- import org.openspcoop2.core.config.rs.server.model.GruppoNome;
- import org.openspcoop2.core.config.rs.server.model.GruppoNuovaConfigurazione;
- import org.openspcoop2.core.config.rs.server.model.ListaGruppi;
- import org.openspcoop2.core.config.rs.server.model.ModalitaConfigurazioneGruppoEnum;
- import org.openspcoop2.core.id.IDPortaApplicativa;
- import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.utils.BooleanNullable;
- import org.openspcoop2.utils.service.BaseImpl;
- import org.openspcoop2.utils.service.authorization.AuthorizationConfig;
- import org.openspcoop2.utils.service.authorization.AuthorizationManager;
- import org.openspcoop2.utils.service.beans.ProfiloEnum;
- import org.openspcoop2.utils.service.beans.utils.BaseHelper;
- import org.openspcoop2.utils.service.beans.utils.ListaUtils;
- import org.openspcoop2.utils.service.context.IContext;
- import org.openspcoop2.utils.service.fault.jaxrs.FaultCode;
- import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
- import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
- import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaPorteApplicativeMappingInfo;
- import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaUtilities;
- import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
- import org.openspcoop2.web.ctrlstat.servlet.pa.PorteApplicativeUtilities;
- import org.openspcoop2.web.lib.mvc.ServletUtils;
- import org.openspcoop2.web.lib.mvc.TipoOperazione;
- /**
- * ErogazioniGruppiApiServiceImpl
- *
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public class ErogazioniGruppiApiServiceImpl extends BaseImpl implements ErogazioniGruppiApi {
- public ErogazioniGruppiApiServiceImpl(){
- super(org.slf4j.LoggerFactory.getLogger(ErogazioniGruppiApiServiceImpl.class));
- }
- private AuthorizationConfig getAuthorizationConfig() throws Exception{
- return new AuthorizationConfig(ServerProperties.getInstance().getProperties());
- }
- /**
- * Aggiunta di azioni o risorse dell'API al gruppo
- *
- * Questa operazione consente di aggiungere azioni o risorse dell'API al gruppo
- *
- */
- @Override
- public void addErogazioneGruppoAzioni(GruppoAzioni body, String nome, Integer versione, String nomeGruppo, ProfiloEnum profilo, String soggetto, String tipoServizio) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
-
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
- BaseHelper.throwIfNull(body);
-
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
- final IDPortaApplicativa idPa = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getIDGruppoPA(nomeGruppo, idAsps, env.apsCore), "Gruppo per l'erogazione scelta");
- final PortaApplicativa pa = env.paCore.getPortaApplicativa(idPa);
-
- List<String> azioniOccupate = ErogazioniApiHelper.getAzioniOccupateErogazione(idAsps, env.apsCore, env.paCore);
-
- ErogazioniApiHelper.checkAzioniAdd(
- body.getAzioni(),
- azioniOccupate,
- env.apcCore.getAzioni(asps, env.apcCore.getAccordoServizioSintetico(asps.getIdAccordo()), false, false, null)
- );
-
- env.requestWrapper.overrideParameterValues(CostantiControlStation.PARAMETRO_AZIONI, body.getAzioni().toArray(new String[0]));
-
- List<MappingErogazionePortaApplicativa> listaMappingErogazione = env.apsCore.mappingServiziPorteAppList(idAsps,asps.getId(), null);
- if (!env.paHelper.porteAppAzioneCheckData(TipoOperazione.ADD,azioniOccupate,listaMappingErogazione)) {
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(env.pd.getMessage()));
- }
-
- // aggiungo azione nel db
- for(String azione: body.getAzioni()) {
- pa.getAzione().addAzioneDelegata(azione);
- }
- env.paCore.performUpdateOperation(env.userLogin, false, pa);
- context.getLogger().info("Invocazione completata con successo");
-
- // Bug Fix: altrimenti viene generato 204
- context.getServletResponse().setStatus(201);
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error_except404("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
-
- /**
- * Creazione di un gruppo di azioni o risorse dell'API erogata
- *
- * Questa operazione consente di creare un gruppo di azioni o risorse dell'API erogata
- *
- */
- @Override
- public void createErogazioneGruppo(Gruppo body, String nome, Integer versione, ProfiloEnum profilo, String soggetto, String tipoServizio) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
- BaseHelper.throwIfNull(body);
-
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
-
- String mappingPadre = null;
- String erogazioneAutenticazione = null;
- String erogazioneAutenticazioneOpzionale = null;
- TipoAutenticazionePrincipal erogazioneAutenticazionePrincipal = null;
- List<String> erogazioneAutenticazioneParametroList = null;
-
- if ( body.getConfigurazione().getModalita() == ModalitaConfigurazioneGruppoEnum.NUOVA ) {
-
- final GruppoNuovaConfigurazione confNuova = ErogazioniApiHelper.deserializeModalitaConfGruppo(body.getConfigurazione().getModalita(), body.getConfigurazione());
-
- if(confNuova.getAutenticazione()!=null) {
- erogazioneAutenticazione = Enums.toTipoAutenticazione(confNuova.getAutenticazione().getTipo()).toString();
- BooleanNullable autenticazioneOpzionaleNullable = ErogazioniApiHelper.getAutenticazioneOpzionale(confNuova.getAutenticazione()); // gestisce authn se null
- erogazioneAutenticazioneOpzionale = ServletUtils.boolToCheckBoxStatus(autenticazioneOpzionaleNullable!=null ? autenticazioneOpzionaleNullable.getValue() : null);
- erogazioneAutenticazionePrincipal = ErogazioniApiHelper.getTipoAutenticazionePrincipal(confNuova.getAutenticazione());
- erogazioneAutenticazioneParametroList = ErogazioniApiHelper.getAutenticazioneParametroList(env, confNuova.getAutenticazione().getTipo(), confNuova.getAutenticazione());
- }
- }
-
- else if ( body.getConfigurazione().getModalita() == ModalitaConfigurazioneGruppoEnum.EREDITA ) {
-
- GruppoEreditaConfigurazione confEredita = ErogazioniApiHelper.deserializeModalitaConfGruppo(body.getConfigurazione().getModalita(), body.getConfigurazione());
- List<MappingErogazionePortaApplicativa> mappings = ErogazioniApiHelper.getMappingGruppiPA( confEredita.getNome(), idAsps, env.apsCore);
- if ( mappings.isEmpty() ) {
- throw FaultCode.RICHIESTA_NON_VALIDA.toException("Il gruppo " + confEredita.getNome() + " da cui ereditare è inesistente");
- }
- mappingPadre = mappings.get(0).getNome();
- }
-
- final AccordiServizioParteSpecificaPorteApplicativeMappingInfo mappingInfo = AccordiServizioParteSpecificaUtilities.getMappingInfo(mappingPadre, asps, env.apsCore);
- final MappingErogazionePortaApplicativa mappingSelezionato = mappingInfo.getMappingSelezionato();
- final MappingErogazionePortaApplicativa mappingDefault = mappingInfo.getMappingDefault();
- final List<String> azioniOccupate = mappingInfo.getAzioniOccupate();
-
- if ( mappingDefault == null )
- throw FaultCode.NOT_FOUND.toException("Nessuna erogazione trovata");
-
- if ( mappingSelezionato == null )
- throw FaultCode.RICHIESTA_NON_VALIDA.toException("Gruppo scelto non trovato");
-
- ErogazioniApiHelper.checkAzioniAdd(
- body.getAzioni(),
- azioniOccupate,
- env.apcCore.getAzioni(asps, env.apcCore.getAccordoServizioSintetico(asps.getIdAccordo()), false, false, null)
- );
-
- if (!env.apsHelper.configurazioneErogazioneCheckData(
- TipoOperazione.ADD,
- mappingInfo.getNomeNuovaConfigurazione(),
- body.getNome(),
- body.getAzioni().toArray(new String[0]),
- asps,
- azioniOccupate,
- body.getConfigurazione().getModalita().toString(), // modeCreazione
- null, // Come da codice console,
- env.isSupportatoAutenticazioneSoggetti,
- mappingInfo
- )) {
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(env.pd.getMessage()));
- }
-
-
- AccordiServizioParteSpecificaUtilities.addAccordoServizioParteSpecificaPorteApplicative(
- mappingDefault,
- mappingSelezionato,
- mappingInfo.getNomeNuovaConfigurazione(),
- body.getNome(), // nomeGruppo
- body.getAzioni().toArray(new String[0]), // azioni
- body.getConfigurazione().getModalita().toString(), // modeCreazione
- body.getConfigurazione().getModalita().toString(), // modeCreazioneConnettore Forse c'è un bug nella console, qui viene passato "eredita", nella console viene trattato come una checkbox
- null, // endpointtype,
- null, // tipoconn,
- null, // autenticazioneHttp, // RECHECK
- null, // connettoreDebug,
- null, // url,
- null, // nomeCodaJms,
- null, // tipoJms,
- null, // initcont,
- null, // urlpgk,
- null, // provurl,
- null, // connfact,
- null, // tipoSendas,
- null, // user, RECHECK
- null, // password, RECHECK
- null, // httpsurl,
- null, // httpstipologia,
- false, // httpshostverify,
- ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS, // httpsTrustVerifyCert
- null, // httpspath,
- null, // httpstipo,
- null, // httpspwd,
- null, // httpsalgoritmo,
- false, // httpsstato,
- null, // httpskeystore,
- null, // httpspwdprivatekeytrust,
- null, // httpspathkey,
- null, // httpstipokey,
- null, // httpspwdkey,
- null, // httpspwdprivatekey,
- null, // httpsalgoritmokey,
- null, // httpsKeyAlias
- null, // httpsTrustStoreCRLs
- null, // httpsTrustStoreOCSPPolicy
- null, // httpsKeyStoreBYOKPolicy
- null, // proxy_enabled,
- null, // proxy_hostname,
- null, // proxy_port,
- null, // proxy_username,
- null, // proxy_password,
- null, // tempiRisposta_enabled,
- null, // tempiRisposta_connectionTimeout,
- null, // tempiRisposta_readTimeout,
- null, // tempiRisposta_tempoMedioRisposta,
- "no", // opzioniAvanzate,
- null, // transfer_mode,
- null, // transfer_mode_chunk_size,
- null, // redirect_mode,
- null, // redirect_max_hop,
- null, // requestOutputFileName,
- null, // requestOutputFileName_permissions,
- null, // requestOutputFileNameHeaders,
- null, // requestOutputFileNameHeaders_permissions,
- null, // requestOutputParentDirCreateIfNotExists,
- null, // requestOutputOverwriteIfExists,
- null, // responseInputMode,
- null, // responseInputFileName,
- null, // responseInputFileNameHeaders,
- null, // responseInputDeleteAfterRead,
- null, // responseInputWaitTime,
- false, // autenticazioneToken,
- null, // tokenPolicy,
- null, // listExtendedConnettore
- erogazioneAutenticazione,
- erogazioneAutenticazioneOpzionale,
- erogazioneAutenticazionePrincipal,
- erogazioneAutenticazioneParametroList,
- "disabilitato", // erogazioneAutorizzazione
- null, // erogazioneAutorizzazioneAutenticati,
- null, // erogazioneAutorizzazioneRuoli,
- null, // erogazioneAutorizzazioneRuoliTipologia,
- null, // erogazioneAutorizzazioneRuoliMatch,
- null, // nomeSA,
- null, // erogazioneRuolo,
- null, // erogazioneSoggettoAutenticato,
- null, // autorizzazioneAutenticatiToken,
- null, // autorizzazioneRuoliToken,
- null, // autorizzazioneRuoliTipologiaToken,
- null, // autorizzazioneRuoliMatchToken,
- null, // autorizzazione_tokenOptions,
- null, // autorizzazioneScope,
- null, // scope,
- null, // autorizzazioneScopeMatch,
- null, // allegatoXacmlPolicy,
- "disabilitato", // gestioneToken
- null, // gestioneTokenPolicy,
- null, // gestioneTokenOpzionale,
- null, // gestioneTokenValidazioneInput,
- null, // gestioneTokenIntrospection,
- null, // gestioneTokenUserInfo,
- null, // gestioneTokenTokenForward,
- null, // autenticazioneTokenIssuer,
- null, // autenticazioneTokenClientId,
- null, // autenticazioneTokenSubject,
- null, // autenticazioneTokenUsername,
- null, // autenticazioneTokenEMail,
- asps,
- env.tipo_protocollo,
- env.userLogin,
- env.apsCore,
- env.apsHelper,
- null, // nomeSAServer
- null, // identificazioneAttributiStato
- null, //String [] attributeAuthoritySelezionate
- null, // attributeAuthorityAttributi
- null, // apiKeyHeader
- null, // apiKey,
- null, // appIdHeader,
- null, // appId,
- null // connettoreStatusParams
- );
-
- context.getLogger().info("Invocazione completata con successo");
-
-
- // Bug Fix: altrimenti viene generato 204
- context.getServletResponse().setStatus(201);
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error_except404("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
-
- /**
- * Elimina il gruppo identificato dal nome
- *
- * Questa operazione consente di eliminare il gruppo identificato dal nome
- *
- */
- @Override
- public void deleteErogazioneGruppo(String nome, Integer versione, String nomeGruppo, ProfiloEnum profilo, String soggetto, String tipoServizio) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
-
- final IDPortaApplicativa idPortaApplicativa = ErogazioniApiHelper.getIDGruppoPA(nomeGruppo, idAsps, env.apsCore);
-
- if (env.delete_404 && idPortaApplicativa == null)
- throw FaultCode.NOT_FOUND.toException("Gruppo con nome " + nomeGruppo + "non trovato per l'erogazione scelta");
- else if ( idPortaApplicativa != null) {
-
- StringBuilder inUsoMessage = new StringBuilder();
- AccordiServizioParteSpecificaUtilities.deleteAccordoServizioParteSpecificaPorteApplicative(idPortaApplicativa, idAsps, env.userLogin, env.apsCore, env.apsHelper, inUsoMessage);
-
- if (inUsoMessage.length() > 0) {
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(inUsoMessage.toString()));
- }
- }
- context.getLogger().info("Invocazione completata con successo");
-
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error_except404("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
-
- /**
- * Elimina l'azione o la risorsa dell'API associata al gruppo
- *
- * Questa operazione consente di eliminare l'azione o la risorsa dell'API associate al gruppo
- *
- */
- @Override
- public void deleteErogazioneGruppoAzione(String nome, Integer versione, String nomeGruppo, String nomeAzione, ProfiloEnum profilo, String soggetto, String tipoServizio) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
-
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
- final IDPortaApplicativa idPa = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getIDGruppoPA(nomeGruppo, idAsps, env.apsCore), "Gruppo per l'erogazione scelta");
- final PortaApplicativa pa = env.paCore.getPortaApplicativa(idPa);
-
- if ( BaseHelper.findFirst( pa.getAzione().getAzioneDelegataList(), a -> a.equals(nomeAzione)).isPresent() ) {
- StringBuilder inUsoMessage = new StringBuilder();
-
- PorteApplicativeUtilities.deletePortaApplicativaAzioni(pa, env.paCore, env.paHelper, inUsoMessage, "\n",
- new ArrayList<>(Arrays.asList(nomeAzione)), env.userLogin);
-
- if (inUsoMessage.length() > 0)
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(inUsoMessage.toString()));
-
- } else if ( env.delete_404 ) {
- throw FaultCode.NOT_FOUND.toException("Azione " + nomeAzione + " non presente nel gruppo " + nomeGruppo);
- }
-
- context.getLogger().info("Invocazione completata con successo");
-
-
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error_except404("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
-
- /**
- * Ricerca i gruppi in cui sono stati classificate le azioni o le risorse dell'API
- *
- * Elenca i gruppi in cui sono stati classificate le azioni o le risorse dell'API
- *
- */
- @Override
- public ListaGruppi findAllErogazioneGruppi(String nome, Integer versione, ProfiloEnum profilo, String soggetto, String tipoServizio, Integer limit, Integer offset, String azione) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
- final int idLista = Liste.CONFIGURAZIONE_EROGAZIONE;
-
- final ConsoleSearch ricerca = Helper.setupRicercaPaginata(null, limit, offset, idLista, env.idSoggetto.toIDSoggetto(), env.tipo_protocollo);
-
- if (!StringUtils.isEmpty(azione))
- ricerca.addFilter(idLista, Filtri.FILTRO_AZIONE, azione);
-
- List<MappingErogazionePortaApplicativa> mappings = env.apsCore.mappingServiziPorteAppList(idAsps, ricerca);
-
- if ( env.findall_404 && mappings.isEmpty() ) {
- throw FaultCode.NOT_FOUND.toException("Nessuna porta associata al servizio: " + idAsps.toString());
- }
-
- ListaGruppi ret = ListaUtils.costruisciListaPaginata(context.getUriInfo(),
- ricerca.getIndexIniziale(idLista),
- ricerca.getPageSize(idLista),
- ricerca.getNumEntries(idLista), ListaGruppi.class);
-
- for (MappingErogazionePortaApplicativa m : mappings) {
- final PortaApplicativa pd = env.paCore.getPortaApplicativa(m.getIdPortaApplicativa());
-
- GruppoItem g = new GruppoItem();
- g.setAzioni(pd.getAzione().getAzioneDelegataList());
- g.setNome(m.getDescrizione());
- g.setPredefinito(m.isDefault());
-
- ret.addItemsItem(g);
- }
-
-
- context.getLogger().info("Invocazione completata con successo");
- return ret;
-
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error_except404("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
-
- /**
- * Restituisce la descrizione del gruppo
- *
- * Questa operazione consente di ottenere la descrizione del gruppo
- *
- */
- @Override
- public ApiDescrizione getErogazioneDescrizioneGruppo(String nome, Integer versione, String nomeGruppo, ProfiloEnum profilo, String soggetto, String tipoServizio) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
-
- final IDPortaApplicativa idPa = BaseHelper.supplyOrNotFound(
- () -> ErogazioniApiHelper.getIDGruppoPA(nomeGruppo, idAsps, env.apsCore)
- , "Gruppo per l'erogazione scelta"
- );
-
- final PortaApplicativa pa = BaseHelper.supplyOrNotFound(
- () -> env.paCore.getPortaApplicativa(idPa)
- , "Gruppo per l'erogazione scelta"
- );
-
- ApiDescrizione descr = new ApiDescrizione();
- descr.setDescrizione(pa.getDescrizione());
-
- context.getLogger().info("Invocazione completata con successo");
- return descr;
-
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
- /**
- * Restituisce azioni/risorse associate al gruppo identificato dal nome
- *
- * Questa operazione consente di ottenere le azioni associate al gruppo identificato dal nome
- *
- */
- @Override
- public GruppoAzioni getErogazioneGruppoAzioni(String nome, Integer versione, String nomeGruppo, ProfiloEnum profilo, String soggetto, String tipoServizio) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
-
- final IDPortaApplicativa idPa = BaseHelper.supplyOrNotFound(
- () -> ErogazioniApiHelper.getIDGruppoPA(nomeGruppo, idAsps, env.apsCore)
- , "Gruppo per l'erogazione scelta"
- );
-
- final PortaApplicativa pa = BaseHelper.supplyOrNotFound(
- () -> env.paCore.getPortaApplicativa(idPa)
- , "Gruppo per l'erogazione scelta"
- );
-
- GruppoAzioni ret = new GruppoAzioni();
- ret.setAzioni(pa.getAzione().getAzioneDelegataList());
- context.getLogger().info("Invocazione completata con successo");
-
- return ret;
-
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error_except404("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
- /**
- * Consente di modificare la descrizione del gruppo
- *
- * Questa operazione consente di aggiornare la descrizione del gruppo
- *
- */
- @Override
- public void updateErogazioneDescrizioneGruppo(ApiDescrizione body, String nome, Integer versione, String nomeGruppo, ProfiloEnum profilo, String soggetto, String tipoServizio) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
-
- final IDPortaApplicativa idPa = BaseHelper.supplyOrNotFound(
- () -> ErogazioniApiHelper.getIDGruppoPA(nomeGruppo, idAsps, env.apsCore)
- , "Gruppo per l'erogazione scelta"
- );
-
- final PortaApplicativa pa = BaseHelper.supplyOrNotFound(
- () -> env.paCore.getPortaApplicativa(idPa)
- , "Gruppo per l'erogazione scelta"
- );
-
- pa.setDescrizione(body.getDescrizione());
-
- env.paCore.performUpdateOperation(env.userLogin, false, pa);
-
- context.getLogger().info("Invocazione completata con successo");
-
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
-
- /**
- * Consente di modificare il nome del gruppo
- *
- * Questa operazione consente di aggiornare il nome di un gruppo
- *
- */
- @Override
- public void updateErogazioneGruppoNome(GruppoNome body, String nome, Integer versione, String nomeGruppo, ProfiloEnum profilo, String soggetto, String tipoServizio) {
- IContext context = this.getContext();
- try {
- context.getLogger().info("Invocazione in corso ...");
- AuthorizationManager.authorize(context, getAuthorizationConfig());
- context.getLogger().debug("Autorizzazione completata con successo");
-
- BaseHelper.throwIfNull(body);
-
- // PorteApplicativeConfigurazioneChange
- final ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfErogazione(tipoServizio, nome, versione, env.idSoggetto.toIDSoggetto(), env), "Erogazione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
- final List<MappingErogazionePortaApplicativa> listaMapping = env.apsCore.mappingServiziPorteAppList(idAsps,idAsps.getId(), null);
- final List<String> mappingUtilizzati = ErogazioniApiHelper.getDescrizioniMappingPA(listaMapping);
-
- BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getIDGruppoPA(nomeGruppo, idAsps, env.apsCore), "Gruppo per l'erogazione scelta");
-
- if (mappingUtilizzati.stream().filter( m -> m.equalsIgnoreCase(body.getNome())).findFirst().isPresent()) {
- throw FaultCode.CONFLITTO.toException(CostantiControlStation.MESSAGGIO_ERRORE_NOME_GRUPPO_GIA_PRESENTE);
- }
-
- if (! env.paHelper.configurazioneCambiaNomeCheck(TipoOperazione.OTHER, body.getNome(), mappingUtilizzati,false)) {
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(env.pd.getMessage()));
- }
-
- final MappingErogazionePortaApplicativa mappingErogazionePortaApplicativa = AccordiServizioParteSpecificaUtilities.getMappingPAFilterByDescription(
- listaMapping,
- nomeGruppo
- );
-
- mappingErogazionePortaApplicativa.setDescrizione(body.getNome());
-
- env.paCore.aggiornaDescrizioneMappingErogazionePortaApplicativa( mappingErogazionePortaApplicativa, env.userLogin );
-
- context.getLogger().info("Invocazione completata con successo");
-
-
- }
- catch(javax.ws.rs.WebApplicationException e) {
- context.getLogger().error_except404("Invocazione terminata con errore '4xx': %s",e, e.getMessage());
- throw e;
- }
- catch(Throwable e) {
- context.getLogger().error("Invocazione terminata con errore: %s",e, e.getMessage());
- throw FaultCode.ERRORE_INTERNO.toException(e);
- }
- }
-
- }