ModeloController.java
ModeloController.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.store.controller;
// <editor-fold defaultstate="collapsed" desc="imports">
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.avbravoutils.printer.Printer;
import com.avbravo.ejbjmoordb.interfaces.IController;
import com.avbravo.ejbjmoordb.services.RevisionHistoryServices;
import com.avbravo.ejbjmoordb.services.UserInfoServices;
import com.avbravo.storeejb.datamodel.ModeloDataModel;
import com.avbravo.storeejb.repository.ModeloRepository;
import com.avbravo.storeejb.repository.RevisionHistoryStoreejbRepository;
import com.avbravo.storeejb.entity.Modelo;
import com.avbravo.storeejb.services.GrupoarticuloServices;
import com.avbravo.storeejb.services.ModeloServices;
import com.avbravo.store.util.ResourcesFiles;
import com.avbravo.storeejb.services.AutoincrementableStoreejbServices;
import com.avbravo.storeejb.services.LookupStoreejbServices;
import java.util.ArrayList;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.faces.context.FacesContext;
import org.bson.Document;
import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;
// </editor-fold>
/**
*
* @authoravbravo
*/
@Named
@ViewScoped
public class ModeloController implements Serializable, IController {
// <editor-fold defaultstate="collapsed" desc="fields">
private static final long serialVersionUID = 1L;
// @Inject
//private transient ExternalContext externalContext;
private Boolean writable = false;
private String _old;
//DataModel
private ModeloDataModel modeloDataModel;
Integer page = 1;
Integer rowPage = 25;
List<Integer> pages = new ArrayList<>();
//
//Entity
Modelo modelo;
Modelo modeloSelected;
//List
List<Modelo> modeloList = new ArrayList<>();
List<Modelo> modeloFiltered = new ArrayList<>();
//Repository
@Inject
ModeloRepository modeloRepository;
@Inject
RevisionHistoryStoreejbRepository revisionHistoryStoreejbRepository;
//Services
//Atributos para busquedas
@Inject
AutoincrementableStoreejbServices autoincrementableStoreejbServices;
@Inject
LookupStoreejbServices lookupStoreejbServices;
@Inject
GrupoarticuloServices grupoarticuloServices;
@Inject
RevisionHistoryServices revisionHistoryServices;
@Inject
UserInfoServices userInfoServices;
@Inject
ModeloServices modeloServices;
@Inject
ResourcesFiles rf;
@Inject
Printer printer;
@Inject
LoginController loginController;
//List of Relations
//Repository of Relations
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="getter/setter">
public List<Integer> getPages() {
return modeloRepository.listOfPage(rowPage);
}
public void setPages(List<Integer> pages) {
this.pages = pages;
}
public LookupStoreejbServices getLookupStoreejbServices() {
return lookupStoreejbServices;
}
public void setLookupStoreejbServices(LookupStoreejbServices lookupStoreejbServices) {
this.lookupStoreejbServices = lookupStoreejbServices;
}
public GrupoarticuloServices getGrupoarticuloServices() {
return grupoarticuloServices;
}
public void setGrupoarticuloServices(GrupoarticuloServices grupoarticuloServices) {
this.grupoarticuloServices = grupoarticuloServices;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getRowPage() {
return rowPage;
}
public void setRowPage(Integer rowPage) {
this.rowPage = rowPage;
}
public ModeloServices getModeloServices() {
return modeloServices;
}
public void setModeloServices(ModeloServices modeloServices) {
this.modeloServices = modeloServices;
}
public List<Modelo> getModeloList() {
return modeloList;
}
public void setModeloList(List<Modelo> modeloList) {
this.modeloList = modeloList;
}
public List<Modelo> getModeloFiltered() {
return modeloFiltered;
}
public void setModeloFiltered(List<Modelo> modeloFiltered) {
this.modeloFiltered = modeloFiltered;
}
public Modelo getModelo() {
return modelo;
}
public void setModelo(Modelo modelo) {
this.modelo = modelo;
}
public Modelo getModeloSelected() {
return modeloSelected;
}
public void setModeloSelected(Modelo modeloSelected) {
this.modeloSelected = modeloSelected;
}
public ModeloDataModel getModeloDataModel() {
return modeloDataModel;
}
public void setModeloDataModel(ModeloDataModel modeloDataModel) {
this.modeloDataModel = modeloDataModel;
}
public Boolean getWritable() {
return writable;
}
public void setWritable(Boolean writable) {
this.writable = writable;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="constructor">
public ModeloController() {
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="preRenderView()">
@Override
public String preRenderView(String action) {
//acciones al llamar el formulario despues del init
return "";
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="init">
@PostConstruct
public void init() {
try {
String action = loginController.get("modelo");
String id = loginController.get("idmodelo");
String pageSession = loginController.get("pagemodelo");
//Search
loginController.put("searchmodelo", "_init");
writable = false;
modeloList = new ArrayList<>();
modeloFiltered = new ArrayList<>();
modelo = new Modelo();
modeloDataModel = new ModeloDataModel(modeloList);
if (id != null) {
Optional<Modelo> optional = modeloRepository.find("idmodelo", Integer.parseInt(id));
if (optional.isPresent()) {
modelo = optional.get();
modeloSelected = modelo;
_old = modelo.getDescripcion();
writable = true;
}
}
if (action != null && action.equals("gonew")) {
modelo = new Modelo();
modeloSelected = modelo;
writable = false;
}
if (pageSession != null) {
page = Integer.parseInt(pageSession);
}
Integer c = modeloRepository.sizeOfPage(rowPage);
page = page > c ? c : page;
move();
} catch (Exception e) {
JsfUtil.errorMessage("init() " + e.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="reset">
@Override
public void reset() {
RequestContext.getCurrentInstance().reset(":form:content");
prepare("new", modelo);
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="prepare(String action, Object... item)">
public String prepare(String action, Modelo item) {
String url = "";
try {
loginController.put("pagemodelo", page.toString());
loginController.put("modelo", action);
switch (action) {
case "new":
modelo = new Modelo();
modeloSelected = new Modelo();
writable = false;
break;
case "view":
modeloSelected = item;
modelo = modeloSelected;
loginController.put("idmodelo", modelo.getIdmodelo().toString());
url = "/pages/modelo/view.xhtml";
break;
case "golist":
url = "/pages/modelo/list.xhtml";
break;
case "gonew":
url = "/pages/modelo/new.xhtml";
break;
}
} catch (Exception e) {
JsfUtil.errorMessage("prepare() " + e.getLocalizedMessage());
}
return url;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="showAll">
@Override
public String showAll() {
try {
modeloList = new ArrayList<>();
modeloFiltered = new ArrayList<>();
modeloList = modeloRepository.findAll();
modeloFiltered = modeloList;
modeloDataModel = new ModeloDataModel(modeloList);
} catch (Exception e) {
JsfUtil.errorMessage("showAll()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="isNew">
@Override
public String isNew() {
try {
writable = true;
if (JsfUtil.isVacio(modelo.getDescripcion())) {
writable = false;
return "";
}
String idsecond = modelo.getDescripcion();
modelo = new Modelo();
modelo.setDescripcion(idsecond);
modeloSelected = new Modelo();
} catch (Exception e) {
JsfUtil.errorMessage("isNew()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="save">
@Override
public String save() {
try {
Document doc = new Document("descripcion", modelo.getDescripcion()).append("grupoarticulo.idgrupoarticulo", modelo.getGrupoarticulo().getIdgrupoarticulo());
List<Modelo> list = modeloRepository.findBy(doc);
if (!list.isEmpty()) {
writable = false;
JsfUtil.warningMessage(rf.getAppMessage("warning.idexist"));
return "";
}
Integer identity = autoincrementableStoreejbServices.getContador("modelo");
modelo.setIdmodelo(identity);
//Lo datos del usuario
modelo.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (modeloRepository.save(modelo)) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(modelo.getIdmodelo().toString(), loginController.getUsername(),
"create", "modelo", modeloRepository.toDocument(modelo).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.save"));
reset();
} else {
JsfUtil.successMessage("save() " + modeloRepository.getException().toString());
}
} catch (Exception e) {
JsfUtil.errorMessage("save()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="edit">
@Override
public String edit() {
try {
if (!modelo.getDescripcion().equals(_old)) {
List<Modelo> list = modeloRepository.findBy("descripcion", modelo.getDescripcion());
if (!list.isEmpty()) {
writable = false;
JsfUtil.warningMessage(rf.getAppMessage("warning.noeditableproduceduplicado"));
return "";
}
}
modelo.getUserInfo().add(userInfoServices.generateUserinfo(loginController.getUsername(), "update"));
//guarda el contenido anterior
//guarda el contenido actualizado
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(modelo.getIdmodelo().toString(), loginController.getUsername(),
"update", "modelo", modeloRepository.toDocument(modelo).toString()));
modeloRepository.update(modelo);
JsfUtil.successMessage(rf.getAppMessage("info.update"));
} catch (Exception e) {
JsfUtil.errorMessage("edit()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="delete(Object item, Boolean deleteonviewpage)">
@Override
public String delete(Object item, Boolean deleteonviewpage) {
String path = "";
try {
modelo = (Modelo) item;
modeloSelected = modelo;
if (modeloRepository.delete("idmodelo", modelo.getIdmodelo())) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(modelo.getIdmodelo().toString(), loginController.getUsername(), "delete", "modelo", modeloRepository.toDocument(modelo).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.delete"));
if (!deleteonviewpage) {
modeloList.remove(modelo);
modeloFiltered = modeloList;
modeloDataModel = new ModeloDataModel(modeloList);
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pagemodelo", page.toString());
} else {
modelo = new Modelo();
modeloSelected = new Modelo();
writable = false;
}
}
} catch (Exception e) {
JsfUtil.errorMessage("delete() " + e.getLocalizedMessage());
}
// path = deleteonviewpage ? "/pages/modelo/list.xhtml" : "";
path = "";
return path;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="deleteAll">
@Override
public String deleteAll() {
if (modeloRepository.deleteAll() != 0) {
JsfUtil.successMessage(rf.getAppMessage("info.delete"));
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="print">
@Override
public String print() {
try {
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pagemodelo", page.toString());
List<Modelo> list = new ArrayList<>();
list.add(modelo);
String ruta = "/resources/reportes/modelo/details.jasper";
HashMap parameters = new HashMap();
parameters.put("P_EMPRESA", loginController.getUsuario().getEmpresa().getDescripcion());
printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.errorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="printAll">
@Override
public String printAll() {
try {
List<Modelo> list = new ArrayList<>();
list = modeloRepository.findAll(new Document("idmodelo", 1));
String ruta = "/resources/reportes/modelo/all.jasper";
HashMap parameters = new HashMap();
parameters.put("P_EMPRESA", loginController.getUsuario().getEmpresa().getDescripcion());
printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.errorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="handleSelect">
public void handleSelect(SelectEvent event) {
try {
modeloList.removeAll(modeloList);
modeloList.add(modeloSelected);
modeloFiltered = modeloList;
modeloDataModel = new ModeloDataModel(modeloList);
loginController.put("searchmodelo", "_autocomplete");
} catch (Exception ex) {
JsfUtil.errorMessage("handleSelect() " + ex.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="last">
@Override
public String last() {
try {
page = modeloRepository.sizeOfPage(rowPage);
move();
} catch (Exception e) {
JsfUtil.errorMessage("last() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="first">
@Override
public String first() {
try {
page = 1;
move();
} catch (Exception e) {
JsfUtil.errorMessage("first() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="next">
@Override
public String next() {
try {
if (page < (modeloRepository.sizeOfPage(rowPage))) {
page++;
}
move();
} catch (Exception e) {
JsfUtil.errorMessage("next() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="back">
@Override
public String back() {
try {
if (page > 1) {
page--;
}
move();
} catch (Exception e) {
JsfUtil.errorMessage("back() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="skip(Integer page)">
@Override
public String skip(Integer page) {
try {
this.page = page;
move();
} catch (Exception e) {
JsfUtil.errorMessage("skip() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="move">
@Override
public void move() {
try {
Document doc;
switch (loginController.get("searchmodelo")) {
case "_init":
modeloList = modeloRepository.findPagination(page, rowPage);
break;
case "_autocomplete":
//no se realiza ninguna accion
break;
case "idmodelo":
doc = new Document("idmodelo", modelo.getIdmodelo());
modeloList = modeloRepository.findFilterPagination(doc, page, rowPage, new Document("idmodelo", -1));
break;
default:
modeloList = modeloRepository.findPagination(page, rowPage);
break;
}
modeloFiltered = modeloList;
modeloDataModel = new ModeloDataModel(modeloList);
} catch (Exception e) {
JsfUtil.errorMessage("move() " + e.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="clear">
@Override
public String clear() {
try {
loginController.put("searchmodelo", "_init");
page = 1;
move();
} catch (Exception e) {
JsfUtil.errorMessage("clear()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="searchBy(String string)">
@Override
public String searchBy(String string) {
try {
loginController.put("searchmodelo", string);
writable = true;
move();
} catch (Exception e) {
JsfUtil.errorMessage("searchBy()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
}
Last updated