ArchiveAccordoServizioComposto.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.protocol.sdk.archive;

  21. import java.util.ArrayList;
  22. import java.util.List;

  23. import org.openspcoop2.core.id.IDAccordoCooperazione;
  24. import org.openspcoop2.core.id.IDServizio;
  25. import org.openspcoop2.core.id.IDSoggetto;
  26. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  27. import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioCompostoServizioComponente;
  28. import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
  29. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  30. import org.openspcoop2.protocol.sdk.ProtocolException;

  31. /**
  32.  * ArchiveAccordoServizioComposto
  33.  *
  34.  * @author Poli Andrea (apoli@link.it)
  35.  * @author $Author$
  36.  * @version $Rev$, $Date$
  37.  */
  38. public class ArchiveAccordoServizioComposto extends ArchiveAccordoServizioParteComune {

  39.     public static String buildKey(String tipoSoggetto,String nomeSoggetto,String nomeAccordo,Integer versione) throws ProtocolException{
  40.        
  41.         if(tipoSoggetto==null){
  42.             throw new ProtocolException("tipoSoggetto non fornito");
  43.         }
  44.         if(nomeSoggetto==null){
  45.             throw new ProtocolException("nomeSoggetto non fornito");
  46.         }
  47.         if(nomeAccordo==null){
  48.             throw new ProtocolException("nomeAccordo non fornito");
  49.         }
  50.         if(versione==null){
  51.             throw new ProtocolException("versione non fornita");
  52.         }
  53.        
  54.         StringBuilder bf = new StringBuilder();
  55.         bf.append("AccordoServizioComposto_");
  56.         bf.append(tipoSoggetto);
  57.         bf.append("/");
  58.         bf.append(nomeSoggetto);
  59.         bf.append("_");
  60.         bf.append(nomeAccordo);
  61.         bf.append("_");
  62.         bf.append(versione);
  63.         return bf.toString();
  64.     }
  65.    
  66.     @Override
  67.     public String key() throws ProtocolException {
  68.         String tipoSoggetto = "-";
  69.         String nomeSoggetto = "-";
  70.         String nomeAccordo = this.accordoServizioParteComune.getNome();
  71.         Integer versione = null;
  72.         if(this.accordoServizioParteComune.getSoggettoReferente()!=null){
  73.             if(this.accordoServizioParteComune.getSoggettoReferente().getTipo()!=null){
  74.                 tipoSoggetto = this.accordoServizioParteComune.getSoggettoReferente().getTipo();
  75.             }
  76.             if(this.accordoServizioParteComune.getSoggettoReferente().getNome()!=null){
  77.                 nomeSoggetto = this.accordoServizioParteComune.getSoggettoReferente().getNome();
  78.             }
  79.         }
  80.         if(this.accordoServizioParteComune.getVersione()!=null){
  81.             versione = this.accordoServizioParteComune.getVersione();
  82.         }
  83.         return ArchiveAccordoServizioComposto.buildKey(tipoSoggetto, nomeSoggetto,
  84.                 nomeAccordo,versione);
  85.     }
  86.    
  87.    
  88.     private IDAccordoCooperazione idAccordoCooperazione;
  89.     private List<IDServizio> idServiziComponenti = null;
  90.        

  91.     public ArchiveAccordoServizioComposto(IDSoggetto idSoggettoProprietario,AccordoServizioParteComune accordoServizioParteComune, ArchiveIdCorrelazione idCorrelazione)throws ProtocolException {
  92.         super(idSoggettoProprietario, accordoServizioParteComune,idCorrelazione);
  93.         this.idServiziComponenti = new ArrayList<IDServizio>();
  94.     }
  95.     public ArchiveAccordoServizioComposto(IDSoggetto idSoggettoProprietario,AccordoServizioParteComune accordoServizioParteComune,
  96.             ArchiveIdCorrelazione idCorrelazione,
  97.             boolean informationMissingManagementEnabled) throws ProtocolException {
  98.         super(idSoggettoProprietario, accordoServizioParteComune,idCorrelazione,informationMissingManagementEnabled);
  99.         this.idServiziComponenti = new ArrayList<IDServizio>();
  100.     }
  101.     public ArchiveAccordoServizioComposto(AccordoServizioParteComune accordoServizioParteComune, ArchiveIdCorrelazione idCorrelazione) throws ProtocolException {
  102.         super(accordoServizioParteComune,idCorrelazione);
  103.         this.idServiziComponenti = new ArrayList<IDServizio>();
  104.     }
  105.     public ArchiveAccordoServizioComposto(AccordoServizioParteComune accordoServizioParteComune,
  106.             ArchiveIdCorrelazione idCorrelazione,
  107.             boolean informationMissingManagementEnabled) throws ProtocolException {
  108.         super(accordoServizioParteComune,idCorrelazione, informationMissingManagementEnabled);
  109.         this.idServiziComponenti = new ArrayList<IDServizio>();
  110.     }
  111.    
  112.    
  113.     @Override
  114.     public void update(AccordoServizioParteComune accordoServizioComposto, boolean informationMissingManagementEnabled) throws ProtocolException{
  115.        
  116.         super.update(accordoServizioComposto, informationMissingManagementEnabled);
  117.        
  118.         if(accordoServizioComposto.getServizioComposto()==null){
  119.             throw new ProtocolException("AccordoServizioComposto.servizioComposto non definito");
  120.         }
  121.         if(accordoServizioComposto.getServizioComposto().getAccordoCooperazione()==null){
  122.             throw new ProtocolException("AccordoServizioComposto.servizioComposto.nomeAccordoCooperazione non definito");
  123.         }
  124.         try{
  125.             this.idAccordoCooperazione = IDAccordoCooperazioneFactory.getInstance().getIDAccordoFromUri(accordoServizioComposto.getServizioComposto().getAccordoCooperazione());
  126.         }catch(Exception e){
  127.             throw new ProtocolException(e.getMessage(),e);
  128.         }
  129.        
  130.         // Questo controllo non ci vuole. Altrimenti non e' possibile esportare un accordo che non possiede servizi composti
  131.         // Comunque il controllo viene effettuato quando si cerca di portare un accordo allo stato finale.
  132. //      if(accordoServizioComposto.getServizioComposto().getServizioComponenteList().size()<=1){
  133. //          throw new ProtocolException("AccordoServizioComposto.servizioComposto.serviziComponenti trovati "+accordoServizioComposto.getServizioComposto().getServizioComponenteList().size()+" servizi, ne sono richiesti almeno 2");
  134. //      }
  135.         for (int i = 0; i < accordoServizioComposto.getServizioComposto().getServizioComponenteList().size(); i++) {
  136.             if(this.idServiziComponenti==null){
  137.                 this.idServiziComponenti = new ArrayList<IDServizio>();
  138.             }
  139.             AccordoServizioParteComuneServizioCompostoServizioComponente sComponente = accordoServizioComposto.getServizioComposto().getServizioComponenteList().get(i);
  140.             if(sComponente==null){
  141.                 throw new ProtocolException("AccordoServizioComposto.servizioComposto.serviziComponente["+i+"] non definito");
  142.             }
  143.             if(sComponente.getTipo()==null){
  144.                 throw new ProtocolException("AccordoServizioComposto.servizioComposto.serviziComponente["+i+"].tipo non definito");
  145.             }
  146.             if(sComponente.getNome()==null){
  147.                 throw new ProtocolException("AccordoServizioComposto.servizioComposto.serviziComponente["+i+"].nome non definito");
  148.             }
  149.             if(sComponente.getTipoSoggetto()==null){
  150.                 throw new ProtocolException("AccordoServizioComposto.servizioComposto.serviziComponente["+i+"].tipoSoggetto non definito");
  151.             }
  152.             if(sComponente.getNomeSoggetto()==null){
  153.                 throw new ProtocolException("AccordoServizioComposto.servizioComposto.serviziComponente["+i+"].nomeSoggetto non definito");
  154.             }
  155.             try{
  156.                 IDServizio idServizioComponente = IDServizioFactory.getInstance().getIDServizioFromValues(sComponente.getTipo(), sComponente.getNome(),
  157.                         sComponente.getTipoSoggetto(), sComponente.getNomeSoggetto(),
  158.                         sComponente.getVersione());
  159.                 idServizioComponente.setAzione(sComponente.getAzione());
  160.                 this.idServiziComponenti.add(idServizioComponente);
  161.             }catch(Exception e){
  162.                 throw new ProtocolException(e.getMessage(),e);
  163.             }
  164.         }
  165.        
  166.     }
  167.    
  168.    
  169.    
  170.     public IDAccordoCooperazione getIdAccordoCooperazione() {
  171.         return this.idAccordoCooperazione;
  172.     }
  173.     public List<IDServizio> getIdServiziComponenti() {
  174.         return this.idServiziComponenti;
  175.     }


  176. }