software‎ > ‎módulos‎ > ‎engine‎ > ‎artigos‎ > ‎

ngin.sumtable.Controller

Funcionalidades

Com esta API, é possível diganosticar/resolver problemas relacionados à estrutura das tabelas de soma de maneira automática. Aqui também são disponibilizados métodos para manipulação das tabelas de soma.


Diagnóstico

Sao disponibilizados 4 métodos de instância para diagnóstico de problemas conhecidos:
  • ngin.sumtable.Controller.getAggTabStatus(iatKey)
  • ngin.sumtable.Controller.getAllAggTabStatus()
  • ngin.sumtable.Controller.getAuxTableStatus()
  • ngin.sumtable.Controller.getOrphanStatus()
Cada método de diagnóstico retorna uma respectiva instância de um Status. Cada status, por sua vez, é uma coleção de StateDescriptors (ngin.sumtable.StateDescriptor). Cada StateDescriptor possui informações (label, desc, state, pendency) do estado avaliado que ele representa.
Estas informações podem ser apresentadas para o usuário para que ele veja os estados corretos e decida quais estados incorretos (StateDescriptor com pendência, ngin.sumtable.Pendency) serão corrigidos.

ngin.sumtable.Controller.getAggTabStatus(iatKey): ngin.sumtable.StructureStatus

Procura por problemas conhecidos relacionados a apenas uma tabela de soma cuja chave foi informada no parâmetro. Este método retorna uma instância de ngin.sumtable.StructureStatus.

ngin.sumtable.Controller.getAllAggTabStatus(): array of ngin.sumtable.StructureStatus

Coleta uma lista de todas as chaves de arquivos .iat da base e chama o método ngin.sumtable.Controller.getAggTabStatus(iatKey) para cada uma delas. Retorna um array de ngin.sumtable.StructureStatus.

ngin.sumtable.Controller.getAuxTableStatus(): ngin.sumtable.AuxStructureStatus

Procura por problemas conhecidos relacionados às tabelas auxiliares iAgg_task e iAgg_Fld_Views. Este método retorna uma instância de ngin.sumtable.AuxStructureStatus.

ngin.sumtable.Controller.getOrphanStatus(): ngin.sumtable.OrphanStructureStatus

Procura por estrutura ófãs, ou seja, estruturas que existem no banco de dados mas que não estão referenciadas nas tabelas auxiliares. Este método retorna uma instância de ngin.sumtable.OrphanStructureStatus.


Resolução de problemas

Cada Status possui um array de StatesDescriptors (statesWithPendency) com pendências a serem resolvidas, ou seja, um estado que foi avaliado pela respectiva função de diagnóstico e que, durante esta avaliação, obteve um problema relacionado a ser resolvido.

De posse de um array de StatesDescriptors que possuem pendências, basta chamar o método ngin.sumtable.Controller.solveStatesWithPendency(arrOfStatesWithPendency) que todas as pendências contidas em cada estado problemático serão resolvidas.

Exemplo:

__includeOnce('ufs:/ngin/sumtable.js');
 
var controller = new ngin.sumtable.Controller(database);
 
var statesWithPendencies = [];
 
var aggTabStatus = controller.getAllAggTabStatus();
for(var i = 0; i < aggTabStatus.length; i++) {
statesWithPendencies = statesWithPendencies.concat(aggTabStatus[i].statesWithPendency);
}
 
var auxTabStatus = controller.getAuxTableStatus();
statesWithPendencies = statesWithPendencies.concat(auxTabStatus.statesWithPendency);
 
var orphanStatus = controller.getOrphanStatus();
statesWithPendencies = statesWithPendencies.concat(orphanStatus.statesWithPendency);
 
ngin.sumtable.Controller.solveStatesWithPendency(statesWithPendencies);

Manipulação

Seguem alguns métodos estáticos de manipulação das tabelas de soma que são utilizados internamente pela API, mas que podem ser utilizados por terceiros:
  • ngin.sumtable.Controller.createAuxTables(database, createAggFldViews, createAggTask)
  • ngin.sumtable.Controller.removeAggTable(database, iatKey)
  • ngin.sumtable.Controller.remakeAggTable(database, iatKey)