Java tutorial
/* * GovPay - Porta di Accesso al Nodo dei Pagamenti SPC * http://www.gov4j.it/govpay * * Copyright (c) 2014-2017 Link.it srl (http://www.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 it.govpay.web.rs.dars.anagrafica.portali; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.URI; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.zip.ZipOutputStream; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.UriInfo; import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.Logger; import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput; import org.openspcoop2.generic_project.exception.NotFoundException; import org.openspcoop2.generic_project.exception.ServiceException; import org.openspcoop2.generic_project.expression.SortOrder; import it.govpay.bd.BasicBD; import it.govpay.bd.FilterSortWrapper; import it.govpay.bd.anagrafica.DominiBD; import it.govpay.bd.anagrafica.PortaliBD; import it.govpay.bd.anagrafica.TipiTributoBD; import it.govpay.bd.anagrafica.filters.DominioFilter; import it.govpay.bd.anagrafica.filters.PortaleFilter; import it.govpay.bd.anagrafica.filters.TipoTributoFilter; import it.govpay.bd.model.Dominio; import it.govpay.model.Acl; import it.govpay.model.Acl.Servizio; import it.govpay.model.Acl.Tipo; import it.govpay.model.Portale; import it.govpay.model.TipoTributo; import it.govpay.model.Versionabile.Versione; import it.govpay.web.rs.dars.anagrafica.domini.DominiHandler; import it.govpay.web.rs.dars.anagrafica.portali.input.DominiPA; import it.govpay.web.rs.dars.anagrafica.portali.input.DominiPO; import it.govpay.web.rs.dars.anagrafica.portali.input.TipiTributoPA; import it.govpay.web.rs.dars.anagrafica.portali.input.TipiTributoPO; import it.govpay.web.rs.dars.anagrafica.portali.input.Trusted; import it.govpay.web.rs.dars.anagrafica.tributi.TipiTributoHandler; import it.govpay.web.rs.dars.base.DarsHandler; import it.govpay.web.rs.dars.base.DarsService; import it.govpay.web.rs.dars.exception.ConsoleException; import it.govpay.web.rs.dars.exception.DeleteException; import it.govpay.web.rs.dars.exception.DuplicatedEntryException; import it.govpay.web.rs.dars.exception.ExportException; import it.govpay.web.rs.dars.exception.ValidationException; import it.govpay.web.rs.dars.handler.IDarsHandler; import it.govpay.web.rs.dars.model.Dettaglio; import it.govpay.web.rs.dars.model.Elemento; import it.govpay.web.rs.dars.model.Elenco; import it.govpay.web.rs.dars.model.InfoForm; import it.govpay.web.rs.dars.model.InfoForm.Sezione; import it.govpay.web.rs.dars.model.RawParamValue; import it.govpay.web.rs.dars.model.Voce; import it.govpay.web.rs.dars.model.VoceRiferimento; import it.govpay.web.rs.dars.model.input.ParamField; import it.govpay.web.rs.dars.model.input.RefreshableParamField; import it.govpay.web.rs.dars.model.input.base.CheckButton; import it.govpay.web.rs.dars.model.input.base.InputNumber; import it.govpay.web.rs.dars.model.input.base.InputText; import it.govpay.web.rs.dars.model.input.base.SelectList; import it.govpay.web.utils.Utils; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; public class PortaliHandler extends DarsHandler<Portale> implements IDarsHandler<Portale> { public PortaliHandler(Logger log, DarsService darsService) { super(log, darsService); } @Override public Elenco getElenco(UriInfo uriInfo, BasicBD bd) throws WebApplicationException, ConsoleException { String methodName = "getElenco " + this.titoloServizio; try { // Operazione consentita solo agli utenti che hanno almeno un ruolo consentito per la funzionalita' this.darsService.checkDirittiServizio(bd, this.funzionalita); Integer offset = this.getOffset(uriInfo); Integer limit = this.getLimit(uriInfo); this.log.info("Esecuzione " + methodName + " in corso..."); boolean simpleSearch = this.containsParameter(uriInfo, DarsService.SIMPLE_SEARCH_PARAMETER_ID); PortaliBD portaliBD = new PortaliBD(bd); PortaleFilter filter = portaliBD.newFilter(simpleSearch); filter.setOffset(offset); filter.setLimit(limit); FilterSortWrapper fsw = new FilterSortWrapper(); fsw.setField(it.govpay.orm.Portale.model().COD_PORTALE); fsw.setSortOrder(SortOrder.ASC); filter.getFilterSortList().add(fsw); if (simpleSearch) { // simplesearch String simpleSearchString = this.getParameter(uriInfo, DarsService.SIMPLE_SEARCH_PARAMETER_ID, String.class); if (StringUtils.isNotEmpty(simpleSearchString)) { filter.setSimpleSearchString(simpleSearchString); } } else { String codPortaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.id"); String codPortale = this.getParameter(uriInfo, codPortaleId, String.class); if (StringUtils.isNotEmpty(codPortale)) { filter.setCodPortale(codPortale); } } long count = portaliBD.count(filter); // visualizza la ricerca solo se i risultati sono > del limit boolean visualizzaRicerca = this.visualizzaRicerca(count, limit); InfoForm infoRicerca = this.getInfoRicerca(uriInfo, bd, visualizzaRicerca); String simpleSearchPlaceholder = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".simpleSearch.placeholder"); Elenco elenco = new Elenco(this.titoloServizio, infoRicerca, this.getInfoCreazione(uriInfo, bd), count, this.getInfoEsportazione(uriInfo, bd), this.getInfoCancellazione(uriInfo, bd), simpleSearchPlaceholder); List<Portale> findAll = portaliBD.findAll(filter); if (findAll != null && findAll.size() > 0) { for (Portale entry : findAll) { elenco.getElenco().add(this.getElemento(entry, entry.getId(), this.pathServizio, bd)); } } this.log.info("Esecuzione " + methodName + " completata."); return elenco; } catch (WebApplicationException e) { throw e; } catch (Exception e) { throw new ConsoleException(e); } } @Override public InfoForm getInfoRicerca(UriInfo uriInfo, BasicBD bd, boolean visualizzaRicerca, Map<String, String> parameters) throws ConsoleException { URI ricerca = this.getUriRicerca(uriInfo, bd); InfoForm infoRicerca = new InfoForm(ricerca); if (visualizzaRicerca) { String codPortaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.id"); if (this.infoRicercaMap == null) { this.initInfoRicerca(uriInfo, bd); } Sezione sezioneRoot = infoRicerca.getSezioneRoot(); InputText codPortale = (InputText) this.infoRicercaMap.get(codPortaleId); codPortale.setDefaultValue(null); codPortale.setEditable(true); sezioneRoot.addField(codPortale); } return infoRicerca; } private void initInfoRicerca(UriInfo uriInfo, BasicBD bd) throws ConsoleException { if (this.infoRicercaMap == null) { this.infoRicercaMap = new HashMap<String, ParamField<?>>(); String codPortaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.id"); String codPortaleLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.label"); InputText codPortale = new InputText(codPortaleId, codPortaleLabel, null, false, false, true, 1, 255); this.infoRicercaMap.put(codPortaleId, codPortale); } } /*** * Form Creazione * * sez ROOT: * codIntermediario * denominazione * * sez Connettore Pdd * URL * tipo autenticazione * -- auth = basic * username / password * -- auth = ssl * parametri ssl: * */ @SuppressWarnings("unchecked") @Override public InfoForm getInfoCreazione(UriInfo uriInfo, BasicBD bd) throws ConsoleException { InfoForm infoCreazione = null; try { if (this.darsService.isServizioAbilitatoScrittura(bd, this.funzionalita)) { URI creazione = this.getUriCreazione(uriInfo, bd); infoCreazione = new InfoForm(creazione, Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".creazione.titolo")); String codPortaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.id"); String principalId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".principal.id"); String abilitatoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".abilitato.id"); String portaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".id.id"); String defaultCallbackURLId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".defaultCallbackURL.id"); String versioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versione.id"); String pagamentiAttesaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiAttesa.id"); String pagamentiOnlineId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiOnline.id"); String dominiPaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPa.id"); String tipiTributoPaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPa.id"); String dominiPoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPo.id"); String tipiTributoPoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPo.id"); String trustedId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".trusted.id"); if (this.infoCreazioneMap == null) { this.initInfoCreazione(uriInfo, bd); } Sezione sezioneRoot = infoCreazione.getSezioneRoot(); InputNumber idInterm = (InputNumber) this.infoCreazioneMap.get(portaleId); idInterm.setDefaultValue(null); sezioneRoot.addField(idInterm); InputText codPortale = (InputText) this.infoCreazioneMap.get(codPortaleId); codPortale.setDefaultValue(null); codPortale.setEditable(true); sezioneRoot.addField(codPortale); InputText principal = (InputText) this.infoCreazioneMap.get(principalId); principal.setDefaultValue(null); sezioneRoot.addField(principal); InputText defaultCallbackURL = (InputText) this.infoCreazioneMap.get(defaultCallbackURLId); defaultCallbackURL.setDefaultValue(null); sezioneRoot.addField(defaultCallbackURL); // versione SelectList<String> versione = (SelectList<String>) this.infoCreazioneMap.get(versioneId); versione.setDefaultValue(Versione.getUltimaVersione().getLabel()); sezioneRoot.addField(versione); CheckButton abilitato = (CheckButton) this.infoCreazioneMap.get(abilitatoId); abilitato.setDefaultValue(true); sezioneRoot.addField(abilitato); String etichettaPagamentiAttesa = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle( this.nomeServizio + ".elementoCorrelato.pagamentiAttesa.titolo"); Sezione sezionePA = infoCreazione.addSezione(etichettaPagamentiAttesa); CheckButton pagamentiAttesa = (CheckButton) this.infoCreazioneMap.get(pagamentiAttesaId); pagamentiAttesa.setDefaultValue(false); sezionePA.addField(pagamentiAttesa); List<RawParamValue> pagamentiAttesaValues = new ArrayList<RawParamValue>(); pagamentiAttesaValues.add(new RawParamValue(portaleId, null)); pagamentiAttesaValues.add(new RawParamValue(pagamentiAttesaId, "false")); TipiTributoPA tipiTributoPa = (TipiTributoPA) this.infoCreazioneMap.get(tipiTributoPaId); tipiTributoPa.init(pagamentiAttesaValues, bd, this.getLanguage()); sezionePA.addField(tipiTributoPa); DominiPA dominiPa = (DominiPA) this.infoCreazioneMap.get(dominiPaId); dominiPa.init(pagamentiAttesaValues, bd, this.getLanguage()); sezionePA.addField(dominiPa); String etichettaPagamentiOnline = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle( this.nomeServizio + ".elementoCorrelato.pagamentiOnline.titolo"); Sezione sezionePO = infoCreazione.addSezione(etichettaPagamentiOnline); CheckButton pagamentiOnline = (CheckButton) this.infoCreazioneMap.get(pagamentiOnlineId); pagamentiOnline.setDefaultValue(false); sezionePO.addField(pagamentiOnline); List<RawParamValue> pagamentiOnlineValues = new ArrayList<RawParamValue>(); pagamentiOnlineValues.add(new RawParamValue(portaleId, null)); pagamentiOnlineValues.add(new RawParamValue(pagamentiOnlineId, "false")); Trusted trusted = (Trusted) this.infoCreazioneMap.get(trustedId); trusted.init(pagamentiOnlineValues, bd, this.getLanguage()); sezionePO.addField(trusted); List<RawParamValue> pagamentiOnlineTrustedValues = new ArrayList<RawParamValue>(); pagamentiOnlineTrustedValues.addAll(pagamentiOnlineValues); pagamentiOnlineTrustedValues.add(new RawParamValue(trustedId, "false")); TipiTributoPO tipiTributoPo = (TipiTributoPO) this.infoCreazioneMap.get(tipiTributoPoId); tipiTributoPo.init(pagamentiOnlineTrustedValues, bd, this.getLanguage()); sezionePO.addField(tipiTributoPo); DominiPO dominiPo = (DominiPO) this.infoCreazioneMap.get(dominiPoId); dominiPo.init(pagamentiOnlineValues, bd, this.getLanguage()); sezionePO.addField(dominiPo); } } catch (ServiceException e) { throw new ConsoleException(e); } return infoCreazione; } private void initInfoCreazione(UriInfo uriInfo, BasicBD bd) throws ConsoleException { if (this.infoCreazioneMap == null) { this.infoCreazioneMap = new HashMap<String, ParamField<?>>(); String codPortaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.id"); String principalId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".principal.id"); String abilitatoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".abilitato.id"); String portaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".id.id"); String defaultCallbackURLId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".defaultCallbackURL.id"); String versioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versione.id"); String pagamentiAttesaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiAttesa.id"); String pagamentiOnlineId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiOnline.id"); String dominiPaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPa.id"); String tipiTributoPaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPa.id"); String dominiPoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPo.id"); String tipiTributoPoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPo.id"); String trustedId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".trusted.id"); // id InputNumber id = new InputNumber(portaleId, null, null, true, true, false, 1, 20); this.infoCreazioneMap.put(portaleId, id); // versione SelectList<String> versione = this.getSelectListVersione(versioneId); this.infoCreazioneMap.put(versioneId, versione); // codPortale String codPortaleLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.label"); InputText codPortale = new InputText(codPortaleId, codPortaleLabel, null, true, false, true, 1, 35); codPortale.setSuggestion(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.suggestion")); codPortale.setValidation(null, Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.errorMessage")); this.infoCreazioneMap.put(codPortaleId, codPortale); // principal String principalLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".principal.label"); InputText principal = new InputText(principalId, principalLabel, null, true, false, true, 1, 255); principal.setValidation(null, Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".principal.errorMessage")); this.infoCreazioneMap.put(principalId, principal); // abilitato String abilitatoLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".abilitato.label"); CheckButton abiliato = new CheckButton(abilitatoId, abilitatoLabel, true, false, false, true); this.infoCreazioneMap.put(abilitatoId, abiliato); String defaultCallbackURLLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".defaultCallbackURL.label"); InputText defaultCallbackURL = new InputText(defaultCallbackURLId, defaultCallbackURLLabel, null, true, false, true, 1, 512); this.infoCreazioneMap.put(defaultCallbackURLId, defaultCallbackURL); //seziona pagamenti in attesa // abilitato String pagamentiAttesaLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiAttesa.label"); CheckButton pagamentiAttesa = new CheckButton(pagamentiAttesaId, pagamentiAttesaLabel, true, false, false, true); this.infoCreazioneMap.put(pagamentiAttesaId, pagamentiAttesa); List<RawParamValue> pagamentiAttesaValues = new ArrayList<RawParamValue>(); pagamentiAttesaValues.add(new RawParamValue(portaleId, null)); pagamentiAttesaValues.add(new RawParamValue(pagamentiAttesaId, "false")); String tipiTributoPaLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPa.label"); URI tipiTributoPaRefreshUri = this.getUriField(uriInfo, bd, tipiTributoPaId); TipiTributoPA tipiTributoPa = new TipiTributoPA(this.nomeServizio, tipiTributoPaId, tipiTributoPaLabel, tipiTributoPaRefreshUri, pagamentiAttesaValues, bd, this.getLanguage()); tipiTributoPa.addDependencyField(pagamentiAttesa); tipiTributoPa.init(pagamentiAttesaValues, bd, this.getLanguage()); this.infoCreazioneMap.put(tipiTributoPaId, tipiTributoPa); String dominiPaLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPa.label"); URI dominiPaRefreshUri = this.getUriField(uriInfo, bd, dominiPaId); DominiPA dominiPa = new DominiPA(this.nomeServizio, dominiPaId, dominiPaLabel, dominiPaRefreshUri, pagamentiAttesaValues, bd, this.getLanguage()); dominiPa.addDependencyField(pagamentiAttesa); dominiPa.init(pagamentiAttesaValues, bd, this.getLanguage()); this.infoCreazioneMap.put(dominiPaId, dominiPa); //seziona pagamenti online // abilitato String pagamentiOnlineLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiOnline.label"); CheckButton pagamentiOnline = new CheckButton(pagamentiOnlineId, pagamentiOnlineLabel, true, false, false, true); this.infoCreazioneMap.put(pagamentiOnlineId, pagamentiOnline); List<RawParamValue> pagamentiOnlineValues = new ArrayList<RawParamValue>(); pagamentiOnlineValues.add(new RawParamValue(portaleId, null)); pagamentiOnlineValues.add(new RawParamValue(pagamentiOnlineId, "false")); // trusted String trustedLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".trusted.label"); URI trustedRefreshUri = this.getUriField(uriInfo, bd, trustedId); Trusted trusted = new Trusted(this.nomeServizio, trustedId, trustedLabel, trustedRefreshUri, pagamentiOnlineValues, this.getLanguage()); trusted.addDependencyField(pagamentiOnline); trusted.init(pagamentiOnlineValues, bd, this.getLanguage()); this.infoCreazioneMap.put(trustedId, trusted); List<RawParamValue> pagamentiOnlineTrustedValues = new ArrayList<RawParamValue>(); pagamentiOnlineTrustedValues.addAll(pagamentiOnlineValues); pagamentiOnlineTrustedValues.add(new RawParamValue(trustedId, "false")); String tipiTributoPoLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPo.label"); URI tipiTributoPoRefreshUri = this.getUriField(uriInfo, bd, tipiTributoPoId); TipiTributoPO tipiTributoPo = new TipiTributoPO(this.nomeServizio, tipiTributoPoId, tipiTributoPoLabel, tipiTributoPoRefreshUri, pagamentiOnlineTrustedValues, bd, this.getLanguage()); tipiTributoPo.addDependencyField(pagamentiOnline); tipiTributoPo.addDependencyField(trusted); tipiTributoPo.init(pagamentiOnlineTrustedValues, bd, this.getLanguage()); this.infoCreazioneMap.put(tipiTributoPoId, tipiTributoPo); String dominiPoLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPo.label"); URI dominiPoRefreshUri = this.getUriField(uriInfo, bd, dominiPoId); DominiPO dominiPo = new DominiPO(this.nomeServizio, dominiPoId, dominiPoLabel, dominiPoRefreshUri, pagamentiOnlineValues, bd, this.getLanguage()); dominiPo.addDependencyField(pagamentiOnline); dominiPo.addDependencyField(trusted); dominiPo.init(pagamentiOnlineValues, bd, this.getLanguage()); this.infoCreazioneMap.put(dominiPoId, dominiPo); } } @SuppressWarnings("unchecked") @Override public InfoForm getInfoModifica(UriInfo uriInfo, BasicBD bd, Portale entry) throws ConsoleException { InfoForm infoModifica = null; try { if (this.darsService.isServizioAbilitatoScrittura(bd, this.funzionalita)) { URI modifica = this.getUriModifica(uriInfo, bd); infoModifica = new InfoForm(modifica, Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".modifica.titolo")); String codPortaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codPortale.id"); String principalId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".principal.id"); String abilitatoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".abilitato.id"); String portaleId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".id.id"); String defaultCallbackURLId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".defaultCallbackURL.id"); String versioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versione.id"); String pagamentiAttesaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiAttesa.id"); String pagamentiOnlineId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiOnline.id"); String dominiPaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPa.id"); String tipiTributoPaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPa.id"); String dominiPoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPo.id"); String tipiTributoPoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPo.id"); String trustedId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".trusted.id"); if (this.infoCreazioneMap == null) { this.initInfoCreazione(uriInfo, bd); } Sezione sezioneRoot = infoModifica.getSezioneRoot(); InputNumber idInterm = (InputNumber) this.infoCreazioneMap.get(portaleId); idInterm.setDefaultValue(entry.getId()); sezioneRoot.addField(idInterm); InputText codPortale = (InputText) this.infoCreazioneMap.get(codPortaleId); codPortale.setDefaultValue(entry.getCodPortale()); codPortale.setEditable(false); sezioneRoot.addField(codPortale); InputText principal = (InputText) this.infoCreazioneMap.get(principalId); principal.setDefaultValue(entry.getPrincipal()); sezioneRoot.addField(principal); InputText defaultCallbackURL = (InputText) this.infoCreazioneMap.get(defaultCallbackURLId); defaultCallbackURL.setDefaultValue(entry.getDefaultCallbackURL()); sezioneRoot.addField(defaultCallbackURL); // versione SelectList<String> versione = (SelectList<String>) this.infoCreazioneMap.get(versioneId); versione.setDefaultValue(entry.getVersione().getLabel()); sezioneRoot.addField(versione); CheckButton abilitato = (CheckButton) this.infoCreazioneMap.get(abilitatoId); abilitato.setDefaultValue(entry.isAbilitato()); sezioneRoot.addField(abilitato); String etichettaPagamentiAttesa = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle( this.nomeServizio + ".elementoCorrelato.pagamentiAttesa.titolo"); Sezione sezionePA = infoModifica.addSezione(etichettaPagamentiAttesa); List<Long> idsAclDominiPA = Utils.getIdsFromAcls(entry.getAcls(), Tipo.DOMINIO, Servizio.PAGAMENTI_ATTESA); List<Long> idsAclTributiPA = Utils.getIdsFromAcls(entry.getAcls(), Tipo.TRIBUTO, Servizio.PAGAMENTI_ATTESA); boolean visualizzaPA = idsAclDominiPA.size() > 0 || idsAclTributiPA.size() > 0; CheckButton pagamentiAttesa = (CheckButton) this.infoCreazioneMap.get(pagamentiAttesaId); pagamentiAttesa.setDefaultValue(visualizzaPA); sezionePA.addField(pagamentiAttesa); List<RawParamValue> pagamentiAttesaValues = new ArrayList<RawParamValue>(); pagamentiAttesaValues.add(new RawParamValue(portaleId, entry.getId() + "")); pagamentiAttesaValues.add(new RawParamValue(pagamentiAttesaId, (visualizzaPA ? "true" : "false"))); TipiTributoPA tipiTributoPa = (TipiTributoPA) this.infoCreazioneMap.get(tipiTributoPaId); tipiTributoPa.init(pagamentiAttesaValues, bd, this.getLanguage()); sezionePA.addField(tipiTributoPa); DominiPA dominiPa = (DominiPA) this.infoCreazioneMap.get(dominiPaId); dominiPa.init(pagamentiAttesaValues, bd, this.getLanguage()); sezionePA.addField(dominiPa); String etichettaPagamentiOnline = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle( this.nomeServizio + ".elementoCorrelato.pagamentiOnline.titolo"); Sezione sezionePO = infoModifica.addSezione(etichettaPagamentiOnline); List<Long> idsAclDominiPO = Utils.getIdsFromAcls(entry.getAcls(), Tipo.DOMINIO, Servizio.PAGAMENTI_ONLINE); List<Long> idsAclTributiPO = Utils.getIdsFromAcls(entry.getAcls(), Tipo.TRIBUTO, Servizio.PAGAMENTI_ONLINE); boolean visualizzaPO = idsAclDominiPO.size() > 0 || idsAclTributiPO.size() > 0 || entry.isTrusted(); CheckButton pagamentiOnline = (CheckButton) this.infoCreazioneMap.get(pagamentiOnlineId); pagamentiOnline.setDefaultValue(visualizzaPO); sezionePO.addField(pagamentiOnline); List<RawParamValue> pagamentiOnlineValues = new ArrayList<RawParamValue>(); pagamentiOnlineValues.add(new RawParamValue(portaleId, entry.getId() + "")); pagamentiOnlineValues.add(new RawParamValue(pagamentiOnlineId, (visualizzaPO ? "true" : "false"))); Trusted trusted = (Trusted) this.infoCreazioneMap.get(trustedId); trusted.init(pagamentiOnlineValues, bd, this.getLanguage()); sezionePO.addField(trusted); List<RawParamValue> pagamentiOnlineTrustedValues = new ArrayList<RawParamValue>(); pagamentiOnlineTrustedValues.addAll(pagamentiOnlineValues); pagamentiOnlineTrustedValues .add(new RawParamValue(trustedId, (entry.isTrusted() ? "true" : "false"))); TipiTributoPO tipiTributoPo = (TipiTributoPO) this.infoCreazioneMap.get(tipiTributoPoId); tipiTributoPo.init(pagamentiOnlineTrustedValues, bd, this.getLanguage()); sezionePO.addField(tipiTributoPo); DominiPO dominiPo = (DominiPO) this.infoCreazioneMap.get(dominiPoId); dominiPo.init(pagamentiOnlineValues, bd, this.getLanguage()); sezionePO.addField(dominiPo); } } catch (ServiceException e) { throw new ConsoleException(e); } return infoModifica; } @Override public InfoForm getInfoCancellazione(UriInfo uriInfo, BasicBD bd, Map<String, String> parameters) throws ConsoleException { return null; } @Override public InfoForm getInfoCancellazioneDettaglio(UriInfo uriInfo, BasicBD bd, Portale entry) throws ConsoleException { return null; } @Override public InfoForm getInfoEsportazione(UriInfo uriInfo, BasicBD bd, Map<String, String> parameters) throws ConsoleException { return null; } @Override public InfoForm getInfoEsportazioneDettaglio(UriInfo uriInfo, BasicBD bd, Portale entry) throws ConsoleException { return null; } @Override public Object getField(UriInfo uriInfo, List<RawParamValue> values, String fieldId, BasicBD bd) throws WebApplicationException, ConsoleException { this.log.debug("Richiesto field [" + fieldId + "]"); try { // Operazione consentita solo ai ruoli con diritto di scrittura this.darsService.checkDirittiServizioScrittura(bd, this.funzionalita); if (this.infoCreazioneMap == null) { this.initInfoCreazione(uriInfo, bd); } if (this.infoCreazioneMap.containsKey(fieldId)) { RefreshableParamField<?> paramField = (RefreshableParamField<?>) this.infoCreazioneMap.get(fieldId); paramField.aggiornaParametro(values, bd); return paramField; } this.log.debug("Field [" + fieldId + "] non presente."); } catch (Exception e) { throw new ConsoleException(e); } return null; } @Override public Object getSearchField(UriInfo uriInfo, List<RawParamValue> values, String fieldId, BasicBD bd) throws WebApplicationException, ConsoleException { return null; } @Override public Object getDeleteField(UriInfo uriInfo, List<RawParamValue> values, String fieldId, BasicBD bd) throws WebApplicationException, ConsoleException { return null; } @Override public Object getExportField(UriInfo uriInfo, List<RawParamValue> values, String fieldId, BasicBD bd) throws WebApplicationException, ConsoleException { return null; } @Override public Dettaglio getDettaglio(long id, UriInfo uriInfo, BasicBD bd) throws WebApplicationException, ConsoleException { String methodName = "dettaglio " + this.titoloServizio + "." + id; try { this.log.info("Esecuzione " + methodName + " in corso..."); // Operazione consentita solo ai ruoli con diritto di lettura this.darsService.checkDirittiServizioLettura(bd, this.funzionalita); // recupero oggetto PortaliBD portaliBD = new PortaliBD(bd); Portale portale = portaliBD.getPortale(id); InfoForm infoModifica = this.getInfoModifica(uriInfo, bd, portale); InfoForm infoCancellazione = this.getInfoCancellazioneDettaglio(uriInfo, bd, portale); InfoForm infoEsportazione = null; Dettaglio dettaglio = new Dettaglio(this.getTitolo(portale, bd), infoEsportazione, infoCancellazione, infoModifica); it.govpay.web.rs.dars.model.Sezione root = dettaglio.getSezioneRoot(); // dati portale if (StringUtils.isNotEmpty(portale.getCodPortale())) root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".codPortale.label"), portale.getCodPortale()); if (StringUtils.isNotEmpty(portale.getPrincipal())) root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".principal.label"), portale.getPrincipal()); if (StringUtils.isNotEmpty(portale.getDefaultCallbackURL())) root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".defaultCallbackURL.label"), portale.getDefaultCallbackURL()); if (portale.getVersione() != null) root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".versione.label"), portale.getVersione().getLabel(), true); root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".abilitato.label"), Utils.getSiNoAsLabel(portale.isAbilitato())); // Elementi correlati String etichettaPagamentiAttesa = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.pagamentiAttesa.titolo"); it.govpay.web.rs.dars.model.Sezione sezionePagamentiAttesa = dettaglio .addSezione(etichettaPagamentiAttesa); List<Acl> acls = portale.getAcls(); String etichettaTipiTributo = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.tipiTributo.titolo"); String etichettaDomini = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.domini.titolo"); List<Long> idTributi = Utils.getIdsFromAcls(acls, Tipo.TRIBUTO, Servizio.PAGAMENTI_ATTESA); List<Voce<String>> listaVociTributi = new ArrayList<Voce<String>>(); String valore = null; if (!Utils.isEmpty(idTributi)) { if (!idTributi.contains(-1L)) { TipiTributoBD tipiTributoBD = new TipiTributoBD(bd); TipoTributoFilter filter = tipiTributoBD.newFilter(); FilterSortWrapper fsw = new FilterSortWrapper(); fsw.setField(it.govpay.orm.TipoTributo.model().COD_TRIBUTO); fsw.setSortOrder(SortOrder.ASC); filter.getFilterSortList().add(fsw); filter.setListaIdTributi(idTributi); List<TipoTributo> findAll = tipiTributoBD.findAll(filter); it.govpay.web.rs.dars.anagrafica.tributi.TipiTributo tipiTributoDars = new it.govpay.web.rs.dars.anagrafica.tributi.TipiTributo(); TipiTributoHandler tipiTributoDarsHandler = (TipiTributoHandler) tipiTributoDars .getDarsHandler(); if (findAll != null && findAll.size() > 0) { for (TipoTributo entry : findAll) { Elemento elemento = tipiTributoDarsHandler.getElemento(entry, entry.getId(), tipiTributoDars.getPathServizio(), bd); listaVociTributi.add(new VoceRiferimento<String>(elemento.getTitolo(), elemento.getSottotitolo(), elemento.getUri())); } } } else { valore = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle("commons.label.tutti"); } } else { valore = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle("commons.label.nessuno"); } if (Utils.isEmpty(listaVociTributi)) { sezionePagamentiAttesa.addVoce(etichettaTipiTributo, valore); } else { sezionePagamentiAttesa.addVoce(etichettaTipiTributo, null); for (Voce<String> voce : listaVociTributi) { sezionePagamentiAttesa.addVoce(voce); } } List<Long> idDomini = Utils.getIdsFromAcls(acls, Tipo.DOMINIO, Servizio.PAGAMENTI_ATTESA); List<Voce<String>> listaVociDomini = new ArrayList<Voce<String>>(); valore = null; if (!Utils.isEmpty(idDomini)) { if (!idDomini.contains(-1L)) { DominiBD dominiBD = new DominiBD(bd); DominioFilter filter = dominiBD.newFilter(); FilterSortWrapper fsw = new FilterSortWrapper(); fsw.setField(it.govpay.orm.Dominio.model().COD_DOMINIO); fsw.setSortOrder(SortOrder.ASC); filter.getFilterSortList().add(fsw); filter.setIdDomini(idDomini); List<Dominio> findAll = dominiBD.findAll(filter); it.govpay.web.rs.dars.anagrafica.domini.Domini dominiDars = new it.govpay.web.rs.dars.anagrafica.domini.Domini(); DominiHandler dominiDarsHandler = (DominiHandler) dominiDars.getDarsHandler(); if (findAll != null && findAll.size() > 0) { for (Dominio entry : findAll) { Elemento elemento = dominiDarsHandler.getElemento(entry, entry.getId(), dominiDars.getPathServizio(), bd); listaVociDomini.add(new VoceRiferimento<String>(elemento.getTitolo(), elemento.getSottotitolo(), elemento.getUri())); } } } else { valore = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle("commons.label.tutti"); } } else { valore = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle("commons.label.nessuno"); } if (Utils.isEmpty(listaVociDomini)) { sezionePagamentiAttesa.addVoce(etichettaDomini, valore); } else { sezionePagamentiAttesa.addVoce(etichettaDomini, null); for (Voce<String> voce : listaVociDomini) { sezionePagamentiAttesa.addVoce(voce); } } String etichettaPagamentiOnline = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.pagamentiOnline.titolo"); it.govpay.web.rs.dars.model.Sezione sezionePagamentiOnline = dettaglio .addSezione(etichettaPagamentiOnline); idTributi = Utils.getIdsFromAcls(acls, Tipo.TRIBUTO, Servizio.PAGAMENTI_ONLINE); listaVociTributi = new ArrayList<Voce<String>>(); valore = null; if (!Utils.isEmpty(idTributi)) { if (!idTributi.contains(-1L)) { TipiTributoBD tipiTributoBD = new TipiTributoBD(bd); TipoTributoFilter filter = tipiTributoBD.newFilter(); FilterSortWrapper fsw = new FilterSortWrapper(); fsw.setField(it.govpay.orm.TipoTributo.model().COD_TRIBUTO); fsw.setSortOrder(SortOrder.ASC); filter.getFilterSortList().add(fsw); filter.setListaIdTributi(idTributi); List<TipoTributo> findAll = tipiTributoBD.findAll(filter); it.govpay.web.rs.dars.anagrafica.tributi.TipiTributo tipiTributoDars = new it.govpay.web.rs.dars.anagrafica.tributi.TipiTributo(); TipiTributoHandler tipiTributoDarsHandler = (TipiTributoHandler) tipiTributoDars .getDarsHandler(); if (findAll != null && findAll.size() > 0) { for (TipoTributo entry : findAll) { Elemento elemento = tipiTributoDarsHandler.getElemento(entry, entry.getId(), tipiTributoDars.getPathServizio(), bd); listaVociTributi.add(new VoceRiferimento<String>(elemento.getTitolo(), elemento.getSottotitolo(), elemento.getUri())); } } } else { valore = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle("commons.label.tutti"); } } else { valore = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle("commons.label.nessuno"); } sezionePagamentiOnline.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".trusted.label"), Utils.getSiNoAsLabel(portale.isTrusted())); if (Utils.isEmpty(listaVociTributi)) { if (!portale.isTrusted()) { sezionePagamentiOnline.addVoce(etichettaTipiTributo, valore); } } else { sezionePagamentiOnline.addVoce(etichettaTipiTributo, null); for (Voce<String> voce : listaVociTributi) { sezionePagamentiOnline.addVoce(voce); } } idDomini = Utils.getIdsFromAcls(acls, Tipo.DOMINIO, Servizio.PAGAMENTI_ONLINE); listaVociDomini = new ArrayList<Voce<String>>(); valore = null; if (!Utils.isEmpty(idDomini)) { if (!idDomini.contains(-1L)) { DominiBD dominiBD = new DominiBD(bd); DominioFilter filter = dominiBD.newFilter(); FilterSortWrapper fsw = new FilterSortWrapper(); fsw.setField(it.govpay.orm.Dominio.model().COD_DOMINIO); fsw.setSortOrder(SortOrder.ASC); filter.getFilterSortList().add(fsw); filter.setIdDomini(idDomini); List<Dominio> findAll = dominiBD.findAll(filter); it.govpay.web.rs.dars.anagrafica.domini.Domini dominiDars = new it.govpay.web.rs.dars.anagrafica.domini.Domini(); DominiHandler dominiDarsHandler = (DominiHandler) dominiDars.getDarsHandler(); if (findAll != null && findAll.size() > 0) { for (Dominio entry : findAll) { Elemento elemento = dominiDarsHandler.getElemento(entry, entry.getId(), dominiDars.getPathServizio(), bd); listaVociDomini.add(new VoceRiferimento<String>(elemento.getTitolo(), elemento.getSottotitolo(), elemento.getUri())); } } } else { valore = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle("commons.label.tutti"); } } else { valore = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle("commons.label.nessuno"); } if (Utils.isEmpty(listaVociDomini)) { sezionePagamentiOnline.addVoce(etichettaDomini, valore); } else { sezionePagamentiOnline.addVoce(etichettaDomini, null); for (Voce<String> voce : listaVociDomini) { sezionePagamentiOnline.addVoce(voce); } } this.log.info("Esecuzione " + methodName + " completata."); return dettaglio; } catch (WebApplicationException e) { throw e; } catch (Exception e) { throw new ConsoleException(e); } } @Override public Dettaglio insert(InputStream is, UriInfo uriInfo, BasicBD bd) throws WebApplicationException, ConsoleException, ValidationException, DuplicatedEntryException { String methodName = "Insert " + this.titoloServizio; try { this.log.info("Esecuzione " + methodName + " in corso..."); // Operazione consentita solo ai ruoli con diritto di scrittura this.darsService.checkDirittiServizioScrittura(bd, this.funzionalita); Portale entry = this.creaEntry(is, uriInfo, bd); this.checkEntry(entry, null); PortaliBD applicazioniBD = new PortaliBD(bd); try { applicazioniBD.getPortale(entry.getCodPortale()); String msg = Utils.getInstance(this.getLanguage()).getMessageWithParamsFromResourceBundle( this.nomeServizio + ".oggettoEsistente", entry.getCodPortale()); throw new DuplicatedEntryException(msg); } catch (NotFoundException e) { } applicazioniBD.insertPortale(entry); this.log.info("Esecuzione " + methodName + " completata."); return this.getDettaglio(entry.getId(), uriInfo, bd); } catch (DuplicatedEntryException e) { throw e; } catch (ValidationException e) { throw e; } catch (WebApplicationException e) { throw e; } catch (Exception e) { throw new ConsoleException(e); } } @Override public Portale creaEntry(InputStream is, UriInfo uriInfo, BasicBD bd) throws WebApplicationException, ConsoleException { String methodName = "creaEntry " + this.titoloServizio; Portale entry = null; String pagamentiAttesaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiAttesa.id"); String pagamentiOnlineId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".pagamentiOnline.id"); String dominiPaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPa.id"); String tipiTributoPaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPa.id"); String dominiPoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiPo.id"); String tipiTributoPoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoPo.id"); String versioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versione.id"); try { this.log.info("Esecuzione " + methodName + " in corso..."); // Operazione consentita solo ai ruoli con diritto di scrittura this.darsService.checkDirittiServizioScrittura(bd, this.funzionalita); JsonConfig jsonConfig = new JsonConfig(); Map<String, Class<?>> classMap = new HashMap<String, Class<?>>(); classMap.put(dominiPaId, Long.class); classMap.put(tipiTributoPaId, Long.class); classMap.put(dominiPoId, Long.class); classMap.put(tipiTributoPoId, Long.class); jsonConfig.setClassMap(classMap); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Utils.copy(is, baos); baos.flush(); baos.close(); JSONObject jsonObjectPortale = JSONObject.fromObject(baos.toString()); List<Acl> lstAclTributiPa = new ArrayList<Acl>(); List<Acl> lstAclDominiPa = new ArrayList<Acl>(); if (jsonObjectPortale.getBoolean(pagamentiAttesaId)) { JSONArray jsonTributi = jsonObjectPortale.getJSONArray(tipiTributoPaId); for (int i = 0; i < jsonTributi.size(); i++) { long idTributo = jsonTributi.getLong(i); Acl acl = new Acl(); acl.setTipo(Tipo.TRIBUTO); acl.setServizio(Servizio.PAGAMENTI_ATTESA); if (idTributo > 0) { acl.setIdTributo(idTributo); lstAclTributiPa.add(acl); } else { lstAclTributiPa.clear(); lstAclTributiPa.add(acl); break; } } JSONArray jsonDomini = jsonObjectPortale.getJSONArray(dominiPaId); for (int i = 0; i < jsonDomini.size(); i++) { long idDominio = jsonDomini.getLong(i); Acl acl = new Acl(); acl.setTipo(Tipo.DOMINIO); acl.setServizio(Servizio.PAGAMENTI_ATTESA); if (idDominio > 0) { acl.setIdDominio(idDominio); lstAclDominiPa.add(acl); } else { lstAclDominiPa.clear(); lstAclDominiPa.add(acl); break; } } } // rimuovo gli oggetti della parte PA jsonObjectPortale.remove(pagamentiAttesaId); jsonObjectPortale.remove(tipiTributoPaId); jsonObjectPortale.remove(dominiPaId); List<Acl> lstAclTributiPo = new ArrayList<Acl>(); List<Acl> lstAclDominiPo = new ArrayList<Acl>(); if (jsonObjectPortale.getBoolean(pagamentiOnlineId)) { JSONArray jsonTributi = jsonObjectPortale.getJSONArray(tipiTributoPoId); for (int i = 0; i < jsonTributi.size(); i++) { long idTributo = jsonTributi.getLong(i); Acl acl = new Acl(); acl.setTipo(Tipo.TRIBUTO); acl.setServizio(Servizio.PAGAMENTI_ONLINE); if (idTributo > 0) { acl.setIdTributo(idTributo); lstAclTributiPo.add(acl); } else { lstAclTributiPo.clear(); lstAclTributiPo.add(acl); break; } } JSONArray jsonDomini = jsonObjectPortale.getJSONArray(dominiPoId); for (int i = 0; i < jsonDomini.size(); i++) { long idDominio = jsonDomini.getLong(i); Acl acl = new Acl(); acl.setTipo(Tipo.DOMINIO); acl.setServizio(Servizio.PAGAMENTI_ONLINE); if (idDominio > 0) { acl.setIdDominio(idDominio); lstAclDominiPo.add(acl); } else { lstAclDominiPo.clear(); lstAclDominiPo.add(acl); break; } } } // rimuovo gli oggetti della parte PA jsonObjectPortale.remove(pagamentiOnlineId); jsonObjectPortale.remove(tipiTributoPoId); jsonObjectPortale.remove(dominiPoId); Versione versione = this.getVersioneSelezionata(jsonObjectPortale, versioneId, true); jsonConfig.setRootClass(Portale.class); entry = (Portale) JSONObject.toBean(jsonObjectPortale, jsonConfig); entry.setVersione(versione); entry.setAcls(lstAclTributiPa); entry.getAcls().addAll(lstAclDominiPa); entry.getAcls().addAll(lstAclTributiPo); entry.getAcls().addAll(lstAclDominiPo); this.log.info("Esecuzione " + methodName + " completata."); return entry; } catch (WebApplicationException e) { throw e; } catch (Exception e) { throw new ConsoleException(e); } } @Override public void checkEntry(Portale entry, Portale oldEntry) throws ValidationException { if (entry == null || StringUtils.isEmpty(entry.getCodPortale())) { throw new ValidationException(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".creazione.erroreCodPortaleObbligatorio")); } if (entry.getPrincipal() == null || entry.getPrincipal().isEmpty()) { throw new ValidationException(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".creazione.errorePrincipalObbligatorio")); } if (oldEntry != null) { //caso update if (!oldEntry.getCodPortale().equals(entry.getCodPortale())) { throw new ValidationException( Utils.getInstance(this.getLanguage()).getMessageWithParamsFromResourceBundle( this.nomeServizio + ".aggiornamento.erroreCodPortaleNonCoincide", oldEntry.getCodPortale(), entry.getCodPortale())); } } } @Override public Dettaglio update(InputStream is, UriInfo uriInfo, BasicBD bd) throws WebApplicationException, ConsoleException, ValidationException { String methodName = "Update " + this.titoloServizio; try { this.log.info("Esecuzione " + methodName + " in corso..."); // Operazione consentita solo ai ruoli con diritto di scrittura this.darsService.checkDirittiServizioScrittura(bd, this.funzionalita); Portale entry = this.creaEntry(is, uriInfo, bd); PortaliBD applicazioniBD = new PortaliBD(bd); Portale oldEntry = applicazioniBD.getPortale(entry.getCodPortale()); this.checkEntry(entry, oldEntry); applicazioniBD.updatePortale(entry); this.log.info("Esecuzione " + methodName + " completata."); return this.getDettaglio(entry.getId(), uriInfo, bd); } catch (ValidationException e) { throw e; } catch (WebApplicationException e) { throw e; } catch (Exception e) { throw new ConsoleException(e); } } @Override public Elenco delete(List<Long> idsToDelete, List<RawParamValue> rawValues, UriInfo uriInfo, BasicBD bd) throws WebApplicationException, ConsoleException, DeleteException { return null; } @Override public String getTitolo(Portale entry, BasicBD bd) { StringBuilder sb = new StringBuilder(); sb.append(entry.getCodPortale()); return sb.toString(); } @Override public String getSottotitolo(Portale entry, BasicBD bd) { StringBuilder sb = new StringBuilder(); sb.append(Utils.getAbilitatoAsLabel(entry.isAbilitato())); return sb.toString(); } @Override public Map<String, Voce<String>> getVoci(Portale entry, BasicBD bd) throws ConsoleException { return null; } @Override public String esporta(List<Long> idsToExport, List<RawParamValue> rawValues, UriInfo uriInfo, BasicBD bd, ZipOutputStream zout) throws WebApplicationException, ConsoleException, ExportException { return null; } @Override public String esporta(Long idToExport, List<RawParamValue> rawValues, UriInfo uriInfo, BasicBD bd, ZipOutputStream zout) throws WebApplicationException, ConsoleException, ExportException { return null; } @Override public Object uplaod(MultipartFormDataInput input, UriInfo uriInfo, BasicBD bd) throws WebApplicationException, ConsoleException, ValidationException { return null; } }