Formulario con llave secundaria sin mostrar autoincrementable

Formulario con llave secundaria sin mostrar autoincrementable

Tenemos un entity en el que tene

public class Cliente {

    @Id
    private Integer idcliente;
    private String cedula;

    private String nombre;

    private Date fechanacimiento;
    private Integer edad;

    private String sexo;

}

Requerimientos:

  • AutoincrementableStoreejbServices

  • init() convertir a Integer el id

  • isNew(): Validar por la cedula

  • save(). Validar por la cédula y generar el autoincrementable

  • Otros metodos convertir a String el idcliente

  • Se debe crear el formulario para cambiar el numero de cedula(campo secundario)

Definir atributo cedulanueva

    private String cedulanueva;

      public String getCedulanueva() {
        return cedulanueva;
    }

    public void setCedulanueva(String cedulanueva) {
        this.cedulanueva = cedulanueva;
    }

Deseamos validar por la cédula

// <editor-fold defaultstate="collapsed" desc="isNew">

    @Override
    public String isNew() {
        try {
            if (JsfUtil.isVacio(cliente.getCedula())) {
                writable = false;
                return "";
            }
            cliente.setCedula(cliente.getCedula().toUpperCase());
            writable = true;
            List<Cliente> list = clienteRepository.findBy(new Document("cedula", cliente.getCedula()));
            if (!list.isEmpty()) {
                writable = false;

                JsfUtil.warningMessage(rf.getAppMessage("warning.idexist"));
                return "";
            } else {
                String id = cliente.getCedula();
                cliente = new Cliente();

                cliente.setCedula(id);

                fiador = new Fiador();
                inicializarCliente();

                clienteSelected = new Cliente();
            }

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

Mètodo save()

// <editor-fold defaultstate="collapsed" desc="save">

    @Override
    public String save() {
        try {
            cliente.setCedula(cliente.getCedula().toUpperCase());
            fiador.setCorregimiento(corregimientoFiador);
            List<Cliente> list = clienteRepository.findBy(new Document("cedula", cliente.getCedula()));
            if (!list.isEmpty()) {
                JsfUtil.warningMessage(rf.getAppMessage("warning.idexist"));
                return null;
            }

            Integer id = autoincrementableStoreejbServices.getContador("cliente");
            cliente.setIdcliente(id);

            cliente.setFiador(fiador);

            if (!validate()) {
                return "";
            }

            //Lo datos del usuario
            cliente.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
            if (clienteRepository.save(cliente)) {
                revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(cliente.getIdcliente().toString(), loginController.getUsername(),
                        "create", "cliente", clienteRepository.toDocument(cliente).toString()));
                JsfUtil.successMessage(rf.getAppMessage("info.save"));
                reset();
            } else {
                JsfUtil.successMessage("save() " + clienteRepository.getException().toString());
            }

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

Constructor

Convertimos el id de String a Integer

Integer.parseInt(id)
@PostConstruct
    public void init() {
        try {

            esbodega = false;
            estienda = false;
            esganga = false;
            String action = loginController.get("cliente");
            String id = loginController.get("idcliente");
            String pageSession = loginController.get("pagecliente");
            //Search
            loginController.put("searchcliente", "_init");
            writable = false;

            clienteList = new ArrayList<>();
            clienteFiltered = new ArrayList<>();
            cliente = new Cliente();
            clienteDataModel = new ClienteDataModel(clienteList);

            fiador = new Fiador();

            if (id != null) {

                Optional<Cliente> optional = clienteRepository.find("idcliente", Integer.parseInt(id));
                if (optional.isPresent()) {
                    cliente = optional.get();
                    clienteSelected = cliente;
                    fiador = cliente.getFiador();
                    provinciaFiador = fiador.getProvincia();
                    distritoFiador = fiador.getDistrito();
                    corregimientoFiador = fiador.getCorregimiento();

                    writable = true;

                }
            }
            if (action != null && action.equals("gonew")) {

                cliente = new Cliente();
                inicializarCliente();
                clienteSelected = cliente;
                writable = false;

            }
            if (pageSession != null) {
                page = Integer.parseInt(pageSession);
            }
            Integer c = clienteRepository.sizeOfPage(rowPage);
            page = page > c ? c : page;
            move();

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

formulario

  <a:messages id="msg"/>
  <a:new label="#{msg['field.cedula']}"
         value="#{clienteController.cliente.cedula}"
         disabled="#{clienteController.writable}"
         isnew="#{clienteController.isNew()}"
         new="#{clienteController.prepare('new',clienteController.cliente)}"
         rendererList="#{applicationMenu.cliente.list}"
         list="#{clienteController.prepare('golist',clienteController.cliente)}"

    />

Last updated