ServletExtendedConnettoreUtils.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.web.ctrlstat.plugins.servlet;

  21. import java.util.ArrayList;
  22. import java.util.Enumeration;
  23. import java.util.List;
  24. import java.util.Properties;

  25. import org.openspcoop2.core.constants.TipiConnettore;
  26. import org.openspcoop2.utils.regexp.RegularExpressionEngine;
  27. import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
  28. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
  29. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettoreConverter;
  30. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettoreItem;
  31. import org.openspcoop2.web.ctrlstat.plugins.ExtendedException;
  32. import org.openspcoop2.web.ctrlstat.plugins.IExtendedConnettore;
  33. import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
  34. import org.openspcoop2.web.lib.mvc.DataElement;
  35. import org.openspcoop2.web.lib.mvc.DataElementType;
  36. import org.openspcoop2.web.lib.mvc.ServletUtils;

  37. /**    
  38.  * ServletExtendedConnettoreUtils
  39.  *
  40.  * @author Poli Andrea (poli@link.it)
  41.  * @author $Author$
  42.  * @version $Rev$, $Date$
  43.  */
  44. public class ServletExtendedConnettoreUtils {
  45.    
  46.     private ServletExtendedConnettoreUtils() {}

  47.     public static List<ExtendedConnettore> getExtendedConnettore(org.openspcoop2.core.config.Connettore connettore,
  48.             ConnettoreServletType servletType, ConsoleHelper consoleHelper,
  49.             boolean first,String endpointType) throws ExtendedException{
  50.         return getExtendedConnettore(connettore, servletType, consoleHelper, null, first, endpointType);
  51.     }
  52.     public static List<ExtendedConnettore> getExtendedConnettore(org.openspcoop2.core.config.Connettore connettore,
  53.             ConnettoreServletType servletType, ConsoleHelper consoleHelper, Properties parametersPOST,
  54.             boolean first,String endpointType) throws ExtendedException{
  55.        
  56.         boolean connettoreDisabilitato = true;
  57.         String tipoConnettore = TipiConnettore.DISABILITATO.getNome();
  58.         if(ConnettoreServletType.SERVIZIO_APPLICATIVO_ADD.equals(servletType)){
  59.             // default diverso
  60.             connettoreDisabilitato = false;
  61.             tipoConnettore = TipiConnettore.HTTP.getNome();
  62.         }
  63.         if(first){
  64.             if(connettore!=null){
  65.                 connettoreDisabilitato = TipiConnettore.DISABILITATO.getNome().equals(connettore.getTipo());
  66.                 tipoConnettore = connettore.getTipo();
  67.             }
  68.         }
  69.         else{
  70.             connettoreDisabilitato = TipiConnettore.DISABILITATO.getNome().equals(endpointType);
  71.             tipoConnettore = endpointType;
  72.         }
  73.        
  74.         List<ExtendedConnettore> l = getExtendedConnettore(servletType, consoleHelper, connettoreDisabilitato, tipoConnettore);
  75.         if(!l.isEmpty()){
  76.             if(first)
  77.                 ExtendedConnettoreConverter.readExtendedInfoFromConnettore(l, connettore);
  78.             else
  79.                 updateInfo(consoleHelper, parametersPOST, l);
  80.         }
  81.         return l;
  82.        
  83.     }
  84.    
  85.     public static List<ExtendedConnettore> getExtendedConnettore(org.openspcoop2.core.registry.Connettore connettore,
  86.             ConnettoreServletType servletType, ConsoleHelper consoleHelper,
  87.             boolean first,String endpointType) throws Exception{
  88.         return getExtendedConnettore(connettore, servletType, consoleHelper, null, first, endpointType);
  89.     }
  90.     public static List<ExtendedConnettore> getExtendedConnettore(org.openspcoop2.core.registry.Connettore connettore,
  91.             ConnettoreServletType servletType, ConsoleHelper consoleHelper, Properties parametersPOST,
  92.             boolean first,String endpointType) throws Exception{
  93.        
  94.         boolean connettoreDisabilitato = true;
  95.         String tipoConnettore = TipiConnettore.DISABILITATO.getNome();
  96.         if(first){
  97.             if(connettore!=null){
  98.                 connettoreDisabilitato = TipiConnettore.DISABILITATO.getNome().equals(connettore.getTipo());
  99.                 tipoConnettore = connettore.getTipo();
  100.             }
  101.         }
  102.         else{
  103.             connettoreDisabilitato = TipiConnettore.DISABILITATO.getNome().equals(endpointType);
  104.             tipoConnettore = endpointType;
  105.         }
  106.                    
  107.         List<ExtendedConnettore> l = getExtendedConnettore(servletType, consoleHelper, connettoreDisabilitato, tipoConnettore);
  108.         if(!l.isEmpty()){
  109.             if(first)
  110.                 ExtendedConnettoreConverter.readExtendedInfoFromConnettore(l, connettore);
  111.             else
  112.                 updateInfo(consoleHelper, parametersPOST, l);
  113.         }
  114.         return l;
  115.        
  116.     }
  117.     private static List<ExtendedConnettore> getExtendedConnettore(ConnettoreServletType servletType, ConsoleHelper consoleHelper,
  118.             boolean connettoreDisabilitato, String tipoConnettore) throws ExtendedException{
  119.         List<ExtendedConnettore> list = new ArrayList<>();
  120.         if(consoleHelper.getCore().getExtendedConnettore()!=null && !consoleHelper.getCore().getExtendedConnettore().isEmpty()){
  121.        
  122.             boolean interfacciaAvanzata =consoleHelper.isModalitaAvanzata();
  123.            
  124.             for (IExtendedConnettore ext : consoleHelper.getCore().getExtendedConnettore()) {
  125.                
  126.                 List<ExtendedConnettore> l = ext.getExtendedConnettore(servletType,interfacciaAvanzata,connettoreDisabilitato,tipoConnettore);
  127.                 if(l!=null && !l.isEmpty()){
  128.                     list.addAll(l);
  129.                 }

  130.             }
  131.         }
  132.         return list;
  133.     }
  134.    
  135.     public static void addToDatiEnabled(List<DataElement> dati,List<ExtendedConnettore> list){
  136.        
  137.         if(list!=null){
  138.             for (ExtendedConnettore extendedConnettore : list) {
  139.        
  140.                 DataElement de = new DataElement();
  141.                 de.setName(extendedConnettore.getId());
  142.                 de.setValue(extendedConnettore.isEnabled()+"");
  143.                 de.setSelected(extendedConnettore.isEnabled());
  144.                 de.setLabel(extendedConnettore.getLabel());
  145.                 de.setType(DataElementType.CHECKBOX);
  146.                 de.setPostBack(true);
  147.                 dati.add(de);
  148.                
  149.                 de = new DataElement();
  150.                 de.setName(extendedConnettore.getIdForOldValue());
  151.                 de.setValue(extendedConnettore.isEnabled()+"");
  152.                 de.setType(DataElementType.HIDDEN);
  153.                 dati.add(de);

  154.             }
  155.         }
  156.        
  157.     }
  158.    
  159.     public static void addToDatiExtendedInfo(List<DataElement> dati,List<ExtendedConnettore> list){
  160.        
  161.         if(list!=null){
  162.             for (ExtendedConnettore extendedConnettore : list) {
  163.                
  164.                 if(extendedConnettore.isEnabled()){
  165.                
  166.                     DataElement de = new DataElement();
  167.                     de.setName("ExtendedSection-"+extendedConnettore.getId());
  168.                     de.setLabel(extendedConnettore.getSection());
  169.                     de.setValue(extendedConnettore.getSection()+"");
  170.                     de.setType(DataElementType.TITLE);
  171.                     dati.add(de);
  172.                                    
  173.                     if(extendedConnettore.getListItem()!=null && !extendedConnettore.getListItem().isEmpty()){
  174.                         for (ExtendedConnettoreItem extendedConnettoreItem : extendedConnettore.getListItem()) {
  175.                            
  176.                             String id = ExtendedConnettoreConverter.buildId(extendedConnettore.getId(), extendedConnettoreItem.getId());
  177.                            
  178.                             de = new DataElement();
  179.                             de.setName(id);
  180.                             de.setLabel(extendedConnettoreItem.getLabel());
  181.                             de.setNote(extendedConnettoreItem.getNote());
  182.                             de.setValue(extendedConnettoreItem.getValue());
  183.                             de.setRequired(extendedConnettoreItem.isRequired());
  184.                             de.setType(DataElementType.TEXT_EDIT);
  185.                             dati.add(de);
  186.                            
  187.                         }
  188.                     }
  189.                    
  190.                 }
  191.                
  192.             }
  193.         }
  194.        
  195.     }
  196.    
  197.     public static void updateInfo(ConsoleHelper consoleHelper,Properties parametersPOST, List<ExtendedConnettore> list) throws ExtendedException{
  198.         try {
  199.             if(list!=null){
  200.                 for (ExtendedConnettore extendedConnettore : list) {
  201.                    
  202.                     String tmp = consoleHelper.getParameter(extendedConnettore.getId());
  203.                     if(parametersPOST!=null && parametersPOST.size()>0){
  204.                         tmp = getValueFromPropertiesPOST(parametersPOST, extendedConnettore.getId());
  205.                     }
  206.                     extendedConnettore.setEnabled(ServletUtils.isCheckBoxEnabled(tmp));
  207.                    
  208.                     String tmpOldValue = consoleHelper.getParameter(extendedConnettore.getIdForOldValue());
  209.                     if(parametersPOST!=null && parametersPOST.size()>0){
  210.                         tmpOldValue = getValueFromPropertiesPOST(parametersPOST, extendedConnettore.getIdForOldValue());
  211.                     }
  212.                     boolean oldValue = ServletUtils.isCheckBoxEnabled(tmpOldValue);
  213.                     boolean changeRidefinizione = oldValue != extendedConnettore.isEnabled();
  214.                    
  215.                     if(extendedConnettore.isEnabled() && !changeRidefinizione){ // altrimenti devo mantenere i valori di default
  216.                         if(extendedConnettore.getListItem()!=null && !extendedConnettore.getListItem().isEmpty()){
  217.                             for (ExtendedConnettoreItem extendedConnettoreItem : extendedConnettore.getListItem()) {
  218.                        
  219.                                 String id = ExtendedConnettoreConverter.buildId(extendedConnettore.getId(), extendedConnettoreItem.getId());
  220.                                 tmp = consoleHelper.getParameter(id);
  221.                                 if(parametersPOST!=null && parametersPOST.size()>0){
  222.                                     tmp = getValueFromPropertiesPOST(parametersPOST, id);
  223.                                 }
  224.                                 extendedConnettoreItem.setValue(tmp);
  225.                                                            
  226.                             }
  227.                         }
  228.                     }
  229.                    
  230.                 }
  231.             }
  232.         }catch(Exception e) {
  233.             throw new ExtendedException(e.getMessage(),e);
  234.         }
  235.     }
  236.    
  237.     private static String getValueFromPropertiesPOST(Properties parametersPOST, String idParameter){
  238.         if(parametersPOST!=null && parametersPOST.size()>0){
  239.             Enumeration<?> enKeys = parametersPOST.keys();
  240.             while (enKeys.hasMoreElements()) {
  241.                 Object object = enKeys.nextElement();
  242.                 if(object instanceof String){
  243.                     String s = (String) object;
  244.                     if (s.indexOf("\""+idParameter+"\"") != -1) {
  245.                         return parametersPOST.getProperty(s);
  246.                     }
  247.                 }
  248.             }
  249.         }
  250.         return null;
  251.     }
  252.    
  253.     public static void checkInfo(List<ExtendedConnettore> list) throws ExtendedException{
  254.         if(list!=null){
  255.             for (ExtendedConnettore extendedConnettore : list) {
  256.                
  257.                 if(extendedConnettore.isEnabled()){
  258.                     if(extendedConnettore.getListItem()!=null && !extendedConnettore.getListItem().isEmpty()){
  259.                         for (ExtendedConnettoreItem extendedConnettoreItem : extendedConnettore.getListItem()) {
  260.                    
  261.                             if(extendedConnettoreItem.getValue()==null || "".equals(extendedConnettoreItem.getValue())){
  262.                                 if(extendedConnettoreItem.isRequired()){
  263.                                     throw new ExtendedException("Deve essere indicato un valore in '"+extendedConnettoreItem.getLabel()+"'");
  264.                                 }
  265.                             }
  266.                             else{
  267.                                 if(extendedConnettoreItem.getRegularExpression()!=null){
  268.                                     try{
  269.                                         if(!RegularExpressionEngine.isMatch(extendedConnettoreItem.getValue(),extendedConnettoreItem.getRegularExpression())){
  270.                                             throw new ExtendedException("Il valore indicato in '"+extendedConnettoreItem.getLabel()+"' non รจ valido");
  271.                                         }
  272.                                     }catch(Exception e){
  273.                                         throw new ExtendedException(e.getMessage(),e);
  274.                                     }
  275.                                 }
  276.                             }
  277.                            
  278.                         }
  279.                     }
  280.                 }
  281.                
  282.             }
  283.         }
  284.     }
  285.    
  286. }