Java-Programming/AufgabenBlatt13/src/aufgabe1/BookDatabase.java

37 lines
1.1 KiB
Java

package aufgabe1;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.Optional;
public record BookDatabase(List<Book> books) {
public static BookDatabase readFromFile(File file) {
if (!file.exists() || !file.canRead() || file.isDirectory())
throw new IllegalArgumentException("Cannot read from file");
try {
var source = Files.readString(Paths.get(file.getPath()), StandardCharsets.UTF_8);
var books = source.lines().skip(1).map(Book::parseFromCommaSeparatedString).toList();
return new BookDatabase(books);
} catch (ArrayIndexOutOfBoundsException | IOException e) {
throw new IllegalStateException("Cannot read from file: " + e);
}
}
public Optional<Book> getBook(String title) {
return books.stream().filter(book -> book.title().equals(title)).findFirst();
}
public List<String> getTitles() {
return books.stream().map(Book::title).toList();
}
}