Skip to content

Commit

Permalink
[GovWayConsole]
Browse files Browse the repository at this point in the history
(#63 e #64)
Aggiunta la possibilità di modificare il soggetto erogatore nelle fruizioni e nelle erogazioni.
Nell'intervento sono stati risolti anche le seguenti anomalie:
- Cambio di versione di una API: venivano erroneamente proposte anche le versioni di API incomplete o che non contenevano lo stesso port-type nel caso di API SOAP. Inoltre non veniva verificato che la nuova versione possedesse tutte le operazioni riferite puntualmente in gruppi, nei criteri di applicabilità delle trasformazioni o nei filtri di policy di RateLimiting.
- Durante la creazione di un nuovo gruppo, non veniva verificato se l'azione associata al gruppo fosse già riferita puntualmente nei criteri di applicabilità delle trasformazioni del grupppo Predefinito.
- La seguente combinazione di configurazioni portava ad un errore inatteso della console:
  . Creazione di un gruppo specifico per l'erogazione
  . Tramite l'interfaccia in modalità avanzata ridefinire il connettore per il nuovo gruppo associando al connettore un applicativo di tipo server.
  . Si ripristina il connettore del nuovo gruppo ripristinando il connettore del gruppo Predefinito.
  . Provando nuovamente a ridefinire il connettore per il gruppo la console terminava con un errore inatteso poichè la precedente operazione non aveva eliminato su database l'applicativo interno.
  • Loading branch information
andreapoli committed Nov 28, 2020
1 parent 5d0be4b commit 54f884e
Show file tree
Hide file tree
Showing 14 changed files with 1,035 additions and 79 deletions.
21 changes: 21 additions & 0 deletions ChangeLog
@@ -1,3 +1,24 @@
2020-11-28 Andrea Poli <apoli@link.it>

* [GovWayConsole]
Aggiunta funzionalità OP-1113
(https://github.com/link-it/govway/issues/63 e https://github.com/link-it/govway/issues/64)
Aggiunta la possibilità di modificare il soggetto erogatore nelle fruizioni e nelle erogazioni.
Nell'intervento sono stati risolti anche le seguenti anomalie:
- Cambio di versione di una API: venivano erroneamente proposte anche le versioni di API incomplete o che non contenevano lo stesso port-type nel caso di API SOAP.
Inoltre non veniva verificato che la nuova versione possedesse tutte le operazioni riferite puntualmente in gruppi, nei criteri di applicabilità delle trasformazioni o nei filtri di policy di RateLimiting.
- Durante la creazione di un nuovo gruppo, non veniva verificato se l'azione associata al gruppo fosse già riferita puntualmente nei criteri di applicabilità delle trasformazioni del grupppo Predefinito.
- La seguente combinazione di configurazioni portava ad un errore inatteso della console:
. Creazione di un gruppo specifico per l'erogazione
. Tramite l'interfaccia in modalità avanzata ridefinire il connettore per il nuovo gruppo associando al connettore un applicativo di tipo server.
. Si ripristina il connettore del nuovo gruppo ripristinando il connettore del gruppo Predefinito.
. Provando nuovamente a ridefinire il connettore per il gruppo la console terminava con un errore inatteso poichè la precedente operazione non aveva eliminato su database l'applicativo interno.

2020-11-27 Andrea Poli <apoli@link.it>

* [GovWayCore]
Risolto Bug sul Timer 'FileSystem Recovery' che tentava di ripristinare le transazioni aggiungendo un evento che causava l'errore: "il valore è troppo lungo per il tipo character varying(20)"

2020-11-26 Andrea Poli <apoli@link.it>

* [GovWayCore]
Expand Down
Expand Up @@ -1522,7 +1522,9 @@ public static long CRUDPortaDelegata(int type, PortaDelegata aPD, Connection con
PortaDelegataSoggettoErogatore soggErogatore = aPD.getSoggettoErogatore();
long idSoggettoErogatore = ((soggErogatore != null && soggErogatore.getId() != null) ? soggErogatore.getId() : -1);
//System.out.println("PRIMA PD SOGGETTO: "+idSoggettoErogatore);
if(idSoggettoErogatore<=0 && soggErogatore!=null && soggErogatore.getTipo()!=null && soggErogatore.getNome()!=null) {
// SEMPRE, VA AGGIORNATO ANCHE IN UPDATE if(idSoggettoErogatore<=0 &&
if(
soggErogatore!=null && soggErogatore.getTipo()!=null && soggErogatore.getNome()!=null) {
try {
idSoggettoErogatore = DBUtils.getIdSoggetto(soggErogatore.getNome(), soggErogatore.getTipo(), con, DriverConfigurazioneDB_LIB.tipoDB,DriverConfigurazioneDB_LIB.tabellaSoggetti);
//System.out.println("DOPO PD SOGGETTO: "+idSoggettoErogatore);
Expand All @@ -1534,7 +1536,9 @@ public static long CRUDPortaDelegata(int type, PortaDelegata aPD, Connection con
PortaDelegataServizio servizio = aPD.getServizio();
long idServizioPD = ((servizio != null && servizio.getId() != null) ? servizio.getId() : -1);
//System.out.println("PRIMA PD: "+idServizioPD);
if(idServizioPD<=0 && idSoggettoErogatore>0 && servizio!=null && servizio.getTipo()!=null && servizio.getNome()!=null && servizio.getVersione()!=null && servizio.getVersione()>0) {
// SEMPRE, VA AGGIORNATO ANCHE IN UPDATE if(idServizioPD<=0 &&
if(
idSoggettoErogatore>0 && servizio!=null && servizio.getTipo()!=null && servizio.getNome()!=null && servizio.getVersione()!=null && servizio.getVersione()>0) {
try {
idServizioPD = DBUtils.getIdServizio(servizio.getNome(), servizio.getTipo(), servizio.getVersione(), idSoggettoErogatore, con, DriverConfigurazioneDB_LIB.tipoDB,DriverConfigurazioneDB_LIB.tabellaSoggetti);
//System.out.println("DOPO PD: "+idServizioPD);
Expand Down Expand Up @@ -4564,7 +4568,9 @@ public static long CRUDPortaApplicativa(int type, PortaApplicativa aPA, Connecti
PortaApplicativaServizio servizio = aPA.getServizio();
long idServizio = ((servizio != null && servizio.getId() != null) ? servizio.getId() : -1);
//System.out.println("PRIMA PA: "+idServizio);
if(idServizio<=0 && servizio!=null && servizio.getTipo()!=null && servizio.getNome()!=null && servizio.getVersione()!=null && servizio.getVersione()>0) {
// SEMPRE, VA AGGIORNATO ANCHE IN UPDATE if(idServizio<=0 &&
if(
servizio!=null && servizio.getTipo()!=null && servizio.getNome()!=null && servizio.getVersione()!=null && servizio.getVersione()>0) {
try {
idServizio = DBUtils.getIdServizio(servizio.getNome(), servizio.getTipo(), servizio.getVersione(), nomeProprietario, tipoProprietario, con, DriverConfigurazioneDB_LIB.tipoDB,DriverConfigurazioneDB_LIB.tabellaSoggetti);
//System.out.println("DOPO PA: "+idServizio);
Expand Down
Expand Up @@ -583,12 +583,18 @@ public static final ApiItem apiToItem(Api api, AccordoServizioParteComuneSinteti
stato = StatoApiEnum.ERROR;
descrizioneStato = ApiCostanti.APC_API_ICONA_STATO_SERVIZI_TUTTI_DISABILITATI_TOOLTIP;
}
else if(numeroTotaleServizi==1 && numeroServiziAbilitati==0) {
else if(numeroServiziAbilitati==0) {
stato = StatoApiEnum.ERROR;
descrizioneStato = ApiCostanti.APC_API_ICONA_STATO_SERVIZIO_PARZIALMENTE_CONFIGURATO_DISABILITATI_TOOLTIP;
if(numeroTotaleServizi==1) {
descrizioneStato = ApiCostanti.APC_API_ICONA_STATO_SERVIZIO_PARZIALMENTE_CONFIGURATO_DISABILITATI_TOOLTIP;
}
else {
descrizioneStato = ApiCostanti.APC_API_ICONA_STATO_SERVIZI_TUTTI_SENZA_AZIONE_TOOLTIP;
}
} else if(numeroServiziAbilitati == numeroTotaleServizi) {
stato = StatoApiEnum.OK;
} else {
}
else {
stato = StatoApiEnum.WARN;
descrizioneStato = ApiCostanti.APC_API_ICONA_STATO_SERVIZI_PARZIALMENTE_ABILITATI_TOOLTIP;
}
Expand Down
Expand Up @@ -1955,8 +1955,10 @@ public final static String getLABEL_PORTE_CORRELAZIONE_APPLICATIVA_ATTENZIONE_ME
public static final String MESSAGGIO_ERRORE_REGOLA_TRASFORMAZIONE_APPLICABILITA_NOME = "&Egrave; gi&agrave; presente una regola di trasformazione con il nome indicato.";
public static final String MESSAGGIO_ERRORE_REGOLA_TRASFORMAZIONE_APPLICABILITA_DUPLICATA_APPLICATIVO = "&Egrave; gi&agrave; presente una regola di trasformazione, con gli stessi parametri di applicabilit&agrave; e l'applicativo selezionato.";
public static final String MESSAGGIO_ERRORE_REGOLA_TRASFORMAZIONE_APPLICABILITA_DUPLICATA_SOGGETTO = "&Egrave; gi&agrave; presente una regola di trasformazione, con gli stessi parametri di applicabilit&agrave; e il soggetto selezionato.";
public static final String MESSAGGIO_ERRORE_AZIONE_NON_ASSEGNABILE = "Azione {0} non assegnabile poich&egrave; utilizzata come filtro della policy di rate limiting ''{1}''";
public static final String MESSAGGIO_ERRORE_AZIONE_NON_ASSEGNABILE_GRUPPO = "Azione {0} non assegnabile poich&egrave; utilizzata come filtro della policy di rate limiting ''{1}'' (gruppo: {2})";
public static final String MESSAGGIO_ERRORE_AZIONE_NON_ASSEGNABILE = "Operazione {0} non assegnabile poich&egrave; utilizzata come filtro della policy di rate limiting ''{1}''";
public static final String MESSAGGIO_ERRORE_AZIONE_NON_ASSEGNABILE_GRUPPO = "Operazione {0} non assegnabile poich&egrave; utilizzata come filtro della policy di rate limiting ''{1}'' (gruppo: {2})";
public static final String MESSAGGIO_ERRORE_AZIONE_NON_ASSEGNABILE_TRASFORMAZIONE = "Operazione {0} non assegnabile poich&egrave; utilizzata nel criterio di applicabilità della regola di trasformazione ''{1}''";
public static final String MESSAGGIO_ERRORE_AZIONE_NON_ASSEGNABILE_TRASFORMAZIONE_GRUPPO = "Operazione {0} non assegnabile poich&egrave; utilizzata nel criterio di applicabilità della regola di trasformazione ''{1}'' (gruppo: {2})";

public static final String MESSAGGIO_ERRORE_AUTENTICAZIONE_CUSTOM_NON_INDICATA = "Dati incompleti. Definire almeno un valore per il controllo di autenticazione di tipo custom";
public static final String MESSAGGIO_ERRORE_AUTORIZZAZIONE_CUSTOM_NON_INDICATA = "Dati incompleti. Definire almeno un valore per il controllo di autorizzazione di tipo custom";
Expand Down
Expand Up @@ -15349,7 +15349,8 @@ public boolean checkAzioniUtilizzateErogazioneRateLimiting(List<MappingErogazion
for (MappingErogazionePortaApplicativa mappingErogazionePortaApplicativa : list) {
IDPortaApplicativa idPA = mappingErogazionePortaApplicativa.getIdPortaApplicativa();
List<AttivazionePolicy> listPolicies = this.confCore.attivazionePolicyList(null, RuoloPolicy.APPLICATIVA, idPA.getNome());
if(this._checkAzioniUtilizzateRateLimiting(listPolicies, azioni,
PortaApplicativa pa = this.porteApplicativeCore.getPortaApplicativa(idPA);
if(this._checkAzioniUtilizzateRateLimiting(listPolicies, pa.getTrasformazioni(), azioni,
mappingErogazionePortaApplicativa.getDescrizione(), list.size())==false) {
return false;
}
Expand All @@ -15371,7 +15372,8 @@ public boolean checkAzioniUtilizzateFruizioneRateLimiting(List<MappingFruizioneP
for (MappingFruizionePortaDelegata mappingFruizionePortaDelegata : list) {
IDPortaDelegata idPD = mappingFruizionePortaDelegata.getIdPortaDelegata();
List<AttivazionePolicy> listPolicies = this.confCore.attivazionePolicyList(null, RuoloPolicy.DELEGATA, idPD.getNome());
if(this._checkAzioniUtilizzateRateLimiting(listPolicies, azioni,
PortaDelegata pd = this.porteDelegateCore.getPortaDelegata(idPD);
if(this._checkAzioniUtilizzateRateLimiting(listPolicies, pd.getTrasformazioni(), azioni,
mappingFruizionePortaDelegata.getDescrizione(), list.size())==false) {
return false;
}
Expand All @@ -15381,7 +15383,7 @@ public boolean checkAzioniUtilizzateFruizioneRateLimiting(List<MappingFruizioneP
return true;
}

private boolean _checkAzioniUtilizzateRateLimiting(List<AttivazionePolicy> listPolicies, String [] azioni, String descrizioneGruppo, int sizeGruppi) {
private boolean _checkAzioniUtilizzateRateLimiting(List<AttivazionePolicy> listPolicies, Trasformazioni trasformazioni, String [] azioni, String descrizioneGruppo, int sizeGruppi) {
if(listPolicies!=null && !listPolicies.isEmpty()) {
for (AttivazionePolicy policy : listPolicies) {
if(policy.getFiltro()!=null && policy.getFiltro().getAzione()!=null) {
Expand All @@ -15405,6 +15407,31 @@ private boolean _checkAzioniUtilizzateRateLimiting(List<AttivazionePolicy> listP
}
}
}
List<TrasformazioneRegola> trasformazione = null;
if(trasformazioni!=null) {
trasformazione = trasformazioni.getRegolaList();
}
if(trasformazione!=null && !trasformazione.isEmpty()) {
for (TrasformazioneRegola regola : trasformazione) {
if(regola.getApplicabilita()!=null && regola.getApplicabilita().sizeAzioneList()>0) {
List<String> azioniTrasf = regola.getApplicabilita().getAzioneList();
for (String azioneTmp : azioni) {
if(azioniTrasf.contains(azioneTmp)) {
String nomeRegola = regola.getNome();
if(sizeGruppi>1) {
this.pd.setMessage(MessageFormat.format(CostantiControlStation.MESSAGGIO_ERRORE_AZIONE_NON_ASSEGNABILE_TRASFORMAZIONE_GRUPPO,
azioneTmp, nomeRegola, descrizioneGruppo));
}
else {
this.pd.setMessage(MessageFormat.format(CostantiControlStation.MESSAGGIO_ERRORE_AZIONE_NON_ASSEGNABILE_TRASFORMAZIONE,
azioneTmp, nomeRegola, descrizioneGruppo));
}
return false;
}
}
}
}
}
return true;
}

Expand Down
Expand Up @@ -84,6 +84,7 @@ public class ApiCostanti extends AccordiServizioParteComuneCostanti {

public final static String APC_API_ICONA_STATO_SERVIZI_TUTTI_ABILITATI_TOOLTIP = "API correttamente configurata";
public final static String APC_API_ICONA_STATO_SERVIZI_PARZIALMENTE_ABILITATI_TOOLTIP = "Per alcuni servizi dell'API non sono state configurate azioni";
public final static String APC_API_ICONA_STATO_SERVIZI_TUTTI_SENZA_AZIONE_TOOLTIP = "Tutti i servizi dell'API non possiedono azioni";
public final static String APC_API_ICONA_STATO_SERVIZI_TUTTI_DISABILITATI_TOOLTIP = "Nessun servizio configurato sull'API";
public final static String APC_API_ICONA_STATO_SERVIZIO_PARZIALMENTE_CONFIGURATO_DISABILITATI_TOOLTIP = "Nessun'azione configurata sul servizio dell'API";

Expand Down
Expand Up @@ -292,10 +292,15 @@ public void prepareApiList(List<AccordoServizioParteComuneSintetico> lista, ISea
de.setStatusType(CheckboxStatusType.DISABILITATO);
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZI_TUTTI_DISABILITATI_TOOLTIP);
}
else if(numeroTotaleServizi==1 && numeroServiziAbilitati==0) {
else if(numeroServiziAbilitati==0) {
de.setStatusType(CheckboxStatusType.DISABILITATO);
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZIO_PARZIALMENTE_CONFIGURATO_DISABILITATI_TOOLTIP);
}
if(numeroTotaleServizi==1) {
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZIO_PARZIALMENTE_CONFIGURATO_DISABILITATI_TOOLTIP);
}
else {
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZI_TUTTI_SENZA_AZIONE_TOOLTIP);
}
}
else if(numeroServiziAbilitati == numeroTotaleServizi) {
de.setStatusType(CheckboxStatusType.ABILITATO);
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZI_TUTTI_ABILITATI_TOOLTIP);
Expand Down Expand Up @@ -496,10 +501,15 @@ private Vector<Vector<DataElement>> addApiToDati(Vector<Vector<DataElement>> dat
de.setStatusType(CheckboxStatusType.DISABILITATO);
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZI_TUTTI_DISABILITATI_TOOLTIP);
}
else if(numeroTotaleServizi==1 && numeroServiziAbilitati==0) {
else if(numeroServiziAbilitati==0) {
de.setStatusType(CheckboxStatusType.DISABILITATO);
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZIO_PARZIALMENTE_CONFIGURATO_DISABILITATI_TOOLTIP);
}
if(numeroTotaleServizi==1) {
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZIO_PARZIALMENTE_CONFIGURATO_DISABILITATI_TOOLTIP);
}
else {
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZI_TUTTI_SENZA_AZIONE_TOOLTIP);
}
}
else if(numeroServiziAbilitati == numeroTotaleServizi) {
de.setStatusType(CheckboxStatusType.ABILITATO);
de.setStatusToolTip(ApiCostanti.APC_API_ICONA_STATO_SERVIZI_TUTTI_ABILITATI_TOOLTIP);
Expand Down

0 comments on commit 54f884e

Please sign in to comment.