BISOrderBy
O BISOrderBy é o objeto usado em conjunto com os MOs pela BISDAO do BISFrameWork para definir a ordem que os objetos devem ser retornados ao utilizarmos os métodos de find. Para criar o BISOrderBy é possível de duas maneiras: instanciando o objeto como qualquer outro (sintaxe "new BISOrderBy(...)"), ou utilizando os métodos estáticos "getBISOrderbyInstance()". Em ambos os casos é possível passar dois atributos: coluna a ordenar e ascendência/descendência do campo. Por padrão, se passada só o nome da coluna, a ordem será ascendente. O nome da coluna a ser passada é o mesmo nome do atributo do VO.
Por exemplo, se temos um ClientVO, e queremos ordenar pelo atributo "name", devemos criar o BISOrderBy passando a String "name" como parâmetro. Se desejarmos que a ordem da lista seja de Z para A, devemos passar o segundo atributo como "false". Como o valor padrão é sempre true na ordem da lista, não faz sentido passar o segundo atributo para obter uma lista ascendente.
É possível organizar uma lista por um atributo que esteja em um sub VO. Por exemplo, imaginando que nosso ClientVO tenha um atributo "address" que carregue um AddressVO, e este tenha um atributo para o nome da rua chamado "street". Para ordenar a lista de clientes por nome da rua, devemos criar um BISOrderBy passando como atributo a string "address.street". Lembrando que o find a ser utilizado é de Client, e não de address.
![]() |
|
Para ordenar por múltiplas colunas, basta chamar os métodos "addOrderbyItem()" e passar os mesmos atributos citados acima, ou um BISOrderBy completo. A ordem em que estes são acrescentados define a prioridade de cada coluna, ou seja, a segunda coluna só será utilizada se houver empate na primeira, a terceira só será usada de houver empate na primeira e segunda, e assim por diante.
![]() |
Criando BISOrderBy
//Ordenando por uma coluna
BISOrderBy.getBISOrderbyInstance(AbbreviationVO_.VO.priority());
//Ordenando por uma coluna de for descendente
BISOrderBy.getBISOrderbyInstance(AbbreviationVO_.VO.priority(), false);
//Ordenando por duas colunas
BISOrderBy.getBISOrderbyInstance(AbbreviationVO_.VO.priority(), false).addOrderbyItem(AbbreviationVO_.VO.occurrence());
|