3ª Lista de Exercícios - Computação II (DCC - UFRJ) - PLE
Atenção: Escrever Javadoc para todos os programas.
1 . A partir de dados à respeito da pandemia de COVID-19 no Brasil, que podem ser obtidos no endereço https://data.brasil.io/dataset/covid19/caso.csv.gz, implemente um programa Java que:
- Dado o nome de um estado ou cidade, produza uma página web com um gráfico da evolução do número de casos e do número de mortes naquele estado ou cidade.
- Se nenhum nome for dado, produza os totais de casos e mortes (do Brasil, para cada data).
Além disso, indepentende da cidade ou estado selecionado, o programa deve produzir, considerando o total de casos até a data mais recente no arquivo:
- Um arquivo com o ranking das 10 cidades com maior número de casos / 100K habitantes e os respectivos valores para essa estatística.
- Idem, para o menor número de casos / 100K habitantes.
- Idem, para o maior número de mortos / casos.
- Idem, para o menor número de mortos / casos.
- Idem, para a maior taxa de crescimento no número de casos no último mês (início do mês anterior até o início do mês atual).
A página web deve ser gerada segundo um template disponível no repositório da turma, em aux/template_grafico.html. Um exemplo do formato está no mesmo diretório, em exemplo_grafico.html, cujo resultado pode ser visto aqui
Outros requisitos:
- O programa deve ter pelo menos quatro classes: a principal (que começa o programa), uma para representar e manipular os dados / calcular estatísticas, uma para escrever os arquivos de ranking, e uma para escrever a página web.
- A entrada do programa deve ser dada na forma “<cidade>//<estado>”. Não havendo o separador “//”, a entrada se refere a um estado.
- Os arquivos de ranking devem ser formatados com as colunas: “cidade”, “data_ultima_medicao” e “valor”, separadas por tabulações, onde a coluna “valor” contém o valor da estatística calculada (ex: mortos / 100k habitantes).
- Os arquivos de ranking devem ter os seguintes nomes: maior_casos_100k, menor_casos_100k, maior_mortalidade, menor_mortalidade, maior_taxa_crescimento. Todos com extensão .tsv.
- Desconsidere cidades ou datas com valores ausentes de número de casos ou mortos dos cálculos.
- Se o usuário pedir o gráfico de uma cidade que não existe ou cujos dados estejam ausentes do arquivo de dados, isso deve ser informado na saída padrão e o gráfico não deve ser gerado.
Dicas:
- O template da página web possui campos que devem ser substituidos pelos valores no padrão apropriado, mostrado no arquivo de exemplo. Esses campos são cercados por “:” (ex: :items:).
- Usem a classe GZIPInputStream (java.util.zip) para ler o arquivo de dados de forma eficiente.
- Usem a classe StringBuilder (java.lang) para concatenar strings de maneira eficiente ao montar a entrada de pontos para o gráfico.
- Observem as oportunidades de usar os conceitos que vocês aprenderam recentemente, como generics, coleções e iteradores. Eles podem facilitar bastante o trabalho.