Árvore de páginas

01. DADOS GERAIS

Produto:

TOTVS Logística Recintos Aduaneiros

Linha de Produto:

Linha Logix

Segmento:

Logística

Módulo:Sistema - Cadastro de Equipamentos
Função:Componente base para persistência e BiometricDevice
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :
  1. DLOGPORTOS-19451


02. SITUAÇÃO/REQUISITO

Para atender a necessidade de cadastro de equipamentos de coleta de dados biométricos foi implementada uma estrutura de componentes com persistência na base de dados onde pode ser salvo qualquer tipo de equipamento, bastando derivar da interface IDevice e utilizar a IPersistenceObject para gravar, recuperar, editar e excluir seus dados.

03. SOLUÇÃO

A implementação das interfaces estão nas seguintes units:

    • IPersistentObject em Framework.Classes.InteropObject;
    • IPersistenceBase, IPersistenceType e IPersistenceObject em Framework.Classes.Persistence;
    • IDevice e IBiometricDevice em Framework.Classes.Device;

Que dependem dos seguintes elementos do framework de desenvolvimento:

    • Framework.Classes.BusinessProperty;
    • Framework.Classes.DBInteropObject;
    • Framework.Classes.InteropObject;
    • Framework.Connections.Database;
    • Framework.Types.JSON;
    • Framework.Helpers.DateTime;
    • Framework.Helpers.JSON;
    • Framework.Helpers.Rtti;
    • Framework.Helpers.Str;


São métodos expostos pela implementação da interface IPersistentObject:

  • function SetId(const Value: string): IPersistentObject;

São métodos expostos pela implementação da interface IPersistenceBase:

  • function SetId(const Value: string): IPersistenceBase; reintroduce;
  • function SetReference(const Value: string): IPersistenceBase;
  • function SetAttributes(const Value: TJSONObject): IPersistenceBase;
  • function SetActive(const Value: Boolean): IPersistenceBase;
  • function Load(const AId: string): IPersistenceBase; reintroduce; virtual; abstract;
  • function Save(out AReturn: Cardinal): IPersistenceBase; reintroduce; virtual; abstract;

São métodos expostos pela implementação da interface IPersistenceType:

  • function SetId(const Value: string): IPersistenceType; reintroduce;
  • function SetReference(const Value: string): IPersistenceType; reintroduce;
  • function SetAttributes(const Value: TJSONObject): IPersistenceType; reintroduce;
  • function SetActive(const Value: Boolean): IPersistenceType; reintroduce;
  • function Load(const AId: string): IPersistenceType; reintroduce;
  • function Save(out AReturn: Cardinal): IPersistenceType; reintroduce;
  • function SetConnection(const AConnection: IDBFullConfigConnection): IPersistenceType; reintroduce;

São métodos expostos pela implementação da interface IPersistenceObject:

  • function IsValid: Boolean;
  • function SetId(const Value: string): IPersistenceObject; reintroduce;
  • function SetObjectType(const Value: IPersistenceType): IPersistenceObject;
  • function SetReference(const Value: string): IPersistenceObject; reintroduce;
  • function Load(const AId: string): IPersistenceObject; reintroduce;
  • function Save(out AReturn: Cardinal): IPersistenceObject; reintroduce;
  • function SetConnection(const AConnection: IDBFullConfigConnection): IPersistenceObject; reintroduce;
  • function SetActive(const Value: Boolean): IPersistenceObject; reintroduce;
  • function SetObject(const AObject: IPersistentObject): IPersistenceObject;

São métodos expostos pela implementação da interface IDevice:

  • function SetId(const Value: string): IDevice; reintroduce;
  • function SetDescription(const Value: string): IDevice;
  • function SetManufacturer(const Value: string): IDevice;
  • function SetModel(const Value: string): IDevice;

São métodos expostos pela implementação da interface IBiometricDevice:

  • function SetId(const Value: string): IBiometricDevice; reintroduce;
  • function SetDescription(const Value: string): IBiometricDevice; reintroduce;
  • function SetManufacturer(const Value: string): IBiometricDevice; reintroduce;
  • function SetModel(const Value: string): IBiometricDevice; reintroduce;
  • function SetMode(const Value: TBiometricMode): IBiometricDevice;
  • function SetTemplateSize(const Value: Integer): IBiometricDevice;

São propriedades expostas pela implementação da interface IPersistentObject:

  • property Id: string read GetId write PutId;

São propriedades expostas pela implementação da interface IPersistenceBase:

  • property Reference: string read GetReference write PutReference;
  • property Attributes: TJSONObject read GetAttributes write PutAttributes;
  • property Active: Boolean read GetActive write PutActive;

São propriedades expostas pela implementação da interface IPersistenceType:

  • property Reference: string read GetReference write PutReference;
  • property Attributes: TJSONObject read GetAttributes write PutAttributes;
  • property Active: Boolean read GetActive write PutActive;

São propriedades expostas pela implementação da interface IPersistenceObject:

São propriedades expostas pela implementação da interface IDevice:

  • property Description: string read GetDescription write PutDescription;
  • property Manufacturer: string read GetManufacturer write PutManufacturer;
  • property Model: string read GetModel write PutModel;

São propriedades expostas pela implementação da interface IBiometricDevice:

  • property Mode: TBiometricMode read GetMode write PutMode;
  • property TemplateSize: Integer read GetTemplateSize write PutTemplateSize;

Para utilização dos componentes, segue-se uma hierarquia:
No exemplo a seguir, TBiometricDevice é uma implementação concreta que implementa IBiometricDevice, que deriva de IDevice;

Dispositivo biométrico
procedure TFormMain.ViewToModel;
begin
  FBiometricDevice := TBiometricDevice.Create;
  FBiometricDevice.SetDescription(lbledObjtReference.Text)
                  .SetManufacturer(lbledtManufacturer.Text)
                  .SetModel(lbledtModel.Text)
                  .SetMode(TBiometricMode(IfThen(cbbMode.ItemIndex < 0, 0, cbbMode.ItemIndex)))
                  .SetTemplateSize(StrToInt(lbledtTemplateSize.Text));
end;

TObjectType representa o cadastro de tipos de dispositivos/equipamentos, contendo sua descrição e um campo que conterá o schema de validação para objetos de seu tipo.

Tipo de Objeto
procedure TFormMain.SaveData;
var
  Return: Cardinal;
begin
  TPersistenceType.Create(lbledtId.Text)
                  .SetConnection(FConnection)
                  .SetReference(lbledtReference.Text)
                  .SetAttributes(TJSONObject(TJSONObject.ParseJSONValue(mmoAttributes.Text)))
                  .SetActive(chkActive.Checked)
                  .Save(Return);
end;

TPersistenceObject é usado para salvar, recuperar, editar e excluir um objeto que representa um dispositivo, como um TBiometricDevice, e vincula com seu tipo, como um cadastro de TObjetcType para "Dispositivo biométrico".

PersistenceObject
procedure TFormMain.SaveData;
var
  Return: Cardinal;
begin
  ViewToModel;
  TPersistenceObject.Create(lbledtObjId.Text)
                    .SetConnection(FConnection)
                    .SetReference(lbledObjtReference.Text)
                    .SetObjectType(TPersistenceType.Create
                                                   .SetConnection(FConnection)
                                                   .Load(FObjectTypeID[cbbObjTypeId.ItemIndex]))
                    .SetObject(FBiometricDevice)
                    .SetActive(chkObjActive.Checked)
                    .Save(Return);
end;


04. DEMAIS INFORMAÇÕES

Por ser dependente do framework de desenvolvimento, os caminhos para os arquivos arquivos desta dependência devem estar presentes no projeto ao ser utilizado.

05. ASSUNTOS RELACIONADOS