Как сохранить наблюдаемый список в файле json - PullRequest
0 голосов
/ 04 мая 2020

Итак, я делаю список дел и сохраняю задачи в списке. Поэтому я просто пытаюсь сохранить списки в файле json. У меня есть метод с именем Write Json, который я пытаюсь вызвать для хранения списков. Списки находятся в ObservableList. Есть ли способ вызвать ObservableList в класс Write Json? Я пытался вызвать метод из класса, который создает наблюдаемые списки, но это не сработало.

Класс, который создает наблюдаемые списки:

public class ToDoList extends Application {
    //Variables for task values
     ListView<Task> tasks;
     ObservableList<Task> allTaskList = FXCollections.<Task>observableArrayList(); //A list for all tasks. Tasks automatically added here

     String listName;
     ListView<TaskList> lists;
     ObservableList<TaskList> lystList = FXCollections.<TaskList>observableArrayList(); //List of user-created lists

Класс, который записывает в JSON

public class WriteJson {     
        public static String dateRead;
        public static void jsonTaskStorage() throws IOException {
            Gson test = new Gson();         
            String task = test.toJson(PLACEHOLDER FOR VALUE);
            FileWriter file = new FileWriter("V:\\Computer Programming\\CMPSC-390-G4\\ToDoList\\Storage.json");
            try{
                file.write(task);
                System.out.println("Successfully copied object to file...");
                System.out.println("\nJSON Object: " + task);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                file.flush();
                file.close();
            }
    }

Класс задачи:

public class Task {

    //All components of a Task
    private String title;
    private String description = "";
    private LocalDate dueDate;
    private Integer importance;
    private TaskList isPartOf;

    //Initially creates a Task. All components set at once.
    public Task(String t, LocalDate due, String desc, Integer imp, TaskList addToList) {
        title = t;
        dueDate = due;
        description = desc;
        importance = imp;
        isPartOf = addToList;
    }

    //Used to edit existing tasks
    public void editTask(String t, LocalDate due, String desc, Integer imp, TaskList addToList) {
        title = t;
        dueDate = due;
        description = desc;
        importance = imp;
        if (addToList!=this.isPartOf) { //If selected user-list is different from list already set for task
            if (this.isPartOf == null) { addToList.getTasks().add(this); } //If it was not in a list before, add to selected list
            else if (addToList == null) { //If task was in a list, but is now being removed, remove from user-list
                this.isPartOf.getTasks().remove(this);
            }
            else { //Else, task is being transfered between lists, remove from previous list, add to new list
                this.isPartOf.getTasks().remove(this);
                addToList.getTasks().add(this);
            }
            this.isPartOf = addToList; //Set task's list value to new list
        }
    }

    //Set statements used to edit tasks after they have been made?
    public void setTitle(String t) { title = t; }
    public void setDueDate(LocalDate due) { dueDate = due; }
    public void setDescription(String desc) { description = desc; }
    public void setImportance(Integer imp) { importance = imp; }
    public void setUserList(TaskList partOf) { isPartOf = partOf; }

    //Get statements used to print data into corrects boxes on the home screen?
    public String getTitle() { return title; }
    public LocalDate getDueDate() { return dueDate; }
    public String getDescription() { return description; }
    public Integer getImportance() { return importance; }
    public TaskList getUserList() { return isPartOf; }

    @Override
    public String toString() {
        String printTask = title + "\nDue: " + dueDate;
        if (!description.equals("")) { printTask+= "\nDescription: " + description; }
        return printTask;
    }
}

Класс списка задач:

public class TaskList {
    private String listName;
    private ObservableList<Task> tasks;

    TaskList(String name) {
        listName = name;
        tasks = FXCollections.<Task>observableArrayList();
    }

    public String getListName() { return listName; }
    public ObservableList<Task> getTasks() { return tasks; }

    public void setListName(String n) { listName = n; }

    @Override
    public String toString() { return listName; }

}
...