I am creating a Hotel Reservation System in java and I'm having a problem with saving and loading information. I have a class called Global which stores all the arrays:
import java.io.*;
import java.util.*;
public class Global implements Serializable {
public static ArrayList<Guests> guests = new ArrayList<Guests>();
public static ArrayList<Reservations> reservations = new ArrayList<Reservations>();
public static ArrayList<Rooms> rooms = new ArrayList<Rooms>();
}
I also have a class called ToSave:
import java.io.*;
import java.util.*;
public class ToSave implements Serializable {
public ArrayList<Guests> getGuests() {
return Global.guests;
}
public void setGuests(ArrayList<Guests> guests) {
Global.guests = guests;
}
public ArrayList<Reservations> getReservations() {
return Global.reservations;
}
public void setReservations(ArrayList<Reservations> reservations) {
Global.reservations = reservations;
}
public ArrayList<Rooms> getRooms() {
return Global.rooms;
}
public void setRooms(ArrayList<Rooms> rooms) {
Global.rooms = rooms;
}
public void save(String filename) {
try {
FileOutputStream fileOut = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(this);
out.close();
fileOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void load(String filename) {
try {
FileInputStream fileIn = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(fileIn);
ToSave save = (ToSave)in.readObject();
this.setGuests(save.getGuests());
this.setReservations(save.getReservations());
this.setRooms(save.getRooms());
in.close();
fileIn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Then finally I have a class called uiMethods that stores the save and load buttons:
if(clicker == save) {
ToSave save = new ToSave();
save.setGuests(Global.guests);
save.setReservations(Global.reservations);
save.setRooms(Global.rooms);
save.save(filename);
}
if(clicker == load) {
ToSave save = new ToSave();
save.load(filename);
Global.guests = save.getGuests();
Global.reservations = save.getReservations();
Global.rooms = save.getRooms();
}
FYI This is what the Guests class consists of:
public class Guests implements Serializable {
Integer id;
String name, surname, email, mobile, passport;
public Guests() {
}
public Guests(int id, String name, String surname, String mobile, String email, String passport) {
this.id = id;
this.name = name;
this.surname = surname;
this.mobile = mobile;
this.email = email;
this.passport = passport;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getMobileNo() {
return mobile;
}
public void setMobileNo(String mobile) {
this.mobile = mobile;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassportNo() {
return passport;
}
public void setPassportNo(String passport) {
this.passport = passport;
}
public boolean equals(int guestId) {
if (id == guestId) {
return true;
} else {
return false;
}
}
public Guests searchGuestById(int searchId) {
for (int i = 0; i < Global.guests.size(); i++) {
if (Global.guests.get(i).id == searchId) {
return Global.guests.get(i);
}
}
return null;
}
public void editGuest(Guests guestFound, uiMethods ui) {
ui.guestId.setText(Integer.toString(Global.guests.indexOf(guestFound)));
ui.name.setText(guestFound.name);
ui.surname.setText(guestFound.surname);
ui.mobileNo.setText(guestFound.mobile);
ui.email.setText(guestFound.email);
ui.passportNo.setText(guestFound.passport);
}
public void deleteGuest(Guests guestFound) {
Global.guests.remove(Global.guests.indexOf(guestFound));
}
private boolean validation(uiMethods ui) {
if (ui.name.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(ui, "Name cannot be empty", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
if (ui.surname.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(ui, "Surname cannot be empty", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
if (ui.mobileNo.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(ui, "Mobile number cannot be empty", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
if (ui.email.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(ui, "Email cannot be empty", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
if (ui.passportNo.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(ui, "Passport number cannot be empty", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
return true;
}
public boolean detailsForm(uiMethods ui) {
if(this.validation(ui)) {
Guests guest = new Guests();
guest.id = Integer.parseInt(ui.guestId.getText());
guest.name = ui.name.getText();
guest.surname = ui.surname.getText();
guest.mobile = ui.mobileNo.getText();
guest.email = ui.email.getText();
guest.passport = ui.passportNo.getText();
Global.guests.add(guest.id, guest);
return true;
}
return false;
}
}
When I'm loading the program it's giving me the following error: java.io.notserializableexception
Any ideas how to solve this problem? Your help is greatly appreciated.
Some of the classes Guests
, Rooms
, Reservations
is not Serializable
. Or it contains a reference to an object which is not Serializable
. You need to fix that and the error will be gone.
http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html
NotSerializableException means that system is not able to serialize a specific object state.
The java.io.notserializableexception
means that the Object what you want to save is not Serializable.
You want to save an ArrayList of Objects, so some of these Objects are not Serializable
You should check that: Rooms
, Reservations
, Guests
are Serializable
If not, they must implement the Serializable
interface.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.