Как получить XML-файл для заполнения TableView - PullRequest
0 голосов
/ 30 октября 2019

У меня работает метод 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.

...