AccordiCooperazioneChange.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 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.ac;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
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.id.IDAccordo;
import org.openspcoop2.core.id.IDAccordoCooperazione;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.registry.AccordoCooperazione;
import org.openspcoop2.core.registry.AccordoServizioParteComune;
import org.openspcoop2.core.registry.IdSoggetto;
import org.openspcoop2.core.registry.ProtocolProperty;
import org.openspcoop2.core.registry.Soggetto;
import org.openspcoop2.core.registry.constants.StatiAccordo;
import org.openspcoop2.core.registry.driver.BeanUtilities;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
import org.openspcoop2.core.registry.driver.FiltroRicercaAccordi;
import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
import org.openspcoop2.core.registry.driver.ValidazioneStatoPackageException;
import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
import org.openspcoop2.protocol.sdk.ProtocolException;
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.apc.AccordiServizioParteComuneCore;
import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCostanti;
import org.openspcoop2.web.ctrlstat.servlet.protocol_properties.ProtocolPropertiesCostanti;
import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
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;
/**
* accordiCooperazioneChange
*
* @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 AccordiCooperazioneChange 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);
IDAccordoCooperazioneFactory idAccordoCooperazioneFactory = IDAccordoCooperazioneFactory.getInstance();
List<String> listaTipiProtocollo = null;
boolean used = false;
AccordiCooperazioneChangeStrutsBean strutsBean = new AccordiCooperazioneChangeStrutsBean();
// 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;
try {
AccordiCooperazioneHelper acHelper = new AccordiCooperazioneHelper(request, pd, session);
strutsBean.editMode = acHelper.getParameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME);
strutsBean.protocolPropertiesSet = acHelper.getParameter(ProtocolPropertiesCostanti.PARAMETRO_PP_SET);
String id = acHelper.getParameter(AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_ID);
int idAcc = Integer.parseInt(id);
String descr = acHelper.getParameter(AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_DESCRIZIONE);
String referente = acHelper.getParameter(AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_REFERENTE);
String versione = acHelper.getParameter(AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_VERSIONE);
String tipoProtocollo = acHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_PROTOCOLLO);
String actionConfirm = acHelper.getParameter(Costanti.PARAMETRO_ACTION_CONFIRM);
// 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 = acHelper.getParameter(AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_PRIVATO);
boolean privato = ServletUtils.isCheckBoxEnabled(privatoS);
String statoPackage = acHelper.getParameter(AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_STATO);
/**String tipoSICA = acHelper.getParameter(AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_TIPO_SICA);
if("".equals(tipoSICA))
tipoSICA = null;*/
AccordiCooperazioneCore acCore = new AccordiCooperazioneCore();
SoggettiCore soggettiCore = new SoggettiCore(acCore);
// Preparo il menu
acHelper.makeMenu();
// prelevo l'accordo
AccordoCooperazione ac = acCore.getAccordoCooperazione(idAcc);
if(ac==null) {
throw new Exception("Accordo Cooperazione '"+idAcc+"' non trovato");
}
AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore(acCore);
IDAccordoCooperazione idAccordoOLD = idAccordoCooperazioneFactory.getIDAccordoFromValues(ac.getNome(),
BeanUtilities.getSoggettoReferenteID(ac.getSoggettoReferente()),ac.getVersione());
String uriAS = idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordoOLD);
String titleAS = acHelper.getLabelIdAccordoCooperazione(ac);
String oldStatoPackage = ac.getStatoPackage();
// Prendo il nome dell'accordo
String nome = acHelper.getParameter(AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_NOME);
if ((nome == null) || nome.equals("")) {
pd.setMessage(AccordiCooperazioneCostanti.LABEL_ACCORDI_COOPERAZIONE_NOME_ACCORDO_NECESSARIO);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardGeneralError(mapping, AccordiCooperazioneCostanti.OBJECT_NAME_ACCORDI_COOPERAZIONE,
ForwardParams.CHANGE());
}
try{
FiltroRicercaAccordi filtroRicerca = new FiltroRicercaAccordi();
filtroRicerca.setServizioComposto(true);
filtroRicerca.setIdAccordoCooperazione(idAccordoOLD);
List<IDAccordo> allIdAccordiServizio = apcCore.getAllIdAccordiServizio(filtroRicerca);
if(allIdAccordiServizio != null && !allIdAccordiServizio.isEmpty())
used = true;
}catch(DriverRegistroServiziNotFound de){
used = false;
}catch(Exception e){
// in caso di eccezione per sicurezza non faccio modificare l'accordo
used = true;
}
// lista dei protocolli supportati
listaTipiProtocollo = acCore.getProtocolliByFilter(request, session, true, false);
// se il protocollo e' null (primo accesso ) lo ricavo dall'accordo di servizio
if(tipoProtocollo == null){
if(ac!=null && ac.getSoggettoReferente()!=null){
tipoProtocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(ac.getSoggettoReferente().getTipo());
}
else{
tipoProtocollo = acCore.getProtocolloDefault(request, session, listaTipiProtocollo);
}
}
List<String> tipiSoggettiGestitiProtocollo = soggettiCore.getTipiSoggettiGestitiProtocollo(tipoProtocollo);
// Prendo la lista di provider e la metto in un array
String[] providersList = null;
String[] providersListLabel = null;
// Provider
/**
int totProv = ch.getCounterFromDB("soggetti", "superuser", userLogin);
if (totProv != 0) {
providersList = new String[totProv+1];
providersListLabel = new String[totProv+1];
int i = 1;
providersList[0]="-";
providersListLabel[0]="-";
String[] selectFields = new String[3];
selectFields[0] = "id";
selectFields[1] = "tipo_soggetto";
selectFields[2] = "nome_soggetto";
String queryString = ch.getQueryStringForList(selectFields, "soggetti", "superuser", userLogin, "", 0, 0);
PreparedStatement stmt = con.prepareStatement(queryString);
ResultSet risultato = stmt.executeQuery();
while (risultato.next()) {
providersList[i] = "" + risultato.getInt("id");
providersListLabel[i] = risultato.getString("tipo_soggetto") + "/" + risultato.getString("nome_soggetto");
i++;
}
risultato.close();
stmt.close();
}else{
providersList = new String[1];
providersListLabel = new String[1];
providersList[0]="-";
providersListLabel[0]="-";
}
*/
List<Soggetto> lista = null;
if(acCore.isVisioneOggettiGlobale(userLogin)){
lista = soggettiCore.soggettiRegistroList(null, new ConsoleSearch(true));
}else{
lista = soggettiCore.soggettiRegistroList(userLogin, new ConsoleSearch(true));
}
List<String> soggettiListTmp = new ArrayList<>();
List<String> soggettiListLabelTmp = new ArrayList<>();
soggettiListTmp.add("-");
soggettiListLabelTmp.add("-");
if (!lista.isEmpty()) {
for (Soggetto soggetto : lista) {
if(tipiSoggettiGestitiProtocollo.contains(soggetto.getTipo())){
soggettiListTmp.add(soggetto.getId().toString());
soggettiListLabelTmp.add(acHelper.getLabelNomeSoggetto(tipoProtocollo, soggetto.getTipo() , soggetto.getNome()));
}
}
}
providersList = soggettiListTmp.toArray(new String[1]);
providersListLabel = soggettiListLabelTmp.toArray(new String[1]);
IdSoggetto acsr = ac.getSoggettoReferente();
if (acsr != null) {
Soggetto s = soggettiCore.getSoggettoRegistro(new IDSoggetto(acsr.getTipo(),acsr.getNome()));
referente = "" + s.getId();
}else{
referente = "-";
}
if(versione == null && ac.getVersione()!=null)
versione = ac.getVersione().intValue()+"";
IDAccordo idAcOLD = acHelper.getIDAccordoFromValues(nome, referente, versione);
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.consoleDynamicConfiguration.getDynamicConfigAccordoCooperazione(strutsBean.consoleOperationType, acHelper,
strutsBean.registryReader, strutsBean.configRegistryReader, idAcOLD);
strutsBean.protocolProperties = acHelper.estraiProtocolPropertiesDaRequest(strutsBean.consoleConfiguration, strutsBean.consoleOperationType);
oldProtocolPropertyList = ac.getProtocolPropertyList();
if(strutsBean.protocolPropertiesSet == null){
ProtocolPropertiesUtils.mergeProtocolPropertiesRegistry(strutsBean.protocolProperties, oldProtocolPropertyList, strutsBean.consoleOperationType);
}
Properties propertiesProprietario = new Properties();
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO, id);
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO, ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO_VALUE_ACCORDO_COOPERAZIONE);
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO, uriAS);
Parameter urlOrig = new Parameter(uriAS,
AccordiCooperazioneCostanti.SERVLET_NAME_ACCORDI_COOPERAZIONE_CHANGE+"?"+
AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_ID+"="+id+"&"+
AccordiCooperazioneCostanti.PARAMETRO_ACCORDI_COOPERAZIONE_NOME+"="+nome);
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE, URLEncoder.encode( urlOrig.getValue(), "UTF-8"));
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO, tipoProtocollo);
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_ACCORDO, "");
// Se idhid = null, devo visualizzare la pagina per la
// modifica dati
if (ServletUtils.isEditModeInProgress(strutsBean.editMode)) {
// setto la barra del titolo
List<Parameter> lstParam = new ArrayList<>();
lstParam.add(new Parameter(AccordiCooperazioneCostanti.LABEL_ACCORDI_COOPERAZIONE, AccordiCooperazioneCostanti.SERVLET_NAME_ACCORDI_COOPERAZIONE_LIST));
lstParam.add(new Parameter(titleAS, null));
ServletUtils.setPageDataTitle(pd, lstParam);
if(descr==null)
descr = ac.getDescrizione();
privato = ac.getPrivato()!=null && ac.getPrivato();
if(statoPackage==null)
statoPackage = ac.getStatoPackage();
// preparo i campi
List<DataElement> dati = new ArrayList<>();
// update della configurazione
strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoCooperazione(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, acHelper, strutsBean.protocolProperties,
strutsBean.registryReader, strutsBean.configRegistryReader, idAcOLD);
dati.add(ServletUtils.getDataElementForEditModeFinished());
dati = acHelper.addHiddenFieldsToDati(tipoOp, id, null, null, dati);
dati = acHelper.
addAccordiCooperazioneToDati(dati, nome, descr, id, tipoOp, referente,
versione, providersList, providersListLabel, privato,statoPackage,oldStatoPackage
,tipoProtocollo, listaTipiProtocollo,used);
// aggiunta campi custom
dati = acHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
pd.setDati(dati);
if(acHelper.isShowGestioneWorkflowStatoDocumenti() && StatiAccordo.finale.toString().equals(ac.getStatoPackage())){
pd.setMode(Costanti.DATA_ELEMENT_EDIT_MODE_DISABLE_NAME);
}
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeInProgress(mapping, AccordiCooperazioneCostanti.OBJECT_NAME_ACCORDI_COOPERAZIONE,
ForwardParams.CHANGE());
}
// Controlli sui campi immessi
boolean isOk = acHelper.accordiCooperazioneCheckData(tipoOp, nome, descr, id, referente, versione,privato,idAccordoOLD);
// updateDynamic
if(isOk) {
strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoCooperazione(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, acHelper, strutsBean.protocolProperties,
strutsBean.registryReader, strutsBean.configRegistryReader, idAcOLD);
}
// Validazione base dei parametri custom
if(isOk){
try{
acHelper.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
strutsBean.consoleDynamicConfiguration.validateDynamicConfigCooperazione(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, acHelper, strutsBean.protocolProperties,
strutsBean.registryReader, strutsBean.configRegistryReader, idAcOLD);
}catch(ProtocolException e){
ControlStationCore.getLog().error(e.getMessage(),e);
pd.setMessage(e.getMessage());
isOk = false;
}
}
if (!isOk) {
// setto la barra del titolo
List<Parameter> lstParam = new ArrayList<>();
lstParam.add(new Parameter(AccordiCooperazioneCostanti.LABEL_ACCORDI_COOPERAZIONE, AccordiCooperazioneCostanti.SERVLET_NAME_ACCORDI_COOPERAZIONE_LIST));
lstParam.add(new Parameter(titleAS, null));
ServletUtils.setPageDataTitle(pd, lstParam);
// preparo i campi
List<DataElement> dati = new ArrayList<>();
// update della configurazione
strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoCooperazione(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, acHelper, strutsBean.protocolProperties,
strutsBean.registryReader, strutsBean.configRegistryReader, idAcOLD);
dati.add(ServletUtils.getDataElementForEditModeFinished());
dati = acHelper.addHiddenFieldsToDati(tipoOp, id, null, null, dati);
dati = acHelper.addAccordiCooperazioneToDati(dati, nome, descr, id,
tipoOp, referente, versione, providersList, providersListLabel,
privato,statoPackage,oldStatoPackage,tipoProtocollo, listaTipiProtocollo,used);
// aggiunta campi custom
dati = acHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
pd.setDati(dati);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiCooperazioneCostanti.OBJECT_NAME_ACCORDI_COOPERAZIONE,
ForwardParams.CHANGE());
}
// I dati dell'utente sono validi, lo informo che l'accordo e' utilizzato da accordi di servizio composti
if(used && actionConfirm == null){
// setto la barra del titolo
List<Parameter> lstParam = new ArrayList<>();
lstParam.add(new Parameter(AccordiCooperazioneCostanti.LABEL_ACCORDI_COOPERAZIONE, AccordiCooperazioneCostanti.SERVLET_NAME_ACCORDI_COOPERAZIONE_LIST));
lstParam.add(new Parameter(titleAS, null));
ServletUtils.setPageDataTitle(pd, lstParam);
// preparo i campi
List<DataElement> dati = new ArrayList<>();
// update della configurazione
strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoCooperazione(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, acHelper, strutsBean.protocolProperties,
strutsBean.registryReader, strutsBean.configRegistryReader, idAcOLD);
dati.add(ServletUtils.getDataElementForEditModeInProgress());
dati = acHelper.addHiddenFieldsToDati(tipoOp, id, null, null, dati);
dati = acHelper.addAccordiCooperazioneToDati(dati, nome, descr, id,
tipoOp, referente, versione, providersList, providersListLabel,
privato,statoPackage,oldStatoPackage,tipoProtocollo, listaTipiProtocollo,used);
dati = acHelper.addAccordiCooperazioneToDatiAsHidden(dati, nome, descr, id,
tipoOp, referente, versione, providersList, providersListLabel,
privato,statoPackage,oldStatoPackage,tipoProtocollo, listaTipiProtocollo,used);
// aggiunta campi custom
dati = acHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
// aggiunta campi custom come hidden, quelli sopra vengono bruciati dal no-edit
dati = acHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
String msg = "Attenzione, esistono Accordi di Servizio Composto che riferiscono l''Accordo di Cooperazione [{0}] che si sta modificando, continuare?";
String uriAccordo = idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordoOLD);
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 );
pd.setDati(dati);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeInProgress(mapping,
AccordiCooperazioneCostanti.OBJECT_NAME_ACCORDI_COOPERAZIONE,
ForwardParams.CHANGE());
}
// Modifico i dati dell'accordo nel db
ac.setNome(nome);
ac.setDescrizione(descr);
if(
//referente!=null &&
!"".equals(referente) && !"-".equals(referente)){
int idRef = 0;
try {
idRef = Integer.parseInt(referente);
} catch (Exception e) {
}
if (idRef != 0) {
int idReferente = Integer.parseInt(referente);
Soggetto s = soggettiCore.getSoggettoRegistro(idReferente);
acsr = new IdSoggetto();
acsr.setTipo(s.getTipo());
acsr.setNome(s.getNome());
ac.setSoggettoReferente(acsr);
}
}else{
ac.setSoggettoReferente(null);
}
if(versione!=null){
ac.setVersione(Integer.parseInt(versione));
}
ac.setOraRegistrazione(Calendar.getInstance().getTime());
ac.setPrivato(privato ? Boolean.TRUE : Boolean.FALSE);
ac.setSuperUser(userLogin);
ac.setOldIDAccordoForUpdate(idAccordoOLD);
// stato
ac.setStatoPackage(statoPackage);
// Check stato
if(acHelper.isShowGestioneWorkflowStatoDocumenti()){
try{
acCore.validaStatoAccordoCooperazione(ac);
}catch(ValidazioneStatoPackageException validazioneException){
// Setto messaggio di errore
pd.setMessage(validazioneException.toString());
// setto la barra del titolo
List<Parameter> lstParam = new ArrayList<>();
lstParam.add(new Parameter(AccordiCooperazioneCostanti.LABEL_ACCORDI_COOPERAZIONE, AccordiCooperazioneCostanti.SERVLET_NAME_ACCORDI_COOPERAZIONE_LIST));
lstParam.add(new Parameter(titleAS, null));
ServletUtils.setPageDataTitle(pd, lstParam);
// preparo i campi
List<DataElement> dati = new ArrayList<>();
// update della configurazione
strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoCooperazione(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, acHelper, strutsBean.protocolProperties,
strutsBean.registryReader, strutsBean.configRegistryReader, idAcOLD);
dati.add(ServletUtils.getDataElementForEditModeFinished());
dati = acHelper.addHiddenFieldsToDati(tipoOp, id, null, null, dati);
dati = acHelper.addAccordiCooperazioneToDati(dati, nome, descr, id,
tipoOp, referente, versione, providersList, providersListLabel,
privato,statoPackage,oldStatoPackage,tipoProtocollo, listaTipiProtocollo,used);
// aggiunta campi custom
dati = acHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
pd.setDati(dati);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiCooperazioneCostanti.OBJECT_NAME_ACCORDI_COOPERAZIONE,
ForwardParams.CHANGE());
}
}
// Oggetti da modificare
List<Object> oggettiDaAggiornare = new ArrayList<>();
// Update accordo
oggettiDaAggiornare.add(ac);
// Aggiornamento accordi di servizio che possiedono tale accordo di cooperazione come riferimento
// Essendo servizi composti
if(!idAccordoCooperazioneFactory.getUriFromAccordo(ac).equals(idAccordoCooperazioneFactory.getUriFromIDAccordo(ac.getOldIDAccordoForUpdate()))){
List<AccordoServizioParteComune> ass = apcCore.accordiServizioWithAccordoCooperazione(ac.getOldIDAccordoForUpdate());
for(int i=0; i<ass.size(); i++){
AccordoServizioParteComune as = ass.get(i);
if(as.getServizioComposto()!=null){
as.getServizioComposto().setAccordoCooperazione(idAccordoCooperazioneFactory.getUriFromAccordo(ac));
oggettiDaAggiornare.add(as);
/** System.out.println("As SERVIZIO COMPONENTE ["+IDAccordo.getUriFromAccordo(as)+"]"); */
}
}
}
//imposto properties custom
ac.setProtocolPropertyList(ProtocolPropertiesUtils.toProtocolPropertiesRegistry(strutsBean.protocolProperties, strutsBean.consoleOperationType, oldProtocolPropertyList));
acCore.performUpdateOperation(userLogin, acHelper.smista(), oggettiDaAggiornare.toArray());
// Preparo la lista
ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
List<AccordoCooperazione> lista2 = null;
if(acCore.isVisioneOggettiGlobale(userLogin)){
lista2 = acCore.accordiCooperazioneList(null, ricerca);
}else{
lista2 = acCore.accordiCooperazioneList(userLogin, ricerca);
}
acHelper.prepareAccordiCooperazioneList(lista2, ricerca);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeFinished(mapping, AccordiCooperazioneCostanti.OBJECT_NAME_ACCORDI_COOPERAZIONE,
ForwardParams.CHANGE());
} catch (Exception e) {
return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
AccordiCooperazioneCostanti.OBJECT_NAME_ACCORDI_COOPERAZIONE,
ForwardParams.CHANGE());
}
}
}