RM-1078: RMv2SavedSearchPatch is not applying if save a search befare upgrade

* saved search patch no longer hangs when moving from 3.4 to 2.1



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@56859 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2013-10-22 04:46:21 +00:00
parent dd6fe100ee
commit 119bacb027
5 changed files with 52 additions and 15 deletions

View File

@@ -81,6 +81,7 @@
<property name="appliesFromVersion" value="2.0"/> <property name="appliesFromVersion" value="2.0"/>
<property name="recordsManagementSearchService" ref="RecordsManagementSearchService" /> <property name="recordsManagementSearchService" ref="RecordsManagementSearchService" />
<property name="siteService" ref="SiteService" /> <property name="siteService" ref="SiteService" />
<property name="contentService" ref="ContentService"/>
</bean> </bean>
<bean id="org_alfresco_module_rm_RMv21InPlacePatch" <bean id="org_alfresco_module_rm_RMv21InPlacePatch"

View File

@@ -20,10 +20,14 @@ package org.alfresco.module.org_alfresco_module_rm.patch;
import java.util.List; import java.util.List;
import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService; import org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService;
import org.alfresco.module.org_alfresco_module_rm.search.SavedSearchDetails; import org.alfresco.module.org_alfresco_module_rm.search.SavedSearchDetails;
import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteService;
import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.BeanNameAware;
@@ -45,6 +49,9 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
/** Site service */ /** Site service */
private SiteService siteService; private SiteService siteService;
/** Content service */
private ContentService contentService;
/** /**
* @param recordsManagementSearchService records management search service * @param recordsManagementSearchService records management search service
*/ */
@@ -61,6 +68,14 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
this.siteService = siteService; this.siteService = siteService;
} }
/**
* @param contentService content service
*/
public void setContentService(ContentService contentService)
{
this.contentService = contentService;
}
/** /**
* @see org.alfresco.repo.module.AbstractModuleComponent#executeInternal() * @see org.alfresco.repo.module.AbstractModuleComponent#executeInternal()
*/ */
@@ -79,14 +94,21 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
for (SavedSearchDetails savedSearchDetails : savedSearches) for (SavedSearchDetails savedSearchDetails : savedSearches)
{ {
// re-save each search so that the query is regenerated correctly // refresh the query
recordsManagementSearchService.deleteSavedSearch(RM_SITE_ID, savedSearchDetails.getName()); String refreshedJSON = savedSearchDetails.toJSONString();
recordsManagementSearchService.saveSearch(RM_SITE_ID, NodeRef nodeRef = savedSearchDetails.getNodeRef();
savedSearchDetails.getName(),
savedSearchDetails.getDescription(), if (nodeRef != null)
savedSearchDetails.getSearch(), {
savedSearchDetails.getSearchParameters(), ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
savedSearchDetails.isPublic()); writer.putContent(refreshedJSON);
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... updated saved search " + savedSearchDetails.getName() + " (nodeRef=" + nodeRef.toString() + ")");
}
}
} }
} }
} }

View File

@@ -402,7 +402,7 @@ public class RecordsManagementSearchServiceImpl implements RecordsManagementSear
{ {
ContentReader reader = fileFolderService.getReader(searchNode); ContentReader reader = fileFolderService.getReader(searchNode);
String jsonString = reader.getContentString(); String jsonString = reader.getContentString();
SavedSearchDetails savedSearchDetails = SavedSearchDetails.createFromJSON(jsonString, namespaceService, this); SavedSearchDetails savedSearchDetails = SavedSearchDetails.createFromJSON(jsonString, namespaceService, this, searchNode);
searches.add(savedSearchDetails); searches.add(savedSearchDetails);
} }
@@ -428,7 +428,7 @@ public class RecordsManagementSearchServiceImpl implements RecordsManagementSear
String jsonString = reader.getContentString(); String jsonString = reader.getContentString();
// create the saved search details // create the saved search details
result = SavedSearchDetails.createFromJSON(jsonString, namespaceService, this); result = SavedSearchDetails.createFromJSON(jsonString, namespaceService, this, searchNode);
} }
return result; return result;

View File

@@ -20,6 +20,7 @@ package org.alfresco.module.org_alfresco_module_rm.search;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.util.ParameterCheck; import org.alfresco.util.ParameterCheck;
import org.json.JSONException; import org.json.JSONException;
@@ -101,6 +102,9 @@ public class SavedSearchDetails extends ReportDetails
/** Indicates whether the saved search is a report */ /** Indicates whether the saved search is a report */
private boolean isReport = false; private boolean isReport = false;
/** Helper method to link to search node ref if provided */
private NodeRef nodeRef = null;
/** Namespace service */ /** Namespace service */
NamespaceService namespaceService; NamespaceService namespaceService;
@@ -115,7 +119,7 @@ public class SavedSearchDetails extends ReportDetails
* @param jsonString * @param jsonString
* @return * @return
*/ */
/*package*/ static SavedSearchDetails createFromJSON(String jsonString, NamespaceService namespaceService, RecordsManagementSearchServiceImpl searchService) /*package*/ static SavedSearchDetails createFromJSON(String jsonString, NamespaceService namespaceService, RecordsManagementSearchServiceImpl searchService, NodeRef nodeRef)
{ {
try try
{ {
@@ -197,7 +201,9 @@ public class SavedSearchDetails extends ReportDetails
} }
// Create the saved search details object // Create the saved search details object
return new SavedSearchDetails(siteId, name, description, query, searchParameters, isPublic, isReport, namespaceService, searchService); SavedSearchDetails savedSearchDetails = new SavedSearchDetails(siteId, name, description, query, searchParameters, isPublic, isReport, namespaceService, searchService);
savedSearchDetails.nodeRef = nodeRef;
return savedSearchDetails;
} }
catch (JSONException exception) catch (JSONException exception)
{ {
@@ -265,10 +271,18 @@ public class SavedSearchDetails extends ReportDetails
return compatibility; return compatibility;
} }
/**
* @return NodeRef search node ref, null if not set
*/
public NodeRef getNodeRef()
{
return nodeRef;
}
/** /**
* @return * @return
*/ */
/*package*/ String toJSONString() public String toJSONString()
{ {
try try
{ {