please provide good comments you can find the zip file in this link all info is there This prints a report to a FILE based on raw data in an input * FILE. Certain cleanup/editing/processing needs to be done on the raw * input data before its ready for the report. That is all handled * inside the OOP class (i.e., ENCAPSULATION) by its methods. * INPUT FILE: RawDataSongs.csv * HEADER RECORD contains metaData of field names, though not N. * DATA RECORDS contain these fields: * title,artist,year,rating,genre,size,minutes,seconds,ownIt * dirty data which needs cleaning, editing * potentially bad data where defaults need to be used * OUTPUT FILE: TheReport.txt * NOTE: The STREAM PROCESSING design pattern is used, rather than a STORAGE * BIN approach since this application can be handled with the algorithm: * loop { * read one record * completely deal with that record once and for all * } * Therefore, a SINGLE OBJECT is all thats needed, and its REPEATEDLY * used to deal with a SINGLE RECORD. This RE-USE of a SINGLE OBJECT is * preferable to declaring a new object for every record, but then just * never using the objects again after theyre processed. That would end * up potentially accumulating a lot of memory usage, one objects worth * for every record in a file, which could potentially be quite large. * NOTE: Some other OOP languages provide a DESTRUCTOR (to correspond to the * constructor) to return memory to the available pool. But Java, which * runs on a virtual machine (the JVM) does garbage collection when it * so chooses so the programmer does not have control of when/if this * happens. * NOTE: A STORAGE BIN approach (e.g., an array of objects or parallel arrays) * would be used for applications where: * all data needed to be available throughout the program, e.g., * the app needed to determine the median value * the app need to sort the data * the user needed to repeatedly query the data * HOWEVER, once you study random access files (in CS3310, Data & File * Structures), the storage bin could use a FILE rather than an * ARRAY in MEMORY. * ALSO DEMONSTRATES: a boolean flag to easily turn debug mode on or off.