PRAPRO.rst

Pracownia Programowania

Projekt

Projekt z tematów 1-4

Zadanie:

Napisz program, który wczyta dane na temat stacji pomiarowych dostępne na stronie: https://powietrze.gios.gov.pl/pjp/content/api

Program powinien wyświetlać listę stacji pomiarowych dostępnych na

oraz pozwolić użytkownikowi (w menu tekstowym) wybrać stację i na podstawie jej ID wybrać informacje szczeółowe na temat pomiarów kierując zapytanie na

Wyniki pomiarowe mamy mieć możliwość zapisania w pliku PDF, JSON lub XML. Wykorzystaj dowolną bibliotekę Javy do tworzenia plików PDF. Postać pliku jest dowolna, ma on zawierać podane wyżej informacje, może zawierać też dodatkowe elementy.

Napisz testy do wyrzystywanych metod, skorzystaj obowiązkowo z zamockowania danych dla danych pobieranych z endpointów serwisów.

W programie wykorzystaj strumienie oraz co najmniej dwie struktury danych (set, map, list, stack, etc.).

Zapytania HTTP in Java

Możemy wykonywać żądania HTTP z kodu, najprościej użyć biblioteki Apache.httpclient.

<dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.10</version>
</dependency>

Wykonanie zapytania GET:

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet request = new HttpGet("https://api.gios.gov.pl/pjp-api/rest/station/findAll");

// add request headers
request.addHeader("custom-key", "programming");

try (CloseableHttpResponse response = httpclient.execute(request)) {

    // Get HttpResponse Status
    System.out.println(response.getStatusLine().toString());

    HttpEntity entity = response.getEntity();
    Header headers = entity.getContentType();
    System.out.println(headers);

    if (entity != null) {
        // return it as a String
        String result = EntityUtils.toString(entity);
        System.out.println(result);
    }
} catch (ClientProtocolException e) {
    throw new RuntimeException(e);
} catch (IOException e) {
    throw new RuntimeException(e);
}

Ocena

Testy 20%

Strumienie 20%

Serializacja i Deserializacja JSON 20%

Biblioteka PDF 20%

Działanie zgodne ze specyfikacją 20%