ConfigurazionePluginsTipoPluginUtils.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.web.ctrlstat.servlet.config;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.openspcoop2.core.commons.Filtri;
import org.openspcoop2.core.commons.ISearch;
import org.openspcoop2.core.commons.SearchUtils;
import org.openspcoop2.core.config.constants.PluginCostanti;
import org.openspcoop2.core.plugins.Plugin;
import org.openspcoop2.core.plugins.PluginProprietaCompatibilita;
import org.openspcoop2.core.plugins.constants.TipoPlugin;
import org.openspcoop2.pdd.core.dynamic.DynamicHelperCostanti;
import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
import org.openspcoop2.web.lib.mvc.DataElement;
import org.openspcoop2.web.lib.mvc.DataElementInfo;
import org.openspcoop2.web.lib.mvc.DataElementType;
import org.openspcoop2.web.lib.mvc.PageData;
import org.slf4j.Logger;
/**
* ConfigurazionePluginsTipoPluginUtils
*
* @author Poli Andrea (poli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ConfigurazionePluginsTipoPluginUtils {
private ConfigurazionePluginsTipoPluginUtils() {}
public static final boolean ADD_TRANSAZIONI = false;
public static final boolean ADD_RICERCHE = false;
public static final boolean ADD_STATISTICHE = false;
public static List<String> getValuesTipoPlugin(boolean addAllarmi) {
List<String> valori = new ArrayList<>();
valori.add(TipoPlugin.AUTENTICAZIONE.toString());
valori.add(TipoPlugin.AUTORIZZAZIONE.toString());
valori.add(TipoPlugin.AUTORIZZAZIONE_CONTENUTI.toString());
valori.add(TipoPlugin.RATE_LIMITING.toString());
if(addAllarmi) {
valori.add(TipoPlugin.ALLARME.toString());
}
valori.add(TipoPlugin.INTEGRAZIONE.toString());
valori.add(TipoPlugin.CONNETTORE.toString());
valori.add(TipoPlugin.BEHAVIOUR.toString());
valori.add(TipoPlugin.MESSAGE_HANDLER.toString());
valori.add(TipoPlugin.SERVICE_HANDLER.toString());
valori.add(TipoPlugin.TOKEN_DYNAMIC_DISCOVERY.toString());
valori.add(TipoPlugin.TOKEN_VALIDAZIONE.toString());
valori.add(TipoPlugin.TOKEN_NEGOZIAZIONE.toString());
valori.add(TipoPlugin.ATTRIBUTE_AUTHORITY.toString());
if(ADD_RICERCHE) {
valori.add(TipoPlugin.RICERCA.toString());
}
if(ADD_STATISTICHE) {
valori.add(TipoPlugin.STATISTICA.toString());
}
if(ADD_TRANSAZIONI) {
valori.add(TipoPlugin.TRANSAZIONE.toString());
}
return valori;
}
public static List<String> getLabelsTipoPlugin(boolean addAllarmi) {
List<String> labels = new ArrayList<>();
List<String> values = getValuesTipoPlugin(addAllarmi);
for (String value : values) {
String label = tipoPluginToLabel(TipoPlugin.toEnumConstant(value));
if(label != null) {
labels.add(label);
}
}
return labels;
}
public static String tipoPluginToLabel(TipoPlugin value) {
switch (value) {
case ALLARME:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_ALLARME;
case AUTENTICAZIONE:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_AUTENTICAZIONE;
case AUTORIZZAZIONE:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_AUTORIZZAZIONE;
case AUTORIZZAZIONE_CONTENUTI:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_AUTORIZZAZIONE_CONTENUTI;
case BEHAVIOUR:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_BEHAVIOUR;
case CONNETTORE:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_CONNETTORE;
case INTEGRAZIONE:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_INTEGRAZIONE;
case MESSAGE_HANDLER:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_MESSAGE_HANDLER;
case RATE_LIMITING:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_RATE_LIMITING;
case RICERCA:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_RICERCA;
case SERVICE_HANDLER:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_SERVICE_HANDLER;
case STATISTICA:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_STATISTICA;
case TRANSAZIONE:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_TRANSAZIONE;
case TOKEN_DYNAMIC_DISCOVERY:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_TOKEN_DYNAMIC_DISCOVERY;
case TOKEN_VALIDAZIONE:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_TOKEN_VALIDAZIONE;
case TOKEN_NEGOZIAZIONE:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_TOKEN_NEGOZIAZIONE;
case ATTRIBUTE_AUTHORITY:
return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_ATTRIBUTE_AUTHORITY;
}
return null;
}
public static String getApplicabilitaClassePlugin(Plugin plugin) {
if(plugin.sizePluginProprietaCompatibilitaList() > 0) {
TipoPlugin tipoPlugin = TipoPlugin.toEnumConstant(plugin.getTipoPlugin());
StringBuilder sb = new StringBuilder();
switch (tipoPlugin) {
case AUTENTICAZIONE:
case AUTORIZZAZIONE:
case AUTORIZZAZIONE_CONTENUTI:
case INTEGRAZIONE:
// una property con nome = Ruolo
for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
if(sb.length() > 0)
sb.append(", ");
if(PluginCostanti.FILTRO_RUOLO_VALORE_ENTRAMBI.equals(prop.getValore())) {
sb.append(PluginCostanti.FILTRO_RUOLO_LABEL_ENTRAMBI);
}
else {
sb.append(prop.getValore());
}
}
return sb.toString();
case SERVICE_HANDLER:
// nome handler
for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
if(sb.length() > 0)
sb.append(", ");
if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INIT.equalsIgnoreCase(prop.getValore())) {
sb.append(PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_INIT);
}
else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_EXIT.equalsIgnoreCase(prop.getValore())) {
sb.append(PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_EXIT);
}
else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INTEGRATION_MANAGER_REQUEST.equalsIgnoreCase(prop.getValore())) {
sb.append(PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_INTEGRATION_MANAGER_REQUEST);
}
else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INTEGRATION_MANAGER_RESPONSE.equalsIgnoreCase(prop.getValore())) {
sb.append(PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_INTEGRATION_MANAGER_RESPONSE);
}
else {
sb.append(prop.getValore());
}
}
return sb.toString();
case MESSAGE_HANDLER:
// message handler e ruolo messa ge handler
String tipoMessaggio = null;
String faseProcessamento = null;
for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_NOME.equalsIgnoreCase(prop.getNome())) {
if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_PRE_IN.equalsIgnoreCase(prop.getValore())) {
faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_PRE_IN_SHORT;
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN.equalsIgnoreCase(prop.getValore())) {
faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_IN_SHORT;
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN_PROTOCOL_INFO.equalsIgnoreCase(prop.getValore())) {
faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_IN_PROTOCOL_INFO_SHORT;
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_OUT.equalsIgnoreCase(prop.getValore())) {
faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_OUT_SHORT;
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_POST_OUT.equalsIgnoreCase(prop.getValore())) {
faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_POST_OUT_SHORT;
}
else {
faseProcessamento =prop.getValore();
}
}
else {
if(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RICHIESTA.equals(prop.getValore())) {
tipoMessaggio = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABEL_RICHIESTA;
}
else {
tipoMessaggio = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABEL_RISPOSTA;
}
}
}
if(sb.length() > 0)
sb.append(", ");
sb.append(tipoMessaggio).append(" (").append(faseProcessamento).append(")");
return sb.toString();
case ALLARME:
// una property con nome = Applicabilita
for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
if(sb.length() > 0)
sb.append(", ");
if(PluginCostanti.FILTRO_APPLICABILITA_VALORE_IMPLEMENTAZIONE_API.equals(prop.getValore())) {
sb.append(PluginCostanti.FILTRO_APPLICABILITA_LABEL_IMPLEMENTAZIONE_API);
}
else {
sb.append(prop.getValore());
}
}
return sb.toString();
case BEHAVIOUR:
case CONNETTORE:
case RATE_LIMITING:
case RICERCA:
case STATISTICA:
case TRANSAZIONE:
case TOKEN_DYNAMIC_DISCOVERY:
case TOKEN_VALIDAZIONE:
case TOKEN_NEGOZIAZIONE:
case ATTRIBUTE_AUTHORITY:
return null;
}
}
return null;
}
public static TipoPlugin getTipoPluginDefault() {
return null;
}
public static List<PluginProprietaCompatibilita> getApplicabilitaClassePlugin(TipoPlugin tipoPlugin, String ruolo, String shTipo, String mhTipo, String mhRuolo, String applicabilita) {
List<PluginProprietaCompatibilita> lista = new ArrayList<>();
switch (tipoPlugin) {
case AUTENTICAZIONE:
case AUTORIZZAZIONE:
case AUTORIZZAZIONE_CONTENUTI:
case INTEGRAZIONE:
PluginProprietaCompatibilita propRuolo = new PluginProprietaCompatibilita();
propRuolo.setNome(PluginCostanti.FILTRO_RUOLO_NOME);
propRuolo.setValore(ruolo);
lista.add(propRuolo);
break;
case SERVICE_HANDLER:
PluginProprietaCompatibilita propShTipo = new PluginProprietaCompatibilita();
propShTipo.setNome(PluginCostanti.FILTRO_SERVICE_HANDLER_NOME);
propShTipo.setValore(shTipo);
lista.add(propShTipo);
break;
case MESSAGE_HANDLER:
PluginProprietaCompatibilita propMhTipo = new PluginProprietaCompatibilita();
propMhTipo.setNome(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_NOME);
propMhTipo.setValore(mhTipo);
lista.add(propMhTipo);
PluginProprietaCompatibilita propMhRuolo = new PluginProprietaCompatibilita();
propMhRuolo.setNome(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_NOME);
propMhRuolo.setValore(mhRuolo);
lista.add(propMhRuolo);
break;
case ALLARME:
PluginProprietaCompatibilita propApplicabilita = new PluginProprietaCompatibilita();
propApplicabilita.setNome(PluginCostanti.FILTRO_APPLICABILITA_NOME);
propApplicabilita.setValore(applicabilita);
lista.add(propApplicabilita);
break;
case BEHAVIOUR:
case CONNETTORE:
case RATE_LIMITING:
case RICERCA:
case STATISTICA:
case TRANSAZIONE:
case TOKEN_DYNAMIC_DISCOVERY:
case TOKEN_VALIDAZIONE:
case TOKEN_NEGOZIAZIONE:
case ATTRIBUTE_AUTHORITY:
break;
}
return lista;
}
public static void addInfoClassePlugin(DataElement de, TipoPlugin tipoPlugin, String ruolo, String shTipo, String mhTipo, String mhRuolo,
boolean integrationManagerEnabled) {
String titolo = ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_CLASS_NAME;
DataElementInfo info = new DataElementInfo(titolo);
String infoSingola = DynamicHelperCostanti.PLUGIN_CLASSNAME_INFO_SINGOLA;
String infoMultiplaAnd = DynamicHelperCostanti.PLUGIN_CLASSNAME_INFO_MULTIPLA_AND;
String infoMultiplaOr = DynamicHelperCostanti.PLUGIN_CLASSNAME_INFO_MULTIPLA_OR;
List<String> listBody = new ArrayList<>();
switch (tipoPlugin) {
case AUTENTICAZIONE:
if(ruolo==null || StringUtils.isEmpty(ruolo) || !PluginCostanti.FILTRO_RUOLO_VALORI.contains(ruolo)) {
ruolo = PluginCostanti.FILTRO_RUOLO_VALORI.get(0);
}
if(Filtri.FILTRO_RUOLO_VALORE_EROGAZIONE.equals(ruolo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.autenticazione.pa.IAutenticazionePortaApplicativa.class.getName());
}
else if(Filtri.FILTRO_RUOLO_VALORE_FRUIZIONE.equals(ruolo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.autenticazione.pd.IAutenticazionePortaDelegata.class.getName());
}
else {
info.setHeaderBody(infoMultiplaAnd);
listBody.add(org.openspcoop2.pdd.core.autenticazione.pa.IAutenticazionePortaApplicativa.class.getName());
listBody.add(org.openspcoop2.pdd.core.autenticazione.pd.IAutenticazionePortaDelegata.class.getName());
}
break;
case AUTORIZZAZIONE:
if(ruolo==null || StringUtils.isEmpty(ruolo) || !PluginCostanti.FILTRO_RUOLO_VALORI.contains(ruolo)) {
ruolo = PluginCostanti.FILTRO_RUOLO_VALORI.get(0);
}
if(Filtri.FILTRO_RUOLO_VALORE_EROGAZIONE.equals(ruolo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.autorizzazione.pa.IAutorizzazionePortaApplicativa.class.getName());
}
else if(Filtri.FILTRO_RUOLO_VALORE_FRUIZIONE.equals(ruolo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.autorizzazione.pd.IAutorizzazionePortaDelegata.class.getName());
}
else {
info.setHeaderBody(infoMultiplaAnd);
listBody.add(org.openspcoop2.pdd.core.autorizzazione.pa.IAutorizzazionePortaApplicativa.class.getName());
listBody.add(org.openspcoop2.pdd.core.autorizzazione.pd.IAutorizzazionePortaDelegata.class.getName());
}
break;
case AUTORIZZAZIONE_CONTENUTI:
if(ruolo==null || StringUtils.isEmpty(ruolo) || !PluginCostanti.FILTRO_RUOLO_VALORI.contains(ruolo)) {
ruolo = PluginCostanti.FILTRO_RUOLO_VALORI.get(0);
}
if(Filtri.FILTRO_RUOLO_VALORE_EROGAZIONE.equals(ruolo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.autorizzazione.pa.IAutorizzazioneContenutoPortaApplicativa.class.getName());
}
else if(Filtri.FILTRO_RUOLO_VALORE_FRUIZIONE.equals(ruolo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.autorizzazione.pd.IAutorizzazioneContenutoPortaDelegata.class.getName());
}
else {
info.setHeaderBody(infoMultiplaAnd);
listBody.add(org.openspcoop2.pdd.core.autorizzazione.pa.IAutorizzazioneContenutoPortaApplicativa.class.getName());
listBody.add(org.openspcoop2.pdd.core.autorizzazione.pd.IAutorizzazioneContenutoPortaDelegata.class.getName());
}
break;
case INTEGRAZIONE:
if(ruolo==null || StringUtils.isEmpty(ruolo) || !PluginCostanti.FILTRO_RUOLO_VALORI.contains(ruolo)) {
ruolo = PluginCostanti.FILTRO_RUOLO_VALORI.get(0);
}
if(Filtri.FILTRO_RUOLO_VALORE_EROGAZIONE.equals(ruolo)) {
info.setHeaderBody(infoMultiplaOr);
listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePA.class.getName());
listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePASoap.class.getName());
}
else if(Filtri.FILTRO_RUOLO_VALORE_FRUIZIONE.equals(ruolo)) {
info.setHeaderBody(infoMultiplaOr);
listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePD.class.getName());
listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePDSoap.class.getName());
}
else {
info.setHeaderBody(infoMultiplaAnd);
listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePA.class.getName() + "(o versione Soap)");
listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePD.class.getName() + "(o versione Soap)");
}
break;
case RATE_LIMITING:
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.controllo_traffico.plugins.IRateLimiting.class.getName());
break;
case CONNETTORE:
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.connettori.IConnettore.class.getName());
break;
case ALLARME:
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.monitor.sdk.plugins.IAlarmProcessing.class.getName());
break;
case BEHAVIOUR:
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.behaviour.IBehaviour.class.getName());
break;
case SERVICE_HANDLER:{
List<String> values = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_SENZA_INTEGRATION_MANAGER;
if(shTipo==null || StringUtils.isEmpty(shTipo) || !values.contains(shTipo)) {
shTipo = values.get(0);
}
if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INIT.equals(shTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.InitHandler.class.getName());
}
else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_EXIT.equals(shTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.ExitHandler.class.getName());
}
else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INTEGRATION_MANAGER_REQUEST.equals(shTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.IntegrationManagerRequestHandler.class.getName());
}
else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INTEGRATION_MANAGER_RESPONSE.equals(shTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.IntegrationManagerResponseHandler.class.getName());
}
break;
}
case MESSAGE_HANDLER:{
if(mhRuolo==null || StringUtils.isEmpty(mhRuolo) || !PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORI.contains(mhRuolo)) {
mhRuolo = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORI.get(0);
}
boolean isRisposta = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RISPOSTA.equals(mhRuolo);
List<String> values = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RICHIESTA;
if(mhTipo==null || StringUtils.isEmpty(mhTipo) || !values.contains(mhTipo)) {
mhTipo = values.get(0);
}
if(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RICHIESTA.equals(mhRuolo)) {
if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_PRE_IN.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.PreInRequestHandler.class.getName());
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.InRequestHandler.class.getName());
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN_PROTOCOL_INFO.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.InRequestProtocolHandler.class.getName());
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_OUT.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.OutRequestHandler.class.getName());
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_POST_OUT.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.PostOutRequestHandler.class.getName());
}
}
else {
if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_PRE_IN.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.PreInResponseHandler.class.getName());
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.InResponseHandler.class.getName());
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_OUT.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.OutResponseHandler.class.getName());
}
else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_POST_OUT.equals(mhTipo)) {
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.handlers.PostOutResponseHandler.class.getName());
}
}
break;
}
case RICERCA:
case STATISTICA:
case TRANSAZIONE:
break;
case TOKEN_DYNAMIC_DISCOVERY:
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.token.parser.IDynamicDiscoveryParser.class.getName());
break;
case TOKEN_VALIDAZIONE:
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.token.parser.ITokenParser.class.getName());
break;
case TOKEN_NEGOZIAZIONE:
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.token.parser.INegoziazioneTokenParser.class.getName());
break;
case ATTRIBUTE_AUTHORITY:
info.setHeaderBody(infoSingola);
listBody.add(org.openspcoop2.pdd.core.token.attribute_authority.IRetrieveAttributeAuthorityResponseParser.class.getName());
break;
}
if(!listBody.isEmpty()) {
info.setListBody(listBody);
de.setInfo(info);
}
}
public static List<DataElement> getSezioneDinamicaClassePlugin(List<DataElement> dati, TipoPlugin tipoPlugin, String ruolo, String shTipo, String mhTipo, String mhRuolo, String applicabilita,
boolean integrationManagerEnabled) {
switch (tipoPlugin) {
case AUTENTICAZIONE:
case AUTORIZZAZIONE:
case AUTORIZZAZIONE_CONTENUTI:
case INTEGRAZIONE:
DataElement deRuolo = new DataElement();
deRuolo.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_RUOLO);
deRuolo.setLabels(PluginCostanti.FILTRO_RUOLO_LABELS);
deRuolo.setValues(PluginCostanti.FILTRO_RUOLO_VALORI);
deRuolo.setType(DataElementType.SELECT);
deRuolo.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_RUOLO);
deRuolo.setSelected(ruolo);
deRuolo.setPostBack(true); // serve per 'info' del className
dati.add(deRuolo);
break;
case SERVICE_HANDLER:{
DataElement deShTipo = new DataElement();
deShTipo.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_SERVICE_HANDLER);
List<String> values = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_SENZA_INTEGRATION_MANAGER;
List<String> labels = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_SENZA_INTEGRATION_MANAGER;
deShTipo.setLabels(labels);
deShTipo.setValues(values);
deShTipo.setType(DataElementType.SELECT);
deShTipo.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_SERVICE_HANDLER);
deShTipo.setSelected(shTipo);
deShTipo.setPostBack(true); // serve per 'info' del className
dati.add(deShTipo);
break;
}
case MESSAGE_HANDLER:{
DataElement deMhRuolo = new DataElement();
deMhRuolo.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_RUOLO_MESSAGE_HANDLER);
deMhRuolo.setLabels(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABELS);
deMhRuolo.setValues(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORI);
deMhRuolo.setType(DataElementType.SELECT);
deMhRuolo.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_RUOLO_MESSAGE_HANDLER);
deMhRuolo.setSelected(mhRuolo);
deMhRuolo.setPostBack(true); // serve per 'info' del className
dati.add(deMhRuolo);
DataElement deMhTipo = new DataElement();
deMhTipo.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_FASE_MESSAGE_HANDLER);
boolean isRisposta = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RISPOSTA.equals(mhRuolo);
List<String> values = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RICHIESTA;
List<String> labels = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_RICHIESTA;
deMhTipo.setLabels(labels);
deMhTipo.setValues(values);
deMhTipo.setType(DataElementType.SELECT);
deMhTipo.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_FASE_MESSAGE_HANDLER);
deMhTipo.setSelected(mhTipo);
deMhTipo.setPostBack(true); // serve per 'info' del className
dati.add(deMhTipo);
break;
}
case ALLARME:
DataElement deApplicabilita = new DataElement();
deApplicabilita.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_APPLICABILITA);
deApplicabilita.setLabels(PluginCostanti.FILTRO_APPLICABILITA_LABELS);
deApplicabilita.setValues(PluginCostanti.FILTRO_APPLICABILITA_VALORI);
deApplicabilita.setType(DataElementType.SELECT);
deApplicabilita.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_APPLICABILITA);
deApplicabilita.setSelected(applicabilita);
deApplicabilita.setPostBack(false); // non serve per 'info' del className, non cambia
dati.add(deApplicabilita);
break;
case BEHAVIOUR:
case CONNETTORE:
case RATE_LIMITING:
case RICERCA:
case STATISTICA:
case TRANSAZIONE:
case TOKEN_DYNAMIC_DISCOVERY:
case TOKEN_VALIDAZIONE:
case TOKEN_NEGOZIAZIONE:
case ATTRIBUTE_AUTHORITY:
break;
}
return dati;
}
public static String getValoreProprieta(Plugin plugin, String nome) {
if(plugin.sizePluginProprietaCompatibilitaList() > 0) {
TipoPlugin tipoPlugin = TipoPlugin.toEnumConstant(plugin.getTipoPlugin());
switch (tipoPlugin) {
case AUTENTICAZIONE:
case AUTORIZZAZIONE:
case AUTORIZZAZIONE_CONTENUTI:
case INTEGRAZIONE:
case SERVICE_HANDLER:
case MESSAGE_HANDLER:
case ALLARME:
// una property con nome = Ruolo
for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
if(prop.getNome().equals(nome))
return prop.getValore();
}
return null;
case BEHAVIOUR:
case CONNETTORE:
case RATE_LIMITING:
case RICERCA:
case STATISTICA:
case TRANSAZIONE:
case TOKEN_DYNAMIC_DISCOVERY:
case TOKEN_VALIDAZIONE:
case TOKEN_NEGOZIAZIONE:
case ATTRIBUTE_AUTHORITY:
return null;
}
}
return null;
}
public static void addFiltriSpecificiTipoPlugin(PageData pd, Logger log, ISearch ricerca, int idLista, String valoreTipoPlugin , int size,
boolean integrationManagerEnabled) throws Exception {
TipoPlugin tipoPlugin = TipoPlugin.toEnumConstant(valoreTipoPlugin);
switch (tipoPlugin) {
case AUTENTICAZIONE:
case AUTORIZZAZIONE:
case AUTORIZZAZIONE_CONTENUTI:
case INTEGRAZIONE:
String filtroRuolo = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_RUOLO_NOME);
addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_RUOLO_NOME, PluginCostanti.FILTRO_RUOLO_LABEL, filtroRuolo,
PluginCostanti.FILTRO_RUOLO_VALORI_SENZA_ENTRAMBI, PluginCostanti.FILTRO_RUOLO_LABELS_SENZA_ENTRAMBI, false, size);
break;
case SERVICE_HANDLER:{
List<String> values = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_SENZA_INTEGRATION_MANAGER;
List<String> labels = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_SENZA_INTEGRATION_MANAGER;
String filtroShTipo = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_SERVICE_HANDLER_NOME);
addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_SERVICE_HANDLER_NOME, PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL, filtroShTipo,
values, labels, false, size);
break;
}
case MESSAGE_HANDLER:{
// message handler e ruolo
String filtroMhRuolo = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_NOME);
addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_NOME, PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABEL, filtroMhRuolo,
PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORI, PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABELS, true, size);
boolean isRisposta = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RISPOSTA.equals(filtroMhRuolo);
List<String> values = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RICHIESTA;
List<String> labels = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_RICHIESTA;
String filtroMhTipo = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_NOME);
addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_NOME, PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL, filtroMhTipo,
values, labels, false, size);
break;
}
case ALLARME:
String filtroApplicabilita = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_APPLICABILITA_NOME);
addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_APPLICABILITA_NOME, PluginCostanti.FILTRO_APPLICABILITA_LABEL, filtroApplicabilita,
PluginCostanti.FILTRO_APPLICABILITA_VALORI_SENZA_QUALSIASI, PluginCostanti.FILTRO_APPLICABILITA_LABELS_SENZA_QUALSIASI, false, size);
break;
case BEHAVIOUR:
case CONNETTORE:
case RATE_LIMITING:
case RICERCA:
case STATISTICA:
case TRANSAZIONE:
case TOKEN_DYNAMIC_DISCOVERY:
case TOKEN_VALIDAZIONE:
case TOKEN_NEGOZIAZIONE:
case ATTRIBUTE_AUTHORITY:
break;
}
}
public static void addFilterTipoPlugin(PageData pd, Logger log, String nomeFiltro, String labelFiltro, String valoreFiltro, List<String> valuesFiltro, List<String> labelsFiltro, boolean postBack, int size) throws Exception{
try {
int length = 1;
if(valuesFiltro!=null && !valuesFiltro.isEmpty()) {
length+=valuesFiltro.size();
}
String [] values = new String[length];
String [] labels = new String[length];
labels[0] = CostantiControlStation.LABEL_PARAMETRO_RUOLO_QUALSIASI;
values[0] = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_RUOLO_QUALSIASI;
if(valuesFiltro!=null && valuesFiltro.size()>0) {
for (int i =0; i < valuesFiltro.size() ; i ++) {
labels[i+1] = labelsFiltro.get(i);
values[i+1] = valuesFiltro.get(i);
}
}
pd.addFilter(nomeFiltro, labelFiltro, valoreFiltro, values, labels, postBack, size);
} catch (Exception e) {
log.error("Exception: " + e.getMessage(), e);
throw new Exception(e);
}
}
}