Class Index | File Index

Classes


Class bdo.orm.Entity


Defined in: entity.js.

Class Summary
Constructor Attributes Constructor Name and Description
 
bdo.orm.Entity(classKey, dataSet, opt_options)
Classe utilizada para manipular registros das classes de dados do sistema, declaradas por meio de arquivos x-model.
Field Summary
Field Attributes Field Name and Description
 
Indica se os dados serão persistidos automaticamente no banco de dados quando for executado o método #post.
 
Chave da classe de dados desta entidade.
 
key
Chave que identifica unicamente esta entidade no banco de dados.
 
Indica que uma entidade recém criada ou alterações realizadas em uma entidade existente não foram efetivadas pelo método #post.
 
Indica qual é o estado de modificação desta entidade.
Method Summary
Method Attributes Method Name and Description
 
assign(values)
Serão atribuídas as propriedades do objeto informado.
 
bindDataSet(dataSet)
Informa um novo DataSet onde os dados da entidade serão persistidos.
 
Cancela a edição corrente ou criação da entidade.
 
Obtém entidade clone a partir da entidade original.
 
Exclui esta entidade.
 
edit()
Inicia a edição da entidade.
<static>  
bdo.orm.Entity.fromDataSet(classKey, dataSet, opt_options)
Cria uma entidade para manipular o registro corrente do dataSet.
<static>  
bdo.orm.Entity.fromKey(key, opt_options)
Cria uma entidade para manipular o registro indicado pela chave key.
 
get(name)
Obtém o valor de uma propriedade da entidade.
 
Cria uma nova entidade inserindo um registro no DataSet associado a esta entidade.
 
Persiste as modificações realizadas neste entidade no banco de dados.
 
post()
Efetiva a edição ou criação da entidade localmente no dataSet.
 
set(name, value)
Atualiza uma propriedade desta entidade.
 
Cria uma representação JSON desta entidade.
 
Exporta a definição desta classe no formato JSON Schema.
 
updateClass_(classKey)
Atualiza a entidade para trabalhar com a classe de dados informada.
Class Detail
bdo.orm.Entity(classKey, dataSet, opt_options)
Classe utilizada para manipular registros das classes de dados do sistema, declaradas por meio de arquivos x-model. O seu uso é recomendado em vez da manipulação direta via dataSets, pois as regras de negócio declaradas no x-model, por meio de eventos e definições de campos, são respeitadas com base nas permissões do usuário corrente da sessão ou do usuário indicado nas opções do construtor.
Não é recomendado utilizar diretamente o construtor bdo.orm.Entity, prefira:
bdo.orm.Entity.fromKey: para consultar ou alterar registros que façam parte do cache local;
bdo.orm.Entity.fromDataSet: para consultar ou alterar registros de APIs existentes que hoje expõem DataSets como interface de dados, como os objetos de gestão; e
bdo.orm.EntitySet#newEntity: para construir uma nova entidade de uma determinada classe de dados. bdo.orm.EntitySet#findByKey: para consultar ou alterar entidades de uma determinada coleção previamente criada.
Parameters:
{number} classKey
Classe de dados da entidade.
{DataSet} dataSet
DataSet que contém os dados da entidade. Enquanto a entidade criada existir, o DataSet informado não poderá ter a sua posição alterada. A mudança da posição do DataSet impedirá o uso da entidade criada. A entidade criada terá a propriedade bdo.orm.Entity#autoPersist com o mesmo valor da propriedade DataSet#automaticApplyUpdates do DataSet informado.
{(bdo.orm.EntityOptions|Object)=} opt_options
Opções da entidade a ser criada.
Throws:
{bdo.orm.EntityError}
Será gerado um erro caso a chave informada em opt_options.keynão exista ou se o usuário não tiver permissão de visão para a classe desta entidade.
See:
bdo.orm.EntitySet
bdo.orm.Key
bdo.orm.KeySet
Field Detail
autoPersist
Indica se os dados serão persistidos automaticamente no banco de dados quando for executado o método #post.
See:
#persist

classKey
Chave da classe de dados desta entidade.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 currentUser.classKey.nome // => Usuários

key
Chave que identifica unicamente esta entidade no banco de dados.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 currentUser.key === session.userKey // => true

postPending
Indica que uma entidade recém criada ou alterações realizadas em uma entidade existente não foram efetivadas pelo método #post.
See:
#post

state
Indica qual é o estado de modificação desta entidade. Valores possíveis:
* bdo.orm.EntityState.UNCHANGED: A entidade não foi modificada desde a sua criação ou da última execução do método bdo.orm.Entity#persist.
* bdo.orm.EntityState.ADDED: uma nova entidade foi criada, mas as alterações ainda não foram persistidas no banco de dados.
* bdo.orm.EntityState.MODIFIED: a entidade foi modificada, mas as alterações ainda não foram persistidas no banco de dados.
* bdo.orm.EntityState.DELETED: a entidade foi excluída, mas as alterações ainda não foram persistidas no banco de dados.
* bdo.orm.EntityState.DETACHED: indica que uma instância de bdo.orm.Entity não faz mais parte de um bdo.orm.EntitySet, nem representa uma entidade do banco de dados. Normalmente, uma entidade fica nesse estado após a exclusão de uma entidade ter sido persistida no banco de dados ou quando o dataSet informado para a Entidade teve a sua posição modificada.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 assert.equal(currentUser.state, bdo.orm.EntityState.UNCHANGED);
 currentUser.set('ismtpusername', 'user@server.com');
 assert.equal(currentUser.state, bdo.orm.EntityState.MODIFIED);
 currentUser.post();
 assert.equal(currentUser.state, bdo.orm.EntityState.UNCHANGED);
Method Detail
assign(values)
Serão atribuídas as propriedades do objeto informado. As propriedades existentes no objeto informado que não existem neste serão ignoradas. Propriedades existentes em obj que o usuário não tem poder de edição irá produzir um erro apenas se o valor existente em obj for diferente do existente na entidade.
Parameters:
{Object} values
Mapa de propriedades a serem atribuídas à entidade.

bindDataSet(dataSet)
Informa um novo DataSet onde os dados da entidade serão persistidos. O DataSet informado deve ter a mesma estrutura do dataSet informado no construtor, ou seja, deve ter os mesmos campos, com os mesmos tipos, na mesma ordem.
var entity = bdo.orm.Entity.fromKey(ngin.keys.Classes.GROUPS);
var ds = classes.getCachedDataSet(ngin.keys.Classes.GROUPS);
entitySet.bindDataSet(ds);
Parameters:
{DataSet} dataSet
DataSet que será utilizado para gravar os dados da entidade.

cancel()
Cancela a edição corrente ou criação da entidade. Após a execução dos métodos #post e #persist não será possível cancelar a edição corrente.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 currentUser.edit();
 try {
   doStrangeThingsWith(currentUser);
 } catch (e) {
   currentUser.cancel();
   throw e;
 }

{bdo.orm.Entity} clone()
Obtém entidade clone a partir da entidade original.
var clone = new bdo.orm.Entity(chaveDaClasse, {key: chaveDoRegistro}).clone();
Returns:
{bdo.orm.Entity} Entidade clone.

delete()
Exclui esta entidade. Após a execução deste método, a entidade estará com estado DELETED ou DETACHED (caso autoPersist esteja ativo) e não poderá ser mais modificada.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var user = bdo.orm.Entity.fromKey(userToRemove);
 currentUser.delete();

edit()
Inicia a edição da entidade. Esse método é executado automaticamente ao tentar alterar o valor da entidade por meio do método #set. Ele deve ser utilizado apenas quando deseja-se rodar os eventos de edição programaticamente.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 assert.equal(currentUser.state, bdo.orm.EntityState.UNCHANGED);
 currentUser.edit();
 assert.equal(currentUser.state, bdo.orm.EntityState.MODIFIED);

<static> {bdo.orm.Entity} bdo.orm.Entity.fromDataSet(classKey, dataSet, opt_options)
Cria uma entidade para manipular o registro corrente do dataSet.
A entidade criada terá a propriedade bdo.orm.Entity#autoPersist com o mesmo valor da propriedade DataSet#automaticApplyUpdates do DataSet informado.
 var requisicao = bdo.orm.Entity.fromDataSet(-2008877000, operacao.requisic);
 requisicao.toJSON();
Parameters:
{number} classKey
Classe de dados da entidade que será manipulada.
{DataSet} dataSet
DataSet que contém a entidade que deverá ser manipulada pela Entidade a ser criada.
{({userKey: number|fields: Array|function(Field):boolean}|Object)=} opt_options
Opções disponíveis:
userKey: usuário que será utilizado para validar as permissões. Mais detalhes em bdo.orm.EntityOptions#userKey; e
fields: campos da definição da classe que devem ser manipulados por essa entidade. Mais detalhes em bdo.orm.EntityOptions#fields.
modelDef: definição do modelo de dados que deve ser utilizada. Por padrão, a definição do modelo de dados utilizada é a da informada. No entanto, em alguns cenários de uso é necessário retirar ou complementar comportamentos do modelo. O uso desta opção não é recomendada, pois ela desabilita a capacidade da entidade ajustar dinamicamente as regras de modelo quando a classe é alterada. Mais detalhes em bdo.orm.EntityOptions#modelDef.
Returns:
{bdo.orm.Entity} Entidade contida na posição corrente do DataSet.

<static> {bdo.orm.Entity} bdo.orm.Entity.fromKey(key, opt_options)
Cria uma entidade para manipular o registro indicado pela chave key. Esta função somente poder ser utilizada com registros que façam parte do cache local do Engine, como os cadastros do sistema.
Por padrão, a entidade criada terá a propriedade bdo.orm.Entity#autoPersist ativa.
 var entity = bdo.orm.Entity.fromKey(ngin.keys.Users.ANONYMOUS);
 entity.toJSON();
Parameters:
{number} key
Chave da entidade a ser criada.
{{userKey: number|fields: Array|function(Field):boolean}|Object=} opt_options
Opções disponíveis:
userKey: usuário que será utilizado para validar as permissões. Mais detalhes em bdo.orm.EntityOptions#userKey; e
fields: campos da definição da classe que devem ser manipulados por essa entidade. Mais detalhes em bdo.orm.EntityOptions#fields. modelDef: definição do modelo de dados que deve ser utilizada. Por padrão, a definição do modelo de dados utilizada é a da classe da chave informada. No entanto, em alguns cenários de uso é necessário retirar ou complementar comportamentos do modelo. O uso desta opção não é recomendada, pois ela desabilita a capacidade da entidade ajustar dinamicamente as regras de modelo quando a classe é alterada. Mais detalhes em bdo.orm.EntityOptions#modelDef.
Throws:
{bdo.orm.EntityError}
Será gerado um erro caso a chave informada não exista ou se o usuário corrente não tiver permissão de visão para a classe desta entidade.
Returns:
{bdo.orm.Entity} Entidade associada à chave informada.

{*} get(name)
Obtém o valor de uma propriedade da entidade. Tentar acessar uma propriedade que não existe ou que o usuário não tenha visão produzirá um erro.
 __includeOnce('ufs:/ngin/keys/groups.js');
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 // Retorna true, se o usuário estiver associado diretamente o agrupo Administrators
 goog.array.contains(currentUser.get('igroups'), ngin.keys.Groups.ADMINISTRATORS);
Parameters:
name
Returns:
{*} Valor da propriedade.

insert_()
Cria uma nova entidade inserindo um registro no DataSet associado a esta entidade.

{number} persist()
Persiste as modificações realizadas neste entidade no banco de dados. Caso a entidade esteja em edição ou inserção, será executado o método #post antes da persistência dos dados.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 try {
   doGoodThingsWith(currentUser);
 } finally {
   currentUser.persist();
 }
Returns:
{number} Versão das alterações no banco de dados.
See:
#autoPersist

post()
Efetiva a edição ou criação da entidade localmente no dataSet. Caso #autoPersist esteja habilitado, as alterações serão persistidas pelo método #persist automaticamente, em conjunto com o post. Caso não esteja, as alterações serão efetivadas no DataSet informado ao construtor, mas não serão persistidas no banco de dados. Neste caso, o método #persist deve ser executado posteriormente para que as alterações sejam gravadas no banco de dados.
Caso as alterações devam ser gravadas no banco de dados, prefira utilizar diretamente o método #persist. O método persist efetiva as alterações pendentes via post, antes de gravar as alterações no banco de dados.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 try {
   doGoodThingsWith(currentUser);
 } finally {
   currentUser.post();
 }
See:
#persist

set(name, value)
Atualiza uma propriedade desta entidade. Tentar alterar uma propriedade que não existe ou que o usuário não tenha poder de alterar produzirá um erro.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 currentUser.set('ismtpusername', 'user@server.com');
 currentUser.post();
Parameters:
{string} name
Nome da propriedade.
{*} value
Valor da propriedade.

{string} toJSON()
Cria uma representação JSON desta entidade. Serão exportadas apenas as propriedades visíveis pelo usuário.
 __includeOnce('ufs:/bdo/orm/entity.js');
 var currentUser = bdo.orm.Entity.fromKey(session.userKey);
 currentUser.toJSON()
Returns:
{string} JSON com os campos visíveis para o usuário.

{Object} toJSONSchema()
Exporta a definição desta classe no formato JSON Schema.
Returns:
{Object}

updateClass_(classKey)
Atualiza a entidade para trabalhar com a classe de dados informada. Todas as definições sobre a classe e os campos passarão a levar em consideração a nova classe de dados.
Parameters:
{number} classKey
Classe de dados

Documentation generated by JsDoc Toolkit 2.4.0 on Tue Aug 23 2016 16:17:59 GMT-0300 (GFT)