Order Now  +1 678 648 4277 

Binary file Input and Output in Java Assignment Help

Write a program to serialize students and courses to disk. The courses have an array list of students, as well as a name. You need to add Junit tests to ensure that files are saved and restored correctly. You need getters and setters so that the Junit tests can ensure that they can check the state. Below is the solution our Java assignment helpers created.

Getters and Setters in Java

/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package persistetnce2; import java.io.Serializable; import java.util.ArrayList; /** * * @author Antoun */ public class Course implements Serializable{ private String name; private ArrayList students; Course(){ students = new ArrayList<>(); } public Course(String name) { students = new ArrayList<>(); this.name = name; } public void setName(String name) { this.name = name; } public void setStudents(ArrayList students) { this.students = students; } public String getName() { return name; } public ArrayList getStudents() { return students; } public void addStudent(Student x){ this.students.add(x); } @Override public boolean equals(Object obj) { Course x = (Course)obj; if(x.students.size() != this.students.size()){ return false; } int i =0 ; for (Student student : students) { if(!student.equals(x.students.get(i++))){ return false; } } return name.equals(x.name); } public double meanGPA(){ if(this.students.isEmpty()){ return 0; } double res = 0.0; for(Student s: this.students){ res+=s.getGPA(); } return res / this.students.size(); } } CoursePersister.java /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package persistetnce2; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Antoun */ public class CoursePersister { private byte[] toStream(Course s) { byte[] stream = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(s); stream = baos.toByteArray(); } catch (IOException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); return null; } return stream; } private byte[] toStream(ArrayList sArr) { byte[] stream = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(sArr); stream = baos.toByteArray(); } catch (IOException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); return null; } return stream; } private Course toCourse(byte[] stream) { Course s = null; try { ByteArrayInputStream bais = new ByteArrayInputStream(stream); ObjectInputStream ois = new ObjectInputStream(bais); s = (Course) ois.readObject(); } catch (IOException ex) { return null; } catch (ClassNotFoundException ex) { return null; } return s; } private ArrayList toCourses(byte[] stream) { ArrayList Courses = null; try { ByteArrayInputStream bais = new ByteArrayInputStream(stream); ObjectInputStream ois = new ObjectInputStream(bais); Courses = (ArrayList) ois.readObject(); } catch (IOException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); return null; } catch (ClassNotFoundException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); return null; } return Courses; } private boolean toFile(String filename,byte[]arr){ FileOutputStream fos; try { fos = new FileOutputStream(filename); fos.write(arr); fos.close(); } catch (FileNotFoundException ex) { Logger.getLogger(CoursePersister.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (IOException ex) { Logger.getLogger(CoursePersister.class.getName()).log(Level.SEVERE, null, ex); return false; } return true; } private byte[] fromFile(String filename){ try { return Files.readAllBytes(Paths.get(filename)); }catch(EOFException ex){ return null; } catch (IOException ex) { return null; } } public boolean convertCourseToFile(String filename, Course c){ byte[]arr = this.toStream(c); if(arr == null) return false; return this.toFile(filename, arr); } public boolean convertCoursesToFile(String filename, ArrayList c){ byte[]arr = this.toStream(c); if(arr == null){ return false; } return this.toFile(filename,arr); } public Course convertCourseFromFile(String filename){ byte[] arr =this.fromFile(filename); if(arr == null){ return null; } return this.toCourse(arr); } public ArrayList convertCoursesFromFile(String filename){ byte[] arr =this.fromFile(filename); if(arr == null){ return null; } return this.toCourses(arr); } } MyTestRunner.java package persistetnce2; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; /** * * @author Antoun */ public class MyTestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(TestJunit.class); boolean okay = true; for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); okay = false; } if(okay) System.out.println("All tests have run successfully"); } } Student.java /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package persistetnce2; import java.io.Serializable; /** * * @author Antoun */ public class Student implements Serializable{ private String fname; private String lname; private double GPA; public Student(){} public Student(String fname,String lname, double GPA) { this.fname = fname; this.lname= lname; this.GPA = GPA; } public String getLName() { return lname; } public double getGPA() { return GPA; } public void setLName(String lname) { this.lname = lname; } public void setGPA(double GPA) { this.GPA = GPA; } @Override public boolean equals(Object obj) { Student s = (Student)obj; return lname.equals(s.lname) && fname.equals(s.fname) && GPA == s.GPA; } } StudentPersister.java /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package persistetnce2; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Antoun */ public class StudentPersister { private byte[] toStream(Student s){ byte[]stream = null; try { ByteArrayOutputStream baos=new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(s); stream = baos.toByteArray(); } catch (IOException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); } return stream; } private byte[] toStream(ArrayList sArr){ byte[]stream = null; try { ByteArrayOutputStream baos=new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(sArr); stream = baos.toByteArray(); } catch (IOException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); } return stream; } private Student toStudent(byte[]stream){ Student s = null; try{ ByteArrayInputStream bais = new ByteArrayInputStream(stream); ObjectInputStream ois = new ObjectInputStream(bais); s = (Student)ois.readObject(); } catch (IOException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); } return s; } private ArrayList toStudents(byte[]stream){ ArrayList stus = null; try{ ByteArrayInputStream bais = new ByteArrayInputStream(stream); ObjectInputStream ois = new ObjectInputStream(bais); stus = (ArrayList)ois.readObject(); } catch (IOException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(StudentPersister.class.getName()).log(Level.SEVERE, null, ex); } return stus; } private boolean toFile(String filename,byte[]arr){ FileOutputStream fos; try { fos = new FileOutputStream(filename); fos.write(arr); fos.close(); } catch (FileNotFoundException ex) { Logger.getLogger(CoursePersister.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (IOException ex) { Logger.getLogger(CoursePersister.class.getName()).log(Level.SEVERE, null, ex); return false; } return true; } private byte[] fromFile(String filename){ try { return Files.readAllBytes(Paths.get(filename)); } catch (IOException ex) { Logger.getLogger(CoursePersister.class.getName()).log(Level.SEVERE, null, ex); return null; } } public boolean convertStudentToFile(String filename, Student c){ byte[]arr = this.toStream(c); if(arr == null) return false; return this.toFile(filename, arr); } public boolean convertStudentsToFile(String filename, ArrayList c){ byte[]arr = this.toStream(c); if(arr == null){ return false; } return this.toFile(filename,arr); } public Student convertStudnetFromFile(String filename){ byte[] arr =this.fromFile(filename); if(arr == null){ return null; } return this.toStudent(arr); } public ArrayList convertStudentsFromFile(String filename){ byte[] arr =this.fromFile(filename); if(arr == null){ return null; } return this.toStudents(arr); } } TestJunit.java package persistetnce2; import java.util.ArrayList; import org.junit.Test; import static org.junit.Assert.assertEquals; /* test cases: 1- write student and read it 2- write students and read it 3- write course and read it 4- write courses and read it 5- write garbage and read it with the course function 6- write garbage and read it with student function */ public class TestJunit { @Test public void testWritingStudentAndReadIt() { Student s1 = new Student("james","fred",4.0); StudentPersister sp = new StudentPersister(); sp.convertStudentToFile("test1", s1); assertEquals(s1, sp.convertStudnetFromFile("test1")); } @Test public void testWritingStudentsAndReadIt(){ Student s1 = new Student("Antoun","wagdy", 0); Student s2 = new Student("Andrew", "wagdy",0); Student s3 = new Student("Wagdy", "james",0); ArrayList arr = new ArrayList<>(); arr.add(s1); arr.add(s2); arr.add(s2); StudentPersister sp = new StudentPersister(); sp.convertStudentsToFile("test2", arr); sp.convertStudentsFromFile("test2"); } @Test public void testWritingCourseAndReadIt() { Course c1 = new Course("course1"); Student s1 = new Student("Antoun","wagdy", 0); Student s2 = new Student("Andrew", "wagdy",0); Student s3 = new Student("Wagdy", "james",0); c1.addStudent(s1); c1.addStudent(s2); c1.addStudent(s3); CoursePersister cp = new CoursePersister(); cp.convertCourseToFile("test3",c1); assertEquals(c1, cp.convertCourseFromFile("test3")); } @Test public void testWritingCoursesAndReadIt() { Course c1 = new Course("course1"); Student s1 = new Student("Antoun","wagdy", 0); Student s2 = new Student("Andrew", "wagdy",0); Student s3 = new Student("Wagdy", "james",0); c1.addStudent(s1); c1.addStudent(s2); c1.addStudent(s3); Course c2 = new Course("course2"); c2.addStudent(s1); c2.addStudent(s2); c2.addStudent(s3); ArrayList courses = new ArrayList<>(); courses.add(c1); courses.add(c2); CoursePersister cp = new CoursePersister(); cp.convertCoursesToFile("test4",courses); assertEquals(courses, cp.convertCoursesFromFile("test4")); } @Test public void writingGarbage() { CoursePersister cp = new CoursePersister(); assertEquals(null, cp.convertCourseFromFile("garbage")); } }