diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/bootstraptestdata.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/bootstraptestdata.get.desc.xml index 18aa65c8ba..14c6f8d6c6 100644 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/bootstraptestdata.get.desc.xml +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/bootstraptestdata.get.desc.xml @@ -5,5 +5,5 @@ argument admin required - internal + deprecated \ No newline at end of file diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/datasets.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/datasets.get.json.ftl index 509bdd5470..ed1b16310a 100644 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/datasets.get.json.ftl +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/datasets.get.json.ftl @@ -1,5 +1,14 @@ -<#escape x as jsonUtils.encodeJSONString(x)> { - "data": ${data} -} - \ No newline at end of file + "data": + { + "datasets": + [ + <#list datasets as item> + { + "label": "${item.label}", + "id": "${item.id}" + }<#if item_has_next>, + + ] + } +} \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetService.java index eaf93db240..ba13b24080 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetService.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetService.java @@ -29,4 +29,12 @@ public interface DataSetService */ void loadDataSet(String dataSetId, NodeRef filePlan); + /** + * Checks if a data set exists with the given data set id + * + * @param dataSetId the id of the data set which will be checked + * @return true if the data set exists, false otherwise + */ + boolean existsDataSet(String dataSetId); + } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetServiceImpl.java index e1a2e9dbff..433b2206a5 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/dataset/DataSetServiceImpl.java @@ -29,6 +29,7 @@ import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.view.ImporterService; import org.alfresco.service.cmr.view.Location; +import org.alfresco.util.ParameterCheck; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -187,6 +188,8 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode @Override public void register(DataSet dataSet) { + ParameterCheck.mandatory("dataSet", dataSet); + this.dataSets.put(dataSet.getId(), dataSet); } @@ -206,6 +209,9 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode @Override public void loadDataSet(String dataSetId, NodeRef filePlan) { + ParameterCheck.mandatoryString("dataSetId", dataSetId); + ParameterCheck.mandatory("filePlan", filePlan); + // Get the data set DataSet dataSet = getDataSets().get(dataSetId); @@ -224,10 +230,7 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode importerService.importView(viewReader, location, null, null); // Patch data - DataSetServiceImpl.patchLoadedData(searchService, nodeService, recordsManagementService, - recordsManagementActionService, permissionService, authorityService, - recordsManagementSecurityService, recordsManagementSearchBehaviour, - dispositionService); + patchLoadedData(); } /** @@ -238,13 +241,7 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode * @param recordsManagementService * @param recordsManagementActionService */ - private static void patchLoadedData(final SearchService searchService, - final NodeService nodeService, final RecordsManagementService recordsManagementService, - final RecordsManagementActionService recordsManagementActionService, - final PermissionService permissionService, final AuthorityService authorityService, - final RecordsManagementSecurityService recordsManagementSecurityService, - final RecordsManagementSearchBehaviour recordManagementSearchBehaviour, - final DispositionService dispositionService) + private void patchLoadedData() { AuthenticationUtil.RunAsWork runAsWork = new AuthenticationUtil.RunAsWork() { @@ -349,7 +346,7 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode // fixup the search behaviour aspect for the record folder logger.info("Setting up search aspect for record folder: " + folderName); - recordManagementSearchBehaviour.fixupSearchAspect(recordFolder); + recordsManagementSearchBehaviour.fixupSearchAspect(recordFolder); } } finally @@ -365,4 +362,15 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode } + /** + * @see org.alfresco.module.org_alfresco_module_rm.dataset.DataSetService#existsDataSet(java.lang.String) + */ + @Override + public boolean existsDataSet(String dataSetId) + { + ParameterCheck.mandatoryString("dataSetId", dataSetId); + + return getDataSets().containsKey(dataSetId); + } + } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/DataSetPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/DataSetPost.java index 5a132b582f..a1b2660396 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/DataSetPost.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/DataSetPost.java @@ -63,6 +63,11 @@ public class DataSetPost extends DeclarativeWebScript implements RecordsManageme { throw new WebScriptException(Status.STATUS_BAD_REQUEST, "A data set id was not provided."); } + if (!dataSetService.existsDataSet(dataSetId)) + { + throw new WebScriptException(Status.STATUS_NOT_FOUND, "A data set with the id '" + dataSetId + "'" + + " does not exist."); + } // Resolve RM site String siteName = req.getParameter(ARG_SITE_NAME); @@ -71,6 +76,7 @@ public class DataSetPost extends DeclarativeWebScript implements RecordsManageme siteName = RmSiteType.DEFAULT_SITE_NAME; } + // Check the site if it exists if (siteService.getSite(siteName) == null) { throw new WebScriptException(Status.STATUS_BAD_REQUEST, "A Records Management site with the name '" @@ -85,6 +91,7 @@ public class DataSetPost extends DeclarativeWebScript implements RecordsManageme TYPE_FILE_PLAN, null); } + // Load data set in to the file plan dataSetService.loadDataSet(dataSetId, filePlan); Map model = new HashMap(1, 1.0f); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/DataSetsGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/DataSetsGet.java index 8db37f2391..7abba67ed5 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/DataSetsGet.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/DataSetsGet.java @@ -1,17 +1,15 @@ package org.alfresco.module.org_alfresco_module_rm.script; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.alfresco.module.org_alfresco_module_rm.dataset.DataSet; import org.alfresco.module.org_alfresco_module_rm.dataset.DataSetService; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.DeclarativeWebScript; import org.springframework.extensions.webscripts.Status; -import org.springframework.extensions.webscripts.WebScriptException; import org.springframework.extensions.webscripts.WebScriptRequest; public class DataSetsGet extends DeclarativeWebScript @@ -38,33 +36,23 @@ public class DataSetsGet extends DeclarativeWebScript @Override protected Map executeImpl(WebScriptRequest req, Status status, Cache cache) { - try + Map dataSets = dataSetService.getDataSets(); + List> dataSetList = new ArrayList>(dataSets.size()); + + for (Map.Entry entry : dataSets.entrySet()) { - JSONObject data = new JSONObject(); - JSONArray dataSets = new JSONArray(); + Map dataSet = new HashMap(2); + DataSet value = entry.getValue(); - for (Map.Entry entry : dataSetService.getDataSets().entrySet()) - { - DataSet value = entry.getValue(); - JSONObject dataSet = new JSONObject(); + dataSet.put("label", value.getLabel()); + dataSet.put("id", value.getId()); - dataSet.put("label", value.getLabel()); - dataSet.put("id", value.getId()); - - dataSets.put(dataSet); - } - - data.put("datasets", dataSets); - - Map model = new HashMap(1, 1.0f); - model.put("data", data.toString()); - - return model; - } - catch (JSONException error) - { - throw new WebScriptException(Status.STATUS_BAD_REQUEST, - "Cannot convert data set details into JSON.", error); + dataSetList.add(dataSet); } + + Map model = new HashMap(1); + model.put("datasets", dataSetList); + + return model; } }