FruizioniGruppiApiServiceImpl.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.fruizioni.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.PortaDelegata;
- import org.openspcoop2.core.config.constants.TipoAutenticazionePrincipal;
- import org.openspcoop2.core.config.rs.server.api.FruizioniGruppiApi;
- 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.IDPortaDelegata;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
- 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.AccordiServizioParteSpecificaFruitoriPorteDelegateMappingInfo;
- import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaUtilities;
- import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
- import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateUtilities;
- import org.openspcoop2.web.lib.mvc.ServletUtils;
- import org.openspcoop2.web.lib.mvc.TipoOperazione;
- /**
- * FruizioniGruppiApiServiceImpl
- *
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public class FruizioniGruppiApiServiceImpl extends BaseImpl implements FruizioniGruppiApi {
- public FruizioniGruppiApiServiceImpl(){
- super(org.slf4j.LoggerFactory.getLogger(FruizioniGruppiApiServiceImpl.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 addFruizioneGruppoAzioni(GruppoAzioni body, String erogatore, 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 IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
- final IDPortaDelegata idPd = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getIDGruppoPD(nomeGruppo, env.idSoggetto.toIDSoggetto(), idAsps, env.apsCore), "Gruppo per la fruizione scelta");
- final PortaDelegata pd = env.pdCore.getPortaDelegata(idPd);
-
- List<String> azioniOccupate = ErogazioniApiHelper.getAzioniOccupateFruizione(idAsps, env.idSoggetto.toIDSoggetto(), env.apsCore, env.pdCore);
-
- 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]));
-
- long idFruizione = env.apsCore.getIdFruizioneAccordoServizioParteSpecifica(env.idSoggetto.toIDSoggetto(), idAsps);
- List<MappingFruizionePortaDelegata> listaMappingFruizione = env.apsCore.serviziFruitoriMappingList(idFruizione, env.idSoggetto.toIDSoggetto(), idAsps, null);
- if (!env.paHelper.porteDelAzioneCheckData(TipoOperazione.ADD,azioniOccupate,listaMappingFruizione)) {
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(env.pd.getMessage()));
- }
-
- // aggiungo azione nel db
- for(String azione: body.getAzioni()) {
- pd.getAzione().addAzioneDelegata(azione);
- }
- env.paCore.performUpdateOperation(env.userLogin, false, pd);
-
- 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 fruita
- *
- * Questa operazione consente di creare un gruppo di azioni o risorse dell'API fruita
- *
- */
- @Override
- public void createFruizioneGruppo(Gruppo body, String erogatore, 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");
-
- ErogazioniEnv env = new ErogazioniEnv(context.getServletRequest(), profilo, soggetto, context);
-
- final IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps), asps.getId());
-
- String mappingPadre = null;
- String fruizioneAutenticazione = null;
- String fruizioneAutenticazioneOpzionale = null;
- TipoAutenticazionePrincipal fruizioneAutenticazionePrincipal = null;
- List<String> fruizioneAutenticazioneParametroList = null;
-
- if ( body.getConfigurazione().getModalita() == ModalitaConfigurazioneGruppoEnum.NUOVA ) {
-
- final GruppoNuovaConfigurazione confNuova = ErogazioniApiHelper.deserializeModalitaConfGruppo(body.getConfigurazione().getModalita(), body.getConfigurazione());
- if(confNuova.getAutenticazione()!=null) {
- fruizioneAutenticazione = Enums.toTipoAutenticazione(confNuova.getAutenticazione().getTipo()).toString();
- BooleanNullable autenticazioneOpzionaleNullable = ErogazioniApiHelper.getAutenticazioneOpzionale(confNuova.getAutenticazione()); // gestisce authn se null
- fruizioneAutenticazioneOpzionale = ServletUtils.boolToCheckBoxStatus(autenticazioneOpzionaleNullable!=null ? autenticazioneOpzionaleNullable.getValue() : null);
- fruizioneAutenticazionePrincipal = ErogazioniApiHelper.getTipoAutenticazionePrincipal(confNuova.getAutenticazione());
- fruizioneAutenticazioneParametroList = 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<MappingFruizionePortaDelegata> mappings = ErogazioniApiHelper.getMappingGruppiPD( confEredita.getNome(), env.idSoggetto.toIDSoggetto(), 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();
- }
-
- AccordiServizioParteSpecificaFruitoriPorteDelegateMappingInfo mappingInfo = AccordiServizioParteSpecificaUtilities.getMappingInfo(mappingPadre, env.idSoggetto.toIDSoggetto(), asps, env.apsCore);
- MappingFruizionePortaDelegata mappingSelezionato = mappingInfo.getMappingSelezionato();
- MappingFruizionePortaDelegata mappingDefault = mappingInfo.getMappingDefault();
-
- if ( mappingDefault == null )
- throw FaultCode.NOT_FOUND.toException("Nessuna fruizione trovata");
- if ( mappingSelezionato == null )
- throw FaultCode.RICHIESTA_NON_VALIDA.toException("Gruppo con nome non trovato");
-
- List<String> azioniOccupate = mappingInfo.getAzioniOccupate();
-
- ErogazioniApiHelper.checkAzioniAdd(
- body.getAzioni(),
- azioniOccupate,
- env.apcCore.getAzioni(asps, env.apcCore.getAccordoServizioSintetico(asps.getIdAccordo()), false, false, null)
- );
-
- if (!env.apsHelper.configurazioneFruizioneCheckData(
- TipoOperazione.ADD,
- mappingInfo.getNomeNuovaConfigurazione(),
- body.getNome(),
- body.getAzioni().toArray(new String[0]),
- asps,
- azioniOccupate,
- body.getConfigurazione().getModalita().toString(),
- null,
- env.isSupportatoAutenticazioneSoggetti,
- mappingInfo)) {
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(env.pd.getMessage()));
- }
-
- AccordiServizioParteSpecificaUtilities.addAccordoServizioParteSpecificaPorteDelegate(
- mappingDefault,
- mappingSelezionato,
- mappingInfo.getNomeNuovaConfigurazione(),
- body.getNome(),
- body.getAzioni().toArray(new String[0]),
- body.getConfigurazione().getModalita().toString(),
- body.getConfigurazione().getModalita().toString(),
- 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,
- fruizioneAutenticazione,
- fruizioneAutenticazioneOpzionale,
- fruizioneAutenticazionePrincipal,
- fruizioneAutenticazioneParametroList,
- "disabilitato", // erogazioneAutorizzazione, Come da debug.
- null, // erogazioneAutorizzazioneAutenticati,
- null, // erogazioneAutorizzazioneRuoli,
- null, // erogazioneAutorizzazioneRuoliTipologia,
- null, // erogazioneAutorizzazioneRuoliMatch,
- null, // nomeSA,
- null, // erogazioneRuolo,
- null, // autorizzazioneAutenticatiToken,
- null, // autorizzazioneRuoliToken,
- null, // autorizzazioneRuoliTipologiaToken,
- null, // autorizzazioneRuoliMatchToken,
- null, // autorizzazione_tokenOptions,
- null, // autorizzazioneScope,
- null, // scope,
- null, // autorizzazioneScopeMatch,
- null, // allegatoXacmlPolicy,
- "disabilitato", // gestioneToken, Come da debug.
- null, // gestioneTokenPolicy,
- null, // gestioneTokenOpzionale,
- null, // gestioneTokenValidazioneInput,
- null, // gestioneTokenIntrospection,
- null, // gestioneTokenUserInfo,
- null, // gestioneTokenTokenForward,
- null, // autenticazioneTokenIssuer,
- null, // autenticazioneTokenClientId,
- null, // autenticazioneTokenSubject,
- null, // autenticazioneTokenUsername,
- null, // autenticazioneTokenEMail,
- env.idSoggetto.toIDSoggetto(),
- asps,
- env.userLogin,
- env.apsCore,
- env.apsHelper,
- 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 deleteFruizioneGruppo(String erogatore, 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 IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
-
- // ricevo come parametro l'id della pa associata al mapping da cancellare
- final IDPortaDelegata idPortaDelegata = ErogazioniApiHelper.getIDGruppoPD(nomeGruppo, env.idSoggetto.toIDSoggetto(), idAsps, env.apsCore);
-
- if ( idPortaDelegata != null ) {
-
- StringBuilder inUsoMessage = new StringBuilder();
- AccordiServizioParteSpecificaUtilities.deleteAccordoServizioParteSpecificaFruitoriPorteDelegate(
- new ArrayList<IDPortaDelegata>(Arrays.asList(idPortaDelegata)),
- asps, env.idSoggetto.toIDSoggetto(),
- env.userLogin,
- env.apsCore,
- env.apsHelper,
- inUsoMessage
- );
-
- if (inUsoMessage.length() > 0)
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(inUsoMessage.toString()));
- } else if ( env.delete_404 ) {
- throw FaultCode.NOT_FOUND.toException("Gruppo " + nomeGruppo + " non associato alla fruizione");
- }
- 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 associatia al gruppo
- *
- * Questa operazione consente di eliminare l'azione o la risorsa dell'API associata al gruppo
- *
- */
- @Override
- public void deleteFruizioneGruppoAzione(String erogatore, 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 IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
- final IDPortaDelegata idPd = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getIDGruppoPD(nomeGruppo, env.idSoggetto.toIDSoggetto(), idAsps, env.apsCore), "Gruppo per la fruizione scelta");
- final PortaDelegata pd = env.pdCore.getPortaDelegata(idPd);
-
- if ( BaseHelper.findFirst( pd.getAzione().getAzioneDelegataList(), a -> a.equals(nomeAzione)).isPresent() ) {
-
- StringBuilder inUsoMessage = new StringBuilder();
-
- PorteDelegateUtilities.deletePortaDelegataAzioni(pd, asps, env.pdCore, env.pdHelper, inUsoMessage, 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 associata al 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 findAllFruizioneGruppi(String erogatore, 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 IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
-
- final int idLista = Liste.CONFIGURAZIONE_FRUIZIONE;
- 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<MappingFruizionePortaDelegata> mappings = env.apsCore.serviziFruitoriMappingList(env.idSoggetto.toIDSoggetto(), idAsps, ricerca);
-
- if ( env.findall_404 && mappings.isEmpty() ) {
- throw FaultCode.NOT_FOUND.toException("Nessun gruppo associato alla fruizione");
- }
-
- ListaGruppi ret = ListaUtils.costruisciListaPaginata(context.getUriInfo(),
- ricerca.getIndexIniziale(idLista),
- ricerca.getPageSize(idLista),
- ricerca.getNumEntries(idLista), ListaGruppi.class);
-
- for (MappingFruizionePortaDelegata m : mappings) {
- final PortaDelegata pd = env.pdCore.getPortaDelegata(m.getIdPortaDelegata());
-
- 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 getFruizioneDescrizioneGruppo(String erogatore, 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 IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
-
- // ricevo come parametro l'id della pa associata al mapping da cancellare
- final IDPortaDelegata idPortaDelegata = BaseHelper.supplyOrNotFound(
- () -> ErogazioniApiHelper.getIDGruppoPD(nomeGruppo, env.idSoggetto.toIDSoggetto(), idAsps, env.apsCore)
- , "Gruppo per la fruizione scelta"
- );
- final PortaDelegata pd = BaseHelper.supplyOrNotFound(
- () -> env.pdCore.getPortaDelegata(idPortaDelegata)
- , "Gruppo per la fruizione scelta"
- );
-
- ApiDescrizione descr = new ApiDescrizione();
- descr.setDescrizione(pd.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 getFruizioneGruppoAzioni(String erogatore, 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 IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
-
- // ricevo come parametro l'id della pa associata al mapping da cancellare
- final IDPortaDelegata idPortaDelegata = BaseHelper.supplyOrNotFound(
- () -> ErogazioniApiHelper.getIDGruppoPD(nomeGruppo, env.idSoggetto.toIDSoggetto(), idAsps, env.apsCore)
- , "Gruppo per la fruizione scelta"
- );
- final PortaDelegata pd = BaseHelper.supplyOrNotFound(
- () -> env.pdCore.getPortaDelegata(idPortaDelegata)
- , "Gruppo per la fruizione scelta"
- );
-
-
- GruppoAzioni ret = new GruppoAzioni();
- ret.setAzioni(pd.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 updateFruizioneDescrizioneGruppo(ApiDescrizione body, String erogatore, 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 IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
-
- // ricevo come parametro l'id della pa associata al mapping da cancellare
- final IDPortaDelegata idPortaDelegata = BaseHelper.supplyOrNotFound(
- () -> ErogazioniApiHelper.getIDGruppoPD(nomeGruppo, env.idSoggetto.toIDSoggetto(), idAsps, env.apsCore)
- , "Gruppo per la fruizione scelta"
- );
- final PortaDelegata pd = BaseHelper.supplyOrNotFound(
- () -> env.pdCore.getPortaDelegata(idPortaDelegata)
- , "Gruppo per la fruizione scelta"
- );
-
- pd.setDescrizione(body.getDescrizione());
- env.pdCore.performUpdateOperation(env.userLogin, false, pd);
-
- 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 updateFruizioneGruppoNome(GruppoNome body, String erogatore, 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 IDSoggetto idErogatore = new IDSoggetto(env.tipo_soggetto, erogatore);
- final AccordoServizioParteSpecifica asps = BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getServizioIfFruizione(tipoServizio, nome, versione, idErogatore, env.idSoggetto.toIDSoggetto(), env), "Fruizione");
- final IdServizio idAsps = new IdServizio(env.idServizioFactory.getIDServizioFromAccordo(asps),asps.getId());
- final List<MappingFruizionePortaDelegata> listaMapping = env.apsCore.serviziFruitoriMappingList(env.idSoggetto.toIDSoggetto(), idAsps, null);
- final List<String> mappingUtilizzati = ErogazioniApiHelper.getDescrizioniMappingPD(listaMapping);
-
- BaseHelper.supplyOrNotFound( () -> ErogazioniApiHelper.getIDGruppoPD(nomeGruppo, env.idSoggetto.toIDSoggetto(), idAsps, env.apsCore), "Gruppo per la fruizione 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,true)) {
- throw FaultCode.RICHIESTA_NON_VALIDA.toException(StringEscapeUtils.unescapeHtml(env.pd.getMessage()));
- }
-
- final MappingFruizionePortaDelegata mapping= AccordiServizioParteSpecificaUtilities.getMappingPDFilterByDescription(
- listaMapping,
- nomeGruppo
- );
-
- mapping.setDescrizione(body.getNome());
-
- env.pdCore.aggiornaDescrizioneMappingFruizionePortaDelegata( mapping, 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);
- }
- }
-
- }