Code refactoring and bug fixing for:

* RM-486 (RM Data Set Service)
 * RM-487 (REST API to retrieve details of available RM data sets)
 * RM-488 (REST API to import a RM data set into a file plan)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@41341 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tuna Aksoy
2012-09-06 20:00:42 +00:00
parent a1ecaedf15
commit 6c061c9f7a
6 changed files with 65 additions and 45 deletions

View File

@@ -5,5 +5,5 @@
<format default="json">argument</format> <format default="json">argument</format>
<authentication>admin</authentication> <authentication>admin</authentication>
<transaction>required</transaction> <transaction>required</transaction>
<lifecycle>internal</lifecycle> <lifecycle>deprecated</lifecycle>
</webscript> </webscript>

View File

@@ -1,5 +1,14 @@
<#escape x as jsonUtils.encodeJSONString(x)>
{ {
"data": ${data} "data":
{
"datasets":
[
<#list datasets as item>
{
"label": "${item.label}",
"id": "${item.id}"
}<#if item_has_next>,</#if>
</#list>
]
}
} }
</#escape>

View File

@@ -29,4 +29,12 @@ public interface DataSetService
*/ */
void loadDataSet(String dataSetId, NodeRef filePlan); 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);
} }

View File

@@ -29,6 +29,7 @@ import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.view.ImporterService; import org.alfresco.service.cmr.view.ImporterService;
import org.alfresco.service.cmr.view.Location; import org.alfresco.service.cmr.view.Location;
import org.alfresco.util.ParameterCheck;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@@ -187,6 +188,8 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
@Override @Override
public void register(DataSet dataSet) public void register(DataSet dataSet)
{ {
ParameterCheck.mandatory("dataSet", dataSet);
this.dataSets.put(dataSet.getId(), dataSet); this.dataSets.put(dataSet.getId(), dataSet);
} }
@@ -206,6 +209,9 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
@Override @Override
public void loadDataSet(String dataSetId, NodeRef filePlan) public void loadDataSet(String dataSetId, NodeRef filePlan)
{ {
ParameterCheck.mandatoryString("dataSetId", dataSetId);
ParameterCheck.mandatory("filePlan", filePlan);
// Get the data set // Get the data set
DataSet dataSet = getDataSets().get(dataSetId); DataSet dataSet = getDataSets().get(dataSetId);
@@ -224,10 +230,7 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
importerService.importView(viewReader, location, null, null); importerService.importView(viewReader, location, null, null);
// Patch data // Patch data
DataSetServiceImpl.patchLoadedData(searchService, nodeService, recordsManagementService, patchLoadedData();
recordsManagementActionService, permissionService, authorityService,
recordsManagementSecurityService, recordsManagementSearchBehaviour,
dispositionService);
} }
/** /**
@@ -238,13 +241,7 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
* @param recordsManagementService * @param recordsManagementService
* @param recordsManagementActionService * @param recordsManagementActionService
*/ */
private static void patchLoadedData(final SearchService searchService, private void patchLoadedData()
final NodeService nodeService, final RecordsManagementService recordsManagementService,
final RecordsManagementActionService recordsManagementActionService,
final PermissionService permissionService, final AuthorityService authorityService,
final RecordsManagementSecurityService recordsManagementSecurityService,
final RecordsManagementSearchBehaviour recordManagementSearchBehaviour,
final DispositionService dispositionService)
{ {
AuthenticationUtil.RunAsWork<Object> runAsWork = new AuthenticationUtil.RunAsWork<Object>() AuthenticationUtil.RunAsWork<Object> runAsWork = new AuthenticationUtil.RunAsWork<Object>()
{ {
@@ -349,7 +346,7 @@ public class DataSetServiceImpl implements DataSetService, RecordsManagementMode
// fixup the search behaviour aspect for the record folder // fixup the search behaviour aspect for the record folder
logger.info("Setting up search aspect for record folder: " + folderName); logger.info("Setting up search aspect for record folder: " + folderName);
recordManagementSearchBehaviour.fixupSearchAspect(recordFolder); recordsManagementSearchBehaviour.fixupSearchAspect(recordFolder);
} }
} }
finally 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);
}
} }

View File

@@ -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."); 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 // Resolve RM site
String siteName = req.getParameter(ARG_SITE_NAME); String siteName = req.getParameter(ARG_SITE_NAME);
@@ -71,6 +76,7 @@ public class DataSetPost extends DeclarativeWebScript implements RecordsManageme
siteName = RmSiteType.DEFAULT_SITE_NAME; siteName = RmSiteType.DEFAULT_SITE_NAME;
} }
// Check the site if it exists
if (siteService.getSite(siteName) == null) if (siteService.getSite(siteName) == null)
{ {
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "A Records Management site with the name '" 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); TYPE_FILE_PLAN, null);
} }
// Load data set in to the file plan
dataSetService.loadDataSet(dataSetId, filePlan); dataSetService.loadDataSet(dataSetId, filePlan);
Map<String, Object> model = new HashMap<String, Object>(1, 1.0f); Map<String, Object> model = new HashMap<String, Object>(1, 1.0f);

View File

@@ -1,17 +1,15 @@
package org.alfresco.module.org_alfresco_module_rm.script; package org.alfresco.module.org_alfresco_module_rm.script;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.alfresco.module.org_alfresco_module_rm.dataset.DataSet; import org.alfresco.module.org_alfresco_module_rm.dataset.DataSet;
import org.alfresco.module.org_alfresco_module_rm.dataset.DataSetService; 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.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript; import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.extensions.webscripts.WebScriptRequest;
public class DataSetsGet extends DeclarativeWebScript public class DataSetsGet extends DeclarativeWebScript
@@ -38,33 +36,23 @@ public class DataSetsGet extends DeclarativeWebScript
@Override @Override
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache) protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache)
{ {
try Map<String, DataSet> dataSets = dataSetService.getDataSets();
{ List<Map<String, String>> dataSetList = new ArrayList<Map<String, String>>(dataSets.size());
JSONObject data = new JSONObject();
JSONArray dataSets = new JSONArray();
for (Map.Entry<String, DataSet> entry : dataSetService.getDataSets().entrySet()) for (Map.Entry<String, DataSet> entry : dataSets.entrySet())
{ {
Map<String, String> dataSet = new HashMap<String, String>(2);
DataSet value = entry.getValue(); DataSet value = entry.getValue();
JSONObject dataSet = new JSONObject();
dataSet.put("label", value.getLabel()); dataSet.put("label", value.getLabel());
dataSet.put("id", value.getId()); dataSet.put("id", value.getId());
dataSets.put(dataSet); dataSetList.add(dataSet);
} }
data.put("datasets", dataSets); Map<String, Object> model = new HashMap<String, Object>(1);
model.put("datasets", dataSetList);
Map<String, Object> model = new HashMap<String, Object>(1, 1.0f);
model.put("data", data.toString());
return model; return model;
} }
catch (JSONException error)
{
throw new WebScriptException(Status.STATUS_BAD_REQUEST,
"Cannot convert data set details into JSON.", error);
}
}
} }