Segue.
EstadoDAOHibernate
package classe.projeto.estado;
@Repository("estadoDAO")
public class EstadoDAOHibernate implements EstadoDAO {
private SessionFactory factory;
private Session session;
private String filtroQuery;
@Autowired
public EstadoDAOHibernate(SessionFactory factory) {
this.factory = factory;
this.setSession();
}
private void setSession() {
this.session = factory.getCurrentSession();
}
private void setFiltroQuery(Estado estado){
this.filtroQuery = FiltroQuery.FiltroQuery(estado);
}
@Override
@Transactional
public void Salvar(Estado estado) throws DAOException {
if (estado.getEstadoID() == null ){
try {
this.session.save(estado);
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println(e.getCause());
throw new DAOException(GlossarioMensagens.getInstance().getMSG04());
}
}else{
try {
this.session.update(estado);
} catch (Exception e) {
throw new DAOException(GlossarioMensagens.getInstance().getMSG05());
}
}
}
@Override
public void Excluir(Estado estado) throws DAOException{
try {
this.session.delete(estado);
} catch (Exception e) {
throw new DAOException(GlossarioMensagens.getInstance().getMSG06());
}
}
@SuppressWarnings("deprecation")
@Override
public Integer TotalRegistros() {
String sql = "SELECT COUNT(*) AS totalRegistros FROM vwlistaestado " ;
Query consulta = this.session.createSQLQuery(sql).addScalar("totalRegistros", Hibernate.INTEGER);
Integer totalRegistros = (Integer) consulta.uniqueResult();
return totalRegistros;
}
@Override
public Estado Obter(Estado estado) {
this.setFiltroQuery(estado);
String sql = "SELECT * FROM vwlistaestado " + this.filtroQuery ;
Query consulta = this.session.createSQLQuery(sql).addEntity(Estado.class);
return (Estado) consulta.uniqueResult();
}
@SuppressWarnings("unchecked")
@Override
public List<Estado> Pesquisar(Estado estado, String campoOrdenacao, String ordenacao, Integer pagina, Integer limit) {
this.setFiltroQuery(estado);
String sql = " SELECT * FROM vwlistaestado " + this.filtroQuery;
sql = ValidaOrdenacaoLimit.ValidaOrdenacaoLimit(sql, campoOrdenacao, ordenacao, pagina, limit);
Query consulta = this.session.createSQLQuery(sql).addEntity(Estado.class);
List<Estado> listaEstado = consulta.list();
return listaEstado;
}
}
EstadoRNImp
package classe.projeto.estado;
@Service("estadoRN")
@Transactional
public class EstadoRNImp implements EstadoRN {
@Autowired
private EstadoDAO estadoDAO;
public void Salvar(Estado estado) throws RNException{
try {
this.estadoDAO.Salvar(estado);
} catch (DAOException dao) {
throw new RNException(dao.getMessage());
}
}
public void Excluir(Estado estado) throws RNException{
try {
this.estadoDAO.Excluir(estado);
} catch (DAOException dao) {
throw new RNException(dao.getMessage());
}
}
public Integer TotalRegistros(){
return this.estadoDAO.TotalRegistros();
}
public Estado Obter (Estado estado){
return this.estadoDAO.Obter(estado);
}
public List<Estado> Pesquisar(Estado estado, String campoOrdenacao, String ordenacao, Integer pagina, Integer limit){
return this.estadoDAO.Pesquisar(estado, campoOrdenacao, ordenacao, pagina, limit);
}
}
EstadoListagemBean
package classe.projeto.bean;
@ManagedBean(name="EstadoListagemBean")
@ViewScoped
public class EstadoListagemBean{
private Estado estado = new Estado();
private Estado[] estadoSelecionados;
private LazyDataModel<Estado> lazyModel;
@ManagedProperty(name="estadoRN", value="#{estadoRN}")
private EstadoRN estadoRN;
public void setEstadoRN(EstadoRN estadoRN) {
this.estadoRN = estadoRN;
}
private void CarregaLazyDataModel() {
this.lazyModel = new LazyDataModel<Estado>() {
private static final long serialVersionUID = 1829143374090645173L;
@Override
public List<Estado> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String, String> filters) {
List<Estado> listaEstado = new ArrayList<Estado>();
return Pesquisar(listaEstado, sortField, sortOrder, first, pageSize);
}
};
lazyModel.setRowCount(estadoRN.TotalRegistros());
}
private List<Estado> Pesquisar(List<Estado> listEstado, String campoOrdecacao,boolean ordenacao, int pagina, int limit){
String orderBy = ordenacao?"ASC":"DESC";
listEstado = estadoRN.Pesquisar(this.estado, campoOrdecacao, orderBy, pagina, limit);
return listEstado;
}
public LazyDataModel<Estado> getLazyModel() {
this.CarregaLazyDataModel();
return this.lazyModel;
}
public String Excluir(){
if( estadoSelecionados.length > 0) {
try {
for (Estado estado : estadoSelecionados) {
estadoRN.Excluir(estado);
}
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage msg = new FacesMessage(GlossarioTexto.getInstance().getSucesso(),GlossarioMensagens.getInstance().getMSG03());
context.addMessage(null, msg);
} catch (RNException rn) {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage msg = new FacesMessage(GlossarioTexto.getInstance().getErro(),rn.getMessage());
context.addMessage(null, msg);
}
}else{
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN,GlossarioTexto.getInstance().getAtencao(),GlossarioMensagens.getInstance().getMSG11());
context.addMessage(null, msg);
}
return "/gerenciador/content/estado/index";
}
public Estado[] getEstadoSelecionados() {
return estadoSelecionados;
}
public void setEstadoSelecionados(Estado[] estadoSelecionados) {
this.estadoSelecionados = estadoSelecionados;
}
public Estado getEstado() {
return estado;
}
}