root / src / gr / grnet / pithos / web / client / rest / resource / FolderResource.java @ 63366925
History | View | Annotate | Download (16.1 kB)
1 | a57faaf0 | Christos Stathis | /*
|
---|---|---|---|
2 | 63366925 | Christos Stathis | * Copyright 2011 GRNET S.A. All rights reserved.
|
3 | 63366925 | Christos Stathis | *
|
4 | 63366925 | Christos Stathis | * Redistribution and use in source and binary forms, with or
|
5 | 63366925 | Christos Stathis | * without modification, are permitted provided that the following
|
6 | 63366925 | Christos Stathis | * conditions are met:
|
7 | 63366925 | Christos Stathis | *
|
8 | 63366925 | Christos Stathis | * 1. Redistributions of source code must retain the above
|
9 | 63366925 | Christos Stathis | * copyright notice, this list of conditions and the following
|
10 | 63366925 | Christos Stathis | * disclaimer.
|
11 | 63366925 | Christos Stathis | *
|
12 | 63366925 | Christos Stathis | * 2. Redistributions in binary form must reproduce the above
|
13 | 63366925 | Christos Stathis | * copyright notice, this list of conditions and the following
|
14 | 63366925 | Christos Stathis | * disclaimer in the documentation and/or other materials
|
15 | 63366925 | Christos Stathis | * provided with the distribution.
|
16 | 63366925 | Christos Stathis | *
|
17 | 63366925 | Christos Stathis | * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
18 | 63366925 | Christos Stathis | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 | 63366925 | Christos Stathis | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
20 | 63366925 | Christos Stathis | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
21 | 63366925 | Christos Stathis | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
22 | 63366925 | Christos Stathis | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
23 | 63366925 | Christos Stathis | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
24 | 63366925 | Christos Stathis | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
25 | 63366925 | Christos Stathis | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
26 | 63366925 | Christos Stathis | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
27 | 63366925 | Christos Stathis | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
28 | 63366925 | Christos Stathis | * POSSIBILITY OF SUCH DAMAGE.
|
29 | 63366925 | Christos Stathis | *
|
30 | 63366925 | Christos Stathis | * The views and conclusions contained in the software and
|
31 | 63366925 | Christos Stathis | * documentation are those of the authors and should not be
|
32 | 63366925 | Christos Stathis | * interpreted as representing official policies, either expressed
|
33 | 63366925 | Christos Stathis | * or implied, of GRNET S.A.
|
34 | a57faaf0 | Christos Stathis | */
|
35 | a57faaf0 | Christos Stathis | |
36 | a57faaf0 | Christos Stathis | package gr.grnet.pithos.web.client.rest.resource; |
37 | a57faaf0 | Christos Stathis | |
38 | a57faaf0 | Christos Stathis | import gr.grnet.pithos.web.client.DisplayHelper; |
39 | a57faaf0 | Christos Stathis | import gr.grnet.pithos.web.client.GSS; |
40 | a57faaf0 | Christos Stathis | import gr.grnet.pithos.web.client.rest.MultipleGetCommand; |
41 | a57faaf0 | Christos Stathis | import gr.grnet.pithos.web.client.rest.MultipleGetCommand.Cached; |
42 | a57faaf0 | Christos Stathis | |
43 | a57faaf0 | Christos Stathis | import java.util.ArrayList; |
44 | a57faaf0 | Christos Stathis | import java.util.Date; |
45 | a57faaf0 | Christos Stathis | import java.util.HashSet; |
46 | a57faaf0 | Christos Stathis | import java.util.LinkedList; |
47 | a57faaf0 | Christos Stathis | import java.util.List; |
48 | a57faaf0 | Christos Stathis | import java.util.Set; |
49 | a57faaf0 | Christos Stathis | |
50 | a57faaf0 | Christos Stathis | import com.google.gwt.core.client.GWT; |
51 | a57faaf0 | Christos Stathis | import com.google.gwt.http.client.URL; |
52 | a57faaf0 | Christos Stathis | import com.google.gwt.json.client.JSONArray; |
53 | a57faaf0 | Christos Stathis | import com.google.gwt.json.client.JSONObject; |
54 | a57faaf0 | Christos Stathis | import com.google.gwt.json.client.JSONParser; |
55 | a57faaf0 | Christos Stathis | import com.google.gwt.user.client.ui.TreeItem; |
56 | a57faaf0 | Christos Stathis | |
57 | a57faaf0 | Christos Stathis | public class FolderResource extends RestResource { |
58 | a57faaf0 | Christos Stathis | |
59 | a57faaf0 | Christos Stathis | public FolderResource(String aUri) { |
60 | a57faaf0 | Christos Stathis | super(aUri);
|
61 | a57faaf0 | Christos Stathis | } |
62 | a57faaf0 | Christos Stathis | |
63 | a57faaf0 | Christos Stathis | String name;
|
64 | a57faaf0 | Christos Stathis | |
65 | a57faaf0 | Christos Stathis | String owner;
|
66 | a57faaf0 | Christos Stathis | |
67 | a57faaf0 | Christos Stathis | String createdBy;
|
68 | a57faaf0 | Christos Stathis | |
69 | a57faaf0 | Christos Stathis | String modifiedBy;
|
70 | a57faaf0 | Christos Stathis | |
71 | a57faaf0 | Christos Stathis | Date creationDate;
|
72 | a57faaf0 | Christos Stathis | |
73 | a57faaf0 | Christos Stathis | Date modificationDate;
|
74 | a57faaf0 | Christos Stathis | |
75 | a57faaf0 | Christos Stathis | List<String> filePaths = new LinkedList<String>(); |
76 | a57faaf0 | Christos Stathis | |
77 | a57faaf0 | Christos Stathis | List<String> subfolderPaths = new LinkedList<String>(); |
78 | a57faaf0 | Christos Stathis | |
79 | a57faaf0 | Christos Stathis | Set<PermissionHolder> permissions = new HashSet<PermissionHolder>(); |
80 | a57faaf0 | Christos Stathis | |
81 | a57faaf0 | Christos Stathis | List<FolderResource> folders = new ArrayList<FolderResource>(); |
82 | a57faaf0 | Christos Stathis | |
83 | a57faaf0 | Christos Stathis | List<FileResource> files = new ArrayList<FileResource>(); |
84 | a57faaf0 | Christos Stathis | |
85 | a57faaf0 | Christos Stathis | String parentURI;
|
86 | a57faaf0 | Christos Stathis | |
87 | a57faaf0 | Christos Stathis | boolean deleted = false; |
88 | a57faaf0 | Christos Stathis | |
89 | a57faaf0 | Christos Stathis | boolean needsExpanding = false; |
90 | a57faaf0 | Christos Stathis | |
91 | a57faaf0 | Christos Stathis | String parentName;
|
92 | a57faaf0 | Christos Stathis | |
93 | a57faaf0 | Christos Stathis | private boolean filesExpanded=false; |
94 | a57faaf0 | Christos Stathis | |
95 | a57faaf0 | Christos Stathis | boolean readForAll;
|
96 | a57faaf0 | Christos Stathis | |
97 | a57faaf0 | Christos Stathis | Boolean shared;
|
98 | a57faaf0 | Christos Stathis | |
99 | a57faaf0 | Christos Stathis | |
100 | a57faaf0 | Christos Stathis | |
101 | a57faaf0 | Christos Stathis | |
102 | a57faaf0 | Christos Stathis | |
103 | a57faaf0 | Christos Stathis | /**
|
104 | a57faaf0 | Christos Stathis | * Modify the shared.
|
105 | a57faaf0 | Christos Stathis | *
|
106 | a57faaf0 | Christos Stathis | * @param shared the shared to set
|
107 | a57faaf0 | Christos Stathis | */
|
108 | a57faaf0 | Christos Stathis | public void setShared(Boolean shared) { |
109 | a57faaf0 | Christos Stathis | this.shared = shared;
|
110 | a57faaf0 | Christos Stathis | } |
111 | a57faaf0 | Christos Stathis | |
112 | a57faaf0 | Christos Stathis | /**
|
113 | a57faaf0 | Christos Stathis | * Modify the parentName.
|
114 | a57faaf0 | Christos Stathis | *
|
115 | a57faaf0 | Christos Stathis | * @param aParentName the parentName to set
|
116 | a57faaf0 | Christos Stathis | */
|
117 | a57faaf0 | Christos Stathis | public void setParentName(String aParentName) { |
118 | a57faaf0 | Christos Stathis | parentName = aParentName; |
119 | a57faaf0 | Christos Stathis | } |
120 | a57faaf0 | Christos Stathis | |
121 | a57faaf0 | Christos Stathis | /**
|
122 | a57faaf0 | Christos Stathis | * Retrieve the name.
|
123 | a57faaf0 | Christos Stathis | *
|
124 | a57faaf0 | Christos Stathis | * @return the name
|
125 | a57faaf0 | Christos Stathis | */
|
126 | a57faaf0 | Christos Stathis | @Override
|
127 | a57faaf0 | Christos Stathis | public String getName() { |
128 | a57faaf0 | Christos Stathis | return name;
|
129 | a57faaf0 | Christos Stathis | } |
130 | a57faaf0 | Christos Stathis | |
131 | a57faaf0 | Christos Stathis | /**
|
132 | a57faaf0 | Christos Stathis | * Modify the name.
|
133 | a57faaf0 | Christos Stathis | *
|
134 | a57faaf0 | Christos Stathis | * @param aName the name to set
|
135 | a57faaf0 | Christos Stathis | */
|
136 | a57faaf0 | Christos Stathis | public void setName(String aName) { |
137 | a57faaf0 | Christos Stathis | name = aName; |
138 | a57faaf0 | Christos Stathis | } |
139 | a57faaf0 | Christos Stathis | |
140 | a57faaf0 | Christos Stathis | /**
|
141 | a57faaf0 | Christos Stathis | * Retrieve the owner.
|
142 | a57faaf0 | Christos Stathis | *
|
143 | a57faaf0 | Christos Stathis | * @return the owner
|
144 | a57faaf0 | Christos Stathis | */
|
145 | a57faaf0 | Christos Stathis | public String getOwner() { |
146 | a57faaf0 | Christos Stathis | return owner;
|
147 | a57faaf0 | Christos Stathis | } |
148 | a57faaf0 | Christos Stathis | |
149 | a57faaf0 | Christos Stathis | /**
|
150 | a57faaf0 | Christos Stathis | * Modify the owner.
|
151 | a57faaf0 | Christos Stathis | *
|
152 | a57faaf0 | Christos Stathis | * @param anOwner the owner to set
|
153 | a57faaf0 | Christos Stathis | */
|
154 | a57faaf0 | Christos Stathis | public void setOwner(String anOwner) { |
155 | a57faaf0 | Christos Stathis | owner = anOwner; |
156 | a57faaf0 | Christos Stathis | } |
157 | a57faaf0 | Christos Stathis | |
158 | a57faaf0 | Christos Stathis | /**
|
159 | a57faaf0 | Christos Stathis | * Retrieve the createdBy.
|
160 | a57faaf0 | Christos Stathis | *
|
161 | a57faaf0 | Christos Stathis | * @return the createdBy
|
162 | a57faaf0 | Christos Stathis | */
|
163 | a57faaf0 | Christos Stathis | public String getCreatedBy() { |
164 | a57faaf0 | Christos Stathis | return createdBy;
|
165 | a57faaf0 | Christos Stathis | } |
166 | a57faaf0 | Christos Stathis | |
167 | a57faaf0 | Christos Stathis | /**
|
168 | a57faaf0 | Christos Stathis | * Modify the createdBy.
|
169 | a57faaf0 | Christos Stathis | *
|
170 | a57faaf0 | Christos Stathis | * @param aCreatedBy the createdBy to set
|
171 | a57faaf0 | Christos Stathis | */
|
172 | a57faaf0 | Christos Stathis | public void setCreatedBy(String aCreatedBy) { |
173 | a57faaf0 | Christos Stathis | createdBy = aCreatedBy; |
174 | a57faaf0 | Christos Stathis | } |
175 | a57faaf0 | Christos Stathis | |
176 | a57faaf0 | Christos Stathis | /**
|
177 | a57faaf0 | Christos Stathis | * Retrieve the modifiedBy.
|
178 | a57faaf0 | Christos Stathis | *
|
179 | a57faaf0 | Christos Stathis | * @return the modifiedBy
|
180 | a57faaf0 | Christos Stathis | */
|
181 | a57faaf0 | Christos Stathis | public String getModifiedBy() { |
182 | a57faaf0 | Christos Stathis | return modifiedBy;
|
183 | a57faaf0 | Christos Stathis | } |
184 | a57faaf0 | Christos Stathis | |
185 | a57faaf0 | Christos Stathis | /**
|
186 | a57faaf0 | Christos Stathis | * Modify the modifiedBy.
|
187 | a57faaf0 | Christos Stathis | *
|
188 | a57faaf0 | Christos Stathis | * @param aModifiedBy the modifiedBy to set
|
189 | a57faaf0 | Christos Stathis | */
|
190 | a57faaf0 | Christos Stathis | public void setModifiedBy(String aModifiedBy) { |
191 | a57faaf0 | Christos Stathis | modifiedBy = aModifiedBy; |
192 | a57faaf0 | Christos Stathis | } |
193 | a57faaf0 | Christos Stathis | |
194 | a57faaf0 | Christos Stathis | /**
|
195 | a57faaf0 | Christos Stathis | * Retrieve the creationDate.
|
196 | a57faaf0 | Christos Stathis | *
|
197 | a57faaf0 | Christos Stathis | * @return the creationDate
|
198 | a57faaf0 | Christos Stathis | */
|
199 | a57faaf0 | Christos Stathis | public Date getCreationDate() { |
200 | a57faaf0 | Christos Stathis | return creationDate;
|
201 | a57faaf0 | Christos Stathis | } |
202 | a57faaf0 | Christos Stathis | |
203 | a57faaf0 | Christos Stathis | /**
|
204 | a57faaf0 | Christos Stathis | * Modify the creationDate.
|
205 | a57faaf0 | Christos Stathis | *
|
206 | a57faaf0 | Christos Stathis | * @param aCreationDate the creationDate to set
|
207 | a57faaf0 | Christos Stathis | */
|
208 | a57faaf0 | Christos Stathis | public void setCreationDate(Date aCreationDate) { |
209 | a57faaf0 | Christos Stathis | creationDate = aCreationDate; |
210 | a57faaf0 | Christos Stathis | } |
211 | a57faaf0 | Christos Stathis | |
212 | a57faaf0 | Christos Stathis | /**
|
213 | a57faaf0 | Christos Stathis | * Retrieve the modificationDate.
|
214 | a57faaf0 | Christos Stathis | *
|
215 | a57faaf0 | Christos Stathis | * @return the modificationDate
|
216 | a57faaf0 | Christos Stathis | */
|
217 | a57faaf0 | Christos Stathis | public Date getModificationDate() { |
218 | a57faaf0 | Christos Stathis | return modificationDate;
|
219 | a57faaf0 | Christos Stathis | } |
220 | a57faaf0 | Christos Stathis | |
221 | a57faaf0 | Christos Stathis | /**
|
222 | a57faaf0 | Christos Stathis | * Modify the modificationDate.
|
223 | a57faaf0 | Christos Stathis | *
|
224 | a57faaf0 | Christos Stathis | * @param aModificationDate the modificationDate to set
|
225 | a57faaf0 | Christos Stathis | */
|
226 | a57faaf0 | Christos Stathis | public void setModificationDate(Date aModificationDate) { |
227 | a57faaf0 | Christos Stathis | modificationDate = aModificationDate; |
228 | a57faaf0 | Christos Stathis | } |
229 | a57faaf0 | Christos Stathis | |
230 | a57faaf0 | Christos Stathis | /**
|
231 | a57faaf0 | Christos Stathis | * Retrieve the filePaths.
|
232 | a57faaf0 | Christos Stathis | *
|
233 | a57faaf0 | Christos Stathis | * @return the filePaths
|
234 | a57faaf0 | Christos Stathis | */
|
235 | a57faaf0 | Christos Stathis | public List<String> getFilePaths() { |
236 | a57faaf0 | Christos Stathis | return filePaths;
|
237 | a57faaf0 | Christos Stathis | } |
238 | a57faaf0 | Christos Stathis | |
239 | a57faaf0 | Christos Stathis | /**
|
240 | a57faaf0 | Christos Stathis | * Modify the filePaths.
|
241 | a57faaf0 | Christos Stathis | *
|
242 | a57faaf0 | Christos Stathis | * @param newFilePaths the filePaths to set
|
243 | a57faaf0 | Christos Stathis | */
|
244 | a57faaf0 | Christos Stathis | public void setFilePaths(List<String> newFilePaths) { |
245 | a57faaf0 | Christos Stathis | filePaths = newFilePaths; |
246 | a57faaf0 | Christos Stathis | } |
247 | a57faaf0 | Christos Stathis | |
248 | a57faaf0 | Christos Stathis | /**
|
249 | a57faaf0 | Christos Stathis | * Retrieve the subfolderPaths.
|
250 | a57faaf0 | Christos Stathis | *
|
251 | a57faaf0 | Christos Stathis | * @return the subfolderPaths
|
252 | a57faaf0 | Christos Stathis | */
|
253 | a57faaf0 | Christos Stathis | public List<String> getSubfolderPaths() { |
254 | a57faaf0 | Christos Stathis | return subfolderPaths;
|
255 | a57faaf0 | Christos Stathis | } |
256 | a57faaf0 | Christos Stathis | |
257 | a57faaf0 | Christos Stathis | /**
|
258 | a57faaf0 | Christos Stathis | * Modify the subfolderPaths.
|
259 | a57faaf0 | Christos Stathis | *
|
260 | a57faaf0 | Christos Stathis | * @param newSubfolderPaths the subfolderPaths to set
|
261 | a57faaf0 | Christos Stathis | */
|
262 | a57faaf0 | Christos Stathis | public void setSubfolderPaths(List<String> newSubfolderPaths) { |
263 | a57faaf0 | Christos Stathis | subfolderPaths = newSubfolderPaths; |
264 | a57faaf0 | Christos Stathis | } |
265 | a57faaf0 | Christos Stathis | |
266 | a57faaf0 | Christos Stathis | /**
|
267 | a57faaf0 | Christos Stathis | * Retrieve the permissions.
|
268 | a57faaf0 | Christos Stathis | *
|
269 | a57faaf0 | Christos Stathis | * @return the permissions
|
270 | a57faaf0 | Christos Stathis | */
|
271 | a57faaf0 | Christos Stathis | public Set<PermissionHolder> getPermissions() { |
272 | a57faaf0 | Christos Stathis | return permissions;
|
273 | a57faaf0 | Christos Stathis | } |
274 | a57faaf0 | Christos Stathis | |
275 | a57faaf0 | Christos Stathis | /**
|
276 | a57faaf0 | Christos Stathis | * Modify the permissions.
|
277 | a57faaf0 | Christos Stathis | *
|
278 | a57faaf0 | Christos Stathis | * @param newPermissions the permissions to set
|
279 | a57faaf0 | Christos Stathis | */
|
280 | a57faaf0 | Christos Stathis | public void setPermissions(Set<PermissionHolder> newPermissions) { |
281 | a57faaf0 | Christos Stathis | permissions = newPermissions; |
282 | a57faaf0 | Christos Stathis | } |
283 | a57faaf0 | Christos Stathis | |
284 | a57faaf0 | Christos Stathis | /**
|
285 | a57faaf0 | Christos Stathis | * Retrieve the deleted.
|
286 | a57faaf0 | Christos Stathis | *
|
287 | a57faaf0 | Christos Stathis | * @return the deleted
|
288 | a57faaf0 | Christos Stathis | */
|
289 | a57faaf0 | Christos Stathis | public boolean isDeleted() { |
290 | a57faaf0 | Christos Stathis | return deleted;
|
291 | a57faaf0 | Christos Stathis | } |
292 | a57faaf0 | Christos Stathis | |
293 | a57faaf0 | Christos Stathis | /**
|
294 | a57faaf0 | Christos Stathis | * Modify the deleted.
|
295 | a57faaf0 | Christos Stathis | *
|
296 | a57faaf0 | Christos Stathis | * @param newDeleted the deleted to set
|
297 | a57faaf0 | Christos Stathis | */
|
298 | a57faaf0 | Christos Stathis | public void setDeleted(boolean newDeleted) { |
299 | a57faaf0 | Christos Stathis | deleted = newDeleted; |
300 | a57faaf0 | Christos Stathis | } |
301 | a57faaf0 | Christos Stathis | |
302 | a57faaf0 | Christos Stathis | public void removeSubfolderPath(String spath) { |
303 | a57faaf0 | Christos Stathis | if (subfolderPaths.remove(spath))
|
304 | a57faaf0 | Christos Stathis | return;
|
305 | a57faaf0 | Christos Stathis | else if (subfolderPaths.remove(spath + "/")) |
306 | a57faaf0 | Christos Stathis | return;
|
307 | a57faaf0 | Christos Stathis | else
|
308 | a57faaf0 | Christos Stathis | subfolderPaths.remove(spath.substring(0, spath.length() - 1)); |
309 | a57faaf0 | Christos Stathis | } |
310 | a57faaf0 | Christos Stathis | |
311 | a57faaf0 | Christos Stathis | /**
|
312 | a57faaf0 | Christos Stathis | * Retrieve the folders.
|
313 | a57faaf0 | Christos Stathis | *
|
314 | a57faaf0 | Christos Stathis | * @return the folders
|
315 | a57faaf0 | Christos Stathis | */
|
316 | a57faaf0 | Christos Stathis | public List<FolderResource> getFolders() { |
317 | a57faaf0 | Christos Stathis | return folders;
|
318 | a57faaf0 | Christos Stathis | } |
319 | a57faaf0 | Christos Stathis | |
320 | a57faaf0 | Christos Stathis | /**
|
321 | a57faaf0 | Christos Stathis | * Modify the folders.
|
322 | a57faaf0 | Christos Stathis | *
|
323 | a57faaf0 | Christos Stathis | * @param newFolders the folders to set
|
324 | a57faaf0 | Christos Stathis | */
|
325 | a57faaf0 | Christos Stathis | public void setFolders(List<FolderResource> newFolders) { |
326 | a57faaf0 | Christos Stathis | folders = newFolders; |
327 | a57faaf0 | Christos Stathis | } |
328 | a57faaf0 | Christos Stathis | |
329 | a57faaf0 | Christos Stathis | /**
|
330 | a57faaf0 | Christos Stathis | * Retrieve the files.
|
331 | a57faaf0 | Christos Stathis | *
|
332 | a57faaf0 | Christos Stathis | * @return the files
|
333 | a57faaf0 | Christos Stathis | */
|
334 | a57faaf0 | Christos Stathis | public List<FileResource> getFiles() { |
335 | a57faaf0 | Christos Stathis | return files;
|
336 | a57faaf0 | Christos Stathis | } |
337 | a57faaf0 | Christos Stathis | |
338 | a57faaf0 | Christos Stathis | /**
|
339 | a57faaf0 | Christos Stathis | * Modify the files.
|
340 | a57faaf0 | Christos Stathis | *
|
341 | a57faaf0 | Christos Stathis | * @param newFiles the files to set
|
342 | a57faaf0 | Christos Stathis | */
|
343 | a57faaf0 | Christos Stathis | public void setFiles(List<FileResource> newFiles) { |
344 | a57faaf0 | Christos Stathis | files = newFiles; |
345 | a57faaf0 | Christos Stathis | } |
346 | a57faaf0 | Christos Stathis | |
347 | a57faaf0 | Christos Stathis | /**
|
348 | a57faaf0 | Christos Stathis | * Retrieve the parentURI.
|
349 | a57faaf0 | Christos Stathis | *
|
350 | a57faaf0 | Christos Stathis | * @return the parentURI
|
351 | a57faaf0 | Christos Stathis | */
|
352 | a57faaf0 | Christos Stathis | public String getParentURI() { |
353 | a57faaf0 | Christos Stathis | return parentURI;
|
354 | a57faaf0 | Christos Stathis | } |
355 | a57faaf0 | Christos Stathis | |
356 | a57faaf0 | Christos Stathis | /**
|
357 | a57faaf0 | Christos Stathis | * Modify the parentURI.
|
358 | a57faaf0 | Christos Stathis | *
|
359 | a57faaf0 | Christos Stathis | * @param aParentURI the parentURI to set
|
360 | a57faaf0 | Christos Stathis | */
|
361 | a57faaf0 | Christos Stathis | public void setParentURI(String aParentURI) { |
362 | a57faaf0 | Christos Stathis | parentURI = aParentURI; |
363 | a57faaf0 | Christos Stathis | } |
364 | a57faaf0 | Christos Stathis | |
365 | a57faaf0 | Christos Stathis | @Override
|
366 | a57faaf0 | Christos Stathis | public void createFromJSON(String text) { |
367 | a57faaf0 | Christos Stathis | JSONObject json = (JSONObject) JSONParser.parse(text); |
368 | a57faaf0 | Christos Stathis | name = unmarshallString(json, "name");
|
369 | a57faaf0 | Christos Stathis | owner = unmarshallString(json, "owner");
|
370 | a57faaf0 | Christos Stathis | createdBy = unmarshallString(json, "createdBy");
|
371 | a57faaf0 | Christos Stathis | modifiedBy = unmarshallString(json, "modifiedBy");
|
372 | a57faaf0 | Christos Stathis | deleted = unmarshallBoolean(json, "deleted");
|
373 | a57faaf0 | Christos Stathis | shared = unmarshallBoolean(json, "shared");
|
374 | a57faaf0 | Christos Stathis | readForAll = unmarshallBoolean(json, "readForAll");
|
375 | a57faaf0 | Christos Stathis | if (deleted)
|
376 | a57faaf0 | Christos Stathis | GWT.log("FOUND A DELETED FOLDER:" + name, null); |
377 | a57faaf0 | Christos Stathis | |
378 | a57faaf0 | Christos Stathis | if (json.get("parent") != null) { |
379 | a57faaf0 | Christos Stathis | JSONObject parent = json.get("parent").isObject();
|
380 | a57faaf0 | Christos Stathis | parentURI = unmarshallString(parent, "uri");
|
381 | a57faaf0 | Christos Stathis | parentName = unmarshallString(parent, "name");
|
382 | a57faaf0 | Christos Stathis | } |
383 | a57faaf0 | Christos Stathis | |
384 | a57faaf0 | Christos Stathis | if (json.get("permissions") != null) { |
385 | a57faaf0 | Christos Stathis | JSONArray perm = json.get("permissions").isArray();
|
386 | a57faaf0 | Christos Stathis | if (perm != null) |
387 | a57faaf0 | Christos Stathis | for (int i = 0; i < perm.size(); i++) { |
388 | a57faaf0 | Christos Stathis | JSONObject obj = perm.get(i).isObject(); |
389 | a57faaf0 | Christos Stathis | if (obj != null) { |
390 | a57faaf0 | Christos Stathis | PermissionHolder permission = new PermissionHolder();
|
391 | a57faaf0 | Christos Stathis | if (obj.get("user") != null) |
392 | a57faaf0 | Christos Stathis | permission.setUser(unmarshallString(obj, "user"));
|
393 | a57faaf0 | Christos Stathis | if (obj.get("group") != null) |
394 | a57faaf0 | Christos Stathis | permission.setGroup(URL.decodeComponent(unmarshallString(obj, "group"))); |
395 | a57faaf0 | Christos Stathis | permission.setRead(unmarshallBoolean(obj, "read"));
|
396 | a57faaf0 | Christos Stathis | permission.setWrite(unmarshallBoolean(obj, "write"));
|
397 | a57faaf0 | Christos Stathis | permission.setModifyACL(unmarshallBoolean(obj, "modifyACL"));
|
398 | a57faaf0 | Christos Stathis | permissions.add(permission); |
399 | a57faaf0 | Christos Stathis | } |
400 | a57faaf0 | Christos Stathis | } |
401 | a57faaf0 | Christos Stathis | } |
402 | a57faaf0 | Christos Stathis | if (json.get("folders") != null) { |
403 | a57faaf0 | Christos Stathis | JSONArray subs = json.get("folders").isArray();
|
404 | a57faaf0 | Christos Stathis | if (subs != null) |
405 | a57faaf0 | Christos Stathis | for (int i = 0; i < subs.size(); i++) { |
406 | a57faaf0 | Christos Stathis | JSONObject so = subs.get(i).isObject(); |
407 | a57faaf0 | Christos Stathis | if (so != null) { |
408 | a57faaf0 | Christos Stathis | String subUri = unmarshallString(so, "uri"); |
409 | a57faaf0 | Christos Stathis | String subName = unmarshallString(so, "name"); |
410 | a57faaf0 | Christos Stathis | if (subUri != null && subName != null) { |
411 | a57faaf0 | Christos Stathis | if (!subUri.endsWith("/")) |
412 | a57faaf0 | Christos Stathis | subUri = subUri + "/";
|
413 | a57faaf0 | Christos Stathis | FolderResource sub = new FolderResource(subUri);
|
414 | a57faaf0 | Christos Stathis | sub.setName(subName); |
415 | a57faaf0 | Christos Stathis | sub.setParentURI(uri); |
416 | a57faaf0 | Christos Stathis | sub.setParentName(name); |
417 | a57faaf0 | Christos Stathis | sub.setNeedsExpanding(true);
|
418 | a57faaf0 | Christos Stathis | folders.add(sub); |
419 | a57faaf0 | Christos Stathis | subfolderPaths.add(subUri); |
420 | a57faaf0 | Christos Stathis | } |
421 | a57faaf0 | Christos Stathis | } |
422 | a57faaf0 | Christos Stathis | } |
423 | a57faaf0 | Christos Stathis | } |
424 | a57faaf0 | Christos Stathis | if (json.get("files") != null) { |
425 | a57faaf0 | Christos Stathis | JSONArray subs = json.get("files").isArray();
|
426 | a57faaf0 | Christos Stathis | if (subs != null) |
427 | a57faaf0 | Christos Stathis | for (int i = 0; i < subs.size(); i++) { |
428 | a57faaf0 | Christos Stathis | JSONObject fo = subs.get(i).isObject(); |
429 | a57faaf0 | Christos Stathis | if (fo != null) { |
430 | a57faaf0 | Christos Stathis | String fname = unmarshallString(fo, "name"); |
431 | a57faaf0 | Christos Stathis | String fowner = unmarshallString(fo, "owner"); |
432 | a57faaf0 | Christos Stathis | String fcontent = unmarshallString(fo, "content"); |
433 | a57faaf0 | Christos Stathis | String fpath = unmarshallString(fo, "path"); |
434 | a57faaf0 | Christos Stathis | Boolean fshared = unmarshallBoolean(fo, "shared"); |
435 | a57faaf0 | Christos Stathis | fpath = URL.decodeComponent(fpath);
|
436 | a57faaf0 | Christos Stathis | Integer fversion = null; |
437 | a57faaf0 | Christos Stathis | if (fo.get("version") != null) |
438 | a57faaf0 | Christos Stathis | fversion = new Integer(fo.get("version").toString()); |
439 | a57faaf0 | Christos Stathis | boolean fdeleted = unmarshallBoolean(fo, "deleted"); |
440 | a57faaf0 | Christos Stathis | Date fcreationDate = null; |
441 | a57faaf0 | Christos Stathis | if (fo.get("creationDate") != null) |
442 | a57faaf0 | Christos Stathis | fcreationDate = new Date(new Long(fo.get("creationDate").toString())); |
443 | a57faaf0 | Christos Stathis | Date fmodificationDate = null; |
444 | a57faaf0 | Christos Stathis | if (fo.get("modificationDate") != null) |
445 | a57faaf0 | Christos Stathis | fmodificationDate = new Date(new Long(fo.get("modificationDate").toString())); |
446 | a57faaf0 | Christos Stathis | String furi = unmarshallString(fo, "uri"); |
447 | a57faaf0 | Christos Stathis | Long fsize = 0L; |
448 | a57faaf0 | Christos Stathis | if (fo.get("size") != null) |
449 | a57faaf0 | Christos Stathis | fsize = new Long(fo.get("size").toString()); |
450 | a57faaf0 | Christos Stathis | filePaths.add(furi); |
451 | a57faaf0 | Christos Stathis | FileResource fs = new FileResource(furi);
|
452 | a57faaf0 | Christos Stathis | fs.setName(fname); |
453 | a57faaf0 | Christos Stathis | fs.setOwner(fowner); |
454 | a57faaf0 | Christos Stathis | fs.setPath(fpath); |
455 | a57faaf0 | Christos Stathis | fs.setVersioned(unmarshallBoolean(fo, "versioned"));
|
456 | a57faaf0 | Christos Stathis | fs.setVersion(fversion); |
457 | a57faaf0 | Christos Stathis | fs.setContentLength(fsize); |
458 | a57faaf0 | Christos Stathis | fs.setDeleted(fdeleted); |
459 | a57faaf0 | Christos Stathis | fs.setShared(fshared); |
460 | a57faaf0 | Christos Stathis | fs.setCreationDate(fcreationDate); |
461 | a57faaf0 | Christos Stathis | fs.setModificationDate(fmodificationDate); |
462 | a57faaf0 | Christos Stathis | fs.setContentType(fcontent); |
463 | a57faaf0 | Christos Stathis | files.add(fs); |
464 | a57faaf0 | Christos Stathis | } |
465 | a57faaf0 | Christos Stathis | } |
466 | a57faaf0 | Christos Stathis | } |
467 | a57faaf0 | Christos Stathis | if (json.get("creationDate") != null) |
468 | a57faaf0 | Christos Stathis | creationDate = new Date(new Long(json.get("creationDate").toString())); |
469 | a57faaf0 | Christos Stathis | if (json.get("modificationDate") != null) |
470 | a57faaf0 | Christos Stathis | modificationDate = new Date(new Long(json.get("modificationDate").toString())); |
471 | a57faaf0 | Christos Stathis | } |
472 | a57faaf0 | Christos Stathis | |
473 | a57faaf0 | Christos Stathis | public String getParentName(){ |
474 | a57faaf0 | Christos Stathis | return parentName;
|
475 | a57faaf0 | Christos Stathis | } |
476 | a57faaf0 | Christos Stathis | |
477 | a57faaf0 | Christos Stathis | /**
|
478 | a57faaf0 | Christos Stathis | * Retrieve the needsExpanding.
|
479 | a57faaf0 | Christos Stathis | *
|
480 | a57faaf0 | Christos Stathis | * @return the needsExpanding
|
481 | a57faaf0 | Christos Stathis | */
|
482 | a57faaf0 | Christos Stathis | public boolean isNeedsExpanding() { |
483 | a57faaf0 | Christos Stathis | return needsExpanding;
|
484 | a57faaf0 | Christos Stathis | } |
485 | a57faaf0 | Christos Stathis | |
486 | a57faaf0 | Christos Stathis | /**
|
487 | a57faaf0 | Christos Stathis | * Modify the needsExpanding.
|
488 | a57faaf0 | Christos Stathis | *
|
489 | a57faaf0 | Christos Stathis | * @param newNeedsExpanding the needsExpanding to set
|
490 | a57faaf0 | Christos Stathis | */
|
491 | a57faaf0 | Christos Stathis | public void setNeedsExpanding(boolean newNeedsExpanding) { |
492 | a57faaf0 | Christos Stathis | needsExpanding = newNeedsExpanding; |
493 | a57faaf0 | Christos Stathis | } |
494 | a57faaf0 | Christos Stathis | |
495 | a57faaf0 | Christos Stathis | public boolean isShared(){ |
496 | a57faaf0 | Christos Stathis | return shared;
|
497 | a57faaf0 | Christos Stathis | } |
498 | a57faaf0 | Christos Stathis | |
499 | a57faaf0 | Christos Stathis | @Override
|
500 | a57faaf0 | Christos Stathis | public String getLastModifiedSince() { |
501 | a57faaf0 | Christos Stathis | if(modificationDate != null) |
502 | a57faaf0 | Christos Stathis | return getDate(modificationDate.getTime());
|
503 | a57faaf0 | Christos Stathis | return null; |
504 | a57faaf0 | Christos Stathis | } |
505 | a57faaf0 | Christos Stathis | |
506 | a57faaf0 | Christos Stathis | public MultipleGetCommand.Cached[] getCache(){ |
507 | a57faaf0 | Christos Stathis | if(getSubfolderPaths().size() != getFolders().size()){
|
508 | a57faaf0 | Christos Stathis | GWT.log("MISMATCH IN PATH AND FOLDERS SIZE", null); |
509 | a57faaf0 | Christos Stathis | return null; |
510 | a57faaf0 | Christos Stathis | } |
511 | a57faaf0 | Christos Stathis | MultipleGetCommand.Cached[] result = new MultipleGetCommand.Cached[getSubfolderPaths().size()]; |
512 | a57faaf0 | Christos Stathis | for(int i=0; i<getFolders().size();i++){ |
513 | a57faaf0 | Christos Stathis | FolderResource r = getFolders().get(i); |
514 | a57faaf0 | Christos Stathis | Cached c = new Cached();
|
515 | a57faaf0 | Christos Stathis | c.cache=r; |
516 | a57faaf0 | Christos Stathis | c.uri=r.uri; |
517 | a57faaf0 | Christos Stathis | result[i] = c; |
518 | a57faaf0 | Christos Stathis | } |
519 | a57faaf0 | Christos Stathis | return result;
|
520 | a57faaf0 | Christos Stathis | } |
521 | a57faaf0 | Christos Stathis | |
522 | a57faaf0 | Christos Stathis | public MultipleGetCommand.Cached[] getFileCache(){ |
523 | a57faaf0 | Christos Stathis | if(getFilePaths().size() != getFiles().size()){
|
524 | a57faaf0 | Christos Stathis | GWT.log("MISMATCH IN PATH AND FILES SIZE", null); |
525 | a57faaf0 | Christos Stathis | return null; |
526 | a57faaf0 | Christos Stathis | } |
527 | a57faaf0 | Christos Stathis | if(!filesExpanded)
|
528 | a57faaf0 | Christos Stathis | return null; |
529 | a57faaf0 | Christos Stathis | MultipleGetCommand.Cached[] result = new MultipleGetCommand.Cached[getFilePaths().size()]; |
530 | a57faaf0 | Christos Stathis | for(int i=0; i<getFiles().size();i++){ |
531 | a57faaf0 | Christos Stathis | FileResource r = getFiles().get(i); |
532 | a57faaf0 | Christos Stathis | Cached c = new Cached();
|
533 | a57faaf0 | Christos Stathis | c.cache=r; |
534 | a57faaf0 | Christos Stathis | c.uri=r.uri; |
535 | a57faaf0 | Christos Stathis | result[i] = c; |
536 | a57faaf0 | Christos Stathis | } |
537 | a57faaf0 | Christos Stathis | return result;
|
538 | a57faaf0 | Christos Stathis | } |
539 | a57faaf0 | Christos Stathis | |
540 | a57faaf0 | Christos Stathis | public void setFilesExpanded(boolean newFilesExpanded) { |
541 | a57faaf0 | Christos Stathis | filesExpanded = newFilesExpanded; |
542 | a57faaf0 | Christos Stathis | } |
543 | a57faaf0 | Christos Stathis | /**
|
544 | a57faaf0 | Christos Stathis | * this method constructs the partial path of a given TreeItem using it's text
|
545 | a57faaf0 | Christos Stathis | *
|
546 | a57faaf0 | Christos Stathis | * @param selectedItem the selectedItem to check
|
547 | a57faaf0 | Christos Stathis | */
|
548 | a57faaf0 | Christos Stathis | private String constructPartialPath(TreeItem selectedItem){ |
549 | a57faaf0 | Christos Stathis | String result = DisplayHelper.trim(selectedItem.getText());
|
550 | a57faaf0 | Christos Stathis | TreeItem parent = selectedItem.getParentItem(); |
551 | a57faaf0 | Christos Stathis | while (!(DisplayHelper.trim(parent.getText()).equals("My Shared") || DisplayHelper.trim(parent.getText()).equals("Other's Shared")||DisplayHelper.trim(parent.getText()).equals("Trash"))){ |
552 | a57faaf0 | Christos Stathis | result = DisplayHelper.trim(parent.getText()) + "/" + result;
|
553 | a57faaf0 | Christos Stathis | if(result.equals("My Shared")||result.equals("Other's Shared")) return result; |
554 | a57faaf0 | Christos Stathis | parent = parent.getParentItem(); |
555 | a57faaf0 | Christos Stathis | } |
556 | a57faaf0 | Christos Stathis | |
557 | a57faaf0 | Christos Stathis | return result;
|
558 | a57faaf0 | Christos Stathis | } |
559 | a57faaf0 | Christos Stathis | /**
|
560 | a57faaf0 | Christos Stathis | * examine whether a folder name like "Trash", "My Shared", "Other's Shared" is inside path
|
561 | a57faaf0 | Christos Stathis | *
|
562 | a57faaf0 | Christos Stathis | * @param selectedItem the selectedTreeItem to check
|
563 | a57faaf0 | Christos Stathis | */
|
564 | a57faaf0 | Christos Stathis | |
565 | a57faaf0 | Christos Stathis | private boolean containsFolder(TreeItem selectedItem, String folderName){ |
566 | a57faaf0 | Christos Stathis | TreeItem parent = selectedItem.getParentItem(); |
567 | a57faaf0 | Christos Stathis | while (parent != null){ |
568 | a57faaf0 | Christos Stathis | String parentItemText = parent.getText();
|
569 | a57faaf0 | Christos Stathis | String parentItemTextTr = DisplayHelper.trim(parentItemText);
|
570 | a57faaf0 | Christos Stathis | if(parentItemTextTr.equals(folderName)) return true; |
571 | a57faaf0 | Christos Stathis | parent = parent.getParentItem(); |
572 | a57faaf0 | Christos Stathis | } |
573 | a57faaf0 | Christos Stathis | return false; |
574 | a57faaf0 | Christos Stathis | } |
575 | a57faaf0 | Christos Stathis | @Override
|
576 | a57faaf0 | Christos Stathis | public String constructUri(TreeItem treeItem, String path){ |
577 | a57faaf0 | Christos Stathis | String constructedUri = ""; |
578 | a57faaf0 | Christos Stathis | if(containsFolder(treeItem, "My Shared")){ |
579 | a57faaf0 | Christos Stathis | //case: selected folders below My Shared folder
|
580 | a57faaf0 | Christos Stathis | String partialUri = constructPartialPath(treeItem);
|
581 | a57faaf0 | Christos Stathis | constructedUri = constructedUri + "Files/shared/" + partialUri;
|
582 | a57faaf0 | Christos Stathis | return constructedUri;
|
583 | a57faaf0 | Christos Stathis | }else if(containsFolder(treeItem, "Other's Shared")){ |
584 | a57faaf0 | Christos Stathis | //case: selected folders below Other's Shared folder
|
585 | a57faaf0 | Christos Stathis | String partialPath = constructPartialPath(treeItem);
|
586 | a57faaf0 | Christos Stathis | constructedUri = constructedUri + "Files/others/"+ partialPath;
|
587 | a57faaf0 | Christos Stathis | return constructedUri;
|
588 | a57faaf0 | Christos Stathis | } |
589 | a57faaf0 | Christos Stathis | else if(getParentURI()==null){ |
590 | a57faaf0 | Christos Stathis | if(containsFolder(treeItem, "Trash")){ |
591 | a57faaf0 | Christos Stathis | //case: selected folders below Trash folder
|
592 | a57faaf0 | Christos Stathis | String partialUri = constructPartialPath(treeItem);
|
593 | a57faaf0 | Christos Stathis | constructedUri = constructedUri + "Files/trash/" + partialUri;
|
594 | a57faaf0 | Christos Stathis | return constructedUri;
|
595 | a57faaf0 | Christos Stathis | } |
596 | a57faaf0 | Christos Stathis | //case: home folder is selected
|
597 | a57faaf0 | Christos Stathis | constructedUri = constructedUri + "Files/files/" + getName();
|
598 | a57faaf0 | Christos Stathis | return constructedUri;
|
599 | a57faaf0 | Christos Stathis | } |
600 | a57faaf0 | Christos Stathis | else if(treeItem.getParentItem() == null){ |
601 | a57faaf0 | Christos Stathis | //this is the case when the user uses the browser's forward arrow to navigate through other's
|
602 | a57faaf0 | Christos Stathis | //shared folders and item.getParentItem is null only inside other's shared folder
|
603 | a57faaf0 | Christos Stathis | String apiPath = GSS.get().getApiPath();
|
604 | a57faaf0 | Christos Stathis | String newPath = getParentURI().substring(apiPath.lastIndexOf("/")); |
605 | a57faaf0 | Christos Stathis | constructedUri = constructedUri + "Files"+ newPath + getName();
|
606 | a57faaf0 | Christos Stathis | return constructedUri;
|
607 | a57faaf0 | Christos Stathis | } |
608 | a57faaf0 | Christos Stathis | else{
|
609 | a57faaf0 | Christos Stathis | String finalUri = getParentURI().substring(path.lastIndexOf("/")) + getName(); |
610 | a57faaf0 | Christos Stathis | constructedUri = constructedUri + "Files"+ finalUri;
|
611 | a57faaf0 | Christos Stathis | return constructedUri;
|
612 | a57faaf0 | Christos Stathis | } |
613 | a57faaf0 | Christos Stathis | |
614 | a57faaf0 | Christos Stathis | } |
615 | a57faaf0 | Christos Stathis | |
616 | a57faaf0 | Christos Stathis | /**
|
617 | a57faaf0 | Christos Stathis | * Retrieve the readForAll.
|
618 | a57faaf0 | Christos Stathis | *
|
619 | a57faaf0 | Christos Stathis | * @return the readForAll
|
620 | a57faaf0 | Christos Stathis | */
|
621 | a57faaf0 | Christos Stathis | public boolean isReadForAll() { |
622 | a57faaf0 | Christos Stathis | return readForAll;
|
623 | a57faaf0 | Christos Stathis | } |
624 | a57faaf0 | Christos Stathis | /**
|
625 | a57faaf0 | Christos Stathis | * Modify the readForAll.
|
626 | a57faaf0 | Christos Stathis | *
|
627 | a57faaf0 | Christos Stathis | * @param newReadForAll the readForAll to set
|
628 | a57faaf0 | Christos Stathis | */
|
629 | a57faaf0 | Christos Stathis | public void setReadForAll(boolean newReadForAll) { |
630 | a57faaf0 | Christos Stathis | readForAll = newReadForAll; |
631 | a57faaf0 | Christos Stathis | } |
632 | a57faaf0 | Christos Stathis | |
633 | a57faaf0 | Christos Stathis | |
634 | a57faaf0 | Christos Stathis | public int countNotDeletedSubfolders(){ |
635 | a57faaf0 | Christos Stathis | int count=0; |
636 | a57faaf0 | Christos Stathis | for(FolderResource r : folders){
|
637 | a57faaf0 | Christos Stathis | if(!r.isDeleted())
|
638 | a57faaf0 | Christos Stathis | count++; |
639 | a57faaf0 | Christos Stathis | } |
640 | a57faaf0 | Christos Stathis | return count;
|
641 | a57faaf0 | Christos Stathis | } |
642 | a57faaf0 | Christos Stathis | |
643 | a57faaf0 | Christos Stathis | } |