AccordiServizioParteComuneChange.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.Arrays;
- 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.Liste;
- import org.openspcoop2.core.config.CanaleConfigurazione;
- import org.openspcoop2.core.config.CanaliConfigurazione;
- import org.openspcoop2.core.config.PortaApplicativa;
- import org.openspcoop2.core.config.PortaApplicativaAzione;
- import org.openspcoop2.core.config.Soggetto;
- import org.openspcoop2.core.id.IDAccordo;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.registry.AccordoCooperazione;
- import org.openspcoop2.core.registry.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioComposto;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.Azione;
- import org.openspcoop2.core.registry.GruppiAccordo;
- import org.openspcoop2.core.registry.Gruppo;
- import org.openspcoop2.core.registry.GruppoAccordo;
- import org.openspcoop2.core.registry.IdSoggetto;
- import org.openspcoop2.core.registry.ProtocolProperty;
- import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
- import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
- import org.openspcoop2.core.registry.constants.ProfiloCollaborazione;
- import org.openspcoop2.core.registry.constants.StatiAccordo;
- import org.openspcoop2.core.registry.constants.StatoFunzionalita;
- import org.openspcoop2.core.registry.driver.BeanUtilities;
- import org.openspcoop2.core.registry.driver.FiltroRicercaGruppi;
- import org.openspcoop2.core.registry.driver.IDAccordoFactory;
- import org.openspcoop2.core.registry.driver.ValidazioneStatoPackageException;
- import org.openspcoop2.message.constants.MessageType;
- import org.openspcoop2.message.constants.ServiceBinding;
- import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
- import org.openspcoop2.protocol.manifest.constants.InterfaceType;
- import org.openspcoop2.protocol.sdk.ProtocolException;
- import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
- import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
- import org.openspcoop2.protocol.sdk.registry.RegistryNotFound;
- import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
- import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
- import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
- import org.openspcoop2.web.ctrlstat.driver.DriverControlStationException;
- 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.aps.AccordiServizioParteSpecificaCostanti;
- import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
- import org.openspcoop2.web.ctrlstat.servlet.gruppi.GruppiCore;
- import org.openspcoop2.web.ctrlstat.servlet.pa.PorteApplicativeCore;
- 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.DataElementType;
- 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;
- /**
- * accordiChange
- *
- * @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 AccordiServizioParteComuneChange 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();
- AccordiServizioParteComuneChangeStrutsBean strutsBean = new AccordiServizioParteComuneChangeStrutsBean();
-
- // Parametri Protocol Properties relativi al tipo di operazione e al tipo di visualizzazione
- strutsBean.consoleOperationType = ConsoleOperationType.CHANGE;
-
- // Parametri relativi al tipo operazione
- TipoOperazione tipoOp = TipoOperazione.CHANGE;
- List<ProtocolProperty> oldProtocolPropertyList = null;
- ApiHelper apcHelper = new ApiHelper(request, pd, session);
-
- strutsBean.id = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID);
-
- strutsBean.editMode = apcHelper.getParameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME);
- strutsBean.protocolPropertiesSet = apcHelper.getParameter(ProtocolPropertiesCostanti.PARAMETRO_PP_SET);
- strutsBean.descr = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_DESCRIZIONE);
- strutsBean.profcoll = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_PROFILO_COLLABORAZIONE);
- strutsBean.filtrodup = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_FILTRO_DUPLICATI);
- strutsBean.confric = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_CONFERMA_RICEZIONE);
- strutsBean.idcoll = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_COLLABORAZIONE);
- strutsBean.idRifRichiesta = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ID_RIFERIMENTO_RICHIESTA);
- strutsBean.consord = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_CONSEGNA_ORDINE);
- strutsBean.scadenza = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_SCADENZA);
- strutsBean.utilizzo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_UTILIZZO_SENZA_AZIONE);
- strutsBean.utilizzoSenzaAzione = ServletUtils.isCheckBoxEnabled(strutsBean.utilizzo);
- strutsBean.showUtilizzoSenzaAzione = false;
- String oldProfiloCollaborazione = "";
- strutsBean.referente = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_REFERENTE);
- strutsBean.versione = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_VERSIONE);
- // patch per version spinner fino a che non si trova un modo piu' elegante
- /**if(ch.core.isBackwardCompatibilityAccordo11()){
- if("0".equals(versione))
- versione = "";
- }*/
- String privatoS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_PRIVATO);
- strutsBean.privato = ServletUtils.isCheckBoxEnabled(privatoS);
- String isServizioCompostoS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_IS_SERVIZIO_COMPOSTO);
- strutsBean.isServizioComposto = ServletUtils.isCheckBoxEnabled(isServizioCompostoS);
- strutsBean.accordoCooperazioneId = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_ACCORDO_COOPERAZIONE);
- strutsBean.statoPackage = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_STATO_PACKAGE);
- strutsBean.tipoAccordo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_TIPO_ACCORDO);
- strutsBean.tipoProtocollo = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_PROTOCOLLO);
- strutsBean.actionConfirm = apcHelper.getParameter(Costanti.PARAMETRO_ACTION_CONFIRM);
- strutsBean.backToStato = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_RIPRISTINA_STATO);
- String serviceBindingS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_SERVICE_BINDING);
- strutsBean.serviceBinding = StringUtils.isNotEmpty(serviceBindingS) ? ServiceBinding.valueOf(serviceBindingS) : null;
- String messageProcessorS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_MESSAGE_TYPE);
- strutsBean.messageType = (StringUtils.isNotEmpty(messageProcessorS) && !messageProcessorS.equals(AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_APC_MESSAGE_TYPE_DEFAULT))
- ? MessageType.valueOf(messageProcessorS) : null;
- String formatoSpecificaS = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_INTERFACE_TYPE);
- strutsBean.interfaceType = StringUtils.isNotEmpty(formatoSpecificaS) ? InterfaceType.toEnumConstant(formatoSpecificaS) : null;
-
- strutsBean.gruppi = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_GRUPPI);
- strutsBean.canale = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_CANALE);
- strutsBean.canaleStato = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_CANALE_STATO);
- if("".equals(strutsBean.tipoAccordo))
- strutsBean.tipoAccordo = null;
- if(strutsBean.tipoAccordo!=null){
- if(AccordiServizioParteComuneCostanti.PARAMETRO_VALORE_APC_TIPO_ACCORDO_PARTE_COMUNE.equals(strutsBean.tipoAccordo)){
- strutsBean.isServizioComposto = false;
- }else if(AccordiServizioParteComuneCostanti.PARAMETRO_VALORE_APC_TIPO_ACCORDO_SERVIZIO_COMPOSTO.equals(strutsBean.tipoAccordo)){
- strutsBean.isServizioComposto = true;
- }
- }
- String tmpValidazioneDocumenti = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_VALIDAZIONE_DOCUMENTI);
- String apiGestioneParziale = apcHelper.getParameter(ApiCostanti.PARAMETRO_APC_API_GESTIONE_PARZIALE);
- Boolean isModalitaVistaApiCustom = ServletUtils.getBooleanAttributeFromSession(ApiCostanti.SESSION_ATTRIBUTE_VISTA_APC_API, session, request, false).getValue();
-
- boolean chiediConferma = true;
-
- boolean gestioneInformazioniGenerali = false;
- boolean gestioneSoggettoReferente = false;
- boolean gestioneDescrizione = false;
- boolean gestioneSpecificaInterfacce = false;
- boolean gestioneInformazioniProtocollo = false;
- boolean gestioneGruppi = false;
- boolean gestioneCanale = false;
- if(isModalitaVistaApiCustom!=null && isModalitaVistaApiCustom) {
- if(ApiCostanti.VALORE_PARAMETRO_APC_API_INFORMAZIONI_GENERALI.equals(apiGestioneParziale)) {
- gestioneInformazioniGenerali = true;
- }
- else if(ApiCostanti.VALORE_PARAMETRO_APC_API_SOGGETTO_REFERENTE.equals(apiGestioneParziale)) {
- gestioneSoggettoReferente = true;
- }
- else if(ApiCostanti.VALORE_PARAMETRO_APC_API_DESCRIZIONE.equals(apiGestioneParziale)) {
- gestioneDescrizione = true;
- chiediConferma = false;
- }
- else if(ApiCostanti.VALORE_PARAMETRO_APC_API_GESTIONE_SPECIFICA_INTERFACCE.equals(apiGestioneParziale)) {
- gestioneSpecificaInterfacce = true;
- }
- else if(ApiCostanti.VALORE_PARAMETRO_APC_API_OPZIONI_AVANZATE.equals(apiGestioneParziale)) {
- gestioneInformazioniProtocollo = true;
- }
- else if(ApiCostanti.VALORE_PARAMETRO_APC_API_GRUPPI.equals(apiGestioneParziale)) {
- gestioneGruppi = true;
- }
- else if(ApiCostanti.VALORE_PARAMETRO_APC_API_CANALE.equals(apiGestioneParziale)) {
- gestioneCanale = true;
- }
-
- }
-
- boolean addPropertiesHidden = false;
- if(gestioneInformazioniGenerali || gestioneSoggettoReferente || gestioneDescrizione || gestioneSpecificaInterfacce || gestioneInformazioniProtocollo || gestioneGruppi|| gestioneCanale) {
- addPropertiesHidden = true;
- }
-
- if(ServletUtils.isEditModeInProgress(strutsBean.editMode) ){
- // primo accesso alla servlet
- if(tmpValidazioneDocumenti!=null){
- strutsBean.validazioneDocumenti = ServletUtils.isCheckBoxEnabled(tmpValidazioneDocumenti);
- }else{
- strutsBean.validazioneDocumenti = true;
- }
- }else{
- strutsBean.validazioneDocumenti = ServletUtils.isCheckBoxEnabled(tmpValidazioneDocumenti);
- }
- // Preparo il menu
- apcHelper.makeMenu();
- // Prendo il nome dell'accordo
- String nome = apcHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_NOME);
- AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore();
- AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore(apcCore);
- SoggettiCore soggettiCore = new SoggettiCore(apcCore);
- PorteApplicativeCore porteApplicativeCore = new PorteApplicativeCore(apcCore);
- AccordiCooperazioneCore acCore = new AccordiCooperazioneCore(apcCore);
- GruppiCore gruppiCore = new GruppiCore(apcCore);
- ConfigurazioneCore confCore = new ConfigurazioneCore(apcCore);
- ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
- FiltroRicercaGruppi filtroRicerca = null;
- List<String> elencoGruppi = null;
- boolean asWithAllegati = false;
-
- // 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());
- String[] providersList = null;
- String[] providersListLabel = null;
- String[] accordiCooperazioneEsistenti=null;
- String[] accordiCooperazioneEsistentiLabel=null;
- List<String> listaTipiProtocollo = null;
- boolean used = false;
- AccordoServizioParteComune as = null;
- IDAccordo idAccordoOLD = null;
- try {
- long idAccordoLong = Long.parseLong(strutsBean.id);
- as = apcCore.getAccordoServizioFull(idAccordoLong);
-
- if(as==null) {
- throw new DriverControlStationException("AccordoServizioParteComune con id '"+idAccordoLong+"' non trovato");
- }
-
- idAccordoOLD = idAccordoFactory.getIDAccordoFromValues(as.getNome(),BeanUtilities.getSoggettoReferenteID(as.getSoggettoReferente()),as.getVersione());
- asWithAllegati = apcHelper.asWithAllegatiXsd(as);
-
- // controllo se l'accordo e' utilizzato da qualche asps
- List<AccordoServizioParteSpecifica> asps = apsCore.serviziByAccordoFilterList(idAccordoOLD);
- used = asps != null && !asps.isEmpty();
- // lista dei protocolli supportati
- listaTipiProtocollo = apcCore.getProtocolliByFilter(request, session, true, false);
- // primo accesso
- if(strutsBean.tipoProtocollo == null){
- if(as!=null && as.getSoggettoReferente()!=null){
- strutsBean.tipoProtocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(as.getSoggettoReferente().getTipo());
- }
- else{
- strutsBean.tipoProtocollo = apsCore.getProtocolloDefault(request, session, listaTipiProtocollo);
- }
- }
- strutsBean.protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(strutsBean.tipoProtocollo);
- strutsBean.consoleDynamicConfiguration = strutsBean.protocolFactory.createDynamicConfigurationConsole();
- strutsBean.registryReader = soggettiCore.getRegistryReader(strutsBean.protocolFactory);
- strutsBean.configRegistryReader = soggettiCore.getConfigIntegrationReader(strutsBean.protocolFactory);
- strutsBean.consoleConfiguration = (strutsBean.tipoAccordo==null || 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);
- strutsBean.protocolProperties = apcHelper.estraiProtocolPropertiesDaRequest(strutsBean.consoleConfiguration, strutsBean.consoleOperationType);
- // se this.initProtocolPropertiesFromDb = true allora leggo le properties dal db...
- try{
- AccordoServizioParteComune apcOLD = strutsBean.registryReader.getAccordoServizioParteComune(idAccordoOLD);
- oldProtocolPropertyList = apcOLD.getProtocolPropertyList();
- }catch(RegistryNotFound r){
- // ignore
- }
- if(strutsBean.protocolPropertiesSet == null){
- ProtocolPropertiesUtils.mergeProtocolPropertiesRegistry(strutsBean.protocolProperties, oldProtocolPropertyList, strutsBean.consoleOperationType);
- }
- List<String> tipiSoggettiGestitiProtocollo = soggettiCore.getTipiSoggettiGestitiProtocollo(strutsBean.tipoProtocollo);
- List<Soggetto> listaSoggetti=null;
- if(apcCore.isVisioneOggettiGlobale(userLogin)){
- listaSoggetti = soggettiCore.soggettiList(null, new ConsoleSearch(true));
- }else{
- listaSoggetti = soggettiCore.soggettiList(userLogin, new ConsoleSearch(true));
- }
- 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()); */
- soggettiListLabelTmp.add(apcHelper.getLabelNomeSoggetto(strutsBean.tipoProtocollo, soggetto.getTipo() , soggetto.getNome() ));
- }
- }
- }
- providersList = soggettiListTmp.toArray(new String[1]);
- providersListLabel = soggettiListLabelTmp.toArray(new String[1]);
- if(strutsBean.isServizioComposto) {
- 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] = apcHelper.getLabelIdAccordoCooperazione(acCore.getAccordoCooperazione(singleAC.getId()));
- i++;
- }
- } else {
- accordiCooperazioneEsistenti = new String[1];
- accordiCooperazioneEsistentiLabel = new String[1];
- accordiCooperazioneEsistenti[0]="-";
- accordiCooperazioneEsistentiLabel[0]="-";
- }
- }
- } catch (Exception e) {
- return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- }
- //se passo dal link diretto di ripristino stato imposto il nuovo stato
- if(strutsBean.backToStato != null && (strutsBean.actionConfirm == null || strutsBean.actionConfirm.equals(Costanti.PARAMETRO_ACTION_CONFIRM_VALUE_OK)))
- strutsBean.statoPackage = strutsBean.backToStato;
- String uriAS = idAccordoFactory.getUriFromIDAccordo(idAccordoOLD);
- String labelASTitle = apcHelper.getLabelIdAccordo(strutsBean.tipoProtocollo, idAccordoOLD);
- String oldStatoPackage = as.getStatoPackage();
- 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( AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_CHANGE + "?" + request.getQueryString(), "UTF-8"));
- propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO, strutsBean.tipoProtocollo);
- if(strutsBean.tipoAccordo!=null) {
- propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_ACCORDO, strutsBean.tipoAccordo);
- }
-
- List<Parameter> listaParams = apcHelper.getTitoloApc(tipoOp, as, strutsBean.tipoAccordo, labelASTitle, null, true);
- // Se idhid = null, devo visualizzare la pagina per la modifica dati
- if(ServletUtils.isEditModeInProgress(strutsBean.editMode)){
- try {
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
- if(strutsBean.descr==null){
- //inizializzazione default
- strutsBean.descr = as.getDescrizione();
- if(strutsBean.tipoAccordo!=null){
- if("apc".equals(strutsBean.tipoAccordo)){
- strutsBean.isServizioComposto = false;
- }else if("asc".equals(strutsBean.tipoAccordo)){
- strutsBean.isServizioComposto = true;
- }
- }else{
- strutsBean.isServizioComposto = as.getServizioComposto()!=null ? true : false;
- }
- if(strutsBean.isServizioComposto){
- strutsBean.accordoCooperazioneId = ""+as.getServizioComposto().getIdAccordoCooperazione();
- }else{
- strutsBean.accordoCooperazioneId="-";
- }
- }
- int idReferente = -1;
- try{
- idReferente = Integer.parseInt(strutsBean.referente);
- }catch(Exception e){
- // ignore
- }
- if(idReferente<=0 && !"-".equals(strutsBean.referente)){
- IdSoggetto assr = as.getSoggettoReferente();
- if (assr != null) {
- Soggetto s = soggettiCore.getSoggetto(new IDSoggetto(assr.getTipo(),assr.getNome()));
- strutsBean.referente = "" + s.getId();
- }else{
- strutsBean.referente = "-";
- }
- }
- if(strutsBean.versione == null &&
- as.getVersione()!=null) {
- strutsBean.versione = as.getVersione().intValue()+"";
- }
- // controllo profilo collaborazione
- if(strutsBean.profcoll == null)
- strutsBean.profcoll = AccordiServizioParteComuneHelper.convertProfiloCollaborazioneDB2View(as.getProfiloCollaborazione());
- if(strutsBean.filtrodup == null)
- strutsBean.filtrodup = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getFiltroDuplicati());
- if(strutsBean.confric == null)
- strutsBean.confric = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getConfermaRicezione());
- if(strutsBean.idcoll == null)
- strutsBean.idcoll = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getIdCollaborazione());
- if(strutsBean.idRifRichiesta == null)
- strutsBean.idRifRichiesta = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getIdRiferimentoRichiesta());
- if(strutsBean.consord == null)
- strutsBean.consord = AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoDB2View(as.getConsegnaInOrdine());
- if(strutsBean.scadenza == null)
- strutsBean.scadenza = as.getScadenza() != null ? as.getScadenza() : "";
- if(privatoS==null){
- strutsBean.privato = as.getPrivato()!=null && as.getPrivato();
- }
- strutsBean.showUtilizzoSenzaAzione = as.sizeAzioneList() > 0;// se ci
- // sono
- // azioni
- // allora
- // visualizzo
- // il
- // checkbox
- if(strutsBean.utilizzo==null)
- strutsBean.utilizzoSenzaAzione = as.getUtilizzoSenzaAzione();
- if(strutsBean.statoPackage==null)
- strutsBean.statoPackage = as.getStatoPackage();
- if(strutsBean.wsdlconc == null){
- strutsBean.wsdlconc = new BinaryParameter();
- strutsBean.wsdlconc.setValue(as.getByteWsdlConcettuale());
- }
- if(strutsBean.wsdldef == null){
- strutsBean.wsdldef = new BinaryParameter();
- strutsBean.wsdldef.setValue(as.getByteWsdlDefinitorio());
- }
- if(strutsBean.wsdlserv == null){
- strutsBean.wsdlserv = new BinaryParameter();
- strutsBean.wsdlserv.setValue(as.getByteWsdlLogicoErogatore());
- }
- if(strutsBean.wsdlservcorr == null){
- strutsBean.wsdlservcorr = new BinaryParameter();
- strutsBean.wsdlservcorr.setValue(as.getByteWsdlLogicoFruitore());
- }
- if(strutsBean.wsblconc == null){
- strutsBean.wsblconc = new BinaryParameter();
- strutsBean.wsblconc.setValue(as.getByteSpecificaConversazioneConcettuale());
- }
- if(strutsBean.wsblserv == null){
- strutsBean.wsblserv = new BinaryParameter();
- strutsBean.wsblserv.setValue(as.getByteSpecificaConversazioneErogatore());
- }
- if(strutsBean.wsblservcorr == null){
- strutsBean.wsblservcorr = new BinaryParameter();
- strutsBean.wsblservcorr.setValue(as.getByteSpecificaConversazioneFruitore());
- }
- if(strutsBean.serviceBinding == null){
- strutsBean.serviceBinding = apcCore.toMessageServiceBinding(as.getServiceBinding());
-
- if(strutsBean.messageType == null){
- strutsBean.messageType = apcCore.toMessageMessageType(as.getMessageType());
- }
-
- filtroRicerca = new FiltroRicercaGruppi();
- filtroRicerca.setServiceBinding(apcCore.fromMessageServiceBinding(strutsBean.serviceBinding));
- elencoGruppi = gruppiCore.getAllGruppi(filtroRicerca);
- }
-
- if(strutsBean.interfaceType == null)
- strutsBean.interfaceType = apcCore.formatoSpecifica2InterfaceType(as.getFormatoSpecifica());
-
- if(strutsBean.gruppi == null) {
- // leggo i gruppi dall'accordo
- if(as.getGruppi() != null) {
- List<String> nomiGruppi = as.getGruppi().getGruppoList().stream().flatMap(e-> Stream.of(e.getNome())).collect(Collectors.toList());
- strutsBean.gruppi = StringUtils.join(nomiGruppi, ",");
- } else {
- strutsBean.gruppi = "";
- }
- }
-
- if(strutsBean.canale == null) {
- strutsBean.canale = as.getCanale();
- }
- if(strutsBean.canaleStato==null) {
- if(strutsBean.canale == null) {
- strutsBean.canaleStato = AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_APC_CANALE_STATO_DEFAULT;
- } else {
- strutsBean.canaleStato = AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_APC_CANALE_STATO_RIDEFINITO;
- }
- }
- } catch (Exception ex) {
- return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), ex, pd, request, session, gd, mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- }
- String postBackElementName = apcHelper.getParameter(Costanti.POSTBACK_ELEMENT_NAME);
- // Controllo se ho modificato il protocollo, resetto il referente e il service binding
- if(postBackElementName != null &&
- postBackElementName.equalsIgnoreCase(AccordiServizioParteComuneCostanti.PARAMETRO_APC_SERVICE_BINDING)){
- strutsBean.interfaceType = null;
- strutsBean.messageType = null;
-
- filtroRicerca = new FiltroRicercaGruppi();
- filtroRicerca.setServiceBinding(apcCore.fromMessageServiceBinding(strutsBean.serviceBinding));
- elencoGruppi = gruppiCore.getAllGruppi(filtroRicerca);
- }
- // fromato specifica
- if(strutsBean.interfaceType == null &&
- strutsBean.serviceBinding != null) {
- switch(strutsBean.serviceBinding) {
- case REST:
- strutsBean.interfaceType = InterfaceType.toEnumConstant(AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_INTERFACE_TYPE_REST);
- break;
- case SOAP:
- default:
- strutsBean.interfaceType = InterfaceType.toEnumConstant(AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_INTERFACE_TYPE_SOAP);
- break;
- }
- }
- if( strutsBean.backToStato == null){
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
-
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- // update della configurazione
- if(strutsBean.tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE))
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteComune(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- else
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioComposto(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- dati = apcHelper.addAccordiToDati(dati, nome, strutsBean.descr, strutsBean.profcoll, strutsBean.wsdldef, strutsBean.wsdlconc, strutsBean.wsdlserv, strutsBean.wsdlservcorr,
- strutsBean.wsblconc,strutsBean.wsblserv,strutsBean.wsblservcorr,
- strutsBean.filtrodup, strutsBean.confric, strutsBean.idcoll, strutsBean.idRifRichiesta, strutsBean.consord, strutsBean.scadenza, strutsBean.id, tipoOp,
- strutsBean.showUtilizzoSenzaAzione, strutsBean.utilizzoSenzaAzione,strutsBean.referente,strutsBean.versione,providersList,providersListLabel,
- strutsBean.privato,strutsBean.isServizioComposto,accordiCooperazioneEsistenti,accordiCooperazioneEsistentiLabel,
- strutsBean.accordoCooperazioneId,strutsBean.statoPackage,oldStatoPackage, strutsBean.tipoAccordo, strutsBean.validazioneDocumenti,
- strutsBean.tipoProtocollo, listaTipiProtocollo,used,asWithAllegati,strutsBean.protocolFactory,strutsBean.serviceBinding,strutsBean.messageType,strutsBean.interfaceType, strutsBean.gruppi, elencoGruppi,
- false, -1, false, -1,
- false, strutsBean.canaleStato, strutsBean.canale, canaleList, gestioneCanaliEnabled);
- // aggiunta campi custom
- if(addPropertiesHidden) {
- dati = apcHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }else {
- dati = apcHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }
-
- pd.setDati(dati);
-
- if(apcHelper.isShowGestioneWorkflowStatoDocumenti() && StatiAccordo.finale.toString().equals(as.getStatoPackage())){
- pd.disableEditMode();
- }
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeInProgress(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- }
- }
- boolean visibilitaAccordoCooperazione=false;
- if(!"-".equals(strutsBean.accordoCooperazioneId) && "".equals(strutsBean.accordoCooperazioneId)==false && strutsBean.accordoCooperazioneId!=null){
- AccordoCooperazione ac = acCore.getAccordoCooperazione(Long.parseLong(strutsBean.accordoCooperazioneId));
- visibilitaAccordoCooperazione=ac.getPrivato()!=null && ac.getPrivato();
- }
- // Controlli sui campi immessi
- boolean isOk = apcHelper.accordiCheckData(tipoOp, nome, strutsBean.descr, strutsBean.profcoll,
- strutsBean.wsdldef, strutsBean.wsdlconc, strutsBean.wsdlserv, strutsBean.wsdlservcorr,
- strutsBean.filtrodup, strutsBean.confric, strutsBean.idcoll, strutsBean.idRifRichiesta, strutsBean.consord,
- strutsBean.scadenza, strutsBean.id,strutsBean.referente,strutsBean.versione,strutsBean.accordoCooperazioneId,strutsBean.privato,visibilitaAccordoCooperazione,idAccordoOLD,
- strutsBean.wsblconc,strutsBean.wsblserv,strutsBean.wsblservcorr, strutsBean.validazioneDocumenti,strutsBean.tipoProtocollo,strutsBean.backToStato,strutsBean.serviceBinding,strutsBean.messageType,strutsBean.interfaceType,
- true, strutsBean.gruppi, strutsBean.canaleStato, strutsBean.canale, gestioneCanaliEnabled);
- // updateDynamic
- if(isOk) {
- if(strutsBean.tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE))
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteComune(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- else
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioComposto(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- }
-
- // Validazione base dei parametri custom
- if(isOk){
- try{
- apcHelper.validaProtocolProperties(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, strutsBean.protocolProperties);
- }catch(ProtocolException e){
- ControlStationCore.getLog().error(e.getMessage(),e);
- pd.setMessage(e.getMessage());
- isOk = false;
- }
- }
- // Valido i parametri custom se ho gia' passato tutta la validazione prevista
- if(isOk){
- try{
- //validazione campi dinamici
- if(strutsBean.tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE))
- strutsBean.consoleDynamicConfiguration.validateDynamicConfigAccordoServizioParteComune(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- else
- strutsBean.consoleDynamicConfiguration.validateDynamicConfigAccordoServizioComposto(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- }catch(ProtocolException e){
- ControlStationCore.getLog().error(e.getMessage(),e);
- pd.setMessage(e.getMessage());
- isOk = false;
- }
- }
- if (!isOk) {
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- // update della configurazione
- if(strutsBean.tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE))
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteComune(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- else
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioComposto(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- dati = apcHelper.addAccordiToDati(dati, nome, strutsBean.descr, strutsBean.profcoll, strutsBean.wsdldef, strutsBean.wsdlconc, strutsBean.wsdlserv, strutsBean.wsdlservcorr,strutsBean.wsblconc,strutsBean.wsblserv,strutsBean.wsblservcorr,
- strutsBean.filtrodup, strutsBean.confric, strutsBean.idcoll, strutsBean.idRifRichiesta, strutsBean.consord, strutsBean.scadenza, strutsBean.id, tipoOp,
- strutsBean.showUtilizzoSenzaAzione, strutsBean.utilizzoSenzaAzione,strutsBean.referente,strutsBean.versione,providersList,providersListLabel,
- strutsBean.privato,strutsBean.isServizioComposto,accordiCooperazioneEsistenti,accordiCooperazioneEsistentiLabel,
- strutsBean.accordoCooperazioneId,strutsBean.statoPackage,oldStatoPackage, strutsBean.tipoAccordo, strutsBean.validazioneDocumenti,
- strutsBean.tipoProtocollo, listaTipiProtocollo,used,asWithAllegati,strutsBean.protocolFactory,strutsBean.serviceBinding,strutsBean.messageType,strutsBean.interfaceType, strutsBean.gruppi, elencoGruppi,
- false, -1, false, -1,
- false, strutsBean.canaleStato, strutsBean.canale, canaleList, gestioneCanaliEnabled);
- // aggiunta campi custom
- if(addPropertiesHidden) {
- dati = apcHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }else {
- dati = apcHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }
-
- pd.setDati(dati);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeCheckError(mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- }
- // I dati dell'utente sono validi, lo informo che l'accordo e' utilizzato da asps a meno che non sto modificando solamente la descrizione
- if(chiediConferma && strutsBean.actionConfirm == null){
- if(used || strutsBean.backToStato != null){
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeInProgress());
- // update della configurazione
- if(strutsBean.tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE))
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteComune(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- else
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioComposto(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- dati = apcHelper.addAccordiToDati(dati, nome, strutsBean.descr, strutsBean.profcoll, strutsBean.wsdldef, strutsBean.wsdlconc, strutsBean.wsdlserv, strutsBean.wsdlservcorr,strutsBean.wsblconc,strutsBean.wsblserv,strutsBean.wsblservcorr,
- strutsBean.filtrodup, strutsBean.confric, strutsBean.idcoll, strutsBean.idRifRichiesta, strutsBean.consord, strutsBean.scadenza, strutsBean.id, tipoOp,
- strutsBean.showUtilizzoSenzaAzione, strutsBean.utilizzoSenzaAzione,strutsBean.referente,strutsBean.versione,providersList,providersListLabel,
- strutsBean.privato,strutsBean.isServizioComposto,accordiCooperazioneEsistenti,accordiCooperazioneEsistentiLabel,
- strutsBean.accordoCooperazioneId,strutsBean.statoPackage,oldStatoPackage, strutsBean.tipoAccordo, strutsBean.validazioneDocumenti,
- strutsBean.tipoProtocollo, listaTipiProtocollo,used,asWithAllegati,strutsBean.protocolFactory,strutsBean.serviceBinding,strutsBean.messageType,strutsBean.interfaceType, strutsBean.gruppi, elencoGruppi,
- false, -1, false, -1,
- true, strutsBean.canaleStato, strutsBean.canale, canaleList, gestioneCanaliEnabled);
- dati = apcHelper.addAccordiToDatiAsHidden(dati, nome, strutsBean.descr, strutsBean.profcoll, null, null, null, null,
- strutsBean.filtrodup, strutsBean.confric, strutsBean.idcoll, strutsBean.idRifRichiesta, strutsBean.consord, strutsBean.scadenza, strutsBean.id,
- tipoOp, strutsBean.showUtilizzoSenzaAzione, strutsBean.utilizzoSenzaAzione, strutsBean.referente,strutsBean.versione, providersList, providersListLabel,
- strutsBean.privato,strutsBean.isServizioComposto, accordiCooperazioneEsistenti, accordiCooperazioneEsistentiLabel,
- strutsBean.accordoCooperazioneId, strutsBean.statoPackage,oldStatoPackage, strutsBean.tipoAccordo, strutsBean.validazioneDocumenti, strutsBean.tipoProtocollo,
- listaTipiProtocollo, used, strutsBean.serviceBinding,strutsBean.messageType,strutsBean.interfaceType, strutsBean.gruppi, strutsBean.canaleStato, strutsBean.canale);
-
- if(strutsBean.backToStato!= null) {
- // backtostato per chiudere la modifica dopo la conferma
- DataElement de = new DataElement();
- de.setLabel(CostantiControlStation.LABEL_PARAMETRO_NOME);
- de.setValue(strutsBean.backToStato);
- de.setType(DataElementType.HIDDEN);
- de.setName(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_RIPRISTINA_STATO);
- dati.add(de);
- }
-
-
- // aggiunta campi custom
- if(addPropertiesHidden) {
- dati = apcHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }else {
- dati = apcHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
-
- // aggiunta campi custom come hidden, quelli sopra vengono bruciati dal no-edit
- dati = apcHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }
-
- pd.setDati(dati);
- String uriAccordo = idAccordoFactory.getUriFromIDAccordo(idAccordoOLD);
- String msg = "";
- if(used)
- msg = "Attenzione, esistono delle erogazioni che riferiscono l''accordo [{0}] che si sta modificando, continuare?";
- if(strutsBean.backToStato != null){
- msg = "È stato richiesto di ripristinare lo stato dell''accordo [{0}] in operativo. Tale operazione permetterà successive modifiche all''accordo. Vuoi procedere?";
- }
- String pre = Costanti.HTML_MODAL_SPAN_PREFIX;
- String post = Costanti.HTML_MODAL_SPAN_SUFFIX;
- pd.setMessage(pre + MessageFormat.format(msg, uriAccordo) + post, Costanti.MESSAGE_TYPE_CONFIRM);
- 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 );
-
- // disabilito la form
- pd.disableEditMode();
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- }
- }
- oldProfiloCollaborazione = AccordiServizioParteComuneHelper.convertProfiloCollaborazioneDB2View(as.getProfiloCollaborazione());
- as.setNome(nome);
- as.setDescrizione(strutsBean.descr);
- as.setConfermaRicezione(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(strutsBean.confric)));
- as.setConsegnaInOrdine(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(strutsBean.consord)));
- as.setFiltroDuplicati(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(strutsBean.filtrodup)));
- as.setIdCollaborazione(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(strutsBean.idcoll)));
- as.setIdRiferimentoRichiesta(StatoFunzionalita.toEnumConstant(AccordiServizioParteComuneHelper.convertAbilitatoDisabilitatoView2DB(strutsBean.idRifRichiesta)));
- as.setProfiloCollaborazione(ProfiloCollaborazione.toEnumConstant(AccordiServizioParteComuneHelper.convertProfiloCollaborazioneView2DB(strutsBean.profcoll)));
- as.setScadenza(strutsBean.scadenza);
- as.setUtilizzoSenzaAzione(as.sizeAzioneList() > 0 ? strutsBean.utilizzoSenzaAzione : true);
- if(strutsBean.referente!=null && !"".equals(strutsBean.referente) && !"-".equals(strutsBean.referente)){
- int idRef = 0;
- try {
- idRef = Integer.parseInt(strutsBean.referente);
- } catch (Exception e) {
- }
- if (idRef != 0) {
- int idReferente = Integer.parseInt(strutsBean.referente);
- Soggetto s = soggettiCore.getSoggetto(idReferente);
- IdSoggetto assr = new IdSoggetto();
- assr.setTipo(s.getTipo());
- assr.setNome(s.getNome());
- as.setSoggettoReferente(assr);
- }
- }else{
- as.setSoggettoReferente(null);
- }
- if(strutsBean.versione!=null)
- as.setVersione(Integer.parseInt(strutsBean.versione));
- as.setPrivato(strutsBean.privato ? Boolean.TRUE : Boolean.FALSE);
- if(strutsBean.accordoCooperazioneId!=null && !"".equals(strutsBean.accordoCooperazioneId) && !"-".equals(strutsBean.accordoCooperazioneId)){
- AccordoServizioParteComuneServizioComposto assc = as.getServizioComposto();
- if(assc==null) assc = new AccordoServizioParteComuneServizioComposto();
- assc.setIdAccordoCooperazione(Long.parseLong(strutsBean.accordoCooperazioneId));
- as.setServizioComposto(assc);
- }else{
- as.setServizioComposto(null);
- }
- as.setOldIDAccordoForUpdate(idAccordoOLD);
- // servicebinding / messagetype / formatospecifica
- as.setServiceBinding(apcCore.fromMessageServiceBinding(strutsBean.serviceBinding));
- as.setMessageType(apcCore.fromMessageMessageType(strutsBean.messageType));
- as.setFormatoSpecifica(apcCore.interfaceType2FormatoSpecifica(strutsBean.interfaceType));
- // stato
- as.setStatoPackage(strutsBean.statoPackage);
- // Check stato
- if(apcHelper.isShowGestioneWorkflowStatoDocumenti()){
- try{
- boolean utilizzoAzioniDiretteInAccordoAbilitato = apcCore.isShowAccordiColonnaAzioni();
- apcCore.validaStatoAccordoServizio(as, utilizzoAzioniDiretteInAccordoAbilitato, true);
- }catch(ValidazioneStatoPackageException validazioneException){
- // Setto messaggio di errore
- pd.setMessage(validazioneException.toString());
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- // update della configurazione
- if(strutsBean.tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE))
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteComune(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- else
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioComposto(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- dati = apcHelper.addAccordiToDati(dati, nome, strutsBean.descr, strutsBean.profcoll, strutsBean.wsdldef, strutsBean.wsdlconc, strutsBean.wsdlserv, strutsBean.wsdlservcorr,strutsBean.wsblconc,strutsBean.wsblserv,strutsBean.wsblservcorr,
- strutsBean.filtrodup, strutsBean.confric, strutsBean.idcoll, strutsBean.idRifRichiesta, strutsBean.consord, strutsBean.scadenza, strutsBean.id, tipoOp,
- strutsBean.showUtilizzoSenzaAzione, strutsBean.utilizzoSenzaAzione,strutsBean.referente,strutsBean.versione,providersList,providersListLabel,
- strutsBean.privato,strutsBean.isServizioComposto,accordiCooperazioneEsistenti,accordiCooperazioneEsistentiLabel,
- strutsBean.accordoCooperazioneId,strutsBean.statoPackage,oldStatoPackage, strutsBean.tipoAccordo, strutsBean.validazioneDocumenti,
- strutsBean.tipoProtocollo, listaTipiProtocollo,used,asWithAllegati,strutsBean.protocolFactory,strutsBean.serviceBinding,strutsBean.messageType,strutsBean.interfaceType, strutsBean.gruppi, elencoGruppi,
- false, -1, false, -1,
- false, strutsBean.canaleStato, strutsBean.canale, canaleList, gestioneCanaliEnabled);
- // aggiunta campi custom
- if(addPropertiesHidden) {
- dati = apcHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }else {
- dati = apcHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }
-
- pd.setDati(dati);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- }
- }
- //imposto properties custom
- as.setProtocolPropertyList(ProtocolPropertiesUtils.toProtocolPropertiesRegistry(strutsBean.protocolProperties, strutsBean.consoleOperationType, oldProtocolPropertyList));
- List<Object> objectToCreate = new ArrayList<>();
-
- if(as.getGruppi() == null)
- as.setGruppi(new GruppiAccordo());
-
- // svuto la lista e riporto solo quelli che sono selezionati dall'utente.
- as.getGruppi().getGruppoList().clear();
-
- // gruppi
- if(StringUtils.isNotEmpty(strutsBean.gruppi)) {
-
-
- List<String> nomiGruppi = Arrays.asList(strutsBean.gruppi.split(","));
-
- for (String nomeGruppo : nomiGruppi) {
- if(!gruppiCore.existsGruppo(nomeGruppo)) {
- Gruppo nuovoGruppo = new Gruppo();
- nuovoGruppo.setNome(nomeGruppo);
- nuovoGruppo.setSuperUser(userLogin);
- objectToCreate.add(nuovoGruppo);
- }
-
- GruppoAccordo gruppoAccordo = new GruppoAccordo();
- gruppoAccordo.setNome(nomeGruppo);
- as.getGruppi().addGruppo(gruppoAccordo );
- }
- }
-
- // canale
- if(gestioneCanaliEnabled) {
- if(AccordiServizioParteComuneCostanti.DEFAULT_VALUE_PARAMETRO_APC_CANALE_STATO_RIDEFINITO.equals(strutsBean.canaleStato)) {
- as.setCanale(strutsBean.canale);
- } else {
- as.setCanale(null);
- }
- } else {
- as.setCanale(null);
- }
- // Modifico i dati dell'accordo nel db
- try {
- // Controllo su cambio del profilo di collaborazione.
- /*
- * Nel caso in cui si voglia cambiare il profilo di collaborazione
- * dell'accordo in uno diverso da oneway bisogna controllare che non
- * esistano Porte Applicative, associate ai Servizi che implementano
- * l'Accordo, con piu di un Servizio Applicativo associato in questo
- * caso e' possibile cambiare il profilo da oneway in un altro
- *
- * Nota: Se un Accordo contiene azioni allora bisogna tener conto
- * che l'azione puo aver ridefinito il profilo e quindi vanno prese
- * le Porte Applicative associate ai Servizi che implementano
- * l'Accordo il quale sia senza azioni oppure con azioni con profilo
- * di default
- */
- String newProfiloCollaborazione = AccordiServizioParteComuneHelper.convertProfiloCollaborazioneDB2View(as.getProfiloCollaborazione());
- // controllo se profilo e' cambiato e se e' cambiato da oneway ad
- // altro devo effettuare i controlli
- if (!oldProfiloCollaborazione.equals(newProfiloCollaborazione) && oldProfiloCollaborazione.equals(CostantiRegistroServizi.ONEWAY.getValue())) {
- ArrayList<String> nomiAzioniDaEscludere = new ArrayList<>();
- // imposto le azioni per il filtro
- for (int i = 0; i < as.sizeAzioneList(); i++) {
- Azione azione = as.getAzione(i);
- String profiloAzione = azione.getProfAzione();
- // se il profilo dell'azione e' ridefinito allora dovro
- // escludere le porte delegate che hanno questa azione
- if (profiloAzione != null && profiloAzione.equals(CostantiRegistroServizi.PROFILO_AZIONE_RIDEFINITO)) {
- nomiAzioniDaEscludere.add(azione.getNome());
- }
- }
- // recupero i servizi che implementano questo accordo
- List<AccordoServizioParteSpecifica> listaServizi = apsCore.serviziWithIdAccordoList(as.getId());
- // per ogni servizio trovato prendo le porte applicative
- for (AccordoServizioParteSpecifica servizio : listaServizi) {
- List<PortaApplicativa> listPA = porteApplicativeCore.porteAppWithIdServizio(servizio.getId());
- // per ogni porta applicativa controllo se ha piu di un
- // servizio applicativo associato
- for (PortaApplicativa portaApplicativa : listPA) {
- // controllo se escludere o no il controllo di questa
- // porta applicativa in base
- // al nome dell'azione
- PortaApplicativaAzione azione = portaApplicativa.getAzione();
- String nomeAzione = azione != null ? azione.getNome() : null;
- // se il nome e' presente tra quelli da escludere
- // allora salto il controllo di questa porta
- if (nomiAzioniDaEscludere.contains(nomeAzione))
- continue;
- // nessuna esclusione allora controllo se ha piu di un
- // servizio applicativo
- if (portaApplicativa.sizeServizioApplicativoList() > 1) {
- // trovata porta applicativa con piu di un servizio
- // applicativo associato
- String msg = "Impossibile cambiare il profilo di collaborazione da {0} a {1} " + "in quanto esiste almeno una Porta Applicativa [" + portaApplicativa.getNome() + "] con piu' di un Servizio Applicativo associato.";
- pd.setMessage(MessageFormat.format(msg, oldProfiloCollaborazione, newProfiloCollaborazione));
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, listaParams);
-
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- // update della configurazione
- if(strutsBean.tipoAccordo.equals(ProtocolPropertiesCostanti.PARAMETRO_VALORE_PP_TIPO_ACCORDO_PARTE_COMUNE))
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteComune(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- else
- strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioComposto(strutsBean.consoleConfiguration,
- strutsBean.consoleOperationType, apcHelper, strutsBean.protocolProperties,
- strutsBean.registryReader, strutsBean.configRegistryReader, idAccordoOLD);
- dati = apcHelper.addAccordiToDati(dati, nome, strutsBean.descr, strutsBean.profcoll, strutsBean.wsdldef, strutsBean.wsdlconc, strutsBean.wsdlserv, strutsBean.wsdlservcorr, strutsBean.wsblconc,strutsBean.wsblserv,strutsBean.wsblservcorr,
- strutsBean.filtrodup, strutsBean.confric, strutsBean.idcoll, strutsBean.idRifRichiesta, strutsBean.consord, strutsBean.scadenza, strutsBean.id, tipoOp,
- strutsBean.showUtilizzoSenzaAzione, strutsBean.utilizzoSenzaAzione,strutsBean.referente,strutsBean.versione,providersList,providersListLabel,
- strutsBean.privato,strutsBean.isServizioComposto,accordiCooperazioneEsistenti,accordiCooperazioneEsistentiLabel,
- strutsBean.accordoCooperazioneId,strutsBean.statoPackage,oldStatoPackage, strutsBean.tipoAccordo, strutsBean.validazioneDocumenti,
- strutsBean.tipoProtocollo, listaTipiProtocollo,used,asWithAllegati,strutsBean.protocolFactory,
- strutsBean.serviceBinding,strutsBean.messageType,strutsBean.interfaceType, strutsBean.gruppi, elencoGruppi,
- false, -1, false, -1,
- false, strutsBean.canaleStato, strutsBean.canale, canaleList, gestioneCanaliEnabled);
- // aggiunta campi custom
- if(addPropertiesHidden) {
- dati = apcHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }else {
- dati = apcHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
- }
-
- pd.setDati(dati);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- }
- }
- }
- }
- Object[] operazioniDaEffettuare = new Object[1]; // almeno 1, l'accordo esiste!
- List<Object> operazioniList = new ArrayList<>();
- operazioniList.add(as);
- IDAccordo idNEW = idAccordoFactory.getIDAccordoFromAccordo(as);
- if(!idNEW.equals(idAccordoOLD)){
- AccordiServizioParteComuneUtilities.findOggettiDaAggiornare(idAccordoOLD, as, apcCore, operazioniList);
- }
- if(!objectToCreate.isEmpty()) { // salvo eventuali nuovi gruppi
- // effettuo le operazioni
- apcCore.performCreateOperation(userLogin, apcHelper.smista(), objectToCreate.toArray(new Object[objectToCreate.size()]));
- }
- operazioniDaEffettuare = operazioniList.toArray(operazioniDaEffettuare);
- apcCore.performUpdateOperation(userLogin, apcHelper.smista(), operazioniDaEffettuare);
- if(gestioneInformazioniGenerali) {
- if(!idNEW.equals(idAccordoOLD)){
- ServletUtils.removeRisultatiRicercaFromSession(request, session, Liste.ACCORDI);
- }
- }
- else if(gestioneGruppi || gestioneCanale) {
- ServletUtils.removeRisultatiRicercaFromSession(request, session, Liste.ACCORDI);
- }
-
- // preparo lista
- List<AccordoServizioParteComuneSintetico> lista = AccordiServizioParteComuneUtilities.accordiList(apcCore, userLogin, ricerca, strutsBean.tipoAccordo);
-
- if(isModalitaVistaApiCustom) {
- apcHelper.prepareApiChange(tipoOp, as);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeFinished(mapping, ApiCostanti.OBJECT_NAME_APC_API, ForwardParams.CHANGE());
- }
-
- apcHelper.prepareAccordiList(lista, ricerca, strutsBean.tipoAccordo);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeFinished(mapping, AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- } catch (Exception e) {
- return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
- AccordiServizioParteComuneCostanti.OBJECT_NAME_APC, ForwardParams.CHANGE());
- }
- }
- }