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
Was this helpful?