package waluty;

public interface Pobieranie {

	/** Pobiera tabelę z bieżącymi kursami walut.
	 * Zwraca null w przypadku błędów.
	 */
	Tabela pobierzBiezaceKursy();

    /** Pobiera tabelę z archiwalnymi kursami walut z określonej daty.
     * Zwraca null w przypadku błędów, np. wtedy, gdy dla danej daty nie istnieje tabela.
     */
	Tabela pobierzArchiwalneKursy(String data);

	// Dzięki temu, że od Javy 8 w interfejsach można definiować metody statyczne,
	// sam interfejs może słuzyć jako "fabryka obiektów".
	static Pobieranie utworz(String rodzaj) {
		return switch(rodzaj) {
			case "xml" -> new PobieranieXML();
			case "json" -> new PobieranieJSON();
			default -> throw new IllegalArgumentException("Nieobsługiwany rodzaj pobierania: " + rodzaj);
		};
	}
	
}