// @topic S-0314-10-01-60 Java serialization example // @brief class ScenarioGeneric implements Serializable package Week05_persistence; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; public class ScenarioGeneric implements Serializable { //----------------------- // Data attributes: //----------------------- // Note: use transient attributes to exclude from serialization private String scenarioType = "generic"; private int numberOfFloors = 10; private int numberOfElevators = 3; private ArrayList< Visitor> visitors = new ArrayList<>(); public ScenarioGeneric() { int idx = 1; for (; idx < 10; ++idx) { visitors.add(new Visitor(idx)); } } //----------------------- // operations //----------------------- public void saveData(String filePath) { try { FileOutputStream fileOut = new FileOutputStream(filePath); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(this); out.close(); fileOut.close(); System.out.println("Serialized data is saved in " + filePath); } catch (IOException ex) { ex.printStackTrace(); } }//saveScenario public void loadData(String filePath) { ScenarioGeneric scenario; try { FileInputStream fileIn = new FileInputStream(filePath); ObjectInputStream in = new ObjectInputStream(fileIn); scenario = (ScenarioGeneric) in.readObject(); in.close(); fileIn.close(); } catch (IOException exio) { exio.printStackTrace(); return; } catch (ClassNotFoundException exc) { System.out.println("ScenarioGeneric class not found"); exc.printStackTrace(); return; } this.scenarioType = scenario.scenarioType; this.numberOfFloors = scenario.numberOfFloors; this.numberOfElevators = scenario.numberOfElevators; this.visitors = scenario.visitors; }//loadData public String getScenarioType() { return scenarioType; } public void setScenarioType(String scenarioType) { this.scenarioType = scenarioType; } public int getNumberOfFloors() { return numberOfFloors; } public void setNumberOfFloors(int numberOfFloors) { this.numberOfFloors = numberOfFloors; } public int getNumberOfElevators() { return numberOfElevators; } public void setNumberOfElevators(int numberOfElevators) { this.numberOfElevators = numberOfElevators; } public ArrayList<Visitor> getVisitors() { return visitors; } public void setVisitors(ArrayList<Visitor> visitors) { this.visitors = visitors; } }//class ScenarioGeneric