Criar Framework Extension Class no ADF

Tweet about this on TwitterShare on Facebook1Share on LinkedIn4Share on Google+0

Criar Framework Extension Class de algumas classes base é uma boa prática quando você está construindo aplicações ADF. Algumas razões para a criação de Framework Extension Class são:

  • Codificação de uma funcionalidade genérica. Por exemplo, criar um método que chama uma Sequence do banco de dados e todos os Entity Objects podem usá-lo.
  • Alterar o modo como uma funcionalidade funciona. Por exemplo, alterar o método doDML() para atualizar uma flag de exclusão quando uma Entity Row é removida (Exclusão Lógica).
  • Solucionar um bug.

Um conjunto comum de classes base personalizadas são:

  • public class CustomEntityImpl extends EntityImpl
  • public class CustomEntityDefImpl extends EntityDefImpl
  • public class CustomViewObjectImpl extends ViewObjectImpl
  • public class CustomViewRowImpl extends ViewRowImpl
  • public class CustomApplicationModuleImpl extends ApplicationModuleImpl
  • public class CustomDBTransactionImpl extends DBTransactionImpl2
  • public class CustomDatabaseTransactionFactoryImpl extends DatabaseTransactionFactory

Você também pode criar as seguintes classes base personalizadas, mas raramente você vai substituir algo nelas.

  • public class CustomViewDefImpl extends ViewDefImpl
  • public class CustomEntityCache extends EntityCache
  • public class CustomApplicationModuleDefImpl extends ApplicationModuleDefImpl

Criar Framework Extension Class

Vamos alterar o método doDML() para atualizar uma flag de exclusão quando uma Entity Row é removida (Exclusão Lógica). Para isso, será necessário criar o CustomEntityImpl Framework Extension Class que estende EntityImpl.
Faça o download do aplicativo de amostra: ADFFrameworkExtensionClassApp.zip.

Na janela Applications, clique com o botão direito no projeto Model e selecione New > From Gallery.
Em New Gallery, escolha General > Java > Class e clique em OK.
Na caixa de diálogo Create Java Class, especifique os seguintes valores e clique em OK.

  • Name: CustomEntityImpl
  • Package: br.com.waslleysouza.model.adfbc.base
  • Extends: oracle.jbo.server.EntityImpl

create-framework-extension-class-adf1

Na classe CustomEntityImpl, vamos substituir dois métodos:

  • remove(): Para definir a flag de exclusão antes de chamar o método super.remove().
  • doDML(): Para forçar o Entity Object a ser atualizado em vez de excluído.

Substitua o conteúdo de classe Java com o seguinte código:

package br.com.waslleysouza.model.adfbc.base;

import oracle.jbo.server.EntityImpl;
import oracle.jbo.server.TransactionEvent;

public abstract class CustomEntityImpl extends EntityImpl {
  @Override
  public void remove() {
    setDeleted("Y");
    super.remove();
  }

  @Override
  protected void doDML(int operation, TransactionEvent transactionEvent) {
    if (operation == DML_DELETE) {
      operation = DML_UPDATE;
    }
    super.doDML(operation, transactionEvent);
  }

  public abstract void setDeleted(String value);
}

create-framework-extension-class-adf2

Adicione uma nova coluna DELETED para a tabela COUNTRIES.

ALTER TABLE COUNTRIES ADD (DELETED CHAR(1));

É necessário sincronizar o Countries Entity Object com o banco de dados.
Na janela Applications, clique com o botão direito em Countries Entity Object e escolha Syncronize with Database.
Clique no botão Syncronize All, em seguida, clique em Yes.

create-framework-extension-class-adf3

Para implementar o método setDeleted(), teremos de gerar a classe CountriesImpl.
Na janela Applications, e clique duas vezes no Countries Entity Object.
Clique na aba de navegação Java e, em seguida, clique no botão Edit Java Classes.
Na caixa de diálogo Select Java Options, selecione as seguintes opções: Generate Entity Object Class e Accessors.

create-framework-extension-class-adf4

Clique em Classes Extend.
Na caixa de diálogo Override Base Classes, substitua o conteúdo do campo Row:

br.com.waslleysouza.model.adfbc.base.CustomEntityImpl

create-framework-extension-class-adf5

Como você pode ver, o método setDeleted() foi criado.

create-framework-extension-class-adf6

Apenas isso!
Agora, se você executar o Oracle ADF Model Tester e excluir qualquer país, a coluna DELETED é atualizada.

create-framework-extension-class-adf7

create-framework-extension-class-adf8

Bônus

Você pode alterar as preferências e definir as Framework Extension Classes para todos os novos componentes.
Estas preferências não afetam os componentes existentes no projeto.

create-framework-extension-class-adf9

Tweet about this on TwitterShare on Facebook1Share on LinkedIn4Share on Google+0

Autor: Waslley Souza

Consultor Oracle com foco em tecnologias Oracle Fusion Middleware e SOA. Certificado Oracle WebCenter Portal, Oracle ADF e Java.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *