**********************************publicationData.txt********************************************** **********************************queries.txt************************************************ Purpose The main purpose of this homework is to practice an important data structure, i.e., Map. In addition, it continues practicing Object-oriented programming (inheritance, abstract classes and interfaces), input/output, string manipulations, and lists. Instructions Design and implement the following interface and classes: - Document (interface): Any document must have get methods to access its title, authors (including first and last names), and year of production. - Publication (abstract class): A publication is a document that was published. In addition to title, authors and year, a publication also has a publisher. Implement constructor(s), toString and get methods. You must put a contract in this class that all subclasses of Publication must implement a getPageNumbers method (returns the total number of pages of a publication). - Book (class): A book is a publication that has an ISBN number, a price, and total number of pages. Implement the constructor(s), toString, and any other mandatory methods. - JournalPaper (class): A journal paper is a publication that has a journal name, starting and ending page numbers. Implement the constructor(s), toString and any other mandatory methods. - Main (class): Your main program tests everything. You must utilize an important data structure, i.e., a map, which simulates a database to facilitate the lookup process (i.e., given an author, find his/her publications). The keys of the map are the author names, and the values of the map are lists of publications. In addition to main method, implement the following helper methods: - add(List authors, Publication p): add the publication to the database for each author. - initDatabase(File f): read from the publication data file and initialize the database. - processQueries(File f): read from the query file to perform the queries/searchs in the databe. Data Format There are two files, i.e., publicationData.txt and queries. txt1. In both files, each line contains comma separated items.publicationData.txt contains one publication record per line, and has the following format depending the first column type is a book or a journal paper: Note that there can be one or more authors. Do not make any assumption on the maximum number of authors. For example, the followings are two sample publication records: book, Introduction to Java Programming and Data Structures,2020,Pearson,9780136520238,123.45,1218, Y. Daniel Liang journal, Visual analysis of large-scale network anomalies, 2013, IBM, IBM Journal of Research and Development,1,12, Qi Liao, Lei Shi, Chen Wang queries.txt contains one query per line, and has the following format: For example, the followings are two sample queries: Y. Daniel Liang, book Qi Liao, journal If an author and a publication type is found, display .