/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package servidor.datos.base;

import servidor.datos.*;
import java.sql.*;
import servidor.comunicaciones.*;
import servidor.utiles.*;

public class TablaProductos implements ITablaReactivable {

   SentenciaSQL stmtInsert;
   SentenciaSQL stmtDelete;

   public TablaProductos() {
       preparaStmt();
       BaseDatos.bd().registrarTabla(this);
   }

   @Override
   public final void preparaStmt() {
      try {
         stmtInsert = new SentenciaSQL("INSERT INTO productos " +
           "(fecha,operador,mesa,nif,nombreProcedimiento,datos) " +
           "values(?,?,?,?,?,?)");
         stmtDelete = new SentenciaSQL("DELETE FROM productos WHERE fecha < ?");
      } catch (Exception exc) {
         stmtInsert = null;
      }
   }

   public void insertar(MensajeOperador msj) {
      if (stmtInsert == null) {
         return;
      }
      stmtInsert.setTimestamp(1, Fecha.ahora());
      stmtInsert.setString(2, msj.getOperador());
      stmtInsert.setString(3, msj.getMesa());
      stmtInsert.setString(4, msj.params[2]);
      stmtInsert.setString(5, msj.params[3]);
      stmtInsert.setString(6, msj.params[4]);
      stmtInsert.executeUpdate();
   }

   public void limpiar() {
      // borrar registros con mas de 60 dias
      try {
         long ahora = System.currentTimeMillis();
         long unMes = 60000L * 60L * 24L * 30L;
         ahora -= unMes * 2;
         stmtDelete.setTimestamp(1,new Timestamp(ahora));
         stmtDelete.executeUpdate();
      } catch (Exception exc) {
      }
   }
}
