quarta-feira, 17 de abril de 2013

JSF: Setar foco em um elemento que foi renderizado



<p:outputPanel id="optPanel">
   <h:inputText value="#{myBean.nome}" id="nome"/>

   <h:inputText>
      <a4j:ajax event="complete"  render="optPanel" oncomplete="nome.focus();"/>
   </h:inputText>
</p:outputPanel>

sexta-feira, 15 de março de 2013

limitar o número de registros retornados em uma consulta SQL


DB2 -- select * from table fetch first 10 rows only 
Informix, InterBase/Firebird, SKIP  -- select first 10 * from table 
Microsoft SQL Server and Access -- select top 10 * from table 
MySQL, PostgreSQL, SQLite, HSQL/H2 -- select * from table limit 10 
Oracle -- select * from table where rownum <= 10
Fonte: http://pontodebug.blogspot.com.br/2011/01/como-limitar-o-numero-de-registros.html

sexta-feira, 22 de fevereiro de 2013

JSF: selectBooleanCheckbox não funciona no primeiro click

Problema:
selectBooleanCheckbox não funciona no primeiro click, apenas do segundo em diante.


<a4j:commandButton
image="/resources/images/16x16/add.png"
execute="@form"
render="baixaPane"
oncomplete="#{rich:component('baixaPane')}.show();">
</a4j:commandButton>


<rich:column>

<f:facet name="header">BAIXAR</f:facet>
<h:selectBooleanCheckbox  value="#{lancamento.baixar}"
valueChangeListener="#{movimentoContaMB.receptor}" >
<a4j:ajax execute="@form" render="@form" />
</h:selectBooleanCheckbox>
</rich:column>

Solução:
Remover o render do a4j:commandButton.
<a4j:commandButton
image="/resources/images/16x16/add.png"
execute="@form"
oncomplete="#{rich:component('baixaPane')}.show();">
</a4j:commandButton>

terça-feira, 5 de fevereiro de 2013

Hibernate: Multipos @DiscriminatorValue / Multiple discriminator values



// Classe Base 
@DiscriminatorFormula("case when str_origem in ('CP','FE') then 'CP' when str_origem in ('CR','FE') then 'CR'  when str_origem in ('CP','CR','FE') then 'AL' end")
@DiscriminatorValue(value="AL")
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class LancamentoCc implements Serializable{
}

// SubClasse
@Entity
@DiscriminatorValue(value="CP")
public class ContaPagar extends LancamentoCc implements Serializable,Cloneable{
}

JSF: Exibir valor de h:inputText em managed bean

FacesContext ctx = FacesContext.getCurrentInstance();

Map<String,String> request = ctx.getExternalContext().getRequestParameterMap();
String data = request.get("NRO_PROCESSO");

sexta-feira, 1 de fevereiro de 2013

Firebird: Exibir total de registros de todas as tabelas


CREATE PROCEDURE SOMAREGISTROS
RETURNS (
    TABELA VARCHAR (31),
    QTD_REG INTEGER)
AS  declare variable comando varchar(100);
  declare variable qtdtot integer;
  declare variable qtdtab integer;

begin
     qtdtot = 0;
     qtdtab = 0;
   
     for select rdb$relation_name
         from rdb$relations
         where rdb$flags = 1 and rdb$view_blr is null
         order by 1
         into :tabela do
     begin
          qtdtab = qtdtab + 1;
          comando = 'select count(*) from ' || :tabela;
          execute statement :comando into :qtd_reg;
          qtdtot = :qtdtot + :qtd_reg;
          suspend;
     end
     tabela = :qtdtab || ' Tabelas - Total:';
     qtd_reg = :qtdtot;
     suspend;
end

segunda-feira, 21 de janeiro de 2013

Ignorar acentos no Oracle/Hibernate


No HibernateUtil:
Funciona para todas as queries, porém, pode haver perda de performance.


    public static Session getSession() {   
        if (SESSION_THREAD.get() == null) {   
            Session session = factory.openSession();   
            session.createSQLQuery("alter session set nls_comp=linguistic").executeUpdate();
            session.createSQLQuery("alter session set nls_sort=binary_ai").executeUpdate();
            SESSION_THREAD.set(session);   
        }   
        return (Session) SESSION_THREAD.get();   
    }

Diretamente no método de pesquisa:

public List<ContaPagar> findContaPagar(String campoPesquisa, String valor,Integer startRow, Integer MaxRows) {
List<ContaPagar> list = new ArrayList<ContaPagar>();
try{
    session.createSQLQuery("alter session set nls_comp=linguistic").executeUpdate();
    session.createSQLQuery("alter session set nls_sort=binary_ai").executeUpdate();
  Criteria c = session.createCriteria(ContaPagar.class,"contaPagar");
  c.createAlias("contaPagar.historicoFinanceiro", "historico",JoinType.LEFT_OUTER_JOIN);
  c.setCacheable(true);
  c.setMaxResults(MaxRows);
  c.setFirstResult(startRow);
  c.add(Restrictions.eq(campoPesquisa, StringToObject.toObject(valor)));
  
  list = c.list();
}catch (Exception e) {
e.printStackTrace();
}
return list;
}