@Override
    public int altaDepartamento(Departamento departamento) 
    {
        departamento.setIdDepartamento(-1);
        
        EntityManager em = null;
        EntityManagerFactory ef = null;
        try 
        {
            ef = Persistence.createEntityManagerFactory("MerkaSoftPU");
            em = ef.createEntityManager();
            
            em.getTransaction().begin();
            
            Departamento departamentoAux = null;
            
            List results = em.createNamedQuery("Departamento.findByNombre")
            .setParameter("nombre", departamento.getNombre())
            .getResultList();
            
            if (results.size() > 0)
                departamentoAux = (Departamento)results.get(0);
            
            if (departamentoAux != null)
            {
                if (!departamentoAux.getDisponible())
                {
                    departamentoAux.setDisponible(true);
                    em.merge(departamentoAux);
                    departamento.setIdDepartamento(departamentoAux.getIdDepartamento());
                    em.getTransaction().commit();
                }
                else
                {
                    System.out.println("Ya existe el departamento");
                    em.getTransaction().rollback();
                }
            }            
            else
            {
                em.persist(departamento);
                em.getTransaction().commit(); 
            }
            
           
        } 
        finally 
        {
            if (em != null)             
                em.close();           
            if (ef != null)
                ef.close();
        }
        
        return departamento.getIdDepartamento();
    }