AuditHelper.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.lib.audit.web;

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

  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpSession;

  26. import org.openspcoop2.core.commons.ISearch;
  27. import org.openspcoop2.utils.date.DateUtils;
  28. import org.openspcoop2.utils.regexp.RegularExpressionEngine;
  29. import org.openspcoop2.web.lib.audit.costanti.Costanti;
  30. import org.openspcoop2.web.lib.audit.dao.Filtro;
  31. import org.openspcoop2.web.lib.audit.log.Binary;
  32. import org.openspcoop2.web.lib.audit.log.Operation;
  33. import org.openspcoop2.web.lib.audit.log.constants.Stato;
  34. import org.openspcoop2.web.lib.audit.log.constants.Tipologia;
  35. import org.openspcoop2.web.lib.mvc.DataElement;
  36. import org.openspcoop2.web.lib.mvc.DataElementType;
  37. import org.openspcoop2.web.lib.mvc.GeneralLink;
  38. import org.openspcoop2.web.lib.mvc.PageData;
  39. import org.openspcoop2.web.lib.mvc.Parameter;
  40. import org.openspcoop2.web.lib.mvc.ServletUtils;

  41. /**
  42.  * Utility per la gestione grafica delle servlet
  43.  *
  44.  *
  45.  * @author Andrea Poli (apoli@link.it)
  46.  * @author Stefano Corallo (corallo@link.it)
  47.  * @author Sandra Giangrandi (sandra@link.it)
  48.  * @author $Author$
  49.  * @version $Rev$, $Date$
  50.  *
  51.  */
  52. public class AuditHelper {
  53.     HttpServletRequest request;
  54.     PageData pd;
  55.     HttpSession session;

  56.     // Costruttore per le list
  57.     public AuditHelper(HttpServletRequest request, PageData pd, HttpSession session) {
  58.         this.request = request;
  59.         this.pd = pd;
  60.         this.session = session;
  61.     }

  62.     private static boolean useXml = false; // deprecato
  63.     public static boolean isUseXml() {
  64.         return useXml;
  65.     }
  66.     public static void setUseXml(boolean useXml) {
  67.         AuditHelper.useXml = useXml;
  68.     }

  69.     public List<DataElement> addAuditingToDati(String statoaudit,
  70.             String stato, String dump, String formatodump, String log4j,
  71.             int numFiltri) throws Exception {
  72.         try {
  73.             List<DataElement> dati = new ArrayList<>();

  74.             String[] tipi = {  AuditCostanti.DEFAULT_VALUE_ABILITATO, AuditCostanti.DEFAULT_VALUE_DISABILITATO };
  75.             String[] tipiLabels = { AuditCostanti.DEFAULT_VALUE_ABILITATO, AuditCostanti.DEFAULT_VALUE_DISABILITATO };

  76.             DataElement de = new DataElement();
  77.             de.setLabel(AuditCostanti.LABEL_AUDIT);
  78.             de.setType(DataElementType.TITLE);
  79.             dati.add(de);
  80.            
  81.             de = new DataElement();
  82.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO_AUDIT);
  83.             de.setType(DataElementType.SELECT);
  84.             de.setName(AuditCostanti.PARAMETRO_AUDIT_STATO_AUDIT);
  85.             de.setValues(tipi);
  86.             de.setLabels(tipiLabels);
  87.             if (statoaudit != null)
  88.                 de.setSelected(statoaudit);
  89.             //          de.setOnChange("CambiaStatoAudit()");
  90.             de.setPostBack(true);
  91.             dati.add(de);

  92.             if (statoaudit != null && statoaudit.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO)) {
  93.                 de = new DataElement();
  94.                 de.setLabel(AuditCostanti.LABEL_AUDIT_COMPORTAMENTO_DI_DEFAULT);
  95.                 de.setType(DataElementType.TITLE);
  96.                 dati.add(de);
  97.             }

  98.             de = new DataElement();
  99.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO_2);
  100.             if (statoaudit != null && statoaudit.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO)) {
  101.                 de.setType(DataElementType.SELECT);
  102.                 de.setValues(tipi);
  103.                 de.setLabels(tipiLabels);
  104.                 if (stato != null)
  105.                     de.setSelected(stato);
  106.             } else {
  107.                 de.setType(DataElementType.HIDDEN);
  108.                 de.setValue(stato);
  109.             }
  110.             de.setName(AuditCostanti.PARAMETRO_AUDIT_STATO);
  111.             dati.add(de);

  112.             de = new DataElement();
  113.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_DUMP);
  114.             if (statoaudit != null && statoaudit.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO)) {
  115.                 de.setType(DataElementType.SELECT);
  116.                 de.setValues(tipi);
  117.                 de.setLabels(tipiLabels);
  118.                 if (dump != null)
  119.                     de.setSelected(dump);
  120.             } else {
  121.                 de.setType(DataElementType.HIDDEN);
  122.                 de.setValue(dump);
  123.             }
  124.             de.setName(AuditCostanti.PARAMETRO_AUDIT_DUMP);
  125.             dati.add(de);

  126.             String[] tipiFormato =
  127.                 { Costanti.DUMP_JSON_FORMAT, Costanti.DUMP_XML_FORMAT };
  128.             de = new DataElement();
  129.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_FORMATO_DUMP);
  130.             if(!useXml) {
  131.                 formatodump = Costanti.DUMP_JSON_FORMAT;
  132.             }
  133.             if (useXml && statoaudit != null && statoaudit.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO)) {
  134.                 de.setType(DataElementType.SELECT);
  135.                 de.setValues(tipiFormato);
  136.                 if (formatodump != null)
  137.                     de.setSelected(formatodump);
  138.             } else {
  139.                 de.setType(DataElementType.HIDDEN);
  140.                 de.setValue(formatodump);
  141.             }
  142.             de.setName(AuditCostanti.PARAMETRO_AUDIT_FORMATO_DUMP);
  143.             dati.add(de);

  144.             de = new DataElement();
  145.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_LOG4J);
  146.             if (statoaudit != null && statoaudit.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO)) {
  147.                 de.setType(DataElementType.SELECT);
  148.                 de.setValues(tipi);
  149.                 de.setLabels(tipiLabels);
  150.                 if (log4j != null)
  151.                     de.setSelected(log4j);
  152.             } else {
  153.                 de.setType(DataElementType.HIDDEN);
  154.                 de.setValue(log4j);
  155.             }
  156.             de.setName(AuditCostanti.PARAMETRO_AUDIT_LOG4J);
  157.             dati.add(de);

  158.             if (statoaudit != null && statoaudit.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO)) {
  159.                 de = new DataElement();
  160.                 de.setLabel(AuditCostanti.LABEL_AUDIT_FILTRI);
  161.                 de.setType(DataElementType.TITLE);
  162.                 dati.add(de);

  163.                 de = new DataElement();
  164.                 de.setLabel(AuditCostanti.LABEL_AUDIT_VISUALIZZA);
  165.                 de.setType(DataElementType.LINK);
  166.                 de.setUrl(AuditCostanti.SERVLET_NAME_AUDIT_FILTRI_LIST);
  167.                 ServletUtils.setDataElementVisualizzaLabel(de,  (long)numFiltri);
  168.                 dati.add(de);
  169.             }

  170.             return dati;
  171.         } catch (Exception e) {
  172.             throw new Exception(e);
  173.         }
  174.     }

  175.     public String auditCheckData(String statoaudit, String stato, String dump, String formatodump, String log4j)
  176.             throws Exception {
  177.         try {

  178.             // Controllo che i campi "select" abbiano uno dei valori ammessi
  179.             if (!statoaudit.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) && !statoaudit.equals(AuditCostanti.DEFAULT_VALUE_DISABILITATO)) {
  180.                 String msg = "Stato dev'essere abilitato o disabilitato";
  181.                 return msg;
  182.             }
  183.             if (!stato.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) && !stato.equals(AuditCostanti.DEFAULT_VALUE_DISABILITATO)) {
  184.                 String msg = "Audit dev'essere abilitato o disabilitato";
  185.                 return msg;
  186.             }
  187.             if (!dump.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) && !dump.equals(AuditCostanti.DEFAULT_VALUE_DISABILITATO)) {
  188.                 String msg = "Dump dev'essere abilitato o disabilitato";
  189.                 return msg;
  190.             }
  191.             if (!formatodump.equals(Costanti.DUMP_JSON_FORMAT) &&
  192.                     !formatodump.equals(Costanti.DUMP_XML_FORMAT)) {
  193.                 String msg = "Formato dump dev'essere "+Costanti.DUMP_JSON_FORMAT+
  194.                         " o "+Costanti.DUMP_XML_FORMAT;
  195.                 return msg;
  196.             }
  197.             if (!log4j.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) && !log4j.equals(AuditCostanti.DEFAULT_VALUE_DISABILITATO)) {
  198.                 String msg = "Log4j Auditing dev'essere abilitato o disabilitato";
  199.                 return msg;
  200.             }

  201.             return "";
  202.         } catch (Exception e) {
  203.             throw new Exception(e);
  204.         }
  205.     }

  206.     // Prepara la lista di filtri
  207.     public void prepareFiltriList(ISearch ricerca, List<Filtro> lista,
  208.             int idLista) throws Exception {
  209.         try {

  210.             ServletUtils.addListElementIntoSession(this.request, this.session, AuditCostanti.OBJECT_NAME_CONFIGURAZIONE_AUDITING_FILTRI);

  211.             int limit = ricerca.getPageSize(idLista);
  212.             int offset = ricerca.getIndexIniziale(idLista);
  213.             String search = ServletUtils.getSearchFromSession(ricerca, idLista);

  214.             this.pd.setIndex(offset);
  215.             this.pd.setPageSize(limit);
  216.             this.pd.setNumEntries(ricerca.getNumEntries(idLista));

  217.             // setto la barra del titolo
  218.             List<Parameter> lstParam = new ArrayList<>();

  219.             lstParam.add(new Parameter(AuditCostanti.LABEL_AUDIT,
  220.                     AuditCostanti.SERVLET_NAME_AUDIT));
  221.             if(search.equals("")){
  222.                 this.pd.setSearchDescription("");
  223.                 lstParam.add(new Parameter(AuditCostanti.LABEL_AUDIT_FILTRI,
  224.                         null));
  225.             }else{
  226.                 lstParam.add(new Parameter(AuditCostanti.LABEL_AUDIT_FILTRI,
  227.                         AuditCostanti.SERVLET_NAME_AUDIT_FILTRI_LIST));
  228.                 lstParam.add(new Parameter(org.openspcoop2.web.lib.mvc.Costanti.PAGE_DATA_TITLE_LABEL_RISULTATI_RICERCA, null));
  229.             }
  230.             ServletUtils.setPageDataTitle(this.pd, lstParam);

  231.             // controllo eventuali risultati ricerca
  232.             if (!search.equals("")) {
  233.                 ServletUtils.enabledPageDataSearch(this.pd, AuditCostanti.LABEL_AUDIT_FILTRI, search);
  234.             }

  235.             // setto le label delle colonne
  236.             String[] labels = {
  237.                     AuditCostanti.LABEL_AUDIT_DESCRIZIONE,
  238.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO,
  239.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_DUMP
  240.             };
  241.             this.pd.setLabels(labels);

  242.             // preparo i dati
  243.             List<List<DataElement>> dati = new ArrayList<>();

  244.             if (lista != null) {
  245.                 Iterator<Filtro> it = lista.iterator();
  246.                 while (it.hasNext()) {
  247.                     Filtro f = it.next();

  248.                     List<DataElement> e = new ArrayList<DataElement>();

  249.                     DataElement de = new DataElement();
  250.                     de.setUrl(
  251.                             AuditCostanti.SERVLET_NAME_AUDIT_FILTRI_CHANGE,
  252.                             new Parameter(AuditCostanti.PARAMETRO_AUDIT_ID, f.getId() + "")
  253.                             );
  254.                     de.setValue(f.toString());
  255.                     de.setIdToRemove(""+f.getId());
  256.                     e.add(de);

  257.                     de = new DataElement();
  258.                     de.setValue(f.isAuditEnabled() ? AuditCostanti.DEFAULT_VALUE_ABILITATO : AuditCostanti.DEFAULT_VALUE_DISABILITATO);
  259.                     e.add(de);

  260.                     de = new DataElement();
  261.                     de.setValue(f.isDumpEnabled() ? AuditCostanti.DEFAULT_VALUE_ABILITATO : AuditCostanti.DEFAULT_VALUE_DISABILITATO);
  262.                     e.add(de);

  263.                     dati.add(e);
  264.                 }
  265.             }

  266.             this.pd.setDati(dati);
  267.             this.pd.setAddButton(true);
  268.         } catch (Exception e) {
  269.             throw new Exception(e);
  270.         }
  271.     }

  272.     public List<DataElement> addFiltroToDati(Tipologia tipoOp, String utente,
  273.             String tipooperazione, String[] tipiOgg, String tipooggetto,
  274.             String statooperazione, String stato,
  275.             String tipofiltro, String dump, String statoazione,
  276.             String dumpazione, String id) throws Exception {
  277.         try {
  278.             List<DataElement> dati = new ArrayList<>();

  279.             String[] tipi = { AuditCostanti.DEFAULT_VALUE_ABILITATO, AuditCostanti.DEFAULT_VALUE_DISABILITATO };
  280.             String[] tipiLabels = { AuditCostanti.DEFAULT_VALUE_ABILITATO, AuditCostanti.DEFAULT_VALUE_DISABILITATO };

  281.             DataElement de = null;


  282.             if (tipoOp.equals(Tipologia.CHANGE)) {
  283.                 de = new DataElement();
  284.                 de.setValue(id);
  285.                 de.setType(DataElementType.HIDDEN);
  286.                 de.setName(AuditCostanti.PARAMETRO_AUDIT_ID);
  287.                 dati.add(de);
  288.             }

  289.             de = new DataElement();
  290.             de.setLabel(AuditCostanti.LABEL_AUDIT_FILTRO_GENERICO);
  291.             de.setType(DataElementType.TITLE);
  292.             dati.add(de);

  293.             de = new DataElement();
  294.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_UTENTE);
  295.             de.setName(AuditCostanti.PARAMETRO_AUDIT_UTENTE);
  296.             de.setType(DataElementType.TEXT_EDIT);
  297.             de.setValue(utente);
  298.             dati.add(de);

  299.             String[] tipiOp =
  300.                 { "-", Tipologia.ADD.toString(),
  301.                     Tipologia.CHANGE.toString(),
  302.                     Tipologia.DEL.toString() };
  303.             de = new DataElement();
  304.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_TIPO_OPERAZIONE);
  305.             de.setName(AuditCostanti.PARAMETRO_AUDIT_TIPO_OPERAZIONE);
  306.             de.setType(DataElementType.SELECT);
  307.             de.setValues(tipiOp);
  308.             if (tipooperazione != null)
  309.                 de.setSelected(tipooperazione);
  310.             dati.add(de);

  311.             de = new DataElement();
  312.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_TIPO_OGGETTO);
  313.             de.setName(AuditCostanti.PARAMETRO_AUDIT_TIPO_OGGETTO);
  314.             de.setType(DataElementType.SELECT);
  315.             de.setValues(tipiOgg);
  316.             if (tipooggetto != null)
  317.                 de.setSelected(tipooggetto);
  318.             dati.add(de);

  319.             String[] tipiStatoOp =
  320.                 { "-", Stato.REQUESTING.toString(),
  321.                     Stato.ERROR.toString(),
  322.                     Stato.COMPLETED.toString() };
  323.             de = new DataElement();
  324.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO_OPERAZIONE);
  325.             de.setName(AuditCostanti.PARAMETRO_AUDIT_STATO_OPERAZIONE);
  326.             de.setType(DataElementType.SELECT);
  327.             de.setValues(tipiStatoOp);
  328.             if (statooperazione != null)
  329.                 de.setSelected(statooperazione);
  330.             dati.add(de);

  331.             de = new DataElement();
  332.             de.setLabel(AuditCostanti.LABEL_AUDIT_FILTRO_CONTENUTO);
  333.             de.setType(DataElementType.TITLE);
  334.             dati.add(de);

  335.             de = new DataElement();
  336.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO);
  337.             de.setType(DataElementType.SELECT);
  338.             de.setName(AuditCostanti.PARAMETRO_AUDIT_STATO);
  339.             de.setValues(tipi);
  340.             de.setLabels(tipiLabels);
  341.             if (stato != null)
  342.                 de.setSelected(stato);
  343.             //          de.setOnChange("CambiaStatoFiltro('" + tipoOp + "')");
  344.             de.setPostBack(true);
  345.             dati.add(de);

  346.             String[] tipiFiltro =
  347.                 {   AuditCostanti.DEFAULT_VALUE_PARAMETRO_AUDIT_TIPO_FILTRO_NORMALE,
  348.                     AuditCostanti.DEFAULT_VALUE_PARAMETRO_AUDIT_TIPO_FILTRO_ESPRESSIONE_REGOLARE
  349.                 };
  350.             de = new DataElement();
  351.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_TIPO);

  352.             de.setName(AuditCostanti.PARAMETRO_AUDIT_TIPO_FILTRO);
  353.             if (stato != null && stato.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO)) {
  354.                 de.setType(DataElementType.SELECT);
  355.                 de.setValues(tipiFiltro);
  356.                 if (tipofiltro != null)
  357.                     de.setSelected(tipofiltro);
  358.             } else {
  359.                 de.setType(DataElementType.HIDDEN);
  360.                 de.setValue(tipofiltro);
  361.             }
  362.             dati.add(de);

  363.             de = new DataElement();
  364.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_DUMP);
  365.             de.setName(AuditCostanti.PARAMETRO_AUDIT_DUMP);
  366.             if (stato != null && stato.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO)) {
  367.                 de.setType(DataElementType.TEXT_EDIT);
  368.                 de.setValue(dump);
  369.                 de.setRequired(true);
  370.             } else {
  371.                 de.setType(DataElementType.HIDDEN);
  372.                 de.setValue(dump);
  373.             }
  374.             dati.add(de);

  375.             de = new DataElement();
  376.             de.setLabel(AuditCostanti.LABEL_AUDIT_AZIONE);
  377.             de.setType(DataElementType.TITLE);
  378.             dati.add(de);

  379.             de = new DataElement();
  380.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO);
  381.             de.setType(DataElementType.SELECT);
  382.             de.setName(AuditCostanti.PARAMETRO_AUDIT_STATO_AZIONE);
  383.             de.setValues(tipi);
  384.             de.setLabels(tipiLabels);
  385.             if (statoazione != null)
  386.                 de.setSelected(statoazione);
  387.             dati.add(de);

  388.             de = new DataElement();
  389.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_DUMP);
  390.             de.setType(DataElementType.SELECT);
  391.             de.setName(AuditCostanti.PARAMETRO_AUDIT_DUMP_AZIONE);
  392.             de.setValues(tipi);
  393.             de.setLabels(tipiLabels);
  394.             if (dumpazione != null)
  395.                 de.setSelected(dumpazione);
  396.             dati.add(de);

  397.             return dati;
  398.         } catch (Exception e) {
  399.             throw new Exception(e);
  400.         }
  401.     }

  402.     public String filtriCheckData(String utente, String tipooperazione,
  403.             String tipooggetto, String statooperazione,
  404.             String stato, String tipofiltro,
  405.             String dump, String statoazione,
  406.             String dumpazione, String[] tipiOgg)
  407.             throws Exception {
  408.         try {

  409.             // Controllo che i campi "select" abbiano uno dei valori ammessi
  410.             if (!tipooperazione.equals("-") &&
  411.                     !tipooperazione.equals(Tipologia.ADD.toString()) &&
  412.                     !tipooperazione.equals(Tipologia.CHANGE.toString()) &&
  413.                     !tipooperazione.equals(Tipologia.DEL.toString())) {
  414.                 String msg = "Tipo operazione dev'essere - o "+
  415.                         Tipologia.ADD.toString()+
  416.                         " o "+Tipologia.CHANGE.toString()+
  417.                         " o "+Tipologia.DEL.toString();
  418.                 return msg;
  419.             }
  420.             if (!statooperazione.equals("-") &&
  421.                     !statooperazione.equals(Stato.REQUESTING.toString()) &&
  422.                     !statooperazione.equals(Stato.ERROR.toString()) &&
  423.                     !statooperazione.equals(Stato.COMPLETED.toString())) {
  424.                 String msg = "Stato operazione dev'essere - o "+
  425.                         Stato.REQUESTING.toString()+
  426.                         " o "+Stato.ERROR.toString()+
  427.                         " o "+Stato.COMPLETED.toString();
  428.                 return msg;
  429.             }
  430.             if (!stato.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) && !stato.equals(AuditCostanti.DEFAULT_VALUE_DISABILITATO)) {
  431.                 String msg = "Stato dev'essere abilitato o disabilitato";
  432.                 return msg;
  433.             }
  434.             if (stato.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) &&
  435.                     !tipofiltro.equals("normale") && !tipofiltro.equals("espressioneRegolare")) {
  436.                 String msg = "Tipo dev'essere normale o espressioneRegolare";
  437.                 return msg;
  438.             }
  439.             if (!statoazione.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) && !statoazione.equals(AuditCostanti.DEFAULT_VALUE_DISABILITATO)) {
  440.                 String msg = "Stato dev'essere abilitato o disabilitato";
  441.                 return msg;
  442.             }
  443.             if (!dumpazione.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) && !dumpazione.equals(AuditCostanti.DEFAULT_VALUE_DISABILITATO)) {
  444.                 String msg = "Dump dev'essere abilitato o disabilitato";
  445.                 return msg;
  446.             }

  447.             // Controllo che il tipo oggetto appartenga alla lista di
  448.             // tipi oggetto disponibili
  449.             String allOgg = "";
  450.             boolean trovatoOgg = false;
  451.             for (int i = 0; i < tipiOgg.length; i++) {
  452.                 String tmpOgg = tipiOgg[i];
  453.                 if (tmpOgg.equals(tipooggetto)) {
  454.                     trovatoOgg = true;
  455.                 }
  456.                 if (allOgg.equals(""))
  457.                     allOgg = tmpOgg;
  458.                 else
  459.                     allOgg = allOgg+", "+tmpOgg;
  460.             }
  461.             if (!trovatoOgg) {
  462.                 String msg = "Il tipo oggetto dev'essere scelto tra: "+allOgg;
  463.                 return msg;
  464.             }

  465.             // Se lo stato è abilitato, dump dev'essere specificato
  466.             if (stato.equals(AuditCostanti.DEFAULT_VALUE_ABILITATO) && dump.equals("")) {
  467.                 String msg = "Se Stato è abilitato, Dump dev'essere valorizzato";
  468.                 return msg;
  469.             }

  470.             // Errore se non è stato impostato nessuno tra l'username,
  471.             // il tipo di operazione, il tipo di oggetto, lo stato operazione
  472.             // e il filtro per contenuto abilitato
  473.             if (utente.equals("") && tipooperazione.equals("-") &&
  474.                     tipooggetto.equals("-") && statooperazione.equals("-") &&
  475.                     !AuditCostanti.DEFAULT_VALUE_ABILITATO.equals(stato)) {
  476.                 String msg = "Specificare almeno un criterio di filtro generico o un filtro per contenuto";
  477.                 return msg;
  478.             }

  479.             return "";
  480.         } catch (Exception e) {
  481.             throw new Exception(e);
  482.         }
  483.     }

  484.     public List<DataElement> addAuditReportToDati(String datainizio,
  485.             String datafine, String tipooperazione, String[] tipiOgg,
  486.             String tipooggetto, String id, String oldid,
  487.             String utente, String statooperazione, String contoggetto)
  488.                     throws Exception {
  489.         try {
  490.             List<DataElement> dati = new ArrayList<DataElement>();

  491.             DataElement de = new DataElement();
  492.             de.setLabel(AuditCostanti.LABEL_AUDIT_CRITERI_RICERCA);
  493.             de.setType(DataElementType.TITLE);
  494.             dati.add(de);

  495.             int valueSize = 40;

  496.             de = new DataElement();
  497.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_DATA_INIZIO_LABEL);
  498.             de.setNote(AuditCostanti.LABEL_PARAMETRO_AUDIT_DATA_INIZIO_NOTE);
  499.             de.setValue(datainizio != null ? datainizio : "");
  500.             de.setType(DataElementType.TEXT_EDIT);
  501.             de.setName(AuditCostanti.PARAMETRO_AUDIT_DATA_INIZIO);
  502.             de.setSize(valueSize);
  503.             dati.add(de);

  504.             de = new DataElement();
  505.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_DATA_FINE_LABEL);
  506.             de.setNote(AuditCostanti.LABEL_PARAMETRO_AUDIT_DATA_FINE_NOTE);
  507.             de.setValue(datafine != null ? datafine : "");
  508.             de.setType(DataElementType.TEXT_EDIT);
  509.             de.setName(AuditCostanti.PARAMETRO_AUDIT_DATA_FINE);
  510.             de.setSize(valueSize);
  511.             dati.add(de);

  512.             de = new DataElement();
  513.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_UTENTE);
  514.             de.setName(AuditCostanti.PARAMETRO_AUDIT_UTENTE);
  515.             de.setType(DataElementType.TEXT_EDIT);
  516.             de.setValue(utente);
  517.             de.setSize(valueSize);
  518.             dati.add(de);

  519.             de = new DataElement();
  520.             de.setLabel(AuditCostanti.LABEL_AUDIT_OPERAZIONE);
  521.             de.setType(DataElementType.TITLE);
  522.             dati.add(de);

  523.             String[] tipiOp =
  524.                 { "-", Tipologia.ADD.toString(),
  525.                     Tipologia.CHANGE.toString(),
  526.                     Tipologia.DEL.toString(),
  527.                     Tipologia.LOGIN.toString(),
  528.                     Tipologia.LOGOUT.toString() };
  529.             de = new DataElement();
  530.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_TIPO);
  531.             de.setName(AuditCostanti.PARAMETRO_AUDIT_TIPO_OPERAZIONE);
  532.             de.setType(DataElementType.SELECT);
  533.             de.setValues(tipiOp);
  534.             if (tipooperazione != null)
  535.                 de.setSelected(tipooperazione);
  536.             de.setSize(valueSize);
  537.             dati.add(de);

  538.             String[] tipiStatoOp =
  539.                 { "-", Stato.REQUESTING.toString(),
  540.                     Stato.ERROR.toString(),
  541.                     Stato.COMPLETED.toString() };
  542.             de = new DataElement();
  543.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO);
  544.             de.setName(AuditCostanti.PARAMETRO_AUDIT_STATO_OPERAZIONE);
  545.             de.setType(DataElementType.SELECT);
  546.             de.setValues(tipiStatoOp);
  547.             if (statooperazione != null)
  548.                 de.setSelected(statooperazione);
  549.             de.setSize(valueSize);
  550.             dati.add(de);

  551.             de = new DataElement();
  552.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_OGGETTO);
  553.             de.setType(DataElementType.TITLE);
  554.             dati.add(de);

  555.             de = new DataElement();
  556.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_TIPO);
  557.             de.setName(AuditCostanti.PARAMETRO_AUDIT_TIPO_OGGETTO);
  558.             de.setType(DataElementType.SELECT);
  559.             de.setValues(tipiOgg);
  560.             if (tipooggetto != null)
  561.                 de.setSelected(tipooggetto);
  562.             de.setSize(valueSize);
  563.             dati.add(de);

  564.             de = new DataElement();
  565.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_ID);
  566.             de.setName(AuditCostanti.PARAMETRO_AUDIT_ID);
  567.             de.setType(DataElementType.TEXT_EDIT);
  568.             de.setValue(id);
  569.             de.setSize(valueSize);
  570.             dati.add(de);

  571.             de = new DataElement();
  572.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_OPERATION_OLD_ID);
  573.             de.setName(AuditCostanti.PARAMETRO_AUDIT_OLD_ID);
  574.             de.setType(DataElementType.TEXT_EDIT);
  575.             de.setValue(oldid);
  576.             de.setSize(valueSize);
  577.             dati.add(de);

  578.             de = new DataElement();
  579.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_CONTENUTO_OGGETTO);
  580.             de.setName(AuditCostanti.PARAMETRO_AUDIT_CONTENUTO_OGGETTO);
  581.             de.setType(DataElementType.TEXT_EDIT);
  582.             de.setValue(contoggetto);
  583.             de.setSize(valueSize);
  584.             dati.add(de);

  585.             return dati;
  586.         } catch (Exception e) {
  587.             throw new Exception(e);
  588.         }
  589.     }

  590.     public String auditReportCheckData(String datainizio, String datafine,
  591.             String tipooperazione, String tipooggetto,
  592.             String id, String oldid,
  593.             String statooperazione,
  594.             String[] tipiOgg)
  595.             throws Exception {
  596.         try {

  597.             // Controllo che i campi "select" abbiano uno dei valori ammessi
  598.             if (!tipooperazione.equals("-") &&
  599.                     !tipooperazione.equals(Tipologia.ADD.toString()) &&
  600.                     !tipooperazione.equals(Tipologia.CHANGE.toString()) &&
  601.                     !tipooperazione.equals(Tipologia.DEL.toString()) &&
  602.                     !tipooperazione.equals(Tipologia.LOGIN.toString()) &&
  603.                     !tipooperazione.equals(Tipologia.LOGOUT.toString())) {
  604.                 String msg = "Tipo operazione dev'essere - o "+
  605.                         Tipologia.ADD.toString()+
  606.                         " o "+Tipologia.CHANGE.toString()+
  607.                         " o "+Tipologia.DEL.toString()+
  608.                         " o "+Tipologia.LOGIN.toString()+
  609.                         " o "+Tipologia.LOGOUT.toString();
  610.                 return msg;
  611.             }
  612.             if (!statooperazione.equals("-") &&
  613.                     !statooperazione.equals(Stato.REQUESTING.toString()) &&
  614.                     !statooperazione.equals(Stato.ERROR.toString()) &&
  615.                     !statooperazione.equals(Stato.COMPLETED.toString())) {
  616.                 String msg = "Stato operazione dev'essere - o "+
  617.                         Stato.REQUESTING.toString()+
  618.                         " o "+Stato.ERROR.toString()+
  619.                         " o "+Stato.COMPLETED.toString();
  620.                 return msg;
  621.             }

  622.             // Controllo che il tipo oggetto appartenga alla lista di
  623.             // tipi oggetto disponibili
  624.             String allOgg = "";
  625.             boolean trovatoOgg = false;
  626.             for (int i = 0; i < tipiOgg.length; i++) {
  627.                 String tmpOgg = tipiOgg[i];
  628.                 if (tmpOgg.equals(tipooggetto)) {
  629.                     trovatoOgg = true;
  630.                 }
  631.                 if (allOgg.equals(""))
  632.                     allOgg = tmpOgg;
  633.                 else
  634.                     allOgg = allOgg+", "+tmpOgg;
  635.             }
  636.             if (!trovatoOgg) {
  637.                 String msg = "Il tipo oggetto dev'essere scelto tra: "+allOgg;
  638.                 return msg;
  639.             }

  640.             if ( (datainizio == null || "".equals(datainizio))
  641.                     &&
  642.                     (id == null || "".equals(id))
  643.                     &&
  644.                     (oldid == null || "".equals(oldid)) ) {
  645.                 String msg = "Deve essere indicato almeno uno dei seguenti criteri di ricerca: Intervallo Iniziale, Identificativo, Id precedente alla modifica";
  646.                 return msg;
  647.             }
  648.            
  649.             // Controlli sulle date
  650.             if (datainizio != null && !"".equals(datainizio)) {
  651.                 boolean dataInOk = true;
  652.                 if (datainizio.length() != 10) {
  653.                     dataInOk = false;
  654.                 } else {
  655.                     String anno = datainizio.substring(0, 4);
  656.                     String mese = datainizio.substring(5, 7);
  657.                     String giorno = datainizio.substring(8, 10);
  658.                     if (!RegularExpressionEngine.isMatch(anno,"^[0-9]+$")) {
  659.                         dataInOk = false;
  660.                     } else if (!datainizio.substring(4, 5).equals("-")) {
  661.                         dataInOk = false;
  662.                     } else if (!RegularExpressionEngine.isMatch(mese,"^[0-9]+$")) {
  663.                         dataInOk = false;
  664.                     } else if (!datainizio.substring(7, 8).equals("-")) {
  665.                         dataInOk = false;
  666.                     } else if (!RegularExpressionEngine.isMatch(giorno,"^[0-9]+$")) {
  667.                         dataInOk = false;
  668.                     } else {
  669.                         int annoI = Integer.parseInt(anno);
  670.                         int meseI = Integer.parseInt(mese);
  671.                         int giornoI = Integer.parseInt(giorno);
  672.                         if ((meseI == 1) || (meseI == 3) || (meseI == 5) || (meseI == 7) || (meseI == 8) || (meseI == 10) || (meseI == 12)) {
  673.                             if ((giornoI == 0) || (giornoI > 31)) {
  674.                                 dataInOk = false;
  675.                             }
  676.                         } else {
  677.                             if ((meseI == 4) || (meseI == 6) || (meseI == 9) || (meseI == 11)) {
  678.                                 if ((giornoI == 0) || (giornoI > 30)) {
  679.                                     dataInOk = false;
  680.                                 }
  681.                             } else {
  682.                                 if (meseI == 2) {
  683.                                     int bisestile = annoI / 4;
  684.                                     if (annoI != bisestile * 4) {
  685.                                         if ((giornoI == 0) || (giornoI > 28)) {
  686.                                             dataInOk = false;
  687.                                         }
  688.                                     } else if ((giornoI == 0) || (giornoI > 29)) {
  689.                                         dataInOk = false;
  690.                                     }
  691.                                 } else {
  692.                                     dataInOk = false;
  693.                                 }
  694.                             }
  695.                         }
  696.                     }
  697.                 }
  698.                 if (!dataInOk) {
  699.                     String msg = "Inizio intervallo espresso in una forma sbagliata. Esprimerlo come yyyy-MM-dd";
  700.                     return msg;
  701.                 }
  702.             }

  703.             if (datafine != null && !"".equals(datafine)) {
  704.                 boolean dataFineOk = true;
  705.                 if (datafine.length() != 10) {
  706.                     dataFineOk = false;
  707.                 } else {
  708.                     String anno = datafine.substring(0, 4);
  709.                     String mese = datafine.substring(5, 7);
  710.                     String giorno = datafine.substring(8, 10);
  711.                     if (!RegularExpressionEngine.isMatch(anno,"^[0-9]+$")) {
  712.                         dataFineOk = false;
  713.                     } else if (!datafine.substring(4, 5).equals("-")) {
  714.                         dataFineOk = false;
  715.                     } else if (!RegularExpressionEngine.isMatch(mese,"^[0-9]+$")) {
  716.                         dataFineOk = false;
  717.                     } else if (!datafine.substring(7, 8).equals("-")) {
  718.                         dataFineOk = false;
  719.                     } else if (!RegularExpressionEngine.isMatch(giorno,"^[0-9]+$")) {
  720.                         dataFineOk = false;
  721.                     } else {
  722.                         int annoI = Integer.parseInt(anno);
  723.                         int meseI = Integer.parseInt(mese);
  724.                         int giornoI = Integer.parseInt(giorno);
  725.                         if ((meseI == 1) || (meseI == 3) || (meseI == 5) || (meseI == 7) || (meseI == 8) || (meseI == 10) || (meseI == 12)) {
  726.                             if ((giornoI == 0) || (giornoI > 31)) {
  727.                                 dataFineOk = false;
  728.                             }
  729.                         } else {
  730.                             if ((meseI == 4) || (meseI == 6) || (meseI == 9) || (meseI == 11)) {
  731.                                 if ((giornoI == 0) || (giornoI > 30)) {
  732.                                     dataFineOk = false;
  733.                                 }
  734.                             } else {
  735.                                 if (meseI == 2) {
  736.                                     int bisestile = annoI / 4;
  737.                                     if (annoI != bisestile * 4) {
  738.                                         if ((giornoI == 0) || (giornoI > 28)) {
  739.                                             dataFineOk = false;
  740.                                         }
  741.                                     } else if ((giornoI == 0) || (giornoI > 29)) {
  742.                                         dataFineOk = false;
  743.                                     }
  744.                                 } else {
  745.                                     dataFineOk = false;
  746.                                 }
  747.                             }
  748.                         }
  749.                     }
  750.                 }
  751.                 if (!dataFineOk) {
  752.                     String msg = "Fine intervallo espresso in una forma sbagliata. Esprimerlo come yyyy-MM-dd";
  753.                     return msg;
  754.                 }
  755.             }

  756.             return "";
  757.         } catch (Exception e) {
  758.             throw new Exception(e);
  759.         }
  760.     }

  761.     // Prepara la lista di operazioni
  762.     public void prepareAuditReportList(ISearch ricerca, List<Operation> lista,
  763.             int idLista,
  764.             String datainizio, String datafine,
  765.             String tipooperazione, String tipooggetto,
  766.             String id, String oldid,
  767.             String utente, String statooperazione,
  768.             String contoggetto) throws Exception {
  769.         try {

  770.             ServletUtils.addListElementIntoSession(this.request, this.session, AuditCostanti.OBJECT_NAME_AUDITING);

  771.             int limit = ricerca.getPageSize(idLista);
  772.             int offset = ricerca.getIndexIniziale(idLista);
  773.             //String search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));

  774.             this.pd.setIndex(offset);
  775.             this.pd.setPageSize(limit);
  776.             this.pd.setNumEntries(ricerca.getNumEntries(idLista));

  777.             Parameter pDataInizio = new Parameter(AuditCostanti.PARAMETRO_AUDIT_DATA_INIZIO, datainizio);
  778.             Parameter pDataFine = new Parameter(AuditCostanti.PARAMETRO_AUDIT_DATA_FINE, datafine);
  779.             Parameter pTipoOperazione = new Parameter(AuditCostanti.PARAMETRO_AUDIT_TIPO_OPERAZIONE, tipooperazione);
  780.             Parameter pTipoOggetto = new Parameter(AuditCostanti.PARAMETRO_AUDIT_TIPO_OGGETTO, tipooggetto);
  781.             Parameter pId = new Parameter(AuditCostanti.PARAMETRO_AUDIT_ID, id);
  782.             Parameter pOldId = new Parameter(AuditCostanti.PARAMETRO_AUDIT_OLD_ID, oldid);
  783.             Parameter pUtente = new Parameter(AuditCostanti.PARAMETRO_AUDIT_UTENTE, utente);
  784.             Parameter pStatoOperazione = new Parameter(AuditCostanti.PARAMETRO_AUDIT_STATO_OPERAZIONE, statooperazione);
  785.             Parameter pContoggetto = new Parameter(AuditCostanti.PARAMETRO_AUDIT_CONTENUTO_OGGETTO, contoggetto);
  786.             Parameter pEditModeFin = ServletUtils.getParameterForEditModeFinished();

  787.             String params = ServletUtils.getParametersAsString(false, pDataInizio, pDataFine, pTipoOperazione, pTipoOggetto, pId, pOldId, pUtente, pStatoOperazione, pContoggetto, pEditModeFin);

  788.             // setto la barra del titolo
  789.             List<GeneralLink> titlelist = new ArrayList<>();
  790.             GeneralLink tl1 = new GeneralLink();
  791.             tl1.setLabel(AuditCostanti.LABEL_AUDIT);
  792.             tl1.setUrl(AuditCostanti.SERVLET_NAME_AUDITING);
  793.             titlelist.add(tl1);
  794.             GeneralLink tl2 = new GeneralLink();
  795.             tl2.setLabel(AuditCostanti.LABEL_AUDIT_OPERAZIONI);
  796.             titlelist.add(tl2);
  797.             this.pd.setTitleList(titlelist);

  798.             this.pd.setSearch("off");

  799.             // setto le label delle colonne
  800.             String[] labels = {
  801.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_DATA_ESECUZIONE,
  802.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_OPERAZIONE,
  803.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO,
  804.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_OGGETTO,
  805.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_ID_UPPER_CASE,
  806.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_UTENTE,
  807.             };
  808.             this.pd.setLabels(labels);

  809.             // preparo i dati
  810.             List<List<DataElement>> dati = new ArrayList<>();

  811.             if (lista != null) {
  812.                 Iterator<Operation> it = lista.iterator();
  813.                 while (it.hasNext()) {
  814.                     Operation op = it.next();

  815.                     List<DataElement> e = new ArrayList<>();

  816.                     DataElement de = new DataElement();
  817.                     de.setUrl(
  818.                             AuditCostanti.SERVLET_NAME_AUDITING_DETTAGLIO,
  819.                             new Parameter(AuditCostanti.PARAMETRO_AUDIT_OPERATION_ID_OP, op.getId() + ""),
  820.                             pDataInizio, pDataFine, pTipoOperazione, pTipoOggetto, pId, pOldId, pUtente, pStatoOperazione, pContoggetto

  821.                             );
  822.                     de.setValue(DateUtils.getSimpleDateFormatMs().format(op.getTimeExecute())); //+ " ["+op.getId()+"]");
  823.                     de.setIdToRemove(""+op.getId());
  824.                     e.add(de);

  825.                     de = new DataElement();
  826.                     de.setValue(op.getTipologia().getValue());
  827.                     e.add(de);

  828.                     de = new DataElement();
  829.                     de.setValue(op.getStato().getValue());
  830.                     e.add(de);

  831.                     de = new DataElement();
  832.                     de.setValue(op.getTipoOggetto());
  833.                     e.add(de);

  834.                     de = new DataElement();
  835.                     if(op.getObjectId()!=null && op.getObjectId().length()>60){
  836.                         de.setValue(op.getObjectId().substring(0, 60)+" ...");
  837.                         de.setToolTip(op.getObjectId());
  838.                     }else{
  839.                         de.setValue(op.getObjectId());
  840.                     }
  841.                     e.add(de);

  842.                     de = new DataElement();
  843.                     de.setValue(op.getUtente());
  844.                     e.add(de);

  845.                     dati.add(e);
  846.                 }
  847.             }

  848.             this.pd.setDati(dati);
  849.             this.pd.setAddButton(false);

  850.             this.request.setAttribute(org.openspcoop2.web.lib.mvc.Costanti.REQUEST_ATTIBUTE_PARAMS, params);
  851.         } catch (Exception e) {
  852.             throw new Exception(e);
  853.         }
  854.     }

  855.     public List<DataElement> addAuditReportDettaglioToDati(Operation op, boolean showLinkDocumentiBinari,
  856.             Parameter ... params) throws Exception {
  857.         try {
  858.             List<DataElement> dati = new ArrayList<>();
  859.             Parameter pIdOp = new Parameter(AuditCostanti.PARAMETRO_AUDIT_OPERATION_ID_OP, op.getId() + "");
  860.             Parameter pTypeOggetto = new Parameter(AuditCostanti.PARAMETRO_AUDIT_TYPE, AuditCostanti.DEFAULT_VALUE_PARAMETRO_AUDIT_TYPE_OGGETTO);
  861.             Parameter pTypeErrore = new Parameter(AuditCostanti.PARAMETRO_AUDIT_TYPE, AuditCostanti.DEFAULT_VALUE_PARAMETRO_AUDIT_TYPE_ERROR);

  862.             DataElement de = new DataElement();
  863.             de.setLabel(AuditCostanti.LABEL_AUDIT_DETTAGLIO_OPERAZIONE);
  864.             de.setType(DataElementType.TITLE);
  865.             dati.add(de);
  866.            
  867.             de = new DataElement();
  868.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_OPERATION_TIME_REQUEST);
  869.             de.setValue(""+op.getTimeRequest());
  870.             de.setType(DataElementType.TEXT);
  871.             de.setName(AuditCostanti.PARAMETRO_AUDIT_OPERATION_TIME_REQUEST);
  872.             dati.add(de);

  873.             de = new DataElement();
  874.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_OPERATION_TIME_EXECUTE);
  875.             de.setValue(""+op.getTimeExecute());
  876.             de.setType(DataElementType.TEXT);
  877.             de.setName(AuditCostanti.PARAMETRO_AUDIT_OPERATION_TIME_EXECUTE);
  878.             dati.add(de);

  879.             de = new DataElement();
  880.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_ID_OPERAZIONE);
  881.             de.setValue(""+op.getId());
  882.             de.setType(DataElementType.TEXT);
  883.             de.setName(AuditCostanti.PARAMETRO_AUDIT_OPERATION_ID_OPERAZIONE);
  884.             dati.add(de);
  885.            
  886.             de = new DataElement();
  887.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_TIPO_OPERAZIONE);
  888.             de.setValue(op.getTipologia().getValue());
  889.             de.setType(DataElementType.TEXT);
  890.             de.setName(AuditCostanti.PARAMETRO_AUDIT_OPERATION_TIPO_OPERAZIONE);
  891.             dati.add(de);

  892.             de = new DataElement();
  893.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_TIPO_OGGETTO);
  894.             de.setValue(op.getTipoOggetto());
  895.             de.setType(DataElementType.TEXT);
  896.             de.setName(AuditCostanti.PARAMETRO_AUDIT_OPERATION_TIPO_OGGETTO);
  897.             dati.add(de);

  898.             de = new DataElement();
  899.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_ID);
  900.             de.setValue(op.getObjectId());
  901.             de.setType(DataElementType.TEXT);
  902.             de.setName(AuditCostanti.PARAMETRO_AUDIT_OPERATION_OBJECT_ID);
  903.             dati.add(de);

  904.             if (op.getObjectOldId() != null) {
  905.                 de = new DataElement();
  906.                 de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_OPERATION_OLD_ID);
  907.                 de.setValue(op.getObjectOldId());
  908.                 de.setType(DataElementType.TEXT);
  909.                 de.setName(AuditCostanti.PARAMETRO_AUDIT_OPERATION_OBJECT_OLD_ID  );
  910.                 dati.add(de);
  911.             }

  912.             de = new DataElement();
  913.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_UTENTE);
  914.             de.setValue(op.getUtente());
  915.             de.setType(DataElementType.TEXT);
  916.             de.setName(AuditCostanti.PARAMETRO_AUDIT_UTENTE);
  917.             dati.add(de);

  918.             de = new DataElement();
  919.             de.setLabel(AuditCostanti.LABEL_PARAMETRO_AUDIT_STATO);
  920.             de.setValue(op.getStato().getValue());
  921.             de.setType(DataElementType.TEXT);
  922.             de.setName(AuditCostanti.PARAMETRO_AUDIT_STATO);
  923.             dati.add(de);

  924.             int size2 = params != null ? params.length +2 : 2;
  925.             Parameter [] paramsErr = new Parameter[size2];
  926.             Parameter [] paramsOgg = new Parameter[size2];
  927.             paramsErr[0] = pIdOp;
  928.             paramsErr[1] = pTypeErrore;
  929.             paramsOgg[0] = pIdOp;
  930.             paramsOgg[1] = pTypeOggetto;
  931.            

  932.             if(params != null){
  933.             for (int i=0; i < params.length ; i++ ){
  934.                 paramsErr[i+2] = params[i];
  935.                 paramsOgg[i+2] = params[i];
  936.             }
  937.             }
  938.            
  939.             if (Stato.ERROR.equals(op.getStato())) {
  940.                 de = new DataElement();
  941.                 de.setLabel(AuditCostanti.LABEL_AUDIT_MOTIVO_ERRORE);
  942.                 de.setUrl(
  943.                         AuditCostanti.SERVLET_NAME_AUDITING_DETTAGLIO_INFO, paramsErr);
  944.                 de.setValue(AuditCostanti.LABEL_AUDIT_MOTIVO_ERRORE);
  945.                 de.setType(DataElementType.LINK);
  946.                 dati.add(de);
  947.             }

  948.             de = new DataElement();
  949.             de.setLabel(AuditCostanti.LABEL_AUDIT_DETTAGLIO_OGGETTO);
  950.             if(op.getObjectDetails()!=null && !"".equals(op.getObjectDetails())){
  951.                 de.setUrl(
  952.                         AuditCostanti.SERVLET_NAME_AUDITING_DETTAGLIO_INFO, paramsOgg);
  953.                 de.setType(DataElementType.LINK);
  954.             }
  955.             else{
  956.                 de.setType(DataElementType.HIDDEN);
  957.             }
  958.             de.setValue(AuditCostanti.LABEL_AUDIT_DETTAGLIO_OGGETTO);
  959.             dati.add(de);

  960.             int size = params != null ? params.length +1 : 1;
  961.             Parameter [] params2 = new Parameter[size];
  962.             params2[0] = pIdOp;

  963.             if(params != null){
  964.             for (int i=0; i < params.length ; i++ ){
  965.                 params2[i+1] = params[i];
  966.             }
  967.             }
  968.            
  969.             if(showLinkDocumentiBinari) {
  970.                 de = new DataElement();
  971.                 de.setLabel(AuditCostanti.LABEL_AUDIT_DOCUMENTI_BINARI);
  972.                 de.setUrl(AuditCostanti.SERVLET_NAME_AUDITING_DETTAGLIO_DOCUMENTI_BINARI, params2);
  973.                 de.setValue(AuditCostanti.LABEL_AUDIT_DOCUMENTI_BINARI + " ("+op.sizeBinaryList()+")");
  974.                 de.setType(DataElementType.LINK);
  975.                 dati.add(de);
  976.             }

  977.             return dati;
  978.         } catch (Exception e) {
  979.             throw new Exception(e);
  980.         }
  981.     }

  982.     public List<DataElement> addAuditReportInfoToDati(String type,
  983.             String info) throws Exception {
  984.         try {
  985.             List<DataElement> dati = new ArrayList<>();

  986.             DataElement de = new DataElement();
  987.             de.setLabel(AuditCostanti.LABEL_AUDIT_DETTAGLIO_OGGETTO);
  988.             de.setType(DataElementType.TITLE);
  989.             dati.add(de);
  990.            
  991.             de = new DataElement();
  992.             if (type.equals(AuditCostanti.DEFAULT_VALUE_PARAMETRO_AUDIT_TYPE_ERROR))
  993.                 de.setLabel(AuditCostanti.LABEL_AUDIT_MOTIVO_ERRORE);
  994. //          else
  995. //              de.setLabel(AuditCostanti.LABEL_AUDIT_DETTAGLIO_OGGETTO);
  996.             de.setType(DataElementType.TEXT_AREA_NO_EDIT);
  997.             de.setValue(info);
  998.             de.setRows(30);
  999.             de.setCols(80);
  1000.             dati.add(de);

  1001.             return dati;
  1002.         } catch (Exception e) {
  1003.             throw new Exception(e);
  1004.         }
  1005.     }

  1006.     // Prepara la lista di documenti binari
  1007.     public void prepareDocBinList(Operation singleOp, Parameter ... params)
  1008.             throws Exception {
  1009.         try {
  1010.             this.pd.setNumEntries(singleOp.sizeBinaryList());

  1011.             Parameter pIdOp = new Parameter(AuditCostanti.PARAMETRO_AUDIT_OPERATION_ID_OP, singleOp.getId() + "");
  1012.             // setto la barra del titolo
  1013.             List<Parameter> lstParam = new ArrayList<>();

  1014.             int size = params != null ? params.length +1 : 1;
  1015.             Parameter [] params2 = new Parameter[size];
  1016.             params2[0] = pIdOp;

  1017.             if(params != null){
  1018.             for (int i=0; i < params.length ; i++ ){
  1019.                 params2[i+1] = params[i];
  1020.             }
  1021.             }

  1022.             lstParam.add(new Parameter(AuditCostanti.LABEL_AUDIT, AuditCostanti.SERVLET_NAME_AUDITING));
  1023.             lstParam.add(new Parameter(AuditCostanti.LABEL_AUDIT_OPERAZIONI, AuditCostanti.SERVLET_NAME_AUDITING, params));
  1024.             lstParam.add(new Parameter(AuditCostanti.LABEL_AUDIT_DETTAGLIO +" di " + singleOp.getId(),
  1025.                     AuditCostanti.SERVLET_NAME_AUDITING_DETTAGLIO, params2));
  1026.             lstParam.add(new Parameter(AuditCostanti.LABEL_AUDIT_DOCUMENTI_BINARI, null));

  1027.             ServletUtils.setPageDataTitle(this.pd, lstParam);

  1028.             this.pd.setSearch("off");

  1029.             // setto le label delle colonne
  1030.             String[] labels = {
  1031.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_ID_UPPER_CASE,
  1032.                     AuditCostanti.LABEL_PARAMETRO_AUDIT_CHECKSUM
  1033.             };
  1034.             this.pd.setLabels(labels);

  1035.             // preparo i dati
  1036.             List<List<DataElement>> dati = new ArrayList<>();

  1037.             for (int i=0; i<singleOp.sizeBinaryList(); i++) {
  1038.                 Binary bin = singleOp.getBinary(i);

  1039.                 List<DataElement> e = new ArrayList<>();

  1040.                 DataElement de = new DataElement();
  1041.                 de.setValue(bin.getBinaryId());
  1042.                 e.add(de);

  1043.                 de = new DataElement();
  1044.                 de.setValue(""+bin.getChecksum());
  1045.                 e.add(de);

  1046.                 dati.add(e);
  1047.             }

  1048.             this.pd.setDati(dati);
  1049.             this.pd.setAddButton(false);
  1050.             this.pd.setSelect(false);
  1051.         } catch (Exception e) {
  1052.             throw new Exception(e);
  1053.         }
  1054.     }
  1055. }