У меня работает метод save xStream, но я не могу заставить загрузочный метод xStream работать должным образом. Он прекрасно сохраняется в XML-файл, но как мне заставить XML-файл работать и заполнять его обратно в табличное представление? Я не могу иметь или использовать какие-либо существующие коллекции Java и структуры данных.
Я пытался десериализовать файл xStream, но не думаю, что это правильный вариант.
Вот мой метод инициализации в классе контроллера
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
setShowName.setCellValueFactory(new PropertyValueFactory<>("showTitle"));
setShowMinutes.setCellValueFactory(new PropertyValueFactory<>("minutes"));
setStartDate.setCellValueFactory(new PropertyValueFactory<>("startDate"));
setEndDate.setCellValueFactory(new PropertyValueFactory<>("endDate"));
setStallsTickets.setCellValueFactory(new PropertyValueFactory<>("stallsTicketPrices"));
setCirclesTickets.setCellValueFactory(new PropertyValueFactory<>("circlesTicketPrices"));
setBalconyPrices.setCellValueFactory(new PropertyValueFactory<>("balconyTicketPrices"));
Вотмой метод загрузки
//Loads the shows list from a .XML file
public void load() throws IOException, ClassNotFoundException {
XStream xstream = new XStream(new DomDriver());
ObjectInputStream is = xstream.createObjectInputStream(new FileReader("shows.xml"));
showList = (ShowList<Show>) is.readObject();
is.close();
}
А вот мой класс связанного списка
//https://codereview.stackexchange.com/questions/66685/self-made-linked-list
package Lists;
public class ShowList<Show> {
private Node<Show> lastNode;
private int nodeCount;
public ShowList(){
this.lastNode = null;
this.nodeCount = 0;
}
public int size() {
return nodeCount;
}
public boolean isEmpty() {
return this.nodeCount == 0;
}
public void add(Show data) {
Node<Show> currentNode = new Node<Show>(data);
if (this.lastNode != null) {
currentNode.index = lastNode.index + 1;
currentNode.previousNode = lastNode;
lastNode.nextNode = currentNode;
}else {
currentNode.previousNode = null;
currentNode.index = 0;
}
this.lastNode = currentNode;
this.nodeCount++;
}
public Show get(int index){
//error handling
if(this.isEmpty() || index < 0 || index > this.nodeCount){
return null;
}
//
Node<Show> currentNode;
int count = lastNode.index - index;
currentNode = lastNode;
while (count > 0) {
currentNode = currentNode.previousNode;
count--;
}
return currentNode.data;
}
public Node<Show> getNode(int index){
//error handling
if(this.isEmpty() || index < 0 || index > this.nodeCount){
return null;
}
//
int count = lastNode.index - index;
Node<Show> currentNode = lastNode;
while (count > 0){
currentNode = currentNode.previousNode;
count--;
}
return currentNode;
}
public boolean remove(int index){
Node<Show> currentNode;
if (this.getNode(index) != null){
currentNode = this.getNode(index);
if(currentNode.previousNode != null) {
currentNode.nextNode.previousNode = currentNode.previousNode;
currentNode.previousNode.nextNode = currentNode.nextNode;
} else if (currentNode.nextNode != null){
currentNode.nextNode.previousNode = null;
} else if (this.isEmpty()){
this.lastNode = null;
}
while (currentNode.nextNode != null){
currentNode = currentNode.nextNode;
currentNode.index--;
}
this.nodeCount--;
return true;
}else {
return false;
}
}
public void clear() {
this.lastNode = null;
this.nodeCount = 0;
}
}
class Node<Show> {
public Node<Show> nextNode = null;
public Node<Show> previousNode = null;
public int index;
public Show data;
public Node(Show data){
this.data = data;
}
}
Сначала я получаю недопустимую ссылку от xStream.