01. DADOS GERAIS

Produto:

Linha de Produto:

Segmento:

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 da interface depende dos seguintes elementos do framework de desenvolvimento:


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

  • function TreatRequest(const AConnection: IDBFullConfigConnection; const ARequest: TWebRequest; const AResponse: TWebResponse): THTTPCode;

Não há propriedades expostas pela interface ICATRACABase.

Para utilização da implementação da interface ICATRACABase em aplicações Delphi, segue o exemplo de uso deste componente.


Execução da ação de login:

procedure TComponentDebugger.btnSendToBiometriesClick(Sender: TObject);
var
  Request: TWebRequest;
  Response: TWebResponse;
  Return: THTTPCode;
  ResponseJSON: TJSONObject;

  procedure SetAccessDataInINI;
  var
    URL : string;
    Path: string;
  begin
    URL := string(cbxURL.Text).Replace('{personId}', edtPersonIdBiometries.Text, [rfReplaceAll]);
    Path := URL.Delete('http://localhost/api');
    TIniReader.Instance.OpenFile(FBasePath + BIOMETRIES_INI_FILE)
                       .Section['Extra Headers']
                       .WriteString('Url', URL)
                       .Root
                       .Section['CGI']
                       .WriteString('Logical Path', Path)
                       .WriteString('Physical Path', Path)
                       .UpdateFile;
  end;

  procedure SetRequestWithQueryParams;
  begin
    if chkWithParams.Checked then
    begin
      Request.QueryFields.Add(PAGE_PARAM.Format([edtPageBiometries.Text]));
      Request.QueryFields.Add(PAGE_SIZE_PARAM.Format([edtPageSizeBiometries.Text]));
    end;
  end;

  procedure SetRequest(const AIndex: Integer);
  begin
    if AIndex = 0 then
    begin
      SetRequestWithQueryParams;
    end;
  end;
begin
  SetAccessDataInINI;
  sedtResponse.Lines.Clear;
  Request := TWinCGIRequest.Create(FBasePath + BIOMETRIES_INI_FILE, FBasePath + CONTENT_FILE, FBasePath + OUTPUT_FILE);
  Response := TCGIResponse.Create(Request);
  SetRequest(cbxURL.ItemIndex);

  Return := TCATRACAFactory.Instance.GetObject(BIOMETRIES_CLASS_KEY).TreatRequest(FConnection
                                                                                , Request
                                                                                , Response);

  case Return.IsOkResult of
    True : Application.MessageBox(PWideChar(RESPONSE_MESSAGE.Format([Return.Code, Return.Message])), 'Informação', MB_OK or MB_ICONINFORMATION);
    False: Application.MessageBox(PWideChar(RESPONSE_MESSAGE.Format([Return.Code, Return.Message])), 'Erro', MB_OK or MB_ICONERROR);
  end;

  if Return <> hcNoContent then
  begin
    ResponseJSON := Response.Content.ToJSON;
    sedtResponse.Text := ResponseJSON.PrettyFormat(2);
    ResponseJSON.Free;
  end;

  Request.Free;
end;

Resultado esperado:

Os demais métodos retornam uma mensagem 204No content -, não possuindo retorno visível.


04. DEMAIS INFORMAÇÕES

Outras ações/ações relacionadas 

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