All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.ufg.inf.es.saep.sandbox.dominio.Resolucao Maven / Gradle / Ivy

Go to download

Modelo de Domínio do Sistema de Apoio à Elaboração de Pareceres (SAEP), composto por um único 'bounded context'.

There is a newer version: 1.0.6
Show newest version
/*
 * Copyright (c) 2016. Fábrica de Software - Instituto de Informática (UFG)
 * Creative Commons Attribution 4.0 International License.
 */

package br.ufg.inf.es.saep.sandbox.dominio;

import java.util.Date;
import java.util.List;

/**
 * Reúne regras para avaliação de processos
 * de promoção, progressão e estágio probatório.
 *
 * A legislação da Universidade Federal de Goiás (UFG)
 * está organizada por meio de resoluções. Uma instância dessa
 * classe simplesmente registra os itens relevantes ou aqueles
 * considerados em uma avaliação.
 */
public class Resolucao {

    /**
     * Identificador único da resolução. Desconhecido
     * dos usuários (membros da CAD, por exemplo).
     * Contraste com {#link {@link #nome}.
     */
    private String id;

    /**
     * Data de aprovação da resolução.
     */
    private Date dataAprovacao;

    /**
     * Identificador da resolução conforme percebida pelos
     * usuários). Deveria ser uma chave natural, mas
     * não há garantia. Por exemplo, resolução "CONSUNI 34/2012".
     * Ou seja, é empregado aqui como um "nome de fantasia".
     * Contraste com {@link #id}.
     */
    private String nome;

    /**
     * Descrição ou informação adicional sobre
     * a resolução.
     */
    private String descricao;

    /**
     * Conjunto de regras definido pela resolução.
     */
    private List regras;

    /**
     * Recupera o nome único da resolução
     * (surrogate key).
     *
     * @see #getNome()
     *
     * @return O nome único da resolução.
     */
    public String getId() {
        return id;
    }

    /**
     * Recupera o nome da resolução.
     *
     * @return O nome da resolução.
     */
    public String getNome() {
        return nome;
    }

    public String getDescricao() {
        return descricao;
    }

    /**
     * Recupera a data byId aprovação da resolução.
     *
     * @return Data byId aprovação da resolução.
     */
    public Date getDataAprovacao() {
        return dataAprovacao;
    }

    /**
     * Recupera o conjunto de regras definido
     * pela resolução.
     *
     * @return Conjunto de regras definido pela resolução.
     */
    public List getRegras() {
        return regras;
    }

    /**
     * Cria uma resolução a partir dos argumentos
     * identificados.
     * @param id O nome único da resolução.
     * @param nome O nome pelo qual seres humanos identificam a resolução.
     * @param descricao A descrição (caput) da resolução.
     * @param dataAprovacao Data byId aprovação da resolução.
     * @param regras Conjunto byId itens que são avaliados pela
     */
    public Resolucao(String id, String nome, String descricao, Date dataAprovacao, List regras) {
        if (id == null || id.isEmpty()) {
            throw new CampoExigidoNaoFornecido("nome");
        }

        if (descricao == null || descricao.isEmpty()) {
            throw new CampoExigidoNaoFornecido("descricao");
        }

        if (dataAprovacao == null) {
            throw new CampoExigidoNaoFornecido("dataAprovacao");
        }

        if (regras == null || regras.size() < 1) {
            throw new CampoExigidoNaoFornecido("regras");
        }

        this.id = id;
        this.nome = nome;
        this.descricao = descricao;
        this.dataAprovacao = dataAprovacao;
        this.regras = regras;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }

        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        Resolucao resolucao = (Resolucao) o;

        return id.equals(resolucao.id);
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy