Classe que efetua a extração de um resource do repositório de objetos para um diretório no rootpath do server, apenas efetua a extração caso seja necessário.
Para determinar se é necessário extrair novamente o arquivo faz a comparação do MD5 do conteudo do arquivo em relação ao arquivo físico.
Exemplo
#include "protheus.ch"
/*/{Protheus.doc} TestExtRes
Função de teste da classe ExtractResource
@author Caio.Lima
@since 01/08/2022
/*/
Function U_TestExtRes()
Local oResource as object
Local cResource as character
oResource := totvs.framework.file.ExtractResource():New()
cResource := ""
While !Empty( cResource := FWInputBox("Informe o nome do resource", "APLOGO_OCEAN.JPG") )
oResource:ExtractOneResource(cResource)
ConOut(oResource:GetLog())
If oResource:IsResourceOk()
// copia o arquivo para o client
CpyS2T(oResource:GetPathResFile(), "C:\teste\")
// abre o arquivo na maquina do client
ShellExecute("open", "C:\teste\" + cResource, "", "", 1)
Else
Alert("Falha ao salvar resouce" + CRLF + oResource:GetLog() )
EndIf
oResource:DeleteLastResource()
EndDo
Return
GetCodResourceLog
Retorna o código do log de extração do resource
Retorno:
Nome | Tipo | Descrição |
---|
nRet | Numérico | codigo do log de extração do resource Codigo | Descrição |
---|
-3 | Falha no diretório: #1[crootpath]# Verifique se o caminho é valido! | -2 | Arquivo precisa ser atualizado porém não conseguiu acesso exclusivo via lockbyname | 0 | Ainda não foi extraído nada | -1 | Não foi possível efetuar a extração do arquivo de resource, verifique se o arquivo #1[resource]# existe no RPO | 1 | Arquivo extraído com sucesso | 2 | Arquivo já está atualizado |
|
IsResourceOk
Retorna se o arquivo de resource está ok, ou seja, presente na pasta de rootpath e atualizado em relação ao RPO
Retorno
Nome | Tipo | Descrição |
---|
lRet | logico | Variável de controle que indica se o resource está ok |
GetLog
Retorna o log definido na classe
Retorno
Nome | Tipo | Descrição |
---|
cLog | caractere | Último log que foi definido ao extrair um recurso |
GetRootPath
Método para retornar o caminho padrão de extração do arquivo.
Caso a propriedade extensão esteja informada, retorna também a extensão como parte do caminho. O caractere de barra sempre será retornado no final do caminho
Retorno
Nome | Tipo | Descrição |
---|
cRet | caractere | Caminho padrão que será utilizado no extract |
SetRootPath
Método para definir o caminho padrão de extração do arquivo. O caminho de extração deve ser no servidor a partir da protheus_data
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
---|
cRootPath | caractere | Pasta para definir o caminho padrão para extração | X |
GetPathResFile
Retorna o nome do resource concatenado com o rootpath
Retorno
Nome | Tipo | Descrição |
---|
cRet | caractere | Nome completo do path mais o resource |
NeedReload
Método para verificar se o resource precisa ser extraído novamente
Parâmetro
Nome | Tipo | Descrição | Obrigatório |
---|
cMD5 | caractere | Código md5 a ser comparado, caso seja passado não será utilizado o arquivo físico para comparar com o md5 do RPO |
|
Retorno
Nome | Tipo | Descrição |
---|
lRet | logico | True caso precise fazer o reload no arquivo e false caso não precise. |
ExtractOneResource
Método para extrair um resource do RPO.
Retorna true apenas quando a extração foi realizada. Caso tenha retornado false, é necessário utilizar o método isResourceOk
Para determinar se o resource está disponível na pasta, junto com o método GetLog e GetCodResourceLog
Parametro
Nome | Tipo | Descrição | Obrigatório |
---|
cResource | caractere | Indica o nome do recurso no repositório a ser salvo em disco pode ser passado junto com a extensão | X |
cExtensao | caractere | Extensão do arquivo a ser extraído, caso seja passado não deve ser passado no resource, a extensão será utilizada com uma pasta na extração do arquivo. |
|
cMD5 | caractere | Código md5 do arquivo, caso seja passado não irá utilizar o md5 do arquivo físico será utilizado esse parâmetro para determinar se o arquivo precisa ser atualizado |
|
|
| Parâmetro interno, não deve ser utilizado. |
|
Retorno
Nome | Tipo | Descrição |
---|
lRet | logico | Retorna true caso tenha extraído com sucesso o arquivo retorna false caso não tenha feito a extração, se o recurso já está na pasta rootpath definida, tb irá retornar false |
DeleteLastResource
Deleta o resource extraído anteriormente. Se o arquivo já não existir no diretório, retorna 0
Retorno
Nome | Tipo | Descrição |
---|
nRet | numérico | Código de retorno da função FErase retorna 0 caso tenha conseguido deletar, ou -1 caso não tenha deletado |