Create a JAVA program that performs file IO and database interaction via SQL. The program needs to read data from the provided file: \"Project.csv\" and insert the data into a database. Then the program needs to create a report from the database sorted by price descending. The report should be in the format demonstrated below. id (primary key - generated by the database) cpuname performance price Project.csv contents:CPU NamePerformancePrice (USD)Intel Core i7-3770K @ 3.50GHz9,556$560.50Intel Core i7-3770 @ 3.40GHz9,327$335.55Intel Core i7-3820 @ 3.60GHz8,990$404.38AMD FX-8350 Eight-Core8,940$149.99Intel Core i7-2600K @ 3.40GHz8,501$379.97Intel Core i7-2600 @ 3.40GHz8,242$214.99Intel Core i7-4720HQ @ 2.60GHz8,046NAAMD FX-8320 Eight-Core8,008$145.99Intel Core i7-6700HQ @ 2.60GHz7,997$1509Intel Core i7-4710HQ @ 2.50GHz7,826NAIntel Core i5-6600K @ 3.50GHz7,762$239.99Intel Core i7-4700HQ @ 2.40GHz7,754$383.00Intel Core i7-4700MQ @ 2.40GHz7,736$467.40Intel Core i5-4690K @ 3.50GHz7,690$239.99AMD FX-8150 Eight- Core7,619$165.99Intel Core i7-3630QM @ 2.40GHz7,604$304.49Intel Core i5-4670K @ 3.40GHz7,598$249.99Intel Core i5-4690 @ 3.50GHz7,542$224.99Intel Core i7-3610QM @ 2.30GHz7,460$399.99Intel Core i5-4670 @ 3.40GHz7,342$226.99Intel Core i5-4590 @ 3.30GHz7,174$199.99Intel Core i7-4702MQ @ 2.20GHz7,146NAIntel Core i5-3570K @ 3.40GHz7,130$477.23 Solution import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Arrays; public class Main { /** * This the main function that runs at the start * param args - input arguments from the command line */ static public void main(String[] args) { CPUList cpuList = new CPUList(); //The CPUList used to retrieve data from the fiile and store in the db CPUList cpuListRetrieved = new CPUList(); //The CPUList used to retrieve data from the database CpuDb cpuDb = new CpuDb(); //The database object used to move data to and from the CPU Lists try { //Read in the file and store each line into the CPU objects in a list Files.lines(Paths.get(\"Project04Data.csv\")) .map(line -> line.split(\"\ \ \")) // Stream .flatMap(Arrays::stream) // Stream .forEach(line -> cpuList.AddCpu(line)); //Clear the list table for the new listing cpuDb.Clear(); //Insert the Cpu List into the database cpuDb.SetCpuList(cpuList); //Retrieve the Cpu List into a different CPU List object from the database cpuDb.GetCpuList(cpuListRetrieved); //Show the report from the new list that was retrieved from the database cpuListRetrieved.ShowReport(); } catch (IOException e) { e.printStackTrace(); } } } CPUList.java import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; public class CPUList { ArrayList theList = new ArrayList<>(); /** * Default constructor for the CPU */ public void CPUList() { } /** * param strInputLine Input line to be used in creating the CPU object */ public void AddCpu(String strInputLine) { theList.add(new CPU(strInputLine)); } /** * param tempCPU - A CPU object to.