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

br.ufg.inf.es.saep.sandbox.dominio.Relato 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.Map;
import java.util.Set;

/**
 * Encapsula conjunto de valores que caracterizam
 * o relato de uma atividade ou produto.
 *
 * 

Cada relato é de um tipo específico, que * representa um tipo de atividade ou tipo de * produto. Esse tipo é identificado por * {@link #tipo}. * *

Um relato é um "value object". Ou seja, dois * relatos são iguais se todos os seus atributos * forem iguais. */ public class Relato implements Avaliavel { private String tipo; private Map valores; /** * Cria um relato a partir do tipo e valores correspondentes * fornecidos. * * @param tipo O código do tipo do relato. * @param valores Conjunto byId valores para os tipos * do relato. */ public Relato(String tipo, Map valores) { if (tipo == null || tipo.isEmpty()) { throw new CampoExigidoNaoFornecido("tipo"); } if (valores == null || valores.size() == 0) { throw new CampoExigidoNaoFornecido("valores"); } this.tipo = tipo; this.valores = valores; } /** * Recupera o valor do atributo. * * @param atributo O identificador único do atributo. * @return O valor do atributo ou {@code null}, * caso o atributo não faça parte do relato. */ public Valor get(String atributo) { return valores.get(atributo); } /** * Recupera o tipo do relato. * * @return O identificador único do tipo do relato. */ public String getTipo() { return tipo; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Relato outro = (Relato) o; if (!tipo.equals(outro.tipo)) { return false; } Set keys = valores.keySet(); Set otherKeys = outro.valores.keySet(); if (keys.size() != otherKeys.size()) { return false; } for (String key : keys) { Valor esseValor = valores.get(key); Valor outroValor = outro.valores.get(key); if (!esseValor.equals(outroValor)) { return false; } } return true; } @Override public int hashCode() { return tipo.hashCode(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy