Com fazer uma pesquisa um campo imput text primefaces

Ola estou a usar o prime faces agora ainda nao entendi como passa o parametro no imputtex para pesquisar e retorna o resultado no data table meu codigo esta funciando quando faco a pesquisa fillteredvalue
segue anexo o codigo

<?xml version="1.0" encoding="ISO-8859-1" ?>

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h=“http://java.sun.com/jsf/html"
xmlns:f=“http://java.sun.com/jsf/core"
xmlns:p=“http://primefaces.org/ui” template=”/templates/template.xhtml”>
<ui:define name=“metadata”>
<f:metadata>

		<f:event listener="#{MbFabricante.prepararpesquisa}"
			type="preRenderView" />
	</f:metadata>




</ui:define>
<ui:define name="conteudo">
	<h:form id="frmconstfabricane">
		<p:toolbar>
			<f:facet name="left">
				<h:outputText value=" Pesquisar Fabricante" />
			</f:facet>
		</p:toolbar>
		<h:panelGrid columns="3">

			<p:inputText id="descricao" size="30" 
			action="#{MbFabricante.prepararpesquisa}"    placeholder="descricao" >
			
			</p:inputText>
           
			
			<p:commandButton value="Consultar" action="#{MbFabricante.prepararpesquisa}"  />
		
            
            
			<p:button value="Novo" outcome="/pages/cadastrofabricante.xhtml"
				readonly="#{MbFabricante.action == 'Excluir'}">
              
			</p:button>
			<p:message for="descricao"/>
		</h:panelGrid>
		<h:panelGrid>
			<p:dataTable id="tablemarca" emptyMessage="Registro não Encontrados"
				  value="#{MbFabricante.itens}"
				filteredValue="#{MbFabricante.itensFiltrados}" var="fabricante"
				rows="6" paginator="true">

				<f:facet name="header">
            Fabricantes
           </f:facet>
				<p:column headerText="Código" style=" width: 100px">
					<h:outputText value="#{fabricante.idfabricante}" />
				</p:column>
				<p:column headerText="Descrição" filterBy="#{fabricante.descricao}"
					sortBy="#{fabricante.descricao}" style=" width:250px">
					<h:outputText value="#{fabricante.descricao}" />
				</p:column>
				
				<p:column headerText=" Opções" style=" width: 40px">
					<p:button icon="ui-icon-pencil"
						outcome="/pages/cadastrofabricante.xhtml" >
						<f:param name="idfab" value="#{fabricante.idfabricante}" />
						<f:param name="foracao" value="Editar" />
					</p:button>
					<p:button icon="ui-icon-trash"
						outcome="/pages/cadastrofabricante.xhtml">
						<f:param name="idfab" value="#{fabricante.idfabricante}" />
						<f:param name="foracao" value="Excluir" />
					</p:button>
				</p:column>
			</p:dataTable>
		</h:panelGrid>

	</h:form>
    
</ui:define>

</ui:composition>

package br.com.sisvendas.bean;

import java.util.ArrayList;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.Application;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;

import com.sun.faces.facelets.tag.jsf.core.ViewHandler;

import br.com.sisvendas.dao.DAOFabricante;
import br.com.sisvendas.domain.Fabricante;
import br.com.sisvendas.util.JSFUtil;
@ManagedBean(name=“MbFabricante”)
@ViewScoped
public class BeanFabricante extends Bean {

private Fabricante fabricante;
private List<Fabricante> fabricantefiltrado;
public List<Fabricante> getFabricantefiltrado() {
	return fabricantefiltrado;
}

public void setFabricantefiltrado(List<Fabricante> fabricantefiltrado) {
	this.fabricantefiltrado = fabricantefiltrado;
}

private String descricao; 
private ArrayList<Object> itens;
 private ArrayList<Object> itensFiltrados;

 private String action;
 private Integer idfabricante;

public BeanFabricante() {
   	
	
}

public Fabricante getFabricante() {

	return fabricante;
	
}

public void setFabricante(Fabricante fabricantees) {
	this.fabricante = fabricantees;
}

public ArrayList<Object> getItens() {
	return itens;
}

public void setItens(ArrayList<Object> itens) {
this.itens = itens;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public List<Object> getItensFiltrados() {
	return itensFiltrados;
}

public void setItensFiltrados(ArrayList<Object> itensFiltrados) {
	this.itensFiltrados = itensFiltrados;
}

public String getAction() {
	return action;
}

public void setAction(String action) {
	this.action = action;
}

public Integer getIdfabricante() {
return idfabricante;
}

public void setIdfabricante(Integer idfabricante) {
	this.idfabricante = idfabricante;
}

@Override
public void carregarCadastro() {
try {

	     String valor = JSFUtil.getParam("idfab");
			
		 if(valor!= null) {
	Integer	id = Integer.parseInt(valor);
			 
							 
		  DAOFabricante fabdao = new DAOFabricante();	
	
		fabricante = (Fabricante) fabdao.findprimarykey(id);
			 
		 }
		else
			 {
			novo();

}
		 
	
	 } catch (RuntimeException e) {
	 JSFUtil.adicionarMensagemErro("ex.getMessage()");
	 e.printStackTrace();
 }

}

@Override
public void novo() {
    fabricante = new Fabricante();
	
}

@Override
public void excluir() {
DAOFabricante daofab = new DAOFabricante();
try {
daofab.excluir(fabricante);
JSFUtil.adicionarMensagemSucesso(“Fabricante excluido com sucesso!”);
} catch (Exception e) {
JSFUtil.adicionarMensagemErro(“Não é possível excluir um fornecedor que tenha um produto associado!”);
e.printStackTrace();
}

}



@Override
public void salvar() {
try {
	 
		DAOFabricante fabdao = new DAOFabricante();
		
		fabdao.salvar(fabricante);
		
		  novo();

		 prepararpesquisa();

		{
        	
        }
} catch (RuntimeException e) {
		JSFUtil.adicionarMensagemErro("ex.getMessage()");
		e.printStackTrace();
} catch (Exception e) {
	// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
}

@Override
//@PostConstruct
public void prepararpesquisa() {
try {

	 DAOFabricante fdao = new DAOFabricante();
	   
		 itens = (ArrayList<Object>) fdao.pesquisar();
	 
		 } catch (RuntimeException e) {
			 
	 JSFUtil.adicionarMensagemErro("ex.getMessage()");
		 e.printStackTrace();
		 }
	
}

public void pesquisar() {
DAOFabricante daofab= new DAOFabricante();

	daofab.find(descricao);
	System.out.println(descricao);

}
}
package br.com.sisvendas.dao;

import java.awt.print.Printable;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.persistence.EntityManager;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.hibernate.loader.custom.Return;

import br.com.sisvendas.domain.Fabricante;
import br.com.sisvendas.util.HibernateUtil;
import br.com.sisvendas.util.JSFUtil;

public class DAOFabricante extends DAO{

public EntityManager manager;
private Criteria crit;
@Override
public void salvar(Object obj) throws Exception {
    Fabricante fabricante= (Fabricante) validar(obj);	
	Session session= HibernateUtil.getSessionFactory().openSession();
	
	Transaction transaction=null;
	try{
		if((fabricante.getIdfabricante()>0)&&(fabricante.getIdfabricante()!=null)){
		transaction=session.beginTransaction();//abrindo a transação
		session.update(fabricante);
		transaction.commit();
		JSFUtil.adicionarMensagemSucesso("Fabricante Editado com sucesso!");
		}else{
			transaction=session.beginTransaction();//abrindo a transação
			session.save(fabricante);
			transaction.commit();
			JSFUtil.adicionarMensagemSucesso("Fabricante salvo com sucesso!");
			
		}
		
	}catch (RuntimeException e) {
		
			transaction.rollback();
	
	
	}
	finally{
		session.close();	
		}
}

public Object findprimarykey   (Integer id){
	
	Session session= HibernateUtil.getSessionFactory().openSession();
	Object fabricante = new Fabricante(); 
	 fabricante= null;

try{
   Query  consulta = session.getNamedQuery("Fabricante.findprimarykey");
	consulta.setLong("codigo", id);
	fabricante=(Fabricante) consulta.uniqueResult();
	
}catch (RuntimeException e) {
	 throw e;
}
 finally{
	session.close();	
	}
return fabricante;

}
@Override
public void excluir(Object obj) throws Exception {
Fabricante fabricante= (Fabricante) validar(obj);
Session session= HibernateUtil.getSessionFactory().openSession();

	Transaction transaction=null;
	try{
		transaction=session.beginTransaction();//abrindo a transação
		session.delete(fabricante);
		transaction.commit();
		
		
	}catch (RuntimeException e) {
		System.out.println(e);
		if (transaction!= null){
			transaction.rollback();
	}
	
	}
	finally{
		session.close();	
		}
	
}



@Override
public List<Object> pesquisar() {
	
	Session session= HibernateUtil.getSessionFactory().openSession();
	List<Object>   fabricante =null;
	try{
	       Query  consulta = session.getNamedQuery("Fabricante.listar");
	     ///  consulta.setParameter("descricao", fabricante);
			fabricante = consulta.list();
			
		}catch (RuntimeException e) {
			 throw e;
		}
		 finally{
			session.close();	
			}
		return fabricante ;
	
}


@Override
public Object validar(Object obj) throws Exception {
	if ((obj == null) || (!(obj instanceof Fabricante))) {
		throw new Exception("Objeto não é uma Fabricante!");
	}
	return (Fabricante) obj;
}


	   public Object  find  (String descricao){
			
			Session session= HibernateUtil.getSessionFactory().openSession();
			Object   fabricante =null;
			 
		
		try{
	       Query  consulta = session.getNamedQuery("Fabricante.find");
			consulta.setString("descricao",descricao) ;
			fabricante=  consulta.uniqueResult();
			
			
		}catch (RuntimeException e) {
			System.out.println(e);
			 throw e;
		}
		 finally{
			session.close();	
			}
		return fabricante;

}
public List createFabricante(int size) {
List list = new ArrayList();
for(int i = 0 ; i < size ; i++) {
list.add(new Fabricante());
}

	        return list;
	    }

}