Class Param<T>

java.lang.Object
systextil.param.Param<T>
Type Parameters:
T - O tipo do parâmetro
Direct Known Subclasses:
ParamDate, ParamDouble, ParamInt, ParamString

public abstract class Param<T> extends Object
Representa a definição de um parâmetro de empresa.

No banco de dados, a definição do parâmetro fica em uma tabela, e os valores desse parâmetro para cada empresa ficam em outra tabela. Esta classe centraliza o acesso aos dados nessas tabelas.

Esta classe não grava nem altera as definições de parâmetros. Essas definições são entendidas como fazendo parte da instalação da aplicação, e normalmente são distribuídas mediante scripts SQL com comandos INSERT.

Normalmente, os valores desses parâmetros são manipulados através de subclasses desta classe. Essas subclasses fornecem métodos estáticos preparados para serem usados pela aplicação. Instâncias dessas subclasses são preparadas para serem usadas em painéis de configuração de parâmetros de empresas.

Instâncias desta classe não memorizam estado. São imutáveis.

Observações sobre valores default

Talvez não esteja clara qual é a função dos valores default para estes parâmetros.

Para esta classe, a função principal do valor default é entendida como sendo o valor a ser sugerido para novos registros em painéis de configuração de parâmetros de empresa. Assim, informar ao painel qual é o valor default que foi cadastrado (através de defaultValue) é o que basta.

No entanto, em várias situações o valor default é entendido como o valor a ser usado pela aplicação se o parâmetro não tiver valor (para determinada empresa). Torna-se necessário esclarecer o que significa "não ter valor":

  • Se não existir registro para o valor desse parâmetro para essa empresa, então claramente não existe valor. O valor default é retornado.(*)
  • Se existir registro para o valor desse parâmetro para essa empresa, mas seu valor estiver nulo: tem valor, e ele é nulo. O valor default não é retornado.

Se o valor for nulo, as implementações numéricas retornarão zero.

(*) É discutível a possibilidade da aplicação não considerar o retorno do valor default, e simplesmente se recusar a retornar um valor se não tiver sido cadastrado explicitamente para essa empresa, considerando isso uma falha de parametrização.

Author:
sergio
  • Field Details

    • name

      public final String name
      O nome do parâmetro.
    • defaultValue

      public final T defaultValue
      O valor default cadastrado para este parâmetro.
    • label

      public final String label
      A tag prevista para o label deste parâmetro.
    • fyiMessage

      public final String fyiMessage
      A tag prevista para o FYI message deste parâmetro.
  • Method Details

    • retrieveValue

      public T retrieveValue(AppConnection conn, int codEmpresa)
      Obtém do banco de dados o valor deste parâmetro.
      Parameters:
      conn - a conexão ao banco de dados
      codEmpresa - o código da empresa
      Returns:
      o valor obtido, ou, se não existir, o defaultValue
    • storeValue

      public void storeValue(AppConnection conn, int codEmpresa, T value)
      Grava no banco de dados o valor para este parâmetro.
      Parameters:
      conn - a conexão ao banco de dados
      codEmpresa - o código da empresa
      value - o valor
    • getDefaultStr

      public static Optional<String> getDefaultStr(AppConnection conn, String param)
      Obtém o valor do campo default_str do parâmetro.
      Parameters:
      conn - a conexão ao banco de dados
      param - o nome do parâmetro
      Returns:
      o valor encontrado; se o registro existir, nunca retorna nulo.