У меня есть такая структура класса
public class TreeModel {
private String name;
private List<FileModel> files;
private List<FolderModel> folder;
public TreeModel () {
this.files = new ArrayList<>();
this.folder = new ArrayList<>();
}
//getters, setters
}
public class FolderModel {
private String name;
private List<FileModel> files = null;
private List<FolderModel> folder = null;
public FolderModel () {
this.files = new ArrayList<>();
this.folder = new ArrayList<>();
}
// getters, setters
}
public class FileModel {
private String name;
private String text;
//getters, setters
}
это json, который я анализирую в классе java
{
"files": [],
"folder": [
{
"name": "1 folder",
"files": [],
"folder": [{
"name": "1.1 folder",
"files": [],
"folder": []
},
{
"name": "1.2 folder",
"files": [],
"folder": [{
"name": "1.2.1 folder",
"files": [],
"folder": []
}
]
}
]
},
{
"name": "2 folder",
"files": [],
"folder": []
},
{
"name": "3 folder",
"files": [],
"folder": []
}
]
}
Пока все хорошо, но я столкнулся с проблемойчто я не знаю, как это сделать.
Хорошо, просто чтобы уточнить, у меня есть статический объект дерева, который имеет все структуры папок и файлов, уже находящихся в памяти
Допустим, у меня есть 2различные функции в одном I have to simulate the cd console command
давайте вызовем эту функцию cd
, поэтому я начинаю искать список папок, искать имя, выбранное пользователем, затем делать то же самое для списка папок внутри этого и так далее, покапользователь перестает заходить в папку за папкой (очевидно, мы делаем все проверки, если она существует и все такое)
как только я скажу на 5 уровней глубже, я хочу добавить / удалить папку, поэтому я вызываю другую функцию, которая добавляетпапки mkdir
и вот в чем проблема как мне использовать объект, который я просматривал в функции cd
и вставить новую папку в эту функцию mkdir
, затемОсновной объект статического дерева отражает все изменения , если я создаю новые переменные для доступа к папкам внутри папок, позвольте мне показать вам пример.
очевидно, у меня есть много других функций ивсе они делают разные вещи внутри объекта. Я хочу, чтобы все эти изменения были отражены в главном «родительском» объекте дерева.
Функция CD перемещается по папкам
public static void cd(String FolderName) {
// validations
TreeModel tree = MemoryModel.getTree();
folderPath.forEachOrdered(path -> {
List<FolderModel> folder = newFolder.stream().filter(f -> f.getName().equals(path)).collect(Collectors.toList());
//validations
**HOW CAN I USE THAT folder VARIABLE INSIDE mkdir CREATE MY FOLDER AND THEN HAVE MY tree variable REFLECTS THE CHANGES I DID INSIDE OF MANY FOLDER STRUCTURES?**
});
//setting new path
}
Функция mkdir создает папку
public static void mkdir(String FolderName) {
//validations
TreeModel tree = MemoryModel.getTree();
//more validations
FolderModel newFolder = new FolderModel();
newFolder.setName(FolderName);
tree.AddOneFolder(newFolder);
MemoryModel.setTree(tree);
MemoryModel.setMemory(-Constants.FOLDER_MEMORY);
}