From da7b63f23c05cf41822b0c6ffb1ed74a6ea7d6a3 Mon Sep 17 00:00:00 2001 From: pastith Date: Fri, 27 Feb 2009 13:24:24 +0000 Subject: [PATCH] Ease the job of the clients by expanding string arrays to object arrays: - GET on the 'others' namespace returns the username of the user sharing the resource - GET on the 'groups' namespace returns the name of the group - GET on files and folders returns the parent folder as well --- .../gr/ebs/gss/client/domain/FileHeaderDTO.java | 25 +++++++++++++++++ gss/src/gr/ebs/gss/server/domain/FileHeader.java | 1 + gss/src/gr/ebs/gss/server/rest/FilesHandler.java | 3 ++ gss/src/gr/ebs/gss/server/rest/GroupsHandler.java | 29 ++++++++++++-------- gss/src/gr/ebs/gss/server/rest/OthersHandler.java | 12 ++++++-- 5 files changed, 57 insertions(+), 13 deletions(-) diff --git a/gss/src/gr/ebs/gss/client/domain/FileHeaderDTO.java b/gss/src/gr/ebs/gss/client/domain/FileHeaderDTO.java index 507ab4d..d7bd91b 100644 --- a/gss/src/gr/ebs/gss/client/domain/FileHeaderDTO.java +++ b/gss/src/gr/ebs/gss/client/domain/FileHeaderDTO.java @@ -74,6 +74,11 @@ public class FileHeaderDTO implements Serializable { private UserDTO owner; /** + * The folder that contains this file. + */ + private FolderDTO folder; + + /** * The size of the file */ private long fileSize; @@ -384,4 +389,24 @@ public class FileHeaderDTO implements Serializable { public String getURI() { return PATH_GSS + owner.getUsername() + PATH_FILES + getPath(); } + + + /** + * Retrieve the folder. + * + * @return the folder + */ + public FolderDTO getFolder() { + return folder; + } + + + /** + * Modify the folder. + * + * @param aFolder the folder to set + */ + public void setFolder(FolderDTO aFolder) { + folder = aFolder; + } } diff --git a/gss/src/gr/ebs/gss/server/domain/FileHeader.java b/gss/src/gr/ebs/gss/server/domain/FileHeader.java index 7b1769b..19737f1 100644 --- a/gss/src/gr/ebs/gss/server/domain/FileHeader.java +++ b/gss/src/gr/ebs/gss/server/domain/FileHeader.java @@ -424,6 +424,7 @@ public final class FileHeader implements Serializable{ f.setId(id); f.setName(name); f.setPath(getPath()); + f.setFolder(folder.getDTO()); f.setVersioned(versioned); f.setVersion(currentBody.getVersion()); f.setOwner(owner.getDTO()); diff --git a/gss/src/gr/ebs/gss/server/rest/FilesHandler.java b/gss/src/gr/ebs/gss/server/rest/FilesHandler.java index 76ba14b..20a808c 100644 --- a/gss/src/gr/ebs/gss/server/rest/FilesHandler.java +++ b/gss/src/gr/ebs/gss/server/rest/FilesHandler.java @@ -1234,6 +1234,8 @@ public class FilesHandler extends RequestHandler { put("createdBy", folder.getAuditInfo().getCreatedBy().getUsername()). put("creationDate", folder.getAuditInfo().getCreationDate().getTime()). put("deleted", folder.isDeleted()); + if (folder.getParent() != null) + json.put("parent", folder.getParent().getURI()); if (folder.getAuditInfo().getModifiedBy() != null) json.put("modifiedBy", folder.getAuditInfo().getModifiedBy().getUsername()). put("modificationDate", folder.getAuditInfo().getModificationDate().getTime()); @@ -1304,6 +1306,7 @@ public class FilesHandler extends RequestHandler { put("version", oldBody != null ? oldBody.getVersion() : file.getVersion()). put("readForAll", file.isReadForAll()). put("tags", file.getTags()). + put("folder", file.getFolder().getURI()). put("deleted", file.isDeleted()); if (oldBody != null) json.put("createdBy", oldBody.getAuditInfo().getCreatedBy().getUsername()). diff --git a/gss/src/gr/ebs/gss/server/rest/GroupsHandler.java b/gss/src/gr/ebs/gss/server/rest/GroupsHandler.java index 9a384fd..0dcb4d8 100644 --- a/gss/src/gr/ebs/gss/server/rest/GroupsHandler.java +++ b/gss/src/gr/ebs/gss/server/rest/GroupsHandler.java @@ -69,11 +69,19 @@ public class GroupsHandler extends RequestHandler { resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); return; } - if (path.equals("/")) { - // Request to serve all groups - List groups; + if (path.equals("/")) + // Request to serve all groups try { - groups = getService().getGroups(owner.getId()); + List groups = getService().getGroups(owner.getId()); + JSONArray json = new JSONArray(); + for (GroupDTO group: groups) { + JSONObject j = new JSONObject(); + j.put("name", group.getName()). + put("uri", parentUrl + group.getName()); + json.put(j); + } + + sendJson(req, resp, json.toString()); } catch (ObjectNotFoundException e) { logger.error("User not found", e); resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); @@ -82,13 +90,12 @@ public class GroupsHandler extends RequestHandler { logger.error("", e); resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; - } - JSONArray json = new JSONArray(); - for (GroupDTO group: groups) - json.put(parentUrl + group.getName()); - - sendJson(req, resp, json.toString()); - } else { + } catch (JSONException e) { + logger.error("", e); + resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return; + } + else { // Chop any trailing slash path = path.endsWith("/")? path.substring(0, path.length()-1): path; // Chop any leading slash diff --git a/gss/src/gr/ebs/gss/server/rest/OthersHandler.java b/gss/src/gr/ebs/gss/server/rest/OthersHandler.java index a936bc0..734b8f8 100644 --- a/gss/src/gr/ebs/gss/server/rest/OthersHandler.java +++ b/gss/src/gr/ebs/gss/server/rest/OthersHandler.java @@ -75,8 +75,12 @@ public class OthersHandler extends RequestHandler { JSONArray json = new JSONArray(); List others = getService().getUsersSharingFoldersForUser(owner.getId()); - for (UserDTO u: others) - json.put(parentUrl + u.getUsername()); + for (UserDTO u: others) { + JSONObject j = new JSONObject(); + j.put("username", u.getUsername()). + put("uri", parentUrl + u.getUsername()); + json.put(j); + } sendJson(req, resp, json.toString()); } catch (ObjectNotFoundException e) { @@ -87,6 +91,10 @@ public class OthersHandler extends RequestHandler { logger.error("", e); resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; + } catch (JSONException e) { + logger.error("", e); + resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return; } else try { -- 1.7.10.4