GeneralHelper.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.servlet;

  21. import java.awt.Font;
  22. import java.text.MessageFormat;
  23. import java.util.ArrayList;
  24. import java.util.Collections;
  25. import java.util.Comparator;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. import java.util.Map;

  29. import javax.servlet.http.HttpServletRequest;
  30. import javax.servlet.http.HttpSession;

  31. import org.apache.commons.lang.StringEscapeUtils;
  32. import org.openspcoop2.core.id.IDSoggetto;
  33. import org.openspcoop2.protocol.engine.utils.NamingUtils;
  34. import org.openspcoop2.protocol.utils.ProtocolUtils;
  35. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  36. import org.openspcoop2.web.ctrlstat.core.ControlStationLogger;
  37. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  38. import org.openspcoop2.web.ctrlstat.servlet.about.AboutCostanti;
  39. import org.openspcoop2.web.ctrlstat.servlet.login.LoginCostanti;
  40. import org.openspcoop2.web.ctrlstat.servlet.pdd.PddCore;
  41. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  42. import org.openspcoop2.web.ctrlstat.servlet.utenti.UtentiCostanti;
  43. import org.openspcoop2.web.lib.mvc.Costanti;
  44. import org.openspcoop2.web.lib.mvc.DataElement;
  45. import org.openspcoop2.web.lib.mvc.DataElementType;
  46. import org.openspcoop2.web.lib.mvc.GeneralData;
  47. import org.openspcoop2.web.lib.mvc.GeneralLink;
  48. import org.openspcoop2.web.lib.mvc.PageData;
  49. import org.openspcoop2.web.lib.mvc.Parameter;
  50. import org.openspcoop2.web.lib.mvc.ServletUtils;
  51. import org.openspcoop2.web.lib.users.dao.InterfaceType;
  52. import org.openspcoop2.web.lib.users.dao.User;
  53. import org.slf4j.Logger;


  54. // Questa classe, volendo, potrebbe essere usata anche dalla Porta di Dominio e
  55. // dal registro servizi, dato che serve per settare pezzi di codice comuni a
  56. // piu' applicazioni
  57. /**
  58.  * generalHelper
  59.  *
  60.  * @author Andrea Poli (apoli@link.it)
  61.  * @author Stefano Corallo (corallo@link.it)
  62.  * @author Sandra Giangrandi (sandra@link.it)
  63.  * @author $Author$
  64.  * @version $Rev$, $Date$
  65.  *
  66.  */
  67. public class GeneralHelper {

  68.     protected HttpSession session;
  69.     protected ControlStationCore core;
  70.     protected PddCore pddCore;
  71.     protected SoggettiCore soggettiCore;
  72.     protected Logger log;

  73.     public GeneralHelper(HttpSession session) {
  74.         this.session = session;
  75.         try {
  76.             this.core = new ControlStationCore();
  77.             this.pddCore = new PddCore(this.core);
  78.             this.soggettiCore = new SoggettiCore(this.core);
  79.         } catch (Exception e) {
  80.             this.log = ControlStationLogger.getPddConsoleCoreLogger();
  81.             this.log.error("Exception: " + e.getMessage(), e);
  82.         }
  83.         this.log = ControlStationLogger.getPddConsoleCoreLogger();
  84.     }





  85.     public GeneralData initGeneralData(HttpServletRequest request){
  86.         String baseUrl = request.getRequestURI();
  87.         return this.initGeneralData_engine(request, baseUrl);
  88.     }
  89.     public GeneralData initGeneralData(HttpServletRequest request,String servletName){
  90.         String baseUrl = request.getContextPath();
  91.         if(servletName.startsWith("/")){
  92.             baseUrl = baseUrl + servletName;
  93.         }else{
  94.             baseUrl = baseUrl + "/" + servletName;
  95.         }
  96.         return this.initGeneralData_engine(request, baseUrl);
  97.     }

  98.     private GeneralData initGeneralData_engine(HttpServletRequest request, String baseUrl) {
  99.         String userLogin = ServletUtils.getUserLoginFromSession(this.session);
  100.         String css = this.core.getConsoleCSS();

  101.         // per avere diversi 'profili' utente per i vari tab leggo l'utente dalla sessione del tab
  102.         User u = ServletUtils.getUserFromSession(request, this.session);

  103.         boolean displayUtente = false;
  104.         boolean displayLogin = true;
  105.         boolean displayLogout = true;
  106.         if ((baseUrl.indexOf("/"+LoginCostanti.SERVLET_NAME_LOGIN) != -1 && u == null) || (baseUrl.indexOf("/"+LoginCostanti.SERVLET_NAME_LOGOUT) != -1)
  107.                 || (baseUrl.indexOf("/"+LoginCostanti.SERVLET_NAME_LOGIN_MESSAGE_PAGE) != -1)
  108.                 || (baseUrl.indexOf("/"+UtentiCostanti.SERVLET_NAME_UTENTE_PASSWORD_CHANGE) != -1 && u == null)) {
  109.             displayLogin = false;
  110.             displayLogout = false;
  111.         }
  112.         if (u != null){
  113.             displayLogin = false;
  114.             displayUtente = true;
  115.         }

  116.         GeneralData gd = new GeneralData(CostantiControlStation.LABEL_LINKIT_WEB);
  117.         gd.setProduct(this.core.getConsoleNomeSintesi());
  118.         gd.setLanguage(this.core.getConsoleLanguage());
  119.         gd.setTitle(StringEscapeUtils.escapeHtml(this.core.getConsoleNomeEsteso(request, this.session)));
  120.         gd.setLogoHeaderImage(this.core.getLogoHeaderImage());
  121.         gd.setLogoHeaderLink(this.core.getLogoHeaderLink());
  122.         gd.setLogoHeaderTitolo(this.core.getLogoHeaderTitolo());
  123.         gd.setVisualizzaLinkHome(this.core.isVisualizzaLinkHomeHeader());
  124.         gd.setUrl(baseUrl);
  125.         gd.setCss(css);
  126.         if (displayLogin || displayLogout) {
  127.             List<GeneralLink> link = new ArrayList<GeneralLink>();
  128.             if (displayLogin) {
  129.                 // in questo ramo non si dovrebbe mai passare, l'authorizationfilter blocca le chiamate quando l'utente nn e' loggato
  130.                 GeneralLink gl1 = new GeneralLink();
  131.                 gl1.setLabel(LoginCostanti.LABEL_LOGIN);
  132.                 gl1.setUrl(LoginCostanti.SERVLET_NAME_LOGIN);
  133.                 link.add(gl1);
  134.             }else{
  135.                 // Ordine dei link da visualizzare nel menu'

  136.                 // 1. Utente collegato
  137.                 if (displayUtente){
  138.                     GeneralLink glUtente = new GeneralLink();
  139.                     glUtente.setLabel(userLogin);
  140.                     glUtente.setUrl("");
  141.                     link.add(glUtente);
  142.                 }

  143.                 // 2. modalita' standard/avanzata
  144.                 GeneralLink glUtente = new GeneralLink();
  145.                 InterfaceType tipoInterfaccia = u.getInterfaceType();
  146.                 if(!tipoInterfaccia.equals(InterfaceType.COMPLETA)){
  147.                     if(tipoInterfaccia.equals(InterfaceType.STANDARD)){
  148.                         glUtente.setLabel(LoginCostanti.LABEL_MENU_UTENTE_MODALITA_AVANZATA);
  149.                         glUtente.setIcon(LoginCostanti.ICONA_MENU_UTENTE_UNCHECKED);
  150.                         glUtente.setUrl(UtentiCostanti.SERVLET_NAME_UTENTE_CHANGE,
  151.                                 new Parameter(UtentiCostanti.PARAMETRO_UTENTE_TIPO_GUI, InterfaceType.AVANZATA.toString()),
  152.                                 new Parameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME,Costanti.DATA_ELEMENT_EDIT_MODE_VALUE_EDIT_END),
  153.                                 new Parameter(UtentiCostanti.PARAMETRO_UTENTE_CHANGE_GUI,Costanti.CHECK_BOX_ENABLED)
  154. //                              ,
  155. //                              new Parameter(Costanti.PARAMETER_PREV_TAB_KEY, request.ge)
  156.                                 );
  157.    
  158.                     } else {
  159.                         glUtente.setLabel(LoginCostanti.LABEL_MENU_UTENTE_MODALITA_AVANZATA);
  160.                         glUtente.setIcon(LoginCostanti.ICONA_MENU_UTENTE_CHECKED);
  161.                         glUtente.setUrl(UtentiCostanti.SERVLET_NAME_UTENTE_CHANGE,
  162.                                 new Parameter(UtentiCostanti.PARAMETRO_UTENTE_TIPO_GUI, InterfaceType.STANDARD.toString()),
  163.                                 new Parameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME,Costanti.DATA_ELEMENT_EDIT_MODE_VALUE_EDIT_END),
  164.                                 new Parameter(UtentiCostanti.PARAMETRO_UTENTE_CHANGE_GUI,Costanti.CHECK_BOX_ENABLED));
  165.                     }
  166.                     link.add(glUtente);
  167.                 }

  168.                 // 3. informazioni/about
  169.                 GeneralLink glO = new GeneralLink();
  170.                 glO.setLabel(LoginCostanti.LABEL_MENU_UTENTE_INFORMAZIONI);
  171.                 glO.setUrl(AboutCostanti.SERVLET_NAME_ABOUT);
  172.                 link.add(glO);

  173.                 // 4. profilo utente
  174.                 if (displayUtente){
  175.                     GeneralLink glProfiloUtente = new GeneralLink();
  176.                     glProfiloUtente.setLabel(LoginCostanti.LABEL_MENU_UTENTE_PROFILO_UTENTE);
  177.                     glProfiloUtente.setUrl(UtentiCostanti.SERVLET_NAME_UTENTE_CHANGE);
  178.                     link.add(glProfiloUtente);
  179.                 }
  180.             }

  181.             // 5. logoutsetModalitaLinks
  182.             if (displayLogout && this.core.isMostraButtonLogout()) {
  183.                 GeneralLink gl2 = new GeneralLink();
  184.                 gl2.setLabel(LoginCostanti.LABEL_MENU_UTENTE_LOGOUT);

  185.                 // se ho definito una url custom viene controllato nella procedura di logout
  186.                 gl2.setUrl(LoginCostanti.SERVLET_NAME_LOGOUT);
  187.                 link.add(gl2);
  188.             }

  189.             gd.setHeaderLinks(link);

  190.             if(u != null) { // se ho fatto refresh della pagina dopo che e' scaduta la sessione l'utente e' null
  191.                 if(!u.hasOnlyPermessiUtenti())  
  192.                     gd.setModalitaLinks(this.caricaMenuProtocolliUtente(request, u));
  193.                
  194.                 if(!u.hasOnlyPermessiUtenti())  // si e' deciso di farlo vedere sempre, sarà senza tendina: && this.core.isMultitenant())  
  195.                     gd.setSoggettiLinks(this.caricaMenuSoggetti(request, u));
  196.             }
  197.         }

  198.         return gd;
  199.     }

  200.     public PageData initPageData() {
  201.         return  initPageData(null);    
  202.     }

  203.     public PageData initPageData(String breadcrumb) {
  204.         PageData pd = new PageData();
  205.         if(breadcrumb != null) {
  206.             List<GeneralLink> titlelist = new ArrayList<>();
  207.             GeneralLink tl1 = new GeneralLink();
  208.             tl1.setLabel(breadcrumb);
  209.             titlelist.add(tl1);
  210.             pd.setTitleList(titlelist);
  211.         }
  212.         List<DataElement> dati = new ArrayList<>();
  213.         // titolo sezione login
  214.         DataElement titoloSezione = new DataElement();
  215.         titoloSezione.setLabel(LoginCostanti.LABEL_LOGIN);
  216.         titoloSezione.setType(DataElementType.TITLE);
  217.         titoloSezione.setName("");

  218.         DataElement login = new DataElement();
  219.         login.setLabel(LoginCostanti.LABEL_USERNAME);
  220.         login.setType(DataElementType.TEXT_EDIT);
  221.         login.setName(UtentiCostanti.PARAMETRO_UTENTE_LOGIN);
  222.         login.setStyleClass(Costanti.INPUT_CSS_CLASS);
  223.         DataElement pwd = new DataElement();
  224.         pwd.setLabel(UtentiCostanti.LABEL_PASSWORD);
  225.         pwd.setType(DataElementType.CRYPT);
  226.         pwd.setName(UtentiCostanti.PARAMETRO_UTENTE_PW);
  227.         pwd.setStyleClass(Costanti.INPUT_CSS_CLASS);

  228.         dati.add(titoloSezione);
  229.         dati.add(login);
  230.         dati.add(pwd);
  231.         pd.setDati(dati);
  232.         return pd;
  233.     }



  234.     public int getSize() {
  235.         return 50;
  236.     }

  237.     public List<GeneralLink> caricaMenuProtocolliUtente(HttpServletRequest request, User u){
  238.         List<GeneralLink> link = new ArrayList<>();

  239.         // 1. controllo se ho piu' di un protocollo disponibile per l'utente
  240.         try {
  241.             List<String> protocolliDispondibili = this.core.getProtocolli(request, this.session,true);

  242.             if(protocolliDispondibili != null && !protocolliDispondibili.isEmpty()) {
  243.                 // prelevo l'eventuale protocollo selezionato
  244.                 String protocolloSelezionato = u.getProtocolloSelezionatoPddConsole();
  245.                 if(protocolliDispondibili.size()==1) {
  246.                     protocolloSelezionato = protocolliDispondibili.get(0); // forzo
  247.                 }
  248.                
  249.                 GeneralLink glModalitaCorrente = new GeneralLink();
  250.                 String labelSelezionato = protocolloSelezionato == null ? UtentiCostanti.LABEL_PARAMETRO_MODALITA_ALL : ConsoleHelper._getLabelProtocollo(protocolloSelezionato);
  251.                 String labelSelezionatoCompleta = MessageFormat.format(LoginCostanti.LABEL_MENU_MODALITA_CORRENTE_WITH_PARAM, labelSelezionato);
  252.                 glModalitaCorrente.setLabel(labelSelezionatoCompleta);
  253.                 glModalitaCorrente.setUrl("");
  254.                 glModalitaCorrente.setLabelWidth(this.core.getFontWidth(labelSelezionatoCompleta,  Font.BOLD, 16));
  255.                 link.add(glModalitaCorrente);

  256.                 if(protocolliDispondibili.size()>1) {
  257.                     // popolo la tendina con i protocolli disponibili
  258.                     for (String protocolloDisponibile : ProtocolUtils.orderProtocolli(protocolliDispondibili)) {
  259.                         GeneralLink glProt = new GeneralLink();
  260.                        
  261.                         String labelProt = ConsoleHelper._getLabelProtocollo(protocolloDisponibile);
  262.                         glProt.setLabel(labelProt);
  263.                         if(protocolloSelezionato != null && protocolloSelezionato.equals(protocolloDisponibile)) {
  264.                             glProt.setUrl("");
  265.                         } else {
  266.                             glProt.setUrl(UtentiCostanti.SERVLET_NAME_UTENTE_CHANGE,
  267.                                 new Parameter(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA, protocolloDisponibile),
  268.                                 new Parameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME,Costanti.DATA_ELEMENT_EDIT_MODE_VALUE_EDIT_END),
  269.                                 new Parameter(UtentiCostanti.PARAMETRO_UTENTE_CHANGE_MODALITA,Costanti.CHECK_BOX_ENABLED)
  270.                                 );
  271.                         }

  272.                         glProt.setLabelWidth(this.core.getFontWidth(glProt.getLabel(), 14));
  273.                         link.add(glProt);
  274.                     }
  275.                
  276.                     // seleziona tutti
  277.                     GeneralLink glAll = new GeneralLink();
  278.                     glAll.setLabel(UtentiCostanti.LABEL_PARAMETRO_MODALITA_ALL);
  279.                     if((protocolloSelezionato == null)) {
  280.                         glAll.setUrl("");
  281.                     } else {
  282.                         glAll.setUrl(UtentiCostanti.SERVLET_NAME_UTENTE_CHANGE,
  283.                             new Parameter(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA, UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL),
  284.                             new Parameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME,Costanti.DATA_ELEMENT_EDIT_MODE_VALUE_EDIT_END),
  285.                             new Parameter(UtentiCostanti.PARAMETRO_UTENTE_CHANGE_MODALITA,Costanti.CHECK_BOX_ENABLED)
  286.                             );
  287.                     }
  288.                     glAll.setLabelWidth(this.core.getFontWidth(UtentiCostanti.LABEL_PARAMETRO_MODALITA_ALL, 14));
  289.                     link.add(glAll);
  290.                 }
  291.                
  292.             }
  293.         } catch (Exception e) {
  294.             ControlStationLogger.getPddConsoleCoreLogger().error(e.getMessage(),e);
  295.         }

  296.         return link;
  297.     }

  298.     public List<GeneralLink> caricaMenuSoggetti(HttpServletRequest request, User u){
  299.         List<GeneralLink> link = new ArrayList<>();

  300.         try {
  301.             // prelevo l'eventuale protocollo selezionato
  302.             List<String> protocolliDispondibili = this.core.getProtocolli(request, this.session,true);
  303.             String protocolloSelezionato = u.getProtocolloSelezionatoPddConsole();
  304.             if(protocolliDispondibili.size()==1) {
  305.                 protocolloSelezionato = protocolliDispondibili.get(0); // forzo
  306.             }
  307.            
  308.             // prelevo il soggetto selezionato
  309.             String soggettoOperativoSelezionato = u.getSoggettoSelezionatoPddConsole();
  310.            
  311.             List<IDSoggetto> idSoggettiOperativi = this.soggettiCore.getIdSoggettiOperativi(protocolloSelezionato);
  312.             // Si e' deciso che i soggetti associati valgono solo per govwayMonitor
  313.            
  314.             // visualizzo il menu' soggetti solo se e' stato selezionato un protocollo
  315.             if(protocolloSelezionato!=null && !"".equals(protocolloSelezionato) &&
  316.                     idSoggettiOperativi != null && !idSoggettiOperativi.isEmpty()) {
  317.                
  318.                 if(soggettoOperativoSelezionato==null && idSoggettiOperativi.size()==1) {
  319.                     IDSoggetto idSoggetto = idSoggettiOperativi.get(0);
  320.                     soggettoOperativoSelezionato = idSoggetto.toString(); // forzo
  321.                 }
  322.                
  323.                 GeneralLink glSoggettoCorrente = new GeneralLink();
  324.                 IDSoggetto idSoggettoOperativo = null;
  325.                 if(soggettoOperativoSelezionato!=null) {
  326.                     idSoggettoOperativo = this.soggettiCore.convertSoggettoSelezionatoToID(soggettoOperativoSelezionato);
  327.                 }
  328.                 String labelSelezionato = soggettoOperativoSelezionato == null ? UtentiCostanti.LABEL_PARAMETRO_MODALITA_ALL : ConsoleHelper._getLabelNomeSoggetto(idSoggettoOperativo);
  329.                 String labelSelezionatoCompleta = MessageFormat.format(LoginCostanti.LABEL_MENU_SOGGETTO_CORRENTE_WITH_PARAM, labelSelezionato);
  330.                 glSoggettoCorrente.setLabel(labelSelezionatoCompleta);
  331.                
  332.                 if(labelSelezionatoCompleta.length() > this.core.getLunghezzaMassimaLabelSoggettiOperativiMenuUtente()) {
  333.                     glSoggettoCorrente.setLabel(ConsoleHelper.normalizeLabel(labelSelezionatoCompleta, this.core.getLunghezzaMassimaLabelSoggettiOperativiMenuUtente()));
  334.                 }
  335.                
  336.                 glSoggettoCorrente.setUrl("");
  337.                 glSoggettoCorrente.setLabelWidth(this.core.getFontWidth(glSoggettoCorrente.getLabel(),  Font.BOLD, 16));
  338.                 link.add(glSoggettoCorrente);
  339.                
  340.                 Integer numeroMassimoSoggettiSelectListSoggettiOperatiti = this.core.getNumeroMassimoSoggettiSelectListSoggettiOperatiti();
  341.                
  342.                 if(idSoggettiOperativi.size()>1) {
  343.                     List<String> listaLabel = new ArrayList<>();
  344.                     Map<String, IDSoggetto> mapLabelIds = new HashMap<>();
  345.                     for (IDSoggetto idSoggetto : idSoggettiOperativi) {
  346.                         String labelSoggetto = ConsoleHelper._getLabelNomeSoggetto(idSoggetto);
  347.                         if(!listaLabel.contains(labelSoggetto)) {
  348.                             listaLabel.add(labelSoggetto);
  349.                             mapLabelIds.put(labelSoggetto, idSoggetto);
  350.                         }
  351.                     }
  352.                    
  353.                     // Per ordinare in maniera case insensistive
  354.                     Collections.sort(listaLabel, new Comparator<String>() {
  355.                          @Override
  356.                         public int compare(String o1, String o2) {
  357.                                return o1.toLowerCase().compareTo(o2.toLowerCase());
  358.                             }
  359.                         });
  360.                    
  361.                     for (String label : listaLabel) {
  362.                         GeneralLink glSoggetto = new GeneralLink();
  363.                        
  364.                         glSoggetto.setLabel(label);
  365.                         if(soggettoOperativoSelezionato != null && mapLabelIds.get(label).toString().equals(idSoggettoOperativo.toString())) {
  366.                             glSoggetto.setUrl("");
  367.                         } else {
  368.                             glSoggetto.setUrl(UtentiCostanti.SERVLET_NAME_UTENTE_CHANGE,
  369.                                     new Parameter(UtentiCostanti.PARAMETRO_UTENTE_ID_SOGGETTO, NamingUtils.getSoggettoFromLabel(protocolloSelezionato, label).toString()),
  370.                                     new Parameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME,Costanti.DATA_ELEMENT_EDIT_MODE_VALUE_EDIT_END),
  371.                                     new Parameter(UtentiCostanti.PARAMETRO_UTENTE_CHANGE_SOGGETTO,Costanti.CHECK_BOX_ENABLED)
  372.                                     );
  373.                         }
  374.                        
  375.                         if(label.length() > this.core.getLunghezzaMassimaLabelSoggettiOperativiMenuUtente()) {
  376.                             glSoggetto.setLabel(ConsoleHelper.normalizeLabel(label, this.core.getLunghezzaMassimaLabelSoggettiOperativiMenuUtente()));
  377.                             glSoggetto.setTooltip(label);
  378.                         }
  379.                        
  380.                         glSoggetto.setLabelWidth(this.core.getFontWidth(glSoggetto.getLabel(), 14));
  381.                         link.add(glSoggetto);
  382.                     }
  383.                
  384.                
  385.                     // seleziona tutti
  386.                     GeneralLink glAll = new GeneralLink();
  387.                     glAll.setLabel(UtentiCostanti.LABEL_PARAMETRO_MODALITA_ALL);
  388.                     if((soggettoOperativoSelezionato == null)) {
  389.                         glAll.setUrl("");
  390.                     } else {
  391.                         glAll.setUrl(UtentiCostanti.SERVLET_NAME_UTENTE_CHANGE,
  392.                                 new Parameter(UtentiCostanti.PARAMETRO_UTENTE_ID_SOGGETTO, UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL),
  393.                                 new Parameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME,Costanti.DATA_ELEMENT_EDIT_MODE_VALUE_EDIT_END),
  394.                                 new Parameter(UtentiCostanti.PARAMETRO_UTENTE_CHANGE_SOGGETTO,Costanti.CHECK_BOX_ENABLED)
  395.                                 );
  396.                     }
  397.                     glAll.setLabelWidth(this.core.getFontWidth(UtentiCostanti.LABEL_PARAMETRO_MODALITA_ALL, 14));
  398.                     link.add(glAll);
  399.                 }
  400.                
  401.                 if( idSoggettiOperativi.size() > numeroMassimoSoggettiSelectListSoggettiOperatiti ) {  
  402.                     // Abilita l visualizzazione autocomplete
  403.                     glSoggettoCorrente.setUrl("abilitaAutocomplete");
  404.                 }
  405.             }
  406.         } catch (Exception e) {
  407.             ControlStationLogger.getPddConsoleCoreLogger().error(e.getMessage(),e);
  408.         }

  409.         return link;
  410.     }

  411.     public ControlStationCore getCore() {
  412.         return this.core;
  413.     }
  414. }