gt:                             Usuario catlocal = usuDAO.filtrarUsuario(vista.getNif());
context: /*
   * To change this license header, choose License Headers in Project Properties.
   * To change this template file, choose Tools | Templates
   * and open the template in the editor.
   */
  package controller;
  
  import Gestor.OrmLitetables;
  import com.j256.ormlite.table.TableUtils;
  import controller.dao.CategoriaDAOController;
  import controller.dao.ClienteDAOController;
  import controller.dao.HorasDAOController;
  import controller.dao.PedidoDAOController;
  import controller.dao.PedidoProductoDAOController;
  import controller.dao.ProductoDAOController;
  import controller.dao.UsuarioDAOController;
  import controller.utilidades.MontarSubida;
  import java.awt.Rectangle;
  import java.io.Serializable;
  import java.io.UnsupportedEncodingException;
  import java.sql.SQLException;
  import java.util.ArrayList;
  import java.util.Date;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  import java.util.Set;
  import java.util.TreeMap;
  import java.util.logging.Level;
  import java.util.logging.Logger;
  import javafx.scene.shape.Circle;
  import jdk.nashorn.internal.runtime.regexp.joni.EncodingHelper;
  import model.Categoria;
  
  import model.Cliente;
  import model.Horas;
  import model.Pedido;
  import model.PedidoProducto;
  import model.Producto;
  import model.Usuario;
  import model.mapping.CategoriaVista;
  import model.mapping.ClienteVista;
  import model.mapping.PedidoProductoVista;
  import model.mapping.PedidoVista;
  import model.mapping.ProductoVista;
  import model.mapping.UsuarioVista;
  import org.joda.time.DateTime;
  import org.json.JSONException;
  import org.reflections.Reflections;
  
  //import org.hibernate.Session;
  //import org.hibernate.Transaction;
  //import org.hibernate.persister.entity.AbstractEntityPersister;
  //import util.HibernateUtil;
  /**
   *
   * @author mateo
   */
  public class PersistencyController {
  
      private UsuarioDAOController usuDAO;
      private ProductoDAOController proDAO;
      private PedidoDAOController peDAO;
      private ClienteDAOController cliDAO;
      private CategoriaDAOController catDAO;
      private HorasDAOController hoDAO;
      private PedidoProductoDAOController peProDAO;
      private OrmLitetables cliCat;
      private PersistencyWeb perWeb;
  
      public PersistencyController() throws SQLException, ClassNotFoundException {
          if (cliCat == null) {
              cliCat = new OrmLitetables();
          }
  
          if (usuDAO == null) {
              usuDAO = new UsuarioDAOController(cliCat);
          }
          if (peProDAO == null) {
              peProDAO = new PedidoProductoDAOController(cliCat);
          }
          if (proDAO == null) {
              proDAO = new ProductoDAOController(cliCat);
          }
          if (peDAO == null) {
              peDAO = new PedidoDAOController(cliCat);
          }
          if (cliDAO == null) {
              cliDAO = new ClienteDAOController(cliCat);
          }
          if (catDAO == null) {
              catDAO = new CategoriaDAOController(cliCat);
          }
          if (hoDAO == null) {
              hoDAO = new HorasDAOController(cliCat);
          }
          if (perWeb == null) {
              perWeb = new PersistencyWeb();
          }
      }
  
      public boolean hacerLogin(String username, String password) {
          Usuario usu = new Usuario();
  
          usu.setUsername(username);
          usu.setPassword(password);
  //        usuDAO.insert(usu);
       /*   if (usuDAO.filtrarUsuario(usu) != null) {
           return true;
           } else {
           return false;
           }*/
          return true;
      }
  
      public void empezarActualizacion() {
          try {
              this.ActualizarDatosBajados(perWeb.actualizarDatos());
          } catch (SQLException ex) {
              Logger.getLogger(PersistencyController.class.getName()).log(Level.SEVERE, null, ex);
          } catch (InterruptedException ex) {
              Logger.getLogger(PersistencyController.class.getName()).log(Level.SEVERE, null, ex);
          } catch (JSONException ex) {
              Logger.getLogger(PersistencyController.class.getName()).log(Level.SEVERE, null, ex);
          } catch (UnsupportedEncodingException ex) {
              Logger.getLogger(PersistencyController.class.getName()).log(Level.SEVERE, null, ex);
          } finally {
              System.out.println("Actualizado con exito");
  
          }
      }
  
      public void ActualizarDatosBajados(TreeMap<String, ArrayList> map) throws SQLException {
          try {
              Categoria cat = null;
              DateTime ultima = DateTime.parse(getUltimaBajada());
              for (Object obj : map.get("HoraBajada")) {
                  Horas hora = (Horas) obj;
                  hoDAO.guardarHoraBajada(hora);
              }
  
              for (Object obj : map.get("Categoria")) {
                  CategoriaVista vista = (CategoriaVista) obj;
                  if (vista.getFecha().compareTo(ultima) > 0) {
                      switch (vista.getOp()) {
                          case "I":
                              catDAO.addCategoria(new Categoria(vista.getNombre(), vista.getDescuento()));
                              break;
                          case "U":
                              Categoria catlocal = catDAO.filtrarCategoria(vista.getNombre());
                              catlocal.setNombre(vista.getNombre());
                              catlocal.setDescuento(vista.getDescuento());
                              catDAO.EditarCategoria(catlocal);
                              break;
                          case "D":
                              catDAO.removeCategoria(vista.getNombre());
                              break;
                      }
                  }
              }
              for (Object obj : map.get("Productos")) {
                  ProductoVista vista = (ProductoVista) obj;
                  if (vista.getFecha().compareTo(ultima) > 0) {
                      switch (vista.getOp()) {
                          case "I":
                              Producto pro = new Producto();
                              pro.setImg(vista.getImg());
                              pro.setDescuento(vista.getDescuento());
                              pro.setNombre(vista.getNombre());
                              pro.setPrecio(vista.getPrecio());
                              Categoria catPro = catDAO.filtrarCategoria(vista.getCategoriaid());
                              catPro.addProducto(pro);
                              pro.setCategoria(catPro);
                              catDAO.EditarCategoria(cat);
                              proDAO.addProducto(pro);
                              break;
                          case "U":
                              Producto catlocal = proDAO.filtrarProducto(vista.getNombre());
                              catlocal.setNombre(vista.getNombre());
                              catlocal.setDescuento(vista.getDescuento());
                              catlocal.setImg(vista.getImg());
                              catlocal.setInhabilitats(vista.isInhabilitats());
                              catlocal.setPrecio(vista.getPrecio());
                              Categoria catProEdit = catDAO.filtrarCategoria(vista.getCategoriaid());
                              cat.addProducto(catlocal);
                              catlocal.setCategoria(catProEdit);
                              catDAO.EditarCategoria(catProEdit);
                              proDAO.EditarProducto(catlocal);
                              break;
                          case "D":
                              proDAO.removeProducto(vista.getNombre());
                              break;
                      }
                  }
  
              }
  
              for (Object obj : map.get("Usuario")) {
                  UsuarioVista vista = (UsuarioVista) obj;
                  if (vista.getFecha().compareTo(ultima) > 0) {
                      switch (vista.getOp()) {
                          case "I": {
                              try {
                                  usuDAO.addUsuario(new Usuario(vista.getNif(), vista.getNombre(), vista.getApellidos(), vista.getCalle(), vista.getPoblacion(), vista.isAdministrador(), vista.getUsername(), vista.getPassword()));
                              } catch (SQLException ex) {
                                  Logger.getLogger(PersistencyController.class.getName()).log(Level.SEVERE, null, ex);
                              }
                          }
                          break;
                          case "U":
  