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.applicazioni; 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.Set; 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.ApplicazioniBD; import it.govpay.bd.anagrafica.DominiBD; import it.govpay.bd.anagrafica.TipiTributoBD; import it.govpay.bd.anagrafica.filters.ApplicazioneFilter; import it.govpay.bd.anagrafica.filters.DominioFilter; 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.Applicazione; import it.govpay.model.Connettore; import it.govpay.model.Connettore.EnumSslType; import it.govpay.model.Rpt.FirmaRichiesta; import it.govpay.model.TipoTributo; import it.govpay.model.Versionabile.Versione; import it.govpay.web.rs.dars.anagrafica.applicazioni.input.DominiIncassi; import it.govpay.web.rs.dars.anagrafica.applicazioni.input.DominiRendicontazione; import it.govpay.web.rs.dars.anagrafica.applicazioni.input.DominiVersamenti; import it.govpay.web.rs.dars.anagrafica.applicazioni.input.TipiTributoVersamenti; import it.govpay.web.rs.dars.anagrafica.applicazioni.input.Trusted; import it.govpay.web.rs.dars.anagrafica.connettori.ConnettoreHandler; import it.govpay.web.rs.dars.anagrafica.domini.DominiHandler; 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 ApplicazioniHandler extends DarsHandler<Applicazione> implements IDarsHandler<Applicazione> { public static final String CONNETTORE_VERIFICA = ConnettoreHandler.CONNETTORE_VERIFICA; public static final String CONNETTORE_NOTIFICA = ConnettoreHandler.CONNETTORE_NOTIFICA; public ApplicazioniHandler(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); boolean visualizzaRicerca = true; this.log.info("Esecuzione " + methodName + " in corso..."); boolean simpleSearch = this.containsParameter(uriInfo, DarsService.SIMPLE_SEARCH_PARAMETER_ID); ApplicazioniBD applicazioniBD = new ApplicazioniBD(bd); ApplicazioneFilter filter = applicazioniBD.newFilter(simpleSearch); filter.setOffset(offset); filter.setLimit(limit); FilterSortWrapper fsw = new FilterSortWrapper(); fsw.setField(it.govpay.orm.Applicazione.model().COD_APPLICAZIONE); 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 codApplicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.id"); String codApplicazione = this.getParameter(uriInfo, codApplicazioneId, String.class); if (StringUtils.isNotEmpty(codApplicazione)) { filter.setCodApplicazione(codApplicazione); } } long count = applicazioniBD.count(filter); // visualizza la ricerca solo se i risultati sono > del limit visualizzaRicerca = 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<Applicazione> findAll = applicazioniBD.findAll(filter); if (findAll != null && findAll.size() > 0) { for (Applicazione 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 codApplicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.id"); if (this.infoRicercaMap == null) { this.initInfoRicerca(uriInfo, bd); } Sezione sezioneRoot = infoRicerca.getSezioneRoot(); InputText codApplicazione = (InputText) this.infoRicercaMap.get(codApplicazioneId); codApplicazione.setDefaultValue(null); sezioneRoot.addField(codApplicazione); } return infoRicerca; } private void initInfoRicerca(UriInfo uriInfo, BasicBD bd) throws ConsoleException { if (this.infoRicercaMap == null) { this.infoRicercaMap = new HashMap<String, ParamField<?>>(); String codApplicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.id"); String codApplicazioneLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.label"); InputText codApplicazione = new InputText(codApplicazioneId, codApplicazioneLabel, null, false, false, true, 1, 255); this.infoRicercaMap.put(codApplicazioneId, codApplicazione); } } @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 codApplicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.id"); String principalId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".principal.id"); String abilitatoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".abilitato.id"); String applicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".id.id"); String firmaRichiestaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.id"); String versioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versione.id"); String versamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versamenti.id"); String rendicontazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".rendicontazione.id"); String dominiVersamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiVersamenti.id"); String tipiTributoVersamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoVersamenti.id"); String dominiRendicontazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiRendicontazione.id"); String trustedId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".trusted.id"); String codificaApplicazioneInIuvId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codificaApplicazioneInIuv.id"); String incassiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".incassi.id"); String dominiIncassiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiIncassi.id"); ConnettoreHandler connettoreVerificaHandler = new ConnettoreHandler(CONNETTORE_VERIFICA, this.nomeServizio, this.pathServizio, this.getLanguage()); List<ParamField<?>> infoCreazioneConnettoreVerifica = connettoreVerificaHandler .getInfoCreazione(uriInfo, bd, true); ConnettoreHandler connettoreNotificaHandler = new ConnettoreHandler(CONNETTORE_NOTIFICA, this.nomeServizio, this.pathServizio, this.getLanguage()); List<ParamField<?>> infoCreazioneConnettoreNotifica = connettoreNotificaHandler .getInfoCreazione(uriInfo, bd, true); if (this.infoCreazioneMap == null) { this.initInfoCreazione(uriInfo, bd); } Sezione sezioneRoot = infoCreazione.getSezioneRoot(); InputNumber idInterm = (InputNumber) this.infoCreazioneMap.get(applicazioneId); idInterm.setDefaultValue(null); sezioneRoot.addField(idInterm); InputText codApplicazione = (InputText) this.infoCreazioneMap.get(codApplicazioneId); codApplicazione.setDefaultValue(null); codApplicazione.setEditable(true); sezioneRoot.addField(codApplicazione); InputText principal = (InputText) this.infoCreazioneMap.get(principalId); principal.setDefaultValue(null); sezioneRoot.addField(principal); SelectList<String> firmaRichiesta = (SelectList<String>) this.infoCreazioneMap .get(firmaRichiestaId); firmaRichiesta.setDefaultValue(FirmaRichiesta.NESSUNA.getCodifica()); sezioneRoot.addField(firmaRichiesta); InputText codificaApplicazioneInIuv = (InputText) this.infoCreazioneMap .get(codificaApplicazioneInIuvId); codificaApplicazioneInIuv.setDefaultValue(null); sezioneRoot.addField(codificaApplicazioneInIuv); // 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 etichettaVersamenti = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.versamenti.titolo"); Sezione sezioneVersamenti = infoCreazione.addSezione(etichettaVersamenti); CheckButton versamenti = (CheckButton) this.infoCreazioneMap.get(versamentiId); versamenti.setDefaultValue(false); sezioneVersamenti.addField(versamenti); List<RawParamValue> versamentiValues = new ArrayList<RawParamValue>(); versamentiValues.add(new RawParamValue(applicazioneId, null)); versamentiValues.add(new RawParamValue(versamentiId, "false")); Trusted trusted = (Trusted) this.infoCreazioneMap.get(trustedId); trusted.init(versamentiValues, bd, this.getLanguage()); sezioneVersamenti.addField(trusted); List<RawParamValue> versamentiTrustedValues = new ArrayList<RawParamValue>(); versamentiTrustedValues.addAll(versamentiValues); versamentiTrustedValues.add(new RawParamValue(trustedId, "false")); TipiTributoVersamenti tipiTributoVersamenti = (TipiTributoVersamenti) this.infoCreazioneMap .get(tipiTributoVersamentiId); tipiTributoVersamenti.init(versamentiTrustedValues, bd, this.getLanguage()); sezioneVersamenti.addField(tipiTributoVersamenti); DominiVersamenti dominiVersamenti = (DominiVersamenti) this.infoCreazioneMap .get(dominiVersamentiId); dominiVersamenti.init(versamentiValues, bd, this.getLanguage()); sezioneVersamenti.addField(dominiVersamenti); String etichettaRendicontazione = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle( this.nomeServizio + ".elementoCorrelato.rendicontazione.titolo"); Sezione sezioneRendicontazione = infoCreazione.addSezione(etichettaRendicontazione); CheckButton rendicontazione = (CheckButton) this.infoCreazioneMap.get(rendicontazioneId); rendicontazione.setDefaultValue(false); sezioneRendicontazione.addField(rendicontazione); List<RawParamValue> rendicontazioneValues = new ArrayList<RawParamValue>(); rendicontazioneValues.add(new RawParamValue(applicazioneId, null)); rendicontazioneValues.add(new RawParamValue(rendicontazioneId, "false")); DominiRendicontazione dominiRendicontazione = (DominiRendicontazione) this.infoCreazioneMap .get(dominiRendicontazioneId); dominiRendicontazione.init(rendicontazioneValues, bd, this.getLanguage()); sezioneRendicontazione.addField(dominiRendicontazione); // sezione incassi String etichettaIncassi = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.incassi.titolo"); Sezione sezioneIncassi = infoCreazione.addSezione(etichettaIncassi); CheckButton incassi = (CheckButton) this.infoCreazioneMap.get(incassiId); incassi.setDefaultValue(false); sezioneIncassi.addField(incassi); List<RawParamValue> incassiValues = new ArrayList<RawParamValue>(); incassiValues.add(new RawParamValue(applicazioneId, null)); incassiValues.add(new RawParamValue(incassiId, "false")); DominiIncassi dominiIncassi = (DominiIncassi) this.infoCreazioneMap.get(dominiIncassiId); dominiIncassi.init(incassiValues, bd, this.getLanguage()); sezioneIncassi.addField(dominiIncassi); Sezione sezioneConnettoreVerifica = infoCreazione.addSezione(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + "." + CONNETTORE_VERIFICA + ".titolo")); for (ParamField<?> par : infoCreazioneConnettoreVerifica) { sezioneConnettoreVerifica.addField(par); } Sezione sezioneConnettoreNotifica = infoCreazione.addSezione(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + "." + CONNETTORE_NOTIFICA + ".titolo")); for (ParamField<?> par : infoCreazioneConnettoreNotifica) { sezioneConnettoreNotifica.addField(par); } } } 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 codApplicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.id"); String principalId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".principal.id"); String abilitatoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".abilitato.id"); String applicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".id.id"); String firmaRichiestaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.id"); String versioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versione.id"); String versamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versamenti.id"); String rendicontazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".rendicontazione.id"); String dominiVersamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiVersamenti.id"); String tipiTributoVersamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoVersamenti.id"); String dominiRendicontazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiRendicontazione.id"); String trustedId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".trusted.id"); String codificaApplicazioneInIuvId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codificaApplicazioneInIuv.id"); String incassiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".incassi.id"); String dominiIncassiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiIncassi.id"); // id InputNumber id = new InputNumber(applicazioneId, null, null, true, true, false, 1, 20); this.infoCreazioneMap.put(applicazioneId, id); // versione SelectList<String> versione = this.getSelectListVersione(versioneId); this.infoCreazioneMap.put(versioneId, versione); // codApplicazione String codApplicazioneLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.label"); InputText codApplicazione = new InputText(codApplicazioneId, codApplicazioneLabel, null, true, false, true, 1, 35); codApplicazione.setSuggestion(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.suggestion")); codApplicazione.setValidation(null, Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.errorMessage")); this.infoCreazioneMap.put(codApplicazioneId, codApplicazione); // 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 firmaRichiestaLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.label"); List<Voce<String>> valoriFirma = new ArrayList<Voce<String>>(); valoriFirma .add(new Voce<String>( Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.nessuna"), FirmaRichiesta.NESSUNA.getCodifica())); valoriFirma .add(new Voce<String>( Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.ca_des"), FirmaRichiesta.CA_DES.getCodifica())); valoriFirma .add(new Voce<String>( Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.xa_des"), FirmaRichiesta.XA_DES.getCodifica())); //valoriFirma.add(new Voce<String>(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.avanzata"), FirmaRichiesta.AVANZATA.getCodifica())); SelectList<String> firmaRichiesta = new SelectList<String>(firmaRichiestaId, firmaRichiestaLabel, null, true, false, true, valoriFirma); this.infoCreazioneMap.put(firmaRichiestaId, firmaRichiesta); //seziona rendicontazione // abilitato String rendicontazioneLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".rendicontazione.label"); CheckButton rendicontazione = new CheckButton(rendicontazioneId, rendicontazioneLabel, true, false, false, true); this.infoCreazioneMap.put(rendicontazioneId, rendicontazione); List<RawParamValue> rendicontazioneValues = new ArrayList<RawParamValue>(); rendicontazioneValues.add(new RawParamValue(applicazioneId, null)); rendicontazioneValues.add(new RawParamValue(rendicontazioneId, "false")); String dominiRendicontazioneLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiRendicontazione.label"); URI dominiRendicontazioneRefreshUri = this.getUriField(uriInfo, bd, dominiRendicontazioneId); DominiRendicontazione dominiRendicontazione = new DominiRendicontazione(this.nomeServizio, dominiRendicontazioneId, dominiRendicontazioneLabel, dominiRendicontazioneRefreshUri, rendicontazioneValues, bd, this.getLanguage()); dominiRendicontazione.addDependencyField(rendicontazione); dominiRendicontazione.init(rendicontazioneValues, bd, this.getLanguage()); this.infoCreazioneMap.put(dominiRendicontazioneId, dominiRendicontazione); //seziona versamenti // abilitato String versamentiLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versamenti.label"); CheckButton versamenti = new CheckButton(versamentiId, versamentiLabel, true, false, false, true); this.infoCreazioneMap.put(versamentiId, versamenti); List<RawParamValue> versamentiValues = new ArrayList<RawParamValue>(); versamentiValues.add(new RawParamValue(applicazioneId, null)); versamentiValues.add(new RawParamValue(versamentiId, "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, versamentiValues, this.getLanguage()); trusted.addDependencyField(versamenti); trusted.init(versamentiValues, bd, this.getLanguage()); this.infoCreazioneMap.put(trustedId, trusted); List<RawParamValue> versamentiTrustedValues = new ArrayList<RawParamValue>(); versamentiTrustedValues.addAll(versamentiValues); versamentiTrustedValues.add(new RawParamValue(trustedId, "false")); String tipiTributoVersamentiLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoVersamenti.label"); URI tipiTributoVersamentiRefreshUri = this.getUriField(uriInfo, bd, tipiTributoVersamentiId); TipiTributoVersamenti tipiTributoVersamenti = new TipiTributoVersamenti(this.nomeServizio, tipiTributoVersamentiId, tipiTributoVersamentiLabel, tipiTributoVersamentiRefreshUri, versamentiTrustedValues, bd, this.getLanguage()); tipiTributoVersamenti.addDependencyField(versamenti); tipiTributoVersamenti.addDependencyField(trusted); tipiTributoVersamenti.init(versamentiTrustedValues, bd, this.getLanguage()); this.infoCreazioneMap.put(tipiTributoVersamentiId, tipiTributoVersamenti); String dominiVersamentiLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiVersamenti.label"); URI dominiVersamentiRefreshUri = this.getUriField(uriInfo, bd, dominiVersamentiId); DominiVersamenti dominiVersamenti = new DominiVersamenti(this.nomeServizio, dominiVersamentiId, dominiVersamentiLabel, dominiVersamentiRefreshUri, versamentiValues, bd, this.getLanguage()); dominiVersamenti.addDependencyField(versamenti); dominiVersamenti.addDependencyField(trusted); dominiVersamenti.init(versamentiValues, bd, this.getLanguage()); this.infoCreazioneMap.put(dominiVersamentiId, dominiVersamenti); //seziona incassi // abilitato String incassiLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".incassi.label"); CheckButton incassi = new CheckButton(incassiId, incassiLabel, true, false, false, true); this.infoCreazioneMap.put(incassiId, incassi); List<RawParamValue> incassiValues = new ArrayList<RawParamValue>(); incassiValues.add(new RawParamValue(applicazioneId, null)); incassiValues.add(new RawParamValue(incassiId, "false")); String dominiIncassiLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiIncassi.label"); URI dominiIncassiRefreshUri = this.getUriField(uriInfo, bd, dominiIncassiId); DominiIncassi dominiIncassi = new DominiIncassi(this.nomeServizio, dominiIncassiId, dominiIncassiLabel, dominiIncassiRefreshUri, incassiValues, bd, this.getLanguage()); dominiIncassi.addDependencyField(incassi); dominiIncassi.init(incassiValues, bd, this.getLanguage()); this.infoCreazioneMap.put(dominiIncassiId, dominiIncassi); // codificaApplicazioneInIuv String codificaApplicazioneInIuvLabel = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codificaApplicazioneInIuv.label"); InputText codificaApplicazioneInIuv = new InputText(codificaApplicazioneInIuvId, codificaApplicazioneInIuvLabel, null, false, false, true, 0, 3); codificaApplicazioneInIuv.setValidation("[0-9]{0,3}", Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codificaApplicazioneInIuv.errorMessage")); codificaApplicazioneInIuv.setAvanzata(true); this.infoCreazioneMap.put(codificaApplicazioneInIuvId, codificaApplicazioneInIuv); ConnettoreHandler connettoreVerificaHandler = new ConnettoreHandler(CONNETTORE_VERIFICA, this.nomeServizio, this.pathServizio, this.getLanguage()); List<ParamField<?>> infoCreazioneConnettoreVerifica = connettoreVerificaHandler .getInfoCreazione(uriInfo, bd, true); ConnettoreHandler connettoreNotificaHandler = new ConnettoreHandler(CONNETTORE_NOTIFICA, this.nomeServizio, this.pathServizio, this.getLanguage()); List<ParamField<?>> infoCreazioneConnettoreNotifica = connettoreNotificaHandler .getInfoCreazione(uriInfo, bd, true); for (ParamField<?> par : infoCreazioneConnettoreVerifica) { this.infoCreazioneMap.put(par.getId(), par); } for (ParamField<?> par : infoCreazioneConnettoreNotifica) { this.infoCreazioneMap.put(par.getId(), par); } } } @SuppressWarnings("unchecked") @Override public InfoForm getInfoModifica(UriInfo uriInfo, BasicBD bd, Applicazione 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 codApplicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codApplicazione.id"); String principalId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".principal.id"); String abilitatoId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".abilitato.id"); String applicazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".id.id"); String firmaRichiestaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.id"); String versioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versione.id"); String versamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versamenti.id"); String rendicontazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".rendicontazione.id"); String dominiVersamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiVersamenti.id"); String tipiTributoVersamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoVersamenti.id"); String dominiRendicontazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiRendicontazione.id"); String trustedId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".trusted.id"); String codificaApplicazioneInIuvId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".codificaApplicazioneInIuv.id"); String incassiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".incassi.id"); String dominiIncassiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiIncassi.id"); ConnettoreHandler connettoreVerificaHandler = new ConnettoreHandler(CONNETTORE_VERIFICA, this.nomeServizio, this.pathServizio, this.getLanguage()); List<ParamField<?>> infoModificaConnettoreVerifica = connettoreVerificaHandler .getInfoModifica(uriInfo, bd, entry.getConnettoreVerifica(), entry.getId(), true); ConnettoreHandler connettoreNotificaHandler = new ConnettoreHandler(CONNETTORE_NOTIFICA, this.nomeServizio, this.pathServizio, this.getLanguage()); List<ParamField<?>> infoModificaConnettoreNotifica = connettoreNotificaHandler .getInfoModifica(uriInfo, bd, entry.getConnettoreNotifica(), entry.getId(), true); if (this.infoCreazioneMap == null) { this.initInfoCreazione(uriInfo, bd); } Sezione sezioneRoot = infoModifica.getSezioneRoot(); InputNumber idInterm = (InputNumber) this.infoCreazioneMap.get(applicazioneId); idInterm.setDefaultValue(entry.getId()); sezioneRoot.addField(idInterm); InputText codApplicazione = (InputText) this.infoCreazioneMap.get(codApplicazioneId); codApplicazione.setDefaultValue(entry.getCodApplicazione()); codApplicazione.setEditable(false); sezioneRoot.addField(codApplicazione); InputText principal = (InputText) this.infoCreazioneMap.get(principalId); principal.setDefaultValue(entry.getPrincipal()); sezioneRoot.addField(principal); FirmaRichiesta firmaRichiestaValue = entry.getFirmaRichiesta() != null ? entry.getFirmaRichiesta() : FirmaRichiesta.NESSUNA; SelectList<String> firmaRichiesta = (SelectList<String>) this.infoCreazioneMap .get(firmaRichiestaId); firmaRichiesta.setDefaultValue(firmaRichiestaValue.getCodifica()); sezioneRoot.addField(firmaRichiesta); InputText codificaApplicazioneInIuv = (InputText) this.infoCreazioneMap .get(codificaApplicazioneInIuvId); codificaApplicazioneInIuv.setDefaultValue(entry.getCodApplicazioneIuv()); sezioneRoot.addField(codificaApplicazioneInIuv); // 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 etichettaVersamenti = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.versamenti.titolo"); Sezione sezioneVersamenti = infoModifica.addSezione(etichettaVersamenti); List<Long> idsAclDominiVersamenti = Utils.getIdsFromAcls(entry.getAcls(), Tipo.DOMINIO, Servizio.VERSAMENTI); List<Long> idsAclTributiVersamenti = Utils.getIdsFromAcls(entry.getAcls(), Tipo.TRIBUTO, Servizio.VERSAMENTI); boolean visualizzaVersamenti = idsAclDominiVersamenti.size() > 0 || idsAclTributiVersamenti.size() > 0 || entry.isTrusted(); CheckButton versamenti = (CheckButton) this.infoCreazioneMap.get(versamentiId); versamenti.setDefaultValue(visualizzaVersamenti); sezioneVersamenti.addField(versamenti); List<RawParamValue> versamentiValues = new ArrayList<RawParamValue>(); versamentiValues.add(new RawParamValue(applicazioneId, entry.getId() + "")); versamentiValues.add(new RawParamValue(versamentiId, (visualizzaVersamenti ? "true" : "false"))); Trusted trusted = (Trusted) this.infoCreazioneMap.get(trustedId); trusted.init(versamentiValues, bd, this.getLanguage()); sezioneVersamenti.addField(trusted); List<RawParamValue> versamentiTrustedValues = new ArrayList<RawParamValue>(); versamentiTrustedValues.addAll(versamentiValues); versamentiTrustedValues.add(new RawParamValue(trustedId, (entry.isTrusted() ? "true" : "false"))); TipiTributoVersamenti tipiTributoVersamenti = (TipiTributoVersamenti) this.infoCreazioneMap .get(tipiTributoVersamentiId); tipiTributoVersamenti.init(versamentiTrustedValues, bd, this.getLanguage()); sezioneVersamenti.addField(tipiTributoVersamenti); DominiVersamenti dominiVersamenti = (DominiVersamenti) this.infoCreazioneMap .get(dominiVersamentiId); dominiVersamenti.init(versamentiValues, bd, this.getLanguage()); sezioneVersamenti.addField(dominiVersamenti); String etichettaRendicontazione = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle( this.nomeServizio + ".elementoCorrelato.rendicontazione.titolo"); Sezione sezioneRendicontazione = infoModifica.addSezione(etichettaRendicontazione); List<Long> idsAclDominiRendicontazione = Utils.getIdsFromAcls(entry.getAcls(), Tipo.DOMINIO, Servizio.RENDICONTAZIONE); boolean visualizzaRendicontazione = idsAclDominiRendicontazione.size() > 0; CheckButton rendicontazione = (CheckButton) this.infoCreazioneMap.get(rendicontazioneId); rendicontazione.setDefaultValue(visualizzaRendicontazione); sezioneRendicontazione.addField(rendicontazione); List<RawParamValue> rendicontazioneValues = new ArrayList<RawParamValue>(); rendicontazioneValues.add(new RawParamValue(applicazioneId, entry.getId() + "")); rendicontazioneValues .add(new RawParamValue(rendicontazioneId, (visualizzaRendicontazione ? "true" : "false"))); DominiRendicontazione dominiRendicontazione = (DominiRendicontazione) this.infoCreazioneMap .get(dominiRendicontazioneId); dominiRendicontazione.init(rendicontazioneValues, bd, this.getLanguage()); sezioneRendicontazione.addField(dominiRendicontazione); // sezione incassi List<Long> idsAclDominiIncassi = Utils.getIdsFromAcls(entry.getAcls(), Tipo.DOMINIO, Servizio.INCASSI); boolean visualizzaIncassi = idsAclDominiIncassi.size() > 0; String etichettaIncassi = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.incassi.titolo"); Sezione sezioneIncassi = infoModifica.addSezione(etichettaIncassi); CheckButton incassi = (CheckButton) this.infoCreazioneMap.get(incassiId); incassi.setDefaultValue(visualizzaIncassi); sezioneIncassi.addField(incassi); List<RawParamValue> incassiValues = new ArrayList<RawParamValue>(); incassiValues.add(new RawParamValue(applicazioneId, entry.getId() + "")); incassiValues.add(new RawParamValue(incassiId, (visualizzaIncassi ? "true" : "false"))); DominiIncassi dominiIncassi = (DominiIncassi) this.infoCreazioneMap.get(dominiIncassiId); dominiIncassi.init(incassiValues, bd, this.getLanguage()); sezioneIncassi.addField(dominiIncassi); Sezione sezioneConnettoreVerifica = infoModifica.addSezione(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + "." + CONNETTORE_VERIFICA + ".titolo")); for (ParamField<?> par : infoModificaConnettoreVerifica) { sezioneConnettoreVerifica.addField(par); } Sezione sezioneConnettoreNotifica = infoModifica.addSezione(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + "." + CONNETTORE_NOTIFICA + ".titolo")); for (ParamField<?> par : infoModificaConnettoreNotifica) { sezioneConnettoreNotifica.addField(par); } } } 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, Applicazione 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, Applicazione 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, this.getLanguage()); 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 ApplicazioniBD applicazioniBD = new ApplicazioniBD(bd); Applicazione applicazione = applicazioniBD.getApplicazione(id); InfoForm infoModifica = this.getInfoModifica(uriInfo, bd, applicazione); InfoForm infoCancellazione = this.getInfoCancellazioneDettaglio(uriInfo, bd, applicazione); InfoForm infoEsportazione = this.getInfoEsportazioneDettaglio(uriInfo, bd, applicazione); Dettaglio dettaglio = new Dettaglio(this.getTitolo(applicazione, bd), infoEsportazione, infoCancellazione, infoModifica); it.govpay.web.rs.dars.model.Sezione root = dettaglio.getSezioneRoot(); // dati dell'intermediario root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".codApplicazione.label"), applicazione.getCodApplicazione()); root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".principal.label"), applicazione.getPrincipal()); FirmaRichiesta firmaRichiestaValue = applicazione.getFirmaRichiesta() != null ? applicazione.getFirmaRichiesta() : FirmaRichiesta.NESSUNA; String firmaRichiestaAsString = null; switch (firmaRichiestaValue) { case AVANZATA: firmaRichiestaAsString = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.avanzata"); break; case CA_DES: firmaRichiestaAsString = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.ca_des"); break; case XA_DES: firmaRichiestaAsString = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.xa_des"); break; case NESSUNA: default: firmaRichiestaAsString = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.nessuna"); break; } root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".firmaRichiesta.label"), firmaRichiestaAsString); if (StringUtils.isNotEmpty(applicazione.getCodApplicazioneIuv())) { root.addVoce( Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".codificaApplicazioneInIuv.label"), applicazione.getCodApplicazioneIuv(), true); } root.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".versione.label"), applicazione.getVersione().getLabel(), true); root.addVoce( Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".abilitato.label"), Utils.getSiNoAsLabel(applicazione.isAbilitato())); List<Acl> acls = applicazione.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"); String etichettaVersamenti = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.versamenti.titolo"); it.govpay.web.rs.dars.model.Sezione sezioneVersamenti = dettaglio.addSezione(etichettaVersamenti); List<Long> idTributi = Utils.getIdsFromAcls(acls, Tipo.TRIBUTO, Servizio.VERSAMENTI); 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"); } sezioneVersamenti.addVoce(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".trusted.label"), Utils.getSiNoAsLabel(applicazione.isTrusted())); if (Utils.isEmpty(listaVociTributi)) { if (!applicazione.isTrusted()) { sezioneVersamenti.addVoce(etichettaTipiTributo, valore); } } else { sezioneVersamenti.addVoce(etichettaTipiTributo, null); for (Voce<String> voce : listaVociTributi) { sezioneVersamenti.addVoce(voce); } } List<Long> idDomini = Utils.getIdsFromAcls(acls, Tipo.DOMINIO, Servizio.VERSAMENTI); 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)) { sezioneVersamenti.addVoce(etichettaDomini, valore); } else { sezioneVersamenti.addVoce(etichettaDomini, null); for (Voce<String> voce : listaVociDomini) { sezioneVersamenti.addVoce(voce); } } String etichettaRendicontazione = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.rendicontazione.titolo"); it.govpay.web.rs.dars.model.Sezione sezioneRendicontazione = dettaglio .addSezione(etichettaRendicontazione); idDomini = Utils.getIdsFromAcls(acls, Tipo.DOMINIO, Servizio.RENDICONTAZIONE); 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)) { sezioneRendicontazione.addVoce(etichettaDomini, valore); } else { sezioneRendicontazione.addVoce(etichettaDomini, null); for (Voce<String> voce : listaVociDomini) { sezioneRendicontazione.addVoce(voce); } } String etichettaIncassi = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".elementoCorrelato.incassi.titolo"); it.govpay.web.rs.dars.model.Sezione sezioneIncassi = dettaglio.addSezione(etichettaIncassi); idDomini = Utils.getIdsFromAcls(acls, Tipo.DOMINIO, Servizio.INCASSI); 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)) { sezioneIncassi.addVoce(etichettaDomini, valore); } else { sezioneIncassi.addVoce(etichettaDomini, null); for (Voce<String> voce : listaVociDomini) { sezioneIncassi.addVoce(voce); } } // sezione connettore Connettore connettoreVerifica = applicazione.getConnettoreVerifica(); it.govpay.web.rs.dars.model.Sezione sezioneConnettoreVerifica = dettaglio .addSezione(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + "." + CONNETTORE_VERIFICA + ".titolo")); ConnettoreHandler connettoreVerificaHandler = new ConnettoreHandler(CONNETTORE_VERIFICA, this.nomeServizio, this.pathServizio, this.getLanguage()); connettoreVerificaHandler.fillSezione(sezioneConnettoreVerifica, connettoreVerifica, true); // sezione connettore Connettore connettoreNotifica = applicazione.getConnettoreNotifica(); it.govpay.web.rs.dars.model.Sezione sezioneConnettoreNotifica = dettaglio .addSezione(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + "." + CONNETTORE_NOTIFICA + ".titolo")); ConnettoreHandler connettoreNotificaHandler = new ConnettoreHandler(CONNETTORE_NOTIFICA, this.nomeServizio, this.pathServizio, this.getLanguage()); connettoreNotificaHandler.fillSezione(sezioneConnettoreNotifica, connettoreNotifica, true); 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); Applicazione entry = this.creaEntry(is, uriInfo, bd); this.checkEntry(entry, null); ApplicazioniBD applicazioniBD = new ApplicazioniBD(bd); try { applicazioniBD.getApplicazione(entry.getCodApplicazione()); String msg = Utils.getInstance(this.getLanguage()).getMessageWithParamsFromResourceBundle( this.nomeServizio + ".oggettoEsistente", entry.getCodApplicazione()); throw new DuplicatedEntryException(msg); } catch (NotFoundException e) { } applicazioniBD.insertApplicazione(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); } } @SuppressWarnings("unchecked") @Override public Applicazione creaEntry(InputStream is, UriInfo uriInfo, BasicBD bd) throws WebApplicationException, ConsoleException { String methodName = "creaEntry " + this.titoloServizio; Applicazione entry = null; String rendicontazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".rendicontazione.id"); String versamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versamenti.id"); String dominiRendicontazioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiRendicontazione.id"); String dominiVersamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiVersamenti.id"); String tipiTributoVersamentiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".tipiTributoVersamenti.id"); String versioneId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".versione.id"); String incassiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".incassi.id"); String dominiIncassiId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".dominiIncassi.id"); String tipoSslIdNot = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + "." + CONNETTORE_NOTIFICA + ".tipoSsl.id"); String tipoSslIdVer = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + "." + CONNETTORE_VERIFICA + ".tipoSsl.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(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Utils.copy(is, baos); baos.flush(); baos.close(); Map<String, Class<?>> classMap = new HashMap<String, Class<?>>(); classMap.put(dominiRendicontazioneId, Long.class); classMap.put(dominiVersamentiId, Long.class); classMap.put(tipiTributoVersamentiId, Long.class); classMap.put(dominiIncassiId, Long.class); jsonConfig.setClassMap(classMap); JSONObject jsonObjectApplicazione = JSONObject.fromObject(baos.toString()); List<Acl> lstAclDominiRendicontazione = new ArrayList<Acl>(); if (jsonObjectApplicazione.getBoolean(rendicontazioneId)) { JSONArray jsonDomini = jsonObjectApplicazione.getJSONArray(dominiRendicontazioneId); for (int i = 0; i < jsonDomini.size(); i++) { long idDominio = jsonDomini.getLong(i); Acl acl = new Acl(); acl.setTipo(Tipo.DOMINIO); acl.setServizio(Servizio.RENDICONTAZIONE); if (idDominio > 0) { acl.setIdDominio(idDominio); lstAclDominiRendicontazione.add(acl); } else { lstAclDominiRendicontazione.clear(); lstAclDominiRendicontazione.add(acl); break; } } } // rimuovo gli oggetti della parte rendicontazione jsonObjectApplicazione.remove(rendicontazioneId); jsonObjectApplicazione.remove(dominiRendicontazioneId); List<Acl> lstAclTributiVersamenti = new ArrayList<Acl>(); List<Acl> lstAclDominiVersamenti = new ArrayList<Acl>(); if (jsonObjectApplicazione.getBoolean(versamentiId)) { JSONArray jsonTributi = jsonObjectApplicazione.getJSONArray(tipiTributoVersamentiId); for (int i = 0; i < jsonTributi.size(); i++) { long idTributo = jsonTributi.getLong(i); Acl acl = new Acl(); acl.setTipo(Tipo.TRIBUTO); acl.setServizio(Servizio.VERSAMENTI); if (idTributo > 0) { acl.setIdTributo(idTributo); lstAclTributiVersamenti.add(acl); } else { lstAclTributiVersamenti.clear(); lstAclTributiVersamenti.add(acl); break; } } JSONArray jsonDomini = jsonObjectApplicazione.getJSONArray(dominiVersamentiId); for (int i = 0; i < jsonDomini.size(); i++) { long idDominio = jsonDomini.getLong(i); Acl acl = new Acl(); acl.setTipo(Tipo.DOMINIO); acl.setServizio(Servizio.VERSAMENTI); if (idDominio > 0) { acl.setIdDominio(idDominio); lstAclDominiVersamenti.add(acl); } else { lstAclDominiVersamenti.clear(); lstAclDominiVersamenti.add(acl); break; } } } // rimuovo gli oggetti della parte versamenti jsonObjectApplicazione.remove(versamentiId); jsonObjectApplicazione.remove(tipiTributoVersamentiId); jsonObjectApplicazione.remove(dominiVersamentiId); // Incassi List<Acl> lstAclDominiIncassi = new ArrayList<Acl>(); if (jsonObjectApplicazione.getBoolean(incassiId)) { JSONArray jsonDomini = jsonObjectApplicazione.getJSONArray(dominiIncassiId); for (int i = 0; i < jsonDomini.size(); i++) { long idDominio = jsonDomini.getLong(i); Acl acl = new Acl(); acl.setTipo(Tipo.DOMINIO); acl.setServizio(Servizio.INCASSI); if (idDominio > 0) { acl.setIdDominio(idDominio); lstAclDominiIncassi.add(acl); } else { lstAclDominiIncassi.clear(); lstAclDominiIncassi.add(acl); break; } } } // rimuovo gli oggetti della parte incassi jsonObjectApplicazione.remove(incassiId); jsonObjectApplicazione.remove(dominiIncassiId); Versione versione = this.getVersioneSelezionata(jsonObjectApplicazione, versioneId, true); jsonConfig.setRootClass(Applicazione.class); entry = (Applicazione) JSONObject.toBean(jsonObjectApplicazione, jsonConfig); entry.setVersione(versione); entry.setAcls(lstAclDominiRendicontazione); entry.getAcls().addAll(lstAclTributiVersamenti); entry.getAcls().addAll(lstAclDominiVersamenti); entry.getAcls().addAll(lstAclDominiIncassi); String firmaRichiestaId = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".firmaRichiesta.id"); String codFirma = jsonObjectApplicazione.getString(firmaRichiestaId); if (codFirma != null) { FirmaRichiesta enum1 = FirmaRichiesta.toEnum(codFirma); entry.setFirmaRichiesta(enum1); } String tipoSslNot = jsonObjectApplicazione.containsKey(tipoSslIdNot) ? jsonObjectApplicazione.getString(tipoSslIdNot) : null; if (tipoSslNot != null) { jsonObjectApplicazione.remove(tipoSslIdNot); } String tipoSslVer = jsonObjectApplicazione.containsKey(tipoSslIdVer) ? jsonObjectApplicazione.getString(tipoSslIdVer) : null; if (tipoSslVer != null) { jsonObjectApplicazione.remove(tipoSslIdVer); } String cvPrefix = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + "." + CONNETTORE_VERIFICA + ".idPrefix"); JSONObject jsonObjectCV = new JSONObject(); String cnPrefix = Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + "." + CONNETTORE_NOTIFICA + ".idPrefix"); JSONObject jsonObjectCN = new JSONObject(); Set<String> keySet = jsonObjectApplicazione.keySet(); for (String key : keySet) { if (key.startsWith(cvPrefix)) { jsonObjectCV.put(key.substring(key.indexOf(cvPrefix) + cvPrefix.length()), jsonObjectApplicazione.get(key)); } if (key.startsWith(cnPrefix)) { jsonObjectCN.put(key.substring(key.indexOf(cnPrefix) + cnPrefix.length()), jsonObjectApplicazione.get(key)); } } jsonConfig.setRootClass(Connettore.class); Connettore cv = (Connettore) JSONObject.toBean(jsonObjectCV, jsonConfig); if (StringUtils.isNotEmpty(tipoSslVer)) { cv.setTipoSsl(EnumSslType.valueOf(tipoSslVer)); } entry.setConnettoreVerifica(cv); Connettore cn = (Connettore) JSONObject.toBean(jsonObjectCN, jsonConfig); if (StringUtils.isNotEmpty(tipoSslNot)) { cn.setTipoSsl(EnumSslType.valueOf(tipoSslNot)); } entry.setConnettoreNotifica(cn); this.log.info("Esecuzione " + methodName + " completata."); return entry; } catch (WebApplicationException e) { throw e; } catch (Exception e) { throw new ConsoleException(e); } } @Override public void checkEntry(Applicazione entry, Applicazione oldEntry) throws ValidationException { if (entry == null || StringUtils.isEmpty(entry.getCodApplicazione())) { throw new ValidationException(Utils.getInstance(this.getLanguage()).getMessageFromResourceBundle( this.nomeServizio + ".creazione.erroreCodApplicazioneObbligatorio")); } if (entry.getPrincipal() == null || entry.getPrincipal().isEmpty()) { throw new ValidationException(Utils.getInstance(this.getLanguage()) .getMessageFromResourceBundle(this.nomeServizio + ".creazione.errorePrincipalObbligatorio")); } Connettore connettoreNotifica = entry.getConnettoreNotifica(); ConnettoreHandler connettoreNotificaHandler = new ConnettoreHandler(CONNETTORE_NOTIFICA, this.titoloServizio, this.pathServizio, this.getLanguage()); connettoreNotificaHandler.valida(connettoreNotifica, true); Connettore connettoreVerifica = entry.getConnettoreVerifica(); ConnettoreHandler connettoreVerificaHandler = new ConnettoreHandler(CONNETTORE_VERIFICA, this.titoloServizio, this.pathServizio, this.getLanguage()); connettoreVerificaHandler.valida(connettoreVerifica, true); if (oldEntry != null) { //caso update if (!oldEntry.getCodApplicazione().equals(entry.getCodApplicazione())) { throw new ValidationException( Utils.getInstance(this.getLanguage()).getMessageWithParamsFromResourceBundle( this.nomeServizio + ".aggiornamento.erroreCodApplicazioneNonCoincide", oldEntry.getCodApplicazione(), entry.getCodApplicazione())); } } } @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); Applicazione entry = this.creaEntry(is, uriInfo, bd); ApplicazioniBD applicazioniBD = new ApplicazioniBD(bd); Applicazione oldEntry = applicazioniBD.getApplicazione(entry.getCodApplicazione()); this.checkEntry(entry, oldEntry); applicazioniBD.updateApplicazione(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(Applicazione entry, BasicBD bd) throws ConsoleException { StringBuilder sb = new StringBuilder(); sb.append(entry.getCodApplicazione()); return sb.toString(); } @Override public String getSottotitolo(Applicazione entry, BasicBD bd) throws ConsoleException { StringBuilder sb = new StringBuilder(); sb.append(Utils.getAbilitatoAsLabel(entry.isAbilitato())); return sb.toString(); } @Override public Map<String, Voce<String>> getVoci(Applicazione 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; } }