AccordiServizioParteComuneWSDLChange.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.apc;
- import java.net.URLEncoder;
- import java.text.MessageFormat;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Properties;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.apache.commons.lang.StringUtils;
- import org.apache.struts.action.Action;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
- import org.openspcoop2.core.commons.ErrorsHandlerCostant;
- import org.openspcoop2.core.config.CanaleConfigurazione;
- import org.openspcoop2.core.config.CanaliConfigurazione;
- import org.openspcoop2.core.config.Soggetto;
- import org.openspcoop2.core.id.IDAccordo;
- import org.openspcoop2.core.id.IDPortType;
- import org.openspcoop2.core.id.IDPortTypeAzione;
- import org.openspcoop2.core.id.IDResource;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.registry.AccordoCooperazione;
- import org.openspcoop2.core.registry.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.IdSoggetto;
- import org.openspcoop2.core.registry.ProtocolProperty;
- import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
- import org.openspcoop2.core.registry.beans.ResourceSintetica;
- import org.openspcoop2.core.registry.driver.BeanUtilities;
- import org.openspcoop2.core.registry.driver.FiltroRicercaGruppi;
- import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
- import org.openspcoop2.core.registry.driver.IDAccordoFactory;
- import org.openspcoop2.message.constants.MessageType;
- import org.openspcoop2.message.constants.ServiceBinding;
- import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
- import org.openspcoop2.protocol.engine.utils.DBOggettiInUsoUtils;
- import org.openspcoop2.protocol.engine.utils.NamingUtils;
- import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
- import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
- import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
- import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
- import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
- import org.openspcoop2.web.ctrlstat.servlet.ac.AccordiCooperazioneCore;
- import org.openspcoop2.web.ctrlstat.servlet.apc.api.ApiCostanti;
- import org.openspcoop2.web.ctrlstat.servlet.apc.api.ApiHelper;
- import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
- import org.openspcoop2.web.ctrlstat.servlet.archivi.ArchiviCostanti;
- import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
- import org.openspcoop2.web.ctrlstat.servlet.gruppi.GruppiCore;
- import org.openspcoop2.web.ctrlstat.servlet.protocol_properties.ProtocolPropertiesCostanti;
- import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
- import org.openspcoop2.web.lib.mvc.BinaryParameter;
- import org.openspcoop2.web.lib.mvc.Costanti;
- import org.openspcoop2.web.lib.mvc.DataElement;
- import org.openspcoop2.web.lib.mvc.ForwardParams;
- import org.openspcoop2.web.lib.mvc.GeneralData;
- import org.openspcoop2.web.lib.mvc.PageData;
- import org.openspcoop2.web.lib.mvc.Parameter;
- import org.openspcoop2.web.lib.mvc.ServletUtils;
- import org.openspcoop2.web.lib.mvc.TipoOperazione;
- /**
- * accordiWSDLChange
- *
- * @author Andrea Poli (apoli@link.it)
- * @author Stefano Corallo (corallo@link.it)
- * @author Sandra Giangrandi (sandra@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public final class AccordiServizioParteComuneWSDLChange extends Action {
-
-
- @Override
- public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
- HttpSession session = request.getSession(true);
- // Inizializzo PageData
- PageData pd = new PageData();
- GeneralHelper generalHelper = new GeneralHelper(session);
- // Inizializzo GeneralData
- GeneralData gd = generalHelper.initGeneralData(request);
- String userLogin = ServletUtils.getUserLoginFromSession(session);
- IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();
- IDAccordoCooperazioneFactory idAccordoCooperazioneFactory = IDAccordoCooperazioneFactory.getInstance();
- boolean isSupportoProfiloAsincrono = false;
-
- AccordiServizioParteComuneWSDLChangeStrutsBean strutsBean = new AccordiServizioParteComuneWSDLChangeStrutsBean();
-
- strutsBean.consoleOperationType = ConsoleOperationType.CHANGE;
-
- try {
- ApiHelper apcHelper = new ApiHelper(request, pd, session);
-
- boolean isModalitaAvanzata = apcHelper.isModalitaAvanzata();
-
- String actionConfirm = apcHelper.getParameter(Costanti.PARAMETRO_ACTION_CONFIRM);
- strutsBean.editMode = apcHelper.getParameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME);
- strutsBean.id = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID);
- strutsBean.tipo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_TIPO_WSDL);
- strutsBean.wsdl = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL);
- strutsBean.tipoAccordo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_TIPO_ACCORDO);
- if("".equals(strutsBean.tipoAccordo))
- strutsBean.tipoAccordo = null;
- if(apcHelper.isMultipart()){
- strutsBean.decodeRequestValidazioneDocumenti = true;
- String tmpValidazioneDocumenti = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_VALIDAZIONE_DOCUMENTI);
- strutsBean.validazioneDocumenti = ServletUtils.isCheckBoxEnabled(tmpValidazioneDocumenti);
-
- strutsBean.decodeRequestAggiornaEsistenti = true;
- String aggiornaEsistentiS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_UPDATE_WSDL_AGGIORNA);
- strutsBean.aggiornaEsistenti = ServletUtils.isCheckBoxEnabled(aggiornaEsistentiS);
-
- strutsBean.decodeRequestEliminaNonPresentiNuovaInterfaccia = true;
- String eliminaNonPresentiNuovaInterfacciaS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_UPDATE_WSDL_ELIMINA);
- strutsBean.eliminaNonPresentiNuovaInterfaccia = ServletUtils.isCheckBoxEnabled(eliminaNonPresentiNuovaInterfacciaS);
- }
-
- //rimuovo eventuali tracce della procedura
- if(actionConfirm == null){
- ServletUtils.removeObjectFromSession(request, session, AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_CHANGE_TMP);
- }else {
- // se passo da qui sto tornando dalla maschera di conferma ripristino il wsdl dalla sessione
- strutsBean.wsdl = ServletUtils.getObjectFromSession(request, session, String.class,
- AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_CHANGE_TMP);
- ServletUtils.removeObjectFromSession(request, session, AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_CHANGE_TMP);
- }
-
- if(ServletUtils.isEditModeInProgress(strutsBean.editMode)){
- // primo accesso alla servlet
- strutsBean.validazioneDocumenti = true;
- strutsBean.aggiornaEsistenti = true;
- strutsBean.eliminaNonPresentiNuovaInterfaccia = true;
- }else{
- if(!strutsBean.decodeRequestValidazioneDocumenti){
- String tmpValidazioneDocumenti = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_VALIDAZIONE_DOCUMENTI);
- strutsBean.validazioneDocumenti = ServletUtils.isCheckBoxEnabled(tmpValidazioneDocumenti);
- }
- if(!strutsBean.decodeRequestAggiornaEsistenti){
- String aggiornaEsistentiS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_UPDATE_WSDL_AGGIORNA);
- strutsBean.aggiornaEsistenti = ServletUtils.isCheckBoxEnabled(aggiornaEsistentiS);
- }
- if(!strutsBean.decodeRequestEliminaNonPresentiNuovaInterfaccia){
- String eliminaNonPresentiNuovaInterfacciaS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_UPDATE_WSDL_ELIMINA);
- strutsBean.eliminaNonPresentiNuovaInterfaccia = ServletUtils.isCheckBoxEnabled(eliminaNonPresentiNuovaInterfacciaS);
- }
- }
- long idAccordoLong = Long.parseLong(strutsBean.id);
-
- String apiGestioneParziale = apcHelper.getParameter(ApiCostanti.PARAMETRO_APC_API_GESTIONE_PARZIALE);
- if(apiGestioneParziale == null) {
- apiGestioneParziale = "";
- }
- boolean isGestioneAllegati = apiGestioneParziale.equals(ApiCostanti.VALORE_PARAMETRO_APC_API_GESTIONE_SPECIFICA_INTERFACCE);
- // Preparo il menu
- apcHelper.makeMenu();
- // Prendo il nome e il wsdl attuale dell'accordo
- AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore();
- AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore(apcCore);
- SoggettiCore soggettiCore = new SoggettiCore(apcCore);
- AccordiCooperazioneCore acCore = new AccordiCooperazioneCore(apcCore);
- GruppiCore gruppiCore = new GruppiCore(apcCore);
- ConfigurazioneCore confCore = new ConfigurazioneCore(apcCore);
-
- // carico i canali
- CanaliConfigurazione gestioneCanali = confCore.getCanaliConfigurazione(false);
- List<CanaleConfigurazione> canaleList = gestioneCanali != null ? gestioneCanali.getCanaleList() : new ArrayList<>();
- boolean gestioneCanaliEnabled = gestioneCanali != null && org.openspcoop2.core.config.constants.StatoFunzionalita.ABILITATO.equals(gestioneCanali.getStato());
- // Flag per controllare il mapping automatico di porttype e operation
- boolean enableAutoMapping = apcCore.isEnableAutoMappingWsdlIntoAccordo();
- boolean enableAutoMappingEstraiXsdSchemiFromWsdlTypes = apcCore.isEnableAutoMappingWsdlIntoAccordoEstrazioneSchemiInWsdlTypes();
- AccordoServizioParteComune as = apcCore.getAccordoServizioFull(idAccordoLong);
- boolean asWithAllegati = apcHelper.asWithAllegatiXsd(as);
- String uriAS = idAccordoFactory.getUriFromAccordo(as);
- String labelASTitle = apcHelper.getLabelIdAccordo(as);
- IdSoggetto idSoggettoReferente = as.getSoggettoReferente();
- String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(idSoggettoReferente.getTipo());
-
-
- ServiceBinding serviceBinding = apcCore.toMessageServiceBinding(as.getServiceBinding());
- org.openspcoop2.protocol.manifest.constants.InterfaceType formatoSpecifica = apcCore.formatoSpecifica2InterfaceType(as.getFormatoSpecifica());
-
- isSupportoProfiloAsincrono = acCore.isProfiloDiCollaborazioneAsincronoSupportatoDalProtocollo(protocollo,serviceBinding);
-
- // fromato specifica default se e' null
- if(formatoSpecifica == null &&
- serviceBinding != null) {
- switch(serviceBinding) {
- case REST:
- formatoSpecifica = org.openspcoop2.protocol.manifest.constants.InterfaceType.toEnumConstant(AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_INTERFACE_TYPE_REST);
- break;
- case SOAP:
- default:
- formatoSpecifica = org.openspcoop2.protocol.manifest.constants.InterfaceType.toEnumConstant(AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_INTERFACE_TYPE_SOAP);
- break;
- }
- }
-
- FiltroRicercaGruppi filtroRicerca = new FiltroRicercaGruppi();
- filtroRicerca.setServiceBinding(apcCore.fromMessageServiceBinding(serviceBinding));
-
- String oldwsdl = "";
- byte[] wsdlbyte = null;
- String label = null;
- String tipologiaDocumentoScaricare = null;
- boolean facilityUnicoWSDLInterfacciaStandard = false;
- if (strutsBean.tipo.equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_DEFINITORIO)) {
- wsdlbyte = as.getByteWsdlDefinitorio();
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_WSDL_DEFINITORIO;
- tipologiaDocumentoScaricare = ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_WSDL_DEFINITORIO;
- }
- if (strutsBean.tipo.equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_CONCETTUALE)) {
- wsdlbyte = as.getByteWsdlConcettuale();
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_WSDL_CONCETTUALE;
- tipologiaDocumentoScaricare = ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_WSDL_CONCETTUALE;
-
- switch (serviceBinding) {
- case REST:
- label = apcHelper.getLabelWSDLFromFormatoSpecifica(formatoSpecifica);
- break;
- case SOAP:
- default:
- // per ora non faccio nulla
- break;
- }
-
- }
- if (strutsBean.tipo.equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_EROGATORE)) {
- wsdlbyte = as.getByteWsdlLogicoErogatore();
- if(isModalitaAvanzata){
- if(isSupportoProfiloAsincrono) {
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_WSDL_EROGATORE;
- }else {
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_WSDL_LOGICO;
- facilityUnicoWSDLInterfacciaStandard = true;
- }
- } else {
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_WSDL;
- facilityUnicoWSDLInterfacciaStandard = true;
- }
- tipologiaDocumentoScaricare = ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_WSDL_LOGICO_EROGATORE;
- }
- if (strutsBean.tipo.equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_FRUITORE)) {
- wsdlbyte = as.getByteWsdlLogicoFruitore();
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_WSDL_FRUITORE;
- tipologiaDocumentoScaricare = ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_WSDL_LOGICO_FRUITORE;
- }
- if (strutsBean.tipo.equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_SPECIFICA_CONVERSAZIONE_CONCETTUALE)) {
- wsdlbyte = as.getByteSpecificaConversazioneConcettuale();
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_SPECIFICA_CONVERSAZIONE_CONCETTUALE;
- tipologiaDocumentoScaricare = ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_SPECIFICA_CONVERSAZIONE_CONCETTUALE;
- }
- if (strutsBean.tipo.equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_SPECIFICA_CONVERSAZIONE_EROGATORE)) {
- wsdlbyte = as.getByteSpecificaConversazioneErogatore();
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_SPECIFICA_CONVERSAZIONE_EROGATORE;
- tipologiaDocumentoScaricare = ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_SPECIFICA_CONVERSAZIONE_LOGICO_EROGATORE;
- }
- if (strutsBean.tipo.equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_SPECIFICA_CONVERSAZIONE_FRUITORE)) {
- wsdlbyte = as.getByteSpecificaConversazioneFruitore();
- label = AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_SPECIFICA_CONVERSAZIONE_FRUITORE;
- tipologiaDocumentoScaricare = ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_SPECIFICA_CONVERSAZIONE_LOGICO_FRUITORE;
- }
- if (wsdlbyte != null) {
- oldwsdl = new String(wsdlbyte);
- }
- boolean used = true;
-
- Boolean isModalitaVistaApiCustom = ServletUtils.getBooleanAttributeFromSession(ApiCostanti.SESSION_ATTRIBUTE_VISTA_APC_API, session, request, false).getValue();
- if(isModalitaVistaApiCustom==null || !isModalitaVistaApiCustom.booleanValue()) {
- label = MessageFormat.format("{0} di {1}", label, labelASTitle);
- }
- IDAccordo idAccordoOLD = idAccordoFactory.getIDAccordoFromValues(as.getNome(),BeanUtilities.getSoggettoReferenteID(as.getSoggettoReferente()),as.getVersione());
- Parameter pIdAccordo = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID, strutsBean.id+"");
- Parameter pNomeAccordo = new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_NOME, as.getNome());
- Parameter pTipoAccordo = AccordiServizioParteComuneUtilities.getParametroAccordoServizio(strutsBean.tipoAccordo);
- String tipoProtocollo = null;
- // controllo se l'accordo e' utilizzato da qualche asps
- List<AccordoServizioParteSpecifica> asps = apsCore.serviziByAccordoFilterList(idAccordoOLD);
- used = asps != null && !asps.isEmpty();
- // lista dei protocolli supportati
- List<String> listaTipiProtocollo = apcCore.getProtocolli(request, session);
- // se il protocollo e' null (primo accesso ) lo ricavo dall'accordo di servizio
- if(tipoProtocollo == null){
- tipoProtocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(as.getSoggettoReferente().getTipo());
- }
- List<String> tipiSoggettiGestitiProtocollo = soggettiCore.getTipiSoggettiGestitiProtocollo(tipoProtocollo);
- String servletNameApcChange = AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_CHANGE;
- Parameter parameterApcChange = new Parameter(labelASTitle, servletNameApcChange, pIdAccordo, pNomeAccordo, pTipoAccordo);
- List<Parameter> listaParams = apcHelper.getTitoloApc(TipoOperazione.OTHER, as, strutsBean.tipoAccordo, labelASTitle, AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_CHANGE, isGestioneAllegati);
- listaParams.add(new Parameter(label,null));
-
- if(apcHelper.isEditModeInProgress() && ServletUtils.isEditModeInProgress(strutsBean.editMode)){
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- apcHelper.addAccordiWSDLChangeToDati(dati, strutsBean.id,strutsBean.tipoAccordo,strutsBean.tipo,label,
- oldwsdl,as.getStatoPackage(),strutsBean.validazioneDocumenti,tipologiaDocumentoScaricare,
- serviceBinding, strutsBean.aggiornaEsistenti, strutsBean.eliminaNonPresentiNuovaInterfaccia);
- pd.setDati(dati);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, AccordiServizioParteComuneCostanti.TIPO_OPERAZIONE_WSDL_CHANGE);
- }
- // Controlli sui campi immessi
- boolean isOk = apcHelper.accordiWSDLCheckData(pd,strutsBean.tipo, strutsBean.wsdl,as,strutsBean.validazioneDocumenti, protocollo);
- if (!isOk) {
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- apcHelper.addAccordiWSDLChangeToDati(dati, strutsBean.id,strutsBean.tipoAccordo,strutsBean.tipo,label,
- oldwsdl,as.getStatoPackage(),strutsBean.validazioneDocumenti,tipologiaDocumentoScaricare,
- serviceBinding, strutsBean.aggiornaEsistenti, strutsBean.eliminaNonPresentiNuovaInterfaccia);
- pd.setDati(dati);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, AccordiServizioParteComuneCostanti.TIPO_OPERAZIONE_WSDL_CHANGE);
- }
- // creo parametri binari finti per i wsdl
- strutsBean.wsdldef = new BinaryParameter();
- strutsBean.wsdlconc = new BinaryParameter();
- strutsBean.wsdlserv = new BinaryParameter();
- strutsBean.wsdlservcorr = new BinaryParameter();
- strutsBean.wsblconc = new BinaryParameter();
- strutsBean.wsblserv = new BinaryParameter();
- strutsBean.wsblservcorr = new BinaryParameter();
- // il wsdl definitorio rimane fuori dal nuovo comportamento quindi il flusso della pagina continua come prima
- if (!strutsBean.tipo.equals(AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_DEFINITORIO)) {
- // se sono state definiti dei port type ed e' la prima volta che ho passato i controlli
- //Informo l'utente che potrebbe sovrascrivere i servizi definiti tramite l'aggiornamento del wsdl
- // Questa Modalita' e' controllata tramite la proprieta' isenabledAutoMappingWsdlIntoAccordo
- // e se non e' un reset
- if(enableAutoMapping && apcCore.isInterfaceDefined(strutsBean.wsdl) ){
- if(actionConfirm == null){
- if(as.sizePortTypeList() > 0 || as.sizeResourceList()>0 ){
-
- // salvo il wsdl che ha inviato l'utente
- ServletUtils.setObjectIntoSession(request, session, strutsBean.wsdl, AccordiServizioParteComuneCostanti.PARAMETRO_APC_WSDL_CHANGE_TMP);
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeInProgress());
- // salvo lo stato dell'invio
- apcHelper.addAccordiWSDLChangeToDati(dati, strutsBean.id,strutsBean.tipoAccordo,strutsBean.tipo,label,
- oldwsdl,as.getStatoPackage(),strutsBean.validazioneDocumenti,tipologiaDocumentoScaricare,
- serviceBinding, strutsBean.aggiornaEsistenti, strutsBean.eliminaNonPresentiNuovaInterfaccia);
- pd.setDati(dati);
- String uriAccordo = idAccordoFactory.getUriFromIDAccordo(idAccordoOLD);
- String oggetto = null;
- String nuoviOggetti = null;
- String updateOggetti = null;
- String warnUpdateOggetti = null;
- if(as.sizePortTypeList() > 0) {
- oggetto = as.sizePortTypeList()+" servizi";
- nuoviOggetti = "nuovi servizi e/o azioni";
- updateOggetti = "dei servizi e delle azioni";
- warnUpdateOggetti = "I servizi e le azioni";
- }
- else {
- oggetto = as.sizeResourceList()+" risorse";
- nuoviOggetti = "nuove risorse";
- updateOggetti = "delle risorse";
- warnUpdateOggetti = "Le risorse";
- }
- String msg = "Attenzione, l'accordo ["+uriAccordo+"] contiene la definizione di "+oggetto+" e "+(as.sizeAllegatoList()+as.sizeSpecificaSemiformaleList())+" allegati. <BR/>"+
- "Il caricamento della specifica comporterà:<BR/>"+
- "- l'aggiornamento degli allegati esistenti e l'eventuale creazione di nuovi allegati;<BR/>"+
- "- l'eventuale creazione di "+nuoviOggetti+""+
- (strutsBean.aggiornaEsistenti? ";<BR/>- l'aggiornamento "+updateOggetti+" esistenti" : "")+
- (strutsBean.eliminaNonPresentiNuovaInterfaccia? ";<BR/>- l'eliminazione "+updateOggetti+" non presenti nella nuova interfaccia" : "")+
- ".<BR/><BR/>"+
- (!strutsBean.aggiornaEsistenti ? warnUpdateOggetti+" esistenti non verranno aggiornati.<BR/>" : "")+
- (!strutsBean.eliminaNonPresentiNuovaInterfaccia ? warnUpdateOggetti+" non presenti nella nuova interfaccia verranno mantenute.<BR/>" : "")+
- "<BR/>Procedere con l'operazione richiesta?";
-
- String pre = Costanti.HTML_MODAL_SPAN_PREFIX;
- String post = Costanti.HTML_MODAL_SPAN_SUFFIX;
- pd.setMessage(pre + msg + post, Costanti.MESSAGE_TYPE_CONFIRM);
- // Bottoni
- String[][] bottoni = {
- { Costanti.LABEL_MONITOR_BUTTON_ANNULLA,
- Costanti.LABEL_MONITOR_BUTTON_ANNULLA_CONFERMA_PREFIX +
- Costanti.LABEL_MONITOR_BUTTON_ANNULLA_CONFERMA_SUFFIX
- },
- { Costanti.LABEL_MONITOR_BUTTON_CONFERMA,
- Costanti.LABEL_MONITOR_BUTTON_ESEGUI_OPERAZIONE_CONFERMA_PREFIX +
- Costanti.LABEL_MONITOR_BUTTON_ESEGUI_OPERAZIONE_CONFERMA_SUFFIX }};
- pd.setBottoni(bottoni );
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, AccordiServizioParteComuneCostanti.TIPO_OPERAZIONE_WSDL_CHANGE);
- }
- }
- }
- }
-
- // Arrivo qui quando l'utente ha schiacciato Ok nella maschera di conferma, oppure l'accordo non aveva servizi, o sono in un wsdl definitorio.
- List<IDResource> risorseEliminate = new ArrayList<>();
- List<IDPortType> portTypeEliminati = new ArrayList<>();
- List<IDPortTypeAzione> operationEliminate = new ArrayList<>();
- AccordiServizioParteComuneUtilities.updateInterfacciaAccordoServizioParteComune(strutsBean.tipo, strutsBean.wsdl, as,
- enableAutoMapping, strutsBean.validazioneDocumenti, enableAutoMappingEstraiXsdSchemiFromWsdlTypes, facilityUnicoWSDLInterfacciaStandard,
- tipoProtocollo,
- apcCore,
- strutsBean.aggiornaEsistenti, strutsBean.eliminaNonPresentiNuovaInterfaccia,
- risorseEliminate, portTypeEliminati, operationEliminate);
-
- String newLine = org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE;
- StringBuilder inUsoMessage = new StringBuilder();
-
- if(portTypeEliminati!=null && !portTypeEliminati.isEmpty()) {
- boolean normalizeObjectIds = !apcHelper.isModalitaCompleta();
- for (IDPortType idPortType : portTypeEliminati) {
- HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
- boolean portTypeInUso = apcCore.isPortTypeInUso(idPortType,whereIsInUso,normalizeObjectIds);
- if (portTypeInUso) {
- inUsoMessage.append(DBOggettiInUsoUtils.toString(idPortType, whereIsInUso, true, newLine));
- inUsoMessage.append(newLine);
- }
- }
- if(operationEliminate!=null && !operationEliminate.isEmpty()) {
- for (IDPortTypeAzione idOperazione : operationEliminate) {
-
- // controllo che non esista già nella lista dei port type precedentemente segnalati
- boolean find = false;
- for (IDPortType idPortType : portTypeEliminati) {
- if(idPortType.equals(idOperazione.getIdPortType())) {
- find = true;
- break;
- }
- }
- if(find) {
- continue;
- }
-
- HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
- boolean operazioneInUso = apcCore.isOperazioneInUso(idOperazione,whereIsInUso,normalizeObjectIds);
- if (operazioneInUso) {
- inUsoMessage.append(DBOggettiInUsoUtils.toString(idOperazione, whereIsInUso, true, newLine));
- inUsoMessage.append(newLine);
- }
- }
- }
- }
- if(inUsoMessage.length()==0 &&
- risorseEliminate!=null && !risorseEliminate.isEmpty()) {
-
- AccordoServizioParteComuneSintetico asSintetico = apcCore.getAccordoServizioSintetico(idAccordoLong);
-
- boolean normalizeObjectIds = !apcHelper.isModalitaCompleta();
- for (IDResource idRisorsa : risorseEliminate) {
- HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
- boolean operazioneInUso = apcCore.isRisorsaInUso(idRisorsa,whereIsInUso,normalizeObjectIds);
- if (operazioneInUso) {
- // traduco nomeRisorsa in path
- String methodPath = null;
- if(asSintetico.getResource()!=null) {
- for (int j = 0; j < asSintetico.getResource().size(); j++) {
- ResourceSintetica risorsa = asSintetico.getResource().get(j);
- if (idRisorsa.getNome().equals(risorsa.getNome())) {
- methodPath = NamingUtils.getLabelResource(risorsa);
- break;
- }
- }
- }
- if(methodPath==null) {
- methodPath = idRisorsa.getNome();
- }
-
- inUsoMessage.append(DBOggettiInUsoUtils.toString(idRisorsa, methodPath, whereIsInUso, true, newLine));
- inUsoMessage.append(newLine);
- }
- }
- }
- if(inUsoMessage.length()>0) {
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- apcHelper.addAccordiWSDLChangeToDati(dati, strutsBean.id,strutsBean.tipoAccordo,strutsBean.tipo,label,
- oldwsdl,as.getStatoPackage(),strutsBean.validazioneDocumenti,tipologiaDocumentoScaricare,
- serviceBinding, strutsBean.aggiornaEsistenti, strutsBean.eliminaNonPresentiNuovaInterfaccia);
- pd.setMessage("Non è possibile procedere con l'aggiornamento dell'interfaccia a causa di dipendenze verso oggetti che verrebbero eliminati.<BR/><BR/>"+inUsoMessage.toString());
-
- pd.setDati(dati);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, AccordiServizioParteComuneCostanti.TIPO_OPERAZIONE_WSDL_CHANGE);
- }
-
- // effettuo le operazioni
- apcCore.performUpdateOperation(userLogin, apcHelper.smista(), as);
-
- //se sono in modalita' standard
- if(apcHelper.isModalitaStandard()) {
- apcHelper.prepareApiChange(TipoOperazione.OTHER, as);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeFinished(mapping, ApiCostanti.OBJECT_NAME_APC_API, ForwardParams.CHANGE());
- }
-
- // visualizzo il form di modifica accordo come in accordiChange
- // setto la barra del titolo
- listaParams = apcHelper.getTitoloApc(TipoOperazione.OTHER, as, strutsBean.tipoAccordo, labelASTitle, null, isGestioneAllegati);
- ServletUtils.setPageDataTitle(pd, listaParams);
- String descr = as.getDescrizione();
- // controllo profilo collaborazione
- String profcoll = AccordiServizioParteComuneHelper.convertProfiloCollaborazioneDB2View(as.getProfiloCollaborazione());
- String filtrodup = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getFiltroDuplicati());
- String confric = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getConfermaRicezione());
- String idcoll = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getIdCollaborazione());
- String idRifRichiesta = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getIdRiferimentoRichiesta());
- String consord = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getConsegnaInOrdine());
- String scadenza = as.getScadenza();
- boolean showUtilizzoSenzaAzione = as.sizeAzioneList() > 0;// se
- // ci
- // sono
- // azioni
- // allora
- // visualizzo
- // il
- // checkbox
- boolean utilizzoSenzaAzione = as.getUtilizzoSenzaAzione();
- List<Soggetto> listaSoggetti=null;
- if(apcCore.isVisioneOggettiGlobale(userLogin)){
- listaSoggetti = soggettiCore.soggettiList(null, new ConsoleSearch(true));
- }else{
- listaSoggetti = soggettiCore.soggettiList(userLogin, new ConsoleSearch(true));
- }
- String[] providersList = null;
- String[] providersListLabel = null;
- List<String> soggettiListTmp = new ArrayList<>();
- List<String> soggettiListLabelTmp = new ArrayList<>();
- soggettiListTmp.add("-");
- soggettiListLabelTmp.add("-");
- if (!listaSoggetti.isEmpty()) {
- for (Soggetto soggetto : listaSoggetti) {
- if(tipiSoggettiGestitiProtocollo.contains(soggetto.getTipo())){
- soggettiListTmp.add(soggetto.getId().toString());
- soggettiListLabelTmp.add(soggetto.getTipo() + "/" + soggetto.getNome());
- }
- }
- }
- providersList = soggettiListTmp.toArray(new String[1]);
- providersListLabel = soggettiListLabelTmp.toArray(new String[1]);
- String[] accordiCooperazioneEsistenti=null;
- String[] accordiCooperazioneEsistentiLabel=null;
- List<AccordoCooperazione> lista = null;
- if(apcCore.isVisioneOggettiGlobale(userLogin)){
- lista = acCore.accordiCooperazioneList(null, new ConsoleSearch(true));
- }else{
- lista = acCore.accordiCooperazioneList(userLogin, new ConsoleSearch(true));
- }
- if (lista != null && !lista.isEmpty()) {
- accordiCooperazioneEsistenti = new String[lista.size()+1];
- accordiCooperazioneEsistentiLabel = new String[lista.size()+1];
- int i = 1;
- accordiCooperazioneEsistenti[0]="-";
- accordiCooperazioneEsistentiLabel[0]="-";
- Iterator<AccordoCooperazione> itL = lista.iterator();
- while (itL.hasNext()) {
- AccordoCooperazione singleAC = itL.next();
- accordiCooperazioneEsistenti[i] = "" + singleAC.getId();
- accordiCooperazioneEsistentiLabel[i] = idAccordoCooperazioneFactory.getUriFromAccordo(acCore.getAccordoCooperazione(singleAC.getId()));
- i++;
- }
- } else {
- accordiCooperazioneEsistenti = new String[1];
- accordiCooperazioneEsistentiLabel = new String[1];
- accordiCooperazioneEsistenti[0]="-";
- accordiCooperazioneEsistentiLabel[0]="-";
- }
- String referente=null;
- if(as.getSoggettoReferente()==null){
- referente= "-";
- }else{
- referente = "" + soggettiCore.getSoggettoRegistro(new IDSoggetto(as.getSoggettoReferente().getTipo(),as.getSoggettoReferente().getNome())).getId();
- }
- String versione = null;
- if(as.getVersione()!=null){
- versione = as.getVersione().intValue()+"";
- }
- boolean isServizioComposto = as.getServizioComposto()!=null;
- String accordoCooperazioneId = "";
- if(isServizioComposto){
- accordoCooperazioneId = ""+as.getServizioComposto().getIdAccordoCooperazione();
- }else{
- accordoCooperazioneId="-";
- }
- String statoPackage = as.getStatoPackage();
-
- strutsBean.protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(tipoProtocollo);
- strutsBean.consoleDynamicConfiguration = strutsBean.protocolFactory.createDynamicConfigurationConsole();
- strutsBean.registryReader = soggettiCore.getRegistryReader(strutsBean.protocolFactory);
- strutsBean.configRegistryReader = soggettiCore.getConfigIntegrationReader(strutsBean.protocolFactory);
- strutsBean.consoleConfiguration = strutsBean.tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE) ?
- strutsBean.consoleDynamicConfiguration.getDynamicConfigAccordoServizioParteComune(strutsBean.consoleOperationType, apcHelper,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD)
- : strutsBean.consoleDynamicConfiguration.getDynamicConfigAccordoServizioComposto(strutsBean.consoleOperationType, apcHelper,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
-
- List<ProtocolProperty> oldProtocolPropertyList = as.getProtocolPropertyList();
- strutsBean.protocolProperties = apcHelper.estraiProtocolPropertiesDaRequest(strutsBean.consoleConfiguration, strutsBean.consoleOperationType);
- ProtocolPropertiesUtils.mergeProtocolPropertiesRegistry(strutsBean.protocolProperties, oldProtocolPropertyList, strutsBean.consoleOperationType);
-
- Properties propertiesProprietario = new Properties();
- propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO, strutsBean.id);
- propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO, ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO_VALUE_ACCORDO_SERVIZIO_PARTE_COMUNE);
- propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO, uriAS);
- propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE,
- URLEncoder.encode(parameterApcChange.getValue(), "UTF-8"));
- propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO, tipoProtocollo);
- propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_ACCORDO, strutsBean.tipoAccordo);
-
-
- serviceBinding = apcCore.toMessageServiceBinding(as.getServiceBinding());
- MessageType messageType = apcCore.toMessageMessageType(as.getMessageType());
- formatoSpecifica = apcCore.formatoSpecifica2InterfaceType(as.getFormatoSpecifica());
-
- filtroRicerca = new FiltroRicercaGruppi();
- filtroRicerca.setServiceBinding(apcCore.fromMessageServiceBinding(serviceBinding));
- List<String> elencoGruppi = gruppiCore.getAllGruppi(filtroRicerca);
-
- String gruppi = null;
- if(as.getGruppi() != null) {
- List<String> nomiGruppi = as.getGruppi().getGruppoList().stream().flatMap(e-> Stream.of(e.getNome())).collect(Collectors.toList());
- gruppi = StringUtils.join(nomiGruppi, ",");
- } else
- gruppi = "";
-
- String canale = as.getCanale();
-
- String canaleStato = null;
- if(canale == null) {
- canaleStato = AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_APC_CANALE_STATO_DEFAULT;
- } else {
- canaleStato = AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_APC_CANALE_STATO_RIDEFINITO;
- }
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- dati = apcHelper.addAccordiToDati(dati, as.getNome(), descr, profcoll, strutsBean.wsdldef, strutsBean.wsdlconc, strutsBean.wsdlserv, strutsBean.wsdlservcorr,
- strutsBean.wsblconc,strutsBean.wsblserv,strutsBean.wsblservcorr,
- filtrodup, confric, idcoll, idRifRichiesta, consord, scadenza, strutsBean.id, TipoOperazione.CHANGE,
- showUtilizzoSenzaAzione, utilizzoSenzaAzione,referente,versione,providersList,providersListLabel,
- (as.getPrivato()!=null && as.getPrivato()),isServizioComposto,accordiCooperazioneEsistenti,accordiCooperazioneEsistentiLabel,
- accordoCooperazioneId,statoPackage,statoPackage,strutsBean.tipoAccordo,strutsBean.validazioneDocumenti,
- tipoProtocollo,listaTipiProtocollo,used,asWithAllegati,strutsBean.protocolFactory,serviceBinding,messageType,formatoSpecifica,gruppi, elencoGruppi,
- false, -1, false, -1,
- false, canaleStato, canale, canaleList, gestioneCanaliEnabled);
- // aggiunta campi custom
- dati = apcHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- pd.setDati(dati);
- // setto la baseurl per il redirect (alla servlet accordiChange)
- // se viene premuto invio
- gd = generalHelper.initGeneralData(request,AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_CHANGE);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeFinished(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, AccordiServizioParteComuneCostanti.TIPO_OPERAZIONE_WSDL_CHANGE);
- } catch (Exception e) {
- return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, AccordiServizioParteComuneCostanti.TIPO_OPERAZIONE_WSDL_CHANGE);
- }
- }
- }