jakartaee
  • Introduction
  • JakartaEE
    • Especificaciones
    • Proyecto JakartaEE9
    • Template Material top
  • Payara Community Server
  • GlassFish Server
    • Instalar GlassFish
    • Actualizar Password
    • Agregar GlassFish A NetBeans
  • JPA
    • Desabilitar Cache
    • Paginacion MySQL
    • Contador @ManyToOne
    • Paginación OracleDB con Atributos simples
  • JmoordbFaces
  • Tools
    • Herramientas de desarrollo
  • NoSQL
    • MongoDB
    • Instalar
    • jMoordb
    • script backup
  • EJB
    • Dependencias
    • Esquema EJB
    • Entity
    • Repository
    • Converter
    • DataModel
    • Services
    • Rules para eliminar
  • EE
    • Dependencias
    • Dashboard
    • Template
    • Personalizar Template
    • Properties
  • list Esquema
    • Introduccion list
    • Simple con autocomplete <Rol> list
    • Maestro <Agente> list
    • Detalle (Maestro-Detalle)<Permiso> list
  • new Esquema
    • Introduccion
    • Simple con autocomplete <Rol>
    • Maestro <Agente>
    • Detalle (Maestro-Detalle)<Permiso>
  • view Esquema
    • Introduccion a view
    • Simple con autocomplete <Rol> view
    • Maestro <Agente> view
    • Detalle (Maestro-Detalle)<Permiso> view
  • Componentes
    • <a:calendar>
    • <a:calendar> con Formatos
    • <a:calendar> con eventos
    • <a:date>
    • <a:yesno>
    • <a:noyes>
    • inputtext
    • email
    • selectOneMenu
    • selectOneMenu>
    • <a:sexo>
  • Search
    • searchBy(String field)
    • Búsqueda entre Fechas
  • Controller
    • clear
    • constructor
    • definicion compuesta
    • delete
    • deleteall
    • edit
    • explicacion de metodos controller
    • field simple
    • getset
    • init
    • introduccion controller
    • isnew
    • prepare
    • print
    • printall
    • reset
    • save
    • showall
    • searchBy
    • move
    • handle
  • paginas
    • nodisponible.xhtml
  • ejemplos de controller
    • agentecontroller.java
    • diasfestivoscontroller.java
    • loginController.java
    • permisocontroller.java
    • rolcontroller.java
    • tamanocontroller.java
    • usuariocontroller.java
  • chapter1
    • bluetemplate
    • especificaciones
    • frameworks
    • templates
    • poseidon primefaces
  • bootfaces template
    • Bootfaces template
    • clonar
  • paginacion
    • last
    • move
    • next
    • first
    • skip(Integer page)
  • Eventos
    • Implementar eventos
  • Sugerencias
Powered by GitBook
On this page
  • ArticuloRules.java
  • ArticuloController.java
  • Nota:

Was this helpful?

  1. EJB

Rules para eliminar

PreviousServicesNextEE

Last updated 6 years ago

Was this helpful?

Representan EJB, que se utilizan para validar las operaciones tales como las eliminaciones.

MongoDB no soporta el concepto de integridad referencial, por lo cual recurrimos a Rules para implementar estas validaciones.

Se usaran en los Controller en el método delete.

Como implementarlo:

  • Buscar todos los @Referenced donde se haga uso de el.

  • Injectarlo y validar si no tiene registros mediante un count()

  • Retorna true si es posible eliminarlo, no tiene ninguna colección dependiente.

En este ejemplo:

No se puede eliminar un articulo , si existe en la coleccion Inventario o Facturadetalle u Ordendetalle.

ArticuloRules.java

/*
* 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 com.avbravo.storeejb.rules;

import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.storeejb.entity.*;
import com.avbravo.storeejb.repository.FacturadetalleRepository;
import com.avbravo.storeejb.repository.InventarioRepository;
import com.avbravo.storeejb.repository.OrdendetalleRepository;
import javax.ejb.Stateless;
import javax.inject.Inject;
import org.bson.Document;

/**
 *
 * @authoravbravo
 */
@Stateless
public class ArticuloRules {

    @Inject
    FacturadetalleRepository facturadetalleRepository;
    @Inject
    InventarioRepository inventarioRepository;
    @Inject
    OrdendetalleRepository ordendetalleRepository;

    // <editor-fold defaultstate="collapsed" desc="isDeleted(Articulo articulo)">
    public Boolean isDeleted(Articulo articulo) {
        Boolean found = false;
        try {
            Integer count;
            Document doc = new Document("articulo.idarticulo", articulo.getIdarticulo());
            count = facturadetalleRepository.count(doc);
            if (count > 0) {
                return false;
            }
            count = inventarioRepository.count(doc);
            if (count > 0) {
                return false;
            }
            count = ordendetalleRepository.count(doc);
            if (count > 0) {
                return false;
            }

        } catch (Exception e) {
            JsfUtil.errorMessage("isDeleted() " + e.getLocalizedMessage());
        }
        return true;
    }
    // </editor-fold>

}

ArticuloController.java

Inyectar

 //Rules
    ArticuloRules articuloRules;

Método delete

Validar que se pueda eliminar

if (!articuloRules.isDeleted(articulo)) {
JsfUtil.warningDialog("Delete", rf.getAppMessage("waring.integridadreferencialnopermitida"));
return "";
}

Segmento de código del método delete()

@Override
    public String delete(Object item, Boolean deleteonviewpage) {
        String path = "";
        try {
            articulo = (Articulo) item;

               if (!articuloRules.isDeleted(articulo)) {
                JsfUtil.warningDialog("Delete", rf.getAppMessage("waring.integridadreferencialnopermitida"));
                return "";
            }
            articuloSelected = articulo;
            if (articuloRepository.delete("idarticulo", articulo.getIdarticulo())) {
                revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(articulo.getIdarticulo().toString(), loginController.getUsername(), "delete", "articulo", articuloRepository.toDocument(articulo).toString()));
                JsfUtil.successMessage(rf.getAppMessage("info.delete"));

                if (!deleteonviewpage) {
                    articuloList.remove(articulo);
                    articuloFiltered = articuloList;
                    articuloDataModel = new ArticuloDataModel(articuloList);

                    FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pagearticulo", page.toString());

                } else {
                    articulo = new Articulo();
                    articuloSelected = new Articulo();
                    writable = false;

                }

            }

        } catch (Exception e) {
            JsfUtil.errorMessage("delete() " + e.getLocalizedMessage());
        }
        // path = deleteonviewpage ? "/pages/articulo/list.xhtml" : "";
        path = "";
        return path;
    }// </editor-fold>

Nota:

Una forma rápida para localizar los entitys a incluir en Rules es usando NetBeans IDE y ejecutando una búsqueda en el proyecto:

@Referenced(documment = "Articulo"

Nos muestra los entitys que dependen de el