-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFolder.java
138 lines (119 loc) · 4.7 KB
/
Folder.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
* Folder.java
* Version 1.0
* Nathan and Jason
* 11/29/2019
*/
import java.util.*;
public class Folder<E> extends DataType<E>{
private ArrayList<FileObject<E>> filesArray;
private ArrayList<Folder<E>> foldersArray;
// --------------------------------------------------------------------------------------
//Constructor
public Folder(String folderName){
super(folderName);
foldersArray = new ArrayList<Folder<E>>();
filesArray = new ArrayList<FileObject<E>>();
}
// --------------------------------------------------------------------------------------
//getters
public ArrayList<FileObject<E>> getFilesArray(){
return this.filesArray;
}
public ArrayList<Folder<E>> getFoldersArray() {
return this.foldersArray;
}
public void setFoldersArray(ArrayList<Folder<E>> newFoldersArray){
this.foldersArray = newFoldersArray;
}
// --------------------------------------------------------------------------------------
public String getAddressText(){
String addressText = "";
for(int addressNum = 0; addressNum < getAddress().size(); addressNum++){
addressText = addressText + "[" + getAddress().get(addressNum) + "]";
}
return addressText;
}
public void sortFoldersArray(){
ArrayList<Folder<E>> sortedFolder = new ArrayList<Folder<E>>();
sortedFolder = this.foldersArray;
Collections.sort(sortedFolder);
this.foldersArray = sortedFolder;
}
public void sortFilesArray(){
ArrayList<FileObject<E>> sortedFile = new ArrayList<FileObject<E>>();
sortedFile = this.filesArray;
Collections.sort(sortedFile);
this.filesArray = sortedFile;
}
public boolean removeFile(FileObject<E> fileToRemove){
return filesArray.remove(fileToRemove);
}
public boolean removeFolder(Folder<E> folderToRemove ){
return foldersArray.remove(folderToRemove);
}
public boolean addFile(FileObject<E> fileToAdd){
return filesArray.add(fileToAdd);
}
public boolean addFolder(Folder<E> newFolder){
return foldersArray.add(newFolder);
}
//when a folder is moved, update the address of the moved folder to its new address
public boolean updateAddress(Folder<E> parentFolder){
if(parentFolder.getName().equals("directory")){
return this.getAddress().add(parentFolder);
}else{
while(this.getAddress().isEmpty() != true){
getAddress().removeLast();
}
for(Folder<E> f : parentFolder.getAddress()) {
this.getAddress().add(f);
}
return this.getAddress().add(parentFolder);
}
}
public Folder<E> findFolder(String folder) {
for(int i = 0;i < this.foldersArray.size();i++) {
if(this.foldersArray.get(i).getName().equals(folder)) {
return this.foldersArray.get(i);
}
}
return null;
}
//find file methods by name and object
public FileObject<E> findFile(String fileName) {
for(FileObject<E> f : this.filesArray) {
if(f.getName().equals(fileName)) {
return f;
}
}
return null;
}
public FileObject<E> findFile(FileObject<E> desiredFileObject) {
for(FileObject<E> f : this.filesArray) {
if(f == desiredFileObject) {
return f;
}
}
return null;
}
//combine files and data array to be outputted on the gui
public ArrayList<DataType<E>> combineFileAndFolder(){
ArrayList<DataType<E>> dataTypeArray = new ArrayList<DataType<E>>();
for(int folderNum = 0; folderNum < foldersArray.size(); folderNum++){
dataTypeArray.add(foldersArray.get(folderNum));
}
for(int fileNum = 0; fileNum < filesArray.size(); fileNum++){
dataTypeArray.add(filesArray.get(fileNum));
}
return dataTypeArray;
}
//print out folder name and what it contains
public void print() {
System.out.println();
System.out.println("\nCurrent Folder: " + this.getName());
System.out.println("FileObjects: " + this.filesArray);
System.out.print("Inner folder Names: " + this.foldersArray);
System.out.println();
}
} //end of Folder class