Cada vez mais próximo da versão 1.0, nesta atualização houve um grande esforço na revisão de todas units, que deixou o código mais limpo, reutilizável e com ganho de performace.

Além da revisão há boas novidades:

No VTF os objetos derivados de TValueType ganharam uma nova propriedade “ValueTypeKind: TValueTypeKind“, desta forma podemos identificar um ValueType sem a necessidade do QueryInterface. Os tipos numéricos ganharam uma interface antecessora comum “INumericType” que possibilita a conversão direta de Float e Integer através das propriedades ‘AsFloat’ e ‘AsInteger’. Pra concluir as novidades deste framework há um “Factory” para facilitar a criação de objetos atributos (membros) na programação, com o “TypeFactory podemos criar objetos assim:

var
  LItem: IStringType;
begin
  LItem:= TypeFactory.NewString('Texto');
  ...
end;

As novidades do OPF estão em 2 ítens, a criação de metadados específicos para OID, através da classe “TOIDMeta“, deixando claro que o Jazz assume que os OID são utilizados apenas para a persistência no relacionamento entre tabelas, nos objetos eles são apenas mais um atributo, pois o relacionamento dos objetos é feito via referência de objetos, como ponteiros. Com esta reestruturação, o novo modelo proporcionou a criação do “DataFactory” para a geração automática de dados, o que sigfinica que qualquer campo pode ser automático, não somente os mapeados para OID, os  “data generators” (TDataGenerator) implementam como estes valores devem ser gerados, de acordo com seu escopo, pela aplicação, por classe ou por atributo de classe, para começar temos TGuidGenerator, TAscendingGenerator e TDescendingGenerator, mas a partir destes é simples criar novos para por exemplo pegar valores a partir de generators do Firebird. Para definir que um atributo utilize este recurso, basta adicionar a classe do generator no mapeamento do membro:

 

with Mapping do
begin
  with AddObject('TAddress', 'ADDRESS') do
  begin
    with Add('ID', 'ID') do
    begin
      Size:= 38;
      IsOID:= True;
      GeneratorClass:= TGuidGenerator; //***
    end;
  ....

O MVP está quase pronto, sua evolução está na implementação de classes que estavam apenas declaradas e refinamento da modelagem, como já mencionei num post anterior estou implementando as Views com componentes DevExpress o que me obrigou a testar muito devido aos recursos disponíveis nestes componentes e a minha vontade de utilizar estes recursos, a única parte que terei de implementar e testar depois são os Interactos pois os componentes do DevExpress já implementam internamente a maior parte deste recurso. Minha previsão é que na próxima versão teremos algum exemplo simples de MVP com componentes VCL.

 

Changelog detalhado: http://www.liws.com.br/wiki/index.php/Alpha_9

Download: http://jazz.liws.com.br/download/jazz_a9.zip

Bookmark and Share: