diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/rmsearch.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/rmsearch.get.json.ftl index 529df4083f..4474bb8afb 100644 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/rmsearch.get.json.ftl +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/rmsearch.get.json.ftl @@ -1,44 +1,48 @@ <#escape x as jsonUtils.encodeJSONString(x)> { - "items": - [ - <#list items as item> - { - "nodeRef": "${item.nodeRef}", - "type": "${item.type}", - "name": "${item.name}", - "title": "${item.title!''}", - "description": "${item.description!''}", - "modifiedOn": "${xmldate(item.modifiedOn)}", - "modifiedByUser": "${item.modifiedByUser}", - "modifiedBy": "${item.modifiedBy}", - "createdOn": "${xmldate(item.createdOn)}", - "createdByUser": "${item.createdByUser}", - "createdBy": "${item.createdBy}", - "author": "${item.author!''}", - "size": ${item.size?c}, - <#if item.browseUrl??>"browseUrl": "${item.browseUrl}", - "parentFolder": "${item.parentFolder!""}", - "properties": - { - <#assign first=true> - <#list item.properties?keys as k> - <#if item.properties[k]??> - <#if !first>,<#else><#assign first=false>"${k}": - <#assign prop = item.properties[k]> - <#if prop?is_date>"${xmldate(prop)}" - <#elseif prop?is_boolean>${prop?string("true", "false")} - <#elseif prop?is_enumerable>[<#list prop as p>"${p}"<#if p_has_next>, ] - <#elseif prop?is_number>${prop?c} - <#elseif prop?is_string>"${prop}" - <#elseif prop?is_hash_ex>[<#list prop?values as p>"${p}"<#if p_has_next>, ] - <#else>"${prop}" - - - - } - }<#if item_has_next>, - - ] + <#if !errorMessage??> + "items": + [ + <#list items as item> + { + "nodeRef": "${item.nodeRef}", + "type": "${item.type}", + "name": "${item.name}", + "title": "${item.title!''}", + "description": "${item.description!''}", + "modifiedOn": "${xmldate(item.modifiedOn)}", + "modifiedByUser": "${item.modifiedByUser}", + "modifiedBy": "${item.modifiedBy}", + "createdOn": "${xmldate(item.createdOn)}", + "createdByUser": "${item.createdByUser}", + "createdBy": "${item.createdBy}", + "author": "${item.author!''}", + "size": ${item.size?c}, + <#if item.browseUrl??>"browseUrl": "${item.browseUrl}", + "parentFolder": "${item.parentFolder!""}", + "properties": + { + <#assign first=true> + <#list item.properties?keys as k> + <#if item.properties[k]??> + <#if !first>,<#else><#assign first=false>"${k}": + <#assign prop = item.properties[k]> + <#if prop?is_date>"${xmldate(prop)}" + <#elseif prop?is_boolean>${prop?string("true", "false")} + <#elseif prop?is_enumerable>[<#list prop as p>"${p}"<#if p_has_next>, ] + <#elseif prop?is_number>${prop?c} + <#elseif prop?is_string>"${prop}" + <#elseif prop?is_hash_ex>[<#list prop?values as p>"${p}"<#if p_has_next>, ] + <#else>"${prop}" + + + + } + }<#if item_has_next>, + + ] + <#else> + "errorMessage": "${errorMessage}" + } \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RMSearchGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RMSearchGet.java index fa9724d74a..eb46eb54fb 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RMSearchGet.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RMSearchGet.java @@ -162,62 +162,69 @@ public class RMSearchGet extends DeclarativeWebScript @Override protected Map executeImpl(WebScriptRequest req, Status status, Cache cache) { - // Get the site id and confirm it is valid - Map templateVars = req.getServiceMatch().getTemplateVars(); - String siteId = templateVars.get("site"); - if (siteId == null || siteId.length() == 0) - { - throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Site id not provided."); - } - if (siteService.getSite(siteId) == null) - { - throw new WebScriptException(Status.STATUS_NOT_FOUND, "Site not found."); - } - - // Get the query parameter - String query = req.getParameter(PARAM_QUERY); - // TODO check that this is there - - String sortby = req.getParameter(PARAM_SORTBY); - // TODO this is optional - - String filters = req.getParameter(PARAM_FILTERS); - // TODO this is optional - - // Convert into a rm search parameter object - RecordsManagementSearchParameters searchParameters = - SavedSearchDetailsCompatibility.createSearchParameters(filters, new String[]{",", "/"}, sortby, namespaceService); - - // Set the max results - String maxItems = req.getParameter(PARAM_MAX_ITEMS); - if (maxItems != null && maxItems.length() != 0) - { - searchParameters.setMaxItems(Integer.parseInt(maxItems)); - } - - // Execute search - List results = recordsManagementSearchService.search(siteId, query, searchParameters); - - // Reset person data cache - personDataCache = new HashMap(57); - - // Process the result items - List items = new ArrayList(results.size()); - for (NodeRef nodeRef : results) - { - // FIXME: This is a workaround for DOD Recert - // TC 3-3 Create User Groups - try - { - Item item = new Item(nodeRef); - items.add(item); - } - catch(Exception e) {} - } - - // Return model Map model = new HashMap(1); - model.put("items", items); + try + { + // Get the site id and confirm it is valid + Map templateVars = req.getServiceMatch().getTemplateVars(); + String siteId = templateVars.get("site"); + if (siteId == null || siteId.length() == 0) + { + throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Site id not provided."); + } + if (siteService.getSite(siteId) == null) + { + throw new WebScriptException(Status.STATUS_NOT_FOUND, "Site not found."); + } + + // Get the query parameter + String query = req.getParameter(PARAM_QUERY); + // TODO check that this is there + + String sortby = req.getParameter(PARAM_SORTBY); + // TODO this is optional + + String filters = req.getParameter(PARAM_FILTERS); + // TODO this is optional + + // Convert into a rm search parameter object + RecordsManagementSearchParameters searchParameters = + SavedSearchDetailsCompatibility.createSearchParameters(filters, new String[]{",", "/"}, sortby, namespaceService); + + // Set the max results + String maxItems = req.getParameter(PARAM_MAX_ITEMS); + if (maxItems != null && maxItems.length() != 0) + { + searchParameters.setMaxItems(Integer.parseInt(maxItems)); + } + + // Execute search + List results = recordsManagementSearchService.search(siteId, query, searchParameters); + + // Reset person data cache + personDataCache = new HashMap(57); + + // Process the result items + List items = new ArrayList(results.size()); + for (NodeRef nodeRef : results) + { + // FIXME: This is a workaround for DOD Recert + // TC 3-3 Create User Groups + try + { + Item item = new Item(nodeRef); + items.add(item); + } + catch(Exception e) {} + } + + // Return model + model.put("items", items); + } + catch (Exception ex) + { + model.put("errorMessage", ex.toString()); + } return model; }