import com.google.gwt.json.client.JSONValue;
import java.util.ArrayList;
import java.util.Date;
+import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
private Set<File> files = new LinkedHashSet<File>();
+ private boolean inTrash = false;
+
public Folder() {};
public Folder(String name) {
if (header != null)
bytesUsed = Long.valueOf(header);
+ header = response.getHeader("X-Object-Meta-Trash");
+ if (header != null && header.equals("true"))
+ inTrash = true;
+
subfolders.clear(); //This is necessary in case we update a pre-existing Folder so that stale subfolders won't show up
+ files.clear();
JSONValue json = JSONParser.parseStrict(response.getText());
JSONArray array = json.isArray();
if (array != null) {
f.populate(this, o, container);
subfolders.add(f);
}
- else {
+ else if (!(o.containsKey("x_object_meta_trash") && o.get("x_object_meta_trash").isString().stringValue().equals("true"))) {
File file = new File();
file.populate(this, o, container);
files.add(file);
}
}
}
+ //This step is necessary to remove the trashed folders. Trashed folders are added initially because we need to
+ //avoid having in the list the virtual folders of the form {"subdir":"folder1"} which have no indication of thrash
+ Iterator<Folder> iter = subfolders.iterator();
+ while (iter.hasNext()) {
+ Folder f = iter.next();
+ if (f.isInTrash())
+ iter.remove();
+ }
}
}
container = name;
prefix = "";
}
- }
-
- @Override
- public String getLastModifiedSince() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ if (o.containsKey("x_object_meta_trash") && o.get("x_object_meta_trash").isString().stringValue().equals("true"))
+ inTrash = true;
}
public static Folder createFromResponse(Response response, Folder result) {
public Folder getParent() {
return parent;
}
+
+ public String getUri() {
+ return "/" + container + (prefix.length() == 0 ? "" : "/" + prefix);
+ }
+
+ public boolean isInTrash() {
+ return inTrash;
+ }
+
+ public boolean isContainer() {
+ return parent == null;
+ }
}