/* 
* 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.*;

public class MemTablaOperadores extends MemTabla {

   public MemTablaOperadores() {
   }

   @Override
   public int cargar(String sql) {
      int n = super.cargar(sql);
      preparaStmt();
      return n;
   }

   @Override
   public int recargar() {
      int n = super.recargar();
      return n;
   }

   @Override
   public void borrarTabla() {
      BaseDatos.bd().borrarTabla("Operadores");
      filas.clear();
   }

   @Override
   public void preparaStmt() {
      updateStmt = new SentenciaSQL("UPDATE operadores SET " +
           "codigo=?, Nombre=?, Capacidad=?, Activo=? , Favoritas=?, Suplencias=?, FavEstadisticas=?, Centro=? " +
           "WHERE Id=?");
      insertStmt = new SentenciaSQL("INSERT INTO operadores " +
           "(codigo, Nombre, Capacidad, Activo, Favoritas, Suplencias, FavEstadisticas, Centro) " +
           "values (?,?,?,?,?,?,?,?)");
      deleteStmt = new SentenciaSQL("DELETE FROM operadores WHERE Id=?");
   }

   @Override
   public void update(MemRegistro reg) {
      RegistroOperadores r = (RegistroOperadores) reg;
      updateStmt.setString(1, r.getCodigo());
      updateStmt.setString(2, r.getNombre());
      updateStmt.setString(3, r.getCapacidad());
      updateStmt.setBoolean(4, r.isActivo());
      updateStmt.setString(5, r.getFavoritas());
      updateStmt.setString(6, r.getSuplencias());
      updateStmt.setString(7, r.getFavEstadisticas());
      updateStmt.setString(8, r.getCentro());
      updateStmt.setInt(9, r.getId());
      updateStmt.executeUpdate();
   }

   @Override
   public void insert(MemRegistro reg) {
      RegistroOperadores r = (RegistroOperadores) reg;
      filas.add(reg);
      insertStmt.setString(1, r.getCodigo());
      insertStmt.setString(2, r.getNombre());
      insertStmt.setString(3, r.getCapacidad());
      insertStmt.setBoolean(4, r.isActivo());
      insertStmt.setString(5, r.getFavoritas());
      insertStmt.setString(6, r.getSuplencias());
      insertStmt.setString(7, r.getFavEstadisticas());
      insertStmt.setString(8, r.getCentro());
      insertStmt.executeUpdate();
      r.setId(autoNumericoObtenido());
   }

   @Override
   public void delete(MemRegistro reg) {
      RegistroOperadores r = (RegistroOperadores) reg;
      filas.remove(reg);
      deleteStmt.setInt(1, r.getId());
      deleteStmt.executeUpdate();
   }

   @Override
   public MemRegistro nuevoRegistro() {
      return new RegistroOperadores();
   }

   public RegistroOperadores registro(int n) {
      return (RegistroOperadores) filas.get(n);
   }

   @Override
   int calcularUltimoNumero() {
      if(filas.size() < 1) return (++semillaAutoIncremento);
      RegistroOperadores reg = (RegistroOperadores) filas.get(filas.size() - 1);
      return reg.getId() + 1;
   }
}
