Pesquisa BD com Hibernate + ZK view

3 respostas
El11

Hello people!

Tenho um formulario em ZK para pesquisar livros. um dos campos do formulario e Titutlo (pesquisa por titulo), identificado pelo id=txtTitulo. Eu gostaria que ao escrever "Java 7" (e titulo de um livro que existe na minha base de dados) ele me mostrasse os atributos do objecto todo,isto e, todos os livros com esse titulo.

Para tal, tenho uma classe "PesquisarLivroController" onde implemento os eventos dos butoes desse formulario.
A minha classe Livro tem um atributo titulo. Entao, livro.getTitulo().equals(txtTitulo) deve mostrar esse livro.

Aqui esta o meu controller do formulario em causa
public class PesquisaLivroController extends GenericForwardComposer {

	private static final long serialVersionUID = 1L;

	private Textbox txtTitulo;
	private Textbox txtAutor;
	private Textbox txtISBN;
	private Textbox txtAreaAplicacao;
	private Textbox txtDescricao;
	private Listbox lbxLista;
	private Window window;

	public void onClick$btnPesquisar(Event event) {
		try {
			pesquisarLivro();
			// limpar();
		} catch (SQLException e) {

			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void pesquisarLivro() throws SQLException, InterruptedException {

				
		LivroDAO livroDAO = new LivroDAO();
		ArrayList<Livro> livros = (ArrayList<Livro>) livroDAO.findAll();
		Livro livro = new Livro();

		if (livros.contains(livro.getTitulo().equalsIgnoreCase(txtTitulo.getText()))) {
			
			JOptionPane.showMessageDialog(null, txtTitulo.getText() + "Existe no Stock");
			listar();
		}

		Messagebox.show("Operacao efectuada com Sucesso");

	}

	private void listar() throws SQLException {

		Listhead listhead = lbxLista.getListhead();
		lbxLista.getItems().clear();
		lbxLista.appendChild(listhead);

		LivroDAO livroDAO = new LivroDAO();

		ArrayList<Livro> Livros = (ArrayList<Livro>) livroDAO.findAll();

		for (Livro livro : Livros) {

			Listitem item = new Listitem();
			Listcell titulo = new Listcell(livro.getTitulo());
			Listcell autor = new Listcell(livro.getAutor());
			Listcell isbn = new Listcell(livro.getIsbn());
			Listcell preco = new Listcell(livro.getPreco() + "");
			Listcell ano = new Listcell(livro.getAno() + "");
			Listcell descricao = new Listcell(livro.getDescricao());
			Listcell cidade = new Listcell(livro.getCidade());
			Listcell catgoria = new Listcell(livro.getCategoria());

			item.appendChild(titulo);
			item.appendChild(autor);
			item.appendChild(isbn);

			item.setValue(livro);
			lbxLista.appendChild(item);

		}

	}

}
Aqui vai o formulario
<?page title="Pesquisa de Livro" contentType="text/html;charset=UTF-8"?>
<zk>
	<window id="window" apply="controller.PesquisaLivroController"
		title="Pesquisa de Livro" border="normal">
		<grid>
			<rows>
				<row>
					<div align="right" width="10%">ISBN</div>
					<div align="left" width="50%">
						<textbox id="txtISBN" />
					</div>
				</row>
				<row>
					<div align="right" width="10%">Titulo</div>
					<div align="left" width="50%">
						<textbox id="txtTitulo" />
					</div>
				</row>
				<row>
					<div align="right" width="10%">
						Area de Aplicaco
					</div>
					<div align="left" width="29%">
						<textbox id="txtAreaAplicacao" width="80%" />
					</div>
				</row>
				<row>
					<div align="right" width="10%">Descricao</div>
					<div align="left" width="290px">
						<textbox id="txtDescricao" width="200px" />
					</div>
				</row>
				<row>
					<div align="right" width="10%">Autor</div>
					<div align="left" width="290px">
						<textbox id="txtAutor" width="200px" />
					</div>
				</row>
			</rows>
		</grid>
		<listbox id="lbxLista" height="150px" mold="paging"
			pageSize="6">
			<listhead>
				<listheader label="Titulo" sort="auto" width="10%" />
				<listheader label="Autor" sort="auto" width="8.3%" />
				<listheader label="Editora" sort="auto" width="8.3%" />
				<listheader label="Edicao" sort="auto" width="8.3%" />
				<listheader label="Area de Aplicacao" sort="auto"
					width="8.3%" />
				<listheader label="# Paginas" sort="auto" width="8.3%" />
				<listheader label="Preco" sort="auto" width="8.3%" />
				<listheader label="Ano" sort="auto" width="8.3%" />
				<listheader label="Cidade" sort="auto" width="8.3%" />
				<listheader label="Categoria" sort="auto" width="8.3%" />
				<listheader label="Descricao" sort="auto" width="8.3%" />
				<listheader label="Idioma" sort="auto" width="8.3%" />

			</listhead>
		</listbox>
		<div height="10px" />
		<hbox>
			<button id="btnPesquisar" label="Pesquisar" onClick="" />
			<button id="btnEditar" label="Editar" onClick="" />
			<button label="Cancelar" onClick="" />
			<button id="btnVender" label="Vender" onClick="" />
			<div width="140px" />
			<button id="btnFechar" label="Fechar" onClick="" />
		</hbox>
	</window>
</zk>

Thank you!

3 Respostas

Hebert_Coelho

E qual sua dúvida ou problema?

R

vc tem que linkar a parte visual com se controller isso pode ser feito com o objeto AnnotateDataBinder do zk, se me permite vou mudar um puco teu exemplo,invés de usar um controler vou usar teu controller como uma window do zk

public class PesquisaLivroController extends Window {  
  
    private static final long serialVersionUID = 1L;  
  
 private Livro livro;

private ArrayList livros;
//nçao esquecer gets and sets de livro e livros

private AnnotatedDataBinder binder;

private String filtrotitulo;

//criar gets e sets para filtrotitulo

private Window window;

public void onCreate(){

livro = new Livro();
livros = new ArrayList();

window =(Window)getFellow(win);//id da janela da parte visual

binder = new AnnotatedDataBinder(win);

binder.loadAll();

}

public void btnPesquisar() throws SQLException, InterruptedException {  


         LivroDAO livroDAO = new LivroDAO();  
      livros = (ArrayList<Livro>) livroDAO.findByTitulo(filtroTitulo);  //cria uma query pra trazer por titulo,bem mais simples
     binder.loadAll();//recarrega todos os elementos visuais da tela
 
       
    }  
  
   
  
}
R

na parte visual tu indica o controlador





ISBN






Titulo







Area de Aplicaco






Descricao






Autor












</listhead>
</listbox>  
    <div height="10px" />  
    <hbox>  
         <textbox value="@{win.filtrotitulo}"/>
        <button id="btnPesquisar" label="Pesquisar" onClick="win.btnPesquisar()" />  
        
    </hbox>  
</window>

pronto agora tes atributos definidos no controlador estão ligados com a view ,o código sozinho se explica mas se tu tiver duvidas diz aew

Criado 18 de novembro de 2011
Ultima resposta 23 de dez. de 2011
Respostas 3
Participantes 3