Class: VirtualFileSystem

@nginstack/engine/lib/vfs/VirtualFileSystem~ VirtualFileSystem


new VirtualFileSystem()

Classe para manipulação e acesso da Virtual File System (iVfs, CLASSE, iVfsLob) de uma base de dados.

Ao manipular arquivos na VirtualFileSystem deve-se ter cuidado com tamanho dos arquivos e a localização gravada. Por padrão, os arquivos do Vfs são sincronizados pelo cache local, o que pode gerar uma sobrecarga nas estações clientes. Para evitar este comportamento, grave arquivos em diretórios que tenham a propriedade "this.cachedVfsContent" de x-class configurada para false. Com isto, os arquivos serão gravados apenas no banco de dados (tabela iVfsLob)e serão enviados para a estação cliente apenas quando houver demanda através do método getFileContent() ou em uma solicitação HTTP.

Methods


<static> getInstance()

Obtém uma instância compartilhada desta classe.

Returns:
Type
VirtualFileSystem

commitTransaction()

Efetiva um bloco de alterações na VirtualFileSystem iniciado pelo método startTransaction.

See:

createDirectory(name, parent)

Cria um novo diretório (classe) na Virtual File System.

Parameters:
Name Type Description
name string

Nome do novo diretório.

parent number

Chave do diretório mãe, onde deve ser criado o novo diretório.

Returns:

Chave do diretório criado.

Type
number

createFile(fileName, content, baseDirectory [, contentType])

Cria um novo arquivo na Virtual File System.

Parameters:
Name Type Argument Description
fileName string

Nome do novo arquivo com o caminho onde será criado. A extensão do arquivo será utilizada para detectar o tipo do conteúdo caso o parâmetro contentType não seja informado. O tipo do arquivo será considerado application/octet-stream se o contentType não for informado e se a extensão do arquivo não for conhecida.

content string | File | MemoryStream

Conteúdo do arquivo.

baseDirectory number

Diretório/classe onde o arquivo deverá ser criado. Caso seja informado um path no nome do arquivo, ele será somado ao baseDirectory para determinar o path completo do arquivo.

contentType string <optional>

Tipo do conteúdo do arquivo a ser criado. Caso não seja informado, será presumido a partir da extensão do arquivo. Será gerado um erro caso seja informado um tipo que não esteja cadastrado na classe "Tipos de Arquivos" (-1898187808).

Returns:

Chave do arquivo criado.

Type
number

deleteDirectory(key)

Exclui um diretório vazio.

Parameters:
Name Type Description
key number

Chave do diretório.


deleteFile(key)

Exclui um arquivo que não esteja mais sendo referenciado por outros registros.

Parameters:
Name Type Description
key number

Chave do arquivo.


deleteXFileAttributes(fileKey, attributeNames)

Exclui um conjunto de atributos de um arquivo da Virtual File System

Parameters:
Name Type Description
fileKey number

Chave do arquivos que terá seu atributos excluídos.

attributeNames Array

Vetor com os nomes dos atributos que devem ser removidos.

Example
virtualFS.deleteXFileAttributes(123456, ["origem", "autor"])

directoryExists(path)

Informa se o diretório informado existe.

Parameters:
Name Type Description
path string

Caminho do diretório que deve ser localizado.

Returns:

Chave do diretório se for localizado um diretório ou null se não localizar.

Type
number

fileExists(path [, opt_baseDirectory])

Localiza um arquivo na Virtual File System. Se o path informado for um diretório, este método retornará a chave do arquivo índice deste diretório caso exista. Atualmente, os nomes dos índices de um diretório não são configuráveis, sendo fixados em: "index.iejs", "index.htm", "index.html", "index.wml" ou "iindex.htm".

Parameters:
Name Type Argument Description
path string

Caminho do arquivo desejado.

opt_baseDirectory number <optional>

Chave do diretório onde o arquivo deve ser localizado.

Returns:

Chave do arquivo localizado ou null se não localizar.

Type
number

forceDirectories(path)

Garante que o diretório informado e todos os sub-diretórios do path existem, criando-os caso seja necessário.

Parameters:
Name Type Description
path string

Caminho do diretório que deve estar criado.

Returns:

Chave do diretório informado em path.

Type
number

formatFilePath(name, directory)

Formata o caminho de um arquivo com base no seu nome e diretório.

Este método é útil para simular o caminho que um arquivo terá na Virtual File System antes da sua criação ou modificação.

Parameters:
Name Type Description
name string

Nome do arquivo.

directory number | DBKey

Diretório do arquivo.

Returns:

Caminho do arquivo name no diretório directory.

Type
string

getDirectoryPath(key)

Obtém o caminho do diretório informado.

Parameters:
Name Type Description
key number

Chave do diretório.

Returns:

Caminho completo do diretório informado incluindo a última barra.

Type
string

getFileContent(key [, allowNullMimeType])

Obtém o conteúdo do arquivo informado.

Parameters:
Name Type Argument Description
key number

Chave do arquivo.

allowNullMimeType boolean <optional>

Especifica se a função aceita arquivos com o mime type indefinido. Se false, o valor default, uma exceção será lançada para estes casos. Se o valor true for passado, esses arquivos serão tratados como arquivos texto.

Returns:

Conteúdo do arquivo.

Type
string

getFilePath(key)

Obtém o caminho do arquivo informado.

Parameters:
Name Type Description
key number | DBKey

Chave do arquivo.

Returns:

Caminho do arquivo informado.

Type
string

getFileSize(key)

Obtém o tamanho do arquivo em bytes.

Parameters:
Name Type Description
key number | DBKey

Chave do arquivo.

Returns:

Tamanho do arquivo em bytes.

Type
number

getXFileAttributes(fileKey)

Obtém os atributos de um arquivo da Virtual File System

Parameters:
Name Type Description
fileKey number

Chave do arquivo da Virtual File System

Returns:

objeto com o atributos extras armazenados como propriedades.

Type
Object
Example
var attr = virtualFS.getXFileAttributes(123456)
attr.origem

moveDirectory(key, newParent)

Move um diretório.

Parameters:
Name Type Description
key number

Chave do diretório.

newParent number

Chave do novo diretório mãe.


moveFile(key, destinationDir)

Move um arquivo na iVFS aplicando as configurações de cache e permissões do diretório destino.

Parameters:
Name Type Description
key number

Chave do arquivo.

destinationDir number

Chave do diretório para onde o arquivo será movido.


renameDirectory(key, newName)

Altera o nome de um diretório, ajustando a URL de todos os arquivos contidos nele.

Parameters:
Name Type Description
key number

Chave do diretório.

newName string

Novo nome do diretório.


renameFile(key, newName)

Altera o nome de um arquivo existente.

Parameters:
Name Type Description
key number

Chave do arquivo.

newName string

Novo nome do arquivo.


rollbackTransaction()

Desfaz um bloco de alterações na VirtualFileSystem iniciado pelo método startTransaction.

See:

setFileContent(key, content [, opt_contentType])

Altera o conteúdo do arquivo informado. Se for necessário este método será responsável por codificar o conteúdo binário em base64 para que possa ser gravado no banco de dados. O uso de codificação é determinado pelo tipo do arquivo através do campo "Codificado em Base64" da tabela "Mime Types".

Parameters:
Name Type Argument Description
key number

Chave do arquivo.

content string | File | MemoryStream

Conteúdo do arquivo.

opt_contentType string <optional>

Tipo do conteúdo. Caso não seja informado, será mantido o tipo atual e apenas o conteúdo do arquivo será alterado.


setXFileAttributes(fileKey, attributes)

Preenche atributos extras em um arquivo da Virtual File System.

Parameters:
Name Type Description
fileKey number

Chave do arquivo da Virtual File System

attributes Object

Objeto que contém a lista dos atributos e valores a serem configurados.

Example
virtualFS.setXFileAttributes(123456, {origem: "SONY DSC 40", autor: "User Name"})

startTransaction()

Inicia um bloco de alterações na VirtualFileSystem. As alterações somente serão realizadas quando for executado o método commitTransaction.
Sempre utilize este método em uma estrutura que garanta a execução do commit ou do rollback.

See:
Example
virtualFS.startTransaction()
try {
 // Várias operações com virtualFS
 virtualFS.commitTransaction()
} catch (e){
 virtualFS.rollbackTransaction()
 throw e
}