Commit 9e19eba0 authored by Bernardo Quaresma Dias's avatar Bernardo Quaresma Dias
Browse files

Inclusão de biblitoecas com nomes de diagramas principais padronizados

INSTMPA-1337
parent 08ad564f
-- =============================================================================
-- Copyright (C) 2003-2021 Tecgraf/PUC-Rio, PETROBRAS S/A
-- Instituto Tecgraf <mpa@tecgraf.puc-rio.br>
-- Arquivo gerado pelo programa MPA
-- Verso: 6.7
-- Arquivo: lib-log.mpad
-- Data: 10/11/2021 10:18:21
-- =============================================================================
MPA_5_0 = true
EXPANDED = {
true,
}
DisabledDiagrams = {
}
Diagrams = {
{
id = "[[LOG]]",
name = "[[LOG]]",
kind = "Flow",
description = "Cria novas verses para registros periodicamente de acordo\ncom tempo entre verses configurado.\n\nSe nenhum tempo entre verses for configurado, novas verses sero\ncriadas a cada dia.\nSe o valor configurado for igual ou menor que zero, o registro\nser ignorado por esse diagrama.",
isApplication = true,
globals = {
{
name = "dia",
type = "REAL",
list = false,
value = "24*60*60",
comment = nil,
is_arg = false,
is_ret = false,
},
},
errorFunction = nil,
haltDiagram = nil,
Nodes = {
{
type = "Command",
description = "$name\n[$object]",
action = {
_switch = "OBJECTCALL",
beforemsg = nil,
aftermsg = nil,
expressions = {},
variables = {},
classid = "registro",
objname = "reg",
member = "criar_nova_versao",
operation = "call",
},
xmin = 5080,
ymin = 4780,
xmax = 5279.4004883734,
ymax = 4900,
},
{
type = "Command",
description = "$name\n[$object]",
action = {
_switch = "OBJECTCALL",
beforemsg = nil,
aftermsg = nil,
expressions = {},
variables = {},
classid = "registro",
objname = "reg",
member = "registrar_cabecalhos",
operation = "call",
},
xmin = 5080,
ymin = 4379.9491150998,
xmax = 5280,
ymax = 4500,
},
{
type = "Command",
description = "espera\n$parameters",
action = {
_switch = "FUNCTIONCALL",
beforemsg = nil,
aftermsg = nil,
expressions = {
"t_versoes",
},
variables = {},
functionid = "esperar",
},
xmin = 5360,
ymin = 4779.9491150998,
xmax = 5560,
ymax = 4900,
},
{
type = "Fork",
description = nil,
x = 4900,
y = 5040,
r = 40,
},
{
type = "Foreach",
description = nil,
action = {
_switch = "CLASSITERATION",
variable = "reg",
index = nil,
classid = "registro",
},
xmin = 4800,
ymin = 5180,
xmax = 5000,
ymax = 5300,
},
{
type = "Command",
description = "informa\n$result\n[$object]",
action = {
_switch = "OBJECTCALL",
beforemsg = nil,
aftermsg = nil,
expressions = {},
variables = {
"t_versoes",
},
classid = "registro",
objname = "reg",
member = "tempo_versoes",
operation = "get",
},
xmin = 4800,
ymin = 4780,
xmax = 5000,
ymax = 4900,
},
{
type = "Choice",
description = nil,
action = {
_switch = "EXPRESSION",
beforemsg = nil,
aftermsg = nil,
expressions = {
"t_versoes\n== nil",
},
variables = {},
types = {
"BOOLEAN",
},
islist = {
false,
},
},
xmin = 5360,
ymin = 4379.9491150998,
xmax = 5560,
ymax = 4499.9491150998,
},
{
type = "Choice",
description = nil,
action = {
_switch = "EXPRESSION",
beforemsg = nil,
aftermsg = nil,
expressions = {
"t_versoes > 0",
},
variables = {},
types = {
"BOOLEAN",
},
islist = {
false,
},
},
xmin = 5640,
ymin = 4379.9491150998,
xmax = 5840,
ymax = 4499.9491150998,
},
{
type = "Command",
description = "$variable\n= $expression",
action = {
_switch = "EXPRESSION",
beforemsg = nil,
aftermsg = nil,
expressions = {
"1*dia",
},
variables = {
"t_versoes",
},
types = {
"REAL",
},
islist = {
false,
},
},
xmin = 5360,
ymin = 4579.9491150998,
xmax = 5560,
ymax = 4699.9491150998,
},
{
type = "Command",
description = "informa\n$result\n[$object]",
action = {
_switch = "OBJECTCALL",
beforemsg = nil,
aftermsg = nil,
expressions = {},
variables = {
"lim_versoes",
},
classid = "registro",
objname = "reg",
member = "limite",
operation = "get",
},
xmin = 4800,
ymin = 4580,
xmax = 5000,
ymax = 4700,
},
{
type = "Choice",
description = nil,
action = {
_switch = "EXPRESSION",
beforemsg = nil,
aftermsg = nil,
expressions = {
"lim_versoes\n== nil",
},
variables = {},
types = {
"BOOLEAN",
},
islist = {
false,
},
},
xmin = 5640,
ymin = 4579.9491150998,
xmax = 5840,
ymax = 4699.9491150998,
},
{
type = "Choice",
description = nil,
action = {
_switch = "EXPRESSION",
beforemsg = nil,
aftermsg = nil,
expressions = {
"lim_versoes\n>= 1",
},
variables = {},
types = {
"BOOLEAN",
},
islist = {
false,
},
},
xmin = 5640,
ymin = 4779.9491150998,
xmax = 5840,
ymax = 4899.9491150998,
},
},
Links = {
{
type = "Link",
description = nil,
from = 4,
to = 6,
x = {
4900,
4900,
},
y = {
5040,
4840,
},
},
{
type = "Link",
description = nil,
from = 1,
to = 6,
x = {
5179.7002441867,
4900,
},
y = {
4840,
4840,
},
},
{
type = "Link",
description = nil,
from = 3,
to = 1,
x = {
5460,
5179.7002441867,
},
y = {
4839.9491150998,
4840,
},
},
{
type = "Link",
description = "I",
from = 5,
to = 4,
x = {
4900,
4900,
},
y = {
5240,
5040,
},
},
{
type = "Link",
description = nil,
from = nil,
to = 5,
x = {
4900,
4900,
},
y = {
5380,
5240,
},
},
{
type = "Link",
description = nil,
from = 6,
to = 10,
x = {
4900,
4900,
},
y = {
4840,
4640,
},
},
{
type = "Link",
description = "V",
from = 7,
to = 9,
x = {
5460,
5460,
},
y = {
4439.9491150998,
4639.9491150998,
},
},
{
type = "Link",
description = "F",
from = 7,
to = 8,
x = {
5460,
5740,
},
y = {
4439.9491150998,
4439.9491150998,
},
},
{
type = "Link",
description = "V",
from = 8,
to = 11,
x = {
5740,
5740,
},
y = {
4439.9491150998,
4639.9491150998,
},
},
{
type = "Link",
description = nil,
from = 9,
to = 11,
x = {
5460,
5740,
},
y = {
4639.9491150998,
4639.9491150998,
},
},
{
type = "Link",
description = nil,
from = 10,
to = 2,
x = {
4900,
5180,
},
y = {
4640,
4439.9745575499,
},
},
{
type = "Link",
description = "V",
from = 11,
to = 3,
x = {
5740,
5460,
},
y = {
4639.9491150998,
4839.9745575499,
},
},
{
type = "Link",
description = "V",
from = 12,
to = 3,
x = {
5740,
5460,
},
y = {
4839.9491150998,
4839.9745575499,
},
},
{
type = "Link",
description = "F",
from = 11,
to = 12,
x = {
5740,
5740,
},
y = {
4639.9491150998,
4839.9491150998,
},
},
{
type = "Link",
description = nil,
from = 2,
to = 7,
x = {
5180,
5460,
},
y = {
4439.9745575499,
4439.9491150998,
},
},
},
Areas = {
},
Hidden = {
},
},
}
Dependencies = {
"lib-time-1_2.mpam",
}
include('lib-list-1_10.mpam')
--Registro geral
code = (code or '')..[====[
-- Relatório para mensagens do fluxo
_MPALOGID = "MPALOG"
_MPALOGS = {}
]====]
--$COMPAT:_mpa_arquivo_registros
func{ id = "criar_registro", name = "Criar Registro",
description = [[
Define o arquivo de registros principal.
O número de arquivos de registros mantidos é especificado pelo parâmetro "Limite".
]],
parameters = {
{ name = "Identificador", type = "STRING" },
{ name = "Limite", type = "INTEGER" },
{ name = "Sufixo", type = "STRING" },
},
results = {
},
code = [===[ function(id, limit, sufixo)
-- define nome do arquivo
sufixo = sufixo or "_%Y%m%d%H%M%S.LOG"
local filename = os.date(id..sufixo)
-- abre arquivo
local f = io.open(filename, "a+")
if f then
_MPALOGS[#_MPALOGS+1] = filename
f:close()
else
error("Erro ao abrir arquivo de log para escrita: "..filename)
end
-- remove versões anteriores
if limit then
while #_MPALOGS > limit do os.delete(table.remove(_MPALOGS,1)) end
end
registrar("Novo arquivo de registro definido.")
end ]===],
}
--$COMPAT:_mpa_registrar
func{ id = "registrar", name = "Registrar",
description = [[
Adiciona uma mensagem ao arquivo de registros principal.
É necessário realizar previamente a chamada da função 'Criar Registro'
antes para definir o arquivo onde as mensagens serão gravadas.
]],
parameters = {
{ name = "Mensagem", type = "STRING" },
},
results = {
},
code = [===[ function(m)
local f = assert(io.open(_MPALOGS[#_MPALOGS], "a+"))
f:write( os.date("%Y/%m/%d-%H:%M:%S;%%s\n"):format(m))
f:close()
end ]===],
}
class{ id = "registro", name = "Registro", group = "Arquivos E/S",
description = [[
Modela a criação de gerenciamento de arquivos de registro.
Por padrão o nome do arquivo de registro, se nenhuma versão for criada,
fica com o nome do equipmaneto e a extensão "log".
]],
attributes = {
{ id = "cabecalhos", name ="Cabeçalhos", type = "STRING[]", access ="",
description = [[Cabeçalhos que devem ser escritos quando o usuário chamar o método 'Registrar Cabeçalhos'.]],
},
{ id = "caminho", name ="Caminho", type = "STRING", access ="",
description = [[
Caminho onde deve ser gravado o arquivo.
Se não for definido, é usado o diretório corrente de execução do servidor.
]],
},
{ id = "prefixo", name ="Prefixo", type = "STRING", access ="",
description = [[
Prefixo que das versões do arquivo.
Se não for definido, o tag do registro será usado.
]],
},
{ id = "extensao", name ="Extensão", type = "STRING", access ="",
description = [[
A extensão a ser usada nos arquivos de registro.
Se não for definido, é usado 'log'.
O ponto separador entre nome do arquivo e extensão é incluído automaticamente.
]],
},
{ id = "tempo_versoes", name ="Tempo entre Versões", type = "REAL", access ="g",
description = [[
Configuração de intervalo de tempo (em segundos) entre versões geradas pelo
diagrama "LOG [Gerencia Registros]".
Esse diagrama irá ignorar o registros que apresentem essa configuração
com valor menor ou igual a zero.
]],
},
{ id = "limite", name ="Limite de Versões", type = "INTEGER", access ="g",
description = [[
Define o limite de versões anteriores que devem ser mantidas de um registro.
Versões antigas além desse limite serão apagadas ao criar uma nova.
A versões são indicadas por sufixos com a codificação de data e hora da sua criação.
Caso o limite seja menor que 1, o registro possuirá apenas a versão atual e não
apresentará sufixo.
]],
},
{ id = "lista_versoes", name ="Lista Versões", type = "lista_persistente", access ="",
description = [[
Lista que armazena o nome de versões prévias do registro incluindo execuções anteriores.
Essa lista deve ser configurada sem limite pois este será gerenciado pelo limite de versões
configurado para o registro.
]],
},
},
code = [===[
function _CLASS:init()
self._lista = {}
end
function _CLASS:_newname()
local lim = self.limite
local sufixo = ""
if not lim or lim > 0 then
sufixo = os.date("_%Y%m%d_%H%M%S")
end
self._filename = ("%s/%s%s.%s"):format(
self.caminho or ".",
self.prefixo or tostring(self),
sufixo,
self.extensao or "log"
)
self:_updt_list()
end
function _CLASS:_updt_list()
local lista = self.lista_versoes
local f_insert
local f_remove
local f_length
local lim = self.limite
if lim and lim < 1 then
return
end
if lista then
f_insert = lista.inserir
f_remove = lista.remover
f_length = lista.informar_tamanho
else
lista = self._lista
f_insert = table.insert
f_remove = table.remove