How do I refactor all this code that seems repetitive and too long, is there a way to make it shorter?
if (typeOfData.equals("Book data"))
{
System.out.println(lineOfText);
Scanner scanner2 = new Scanner(lineOfText);
LibraryItem libraryItem = new Book();
libraryItem.readData(scanner2);
storeItem(libraryItem);
scanner2.close(); // ends scanner2
}
else if (typeOfData.equals("Periodical data"))
{
System.out.println(lineOfText);
Scanner scanner2 = new Scanner(lineOfText);
LibraryItem libraryItem = new Periodical(); // LibrayItem => Periodical(subtype)
libraryItem.readData(scanner2);
storeItem(libraryItem);
scanner2.close(); // ends scanner2
}
else if (typeOfData.equals("CD data"))
{
System.out.println(lineOfText);
Scanner scanner2 = new Scanner(lineOfText);
LibraryItem libraryItem = new CD(); // LibrayItem => CD(subtype)
libraryItem.readData(scanner2);
storeItem(libraryItem);
scanner2.close(); // ends scanner2
}
else if (typeOfData.equals("DVD data"))
{
System.out.println(lineOfText);
Scanner scanner2 = new Scanner(lineOfText);
LibraryItem libraryItem = new DVD();
libraryItem.readData(scanner2);
storeItem(libraryItem);
scanner2.close(); // ends scanner2
}
else if (typeOfData.equals("Library User data"))
{
System.out.println(lineOfText);
Scanner scanner2 = new Scanner(lineOfText);
LibraryUser libraryUser = new LibraryUser();
libraryUser.readData(scanner2);
storeUser(libraryUser);
scanner2.close(); // ends scanner2
}
I have tried using the Switch statement but that does not work in this circumstance.
the "typeOfData" variable holds a String that is used to match relevant lines.