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

@@ -93,7 +93,7 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent
if (logger.isInfoEnabled() == true)
{
logger.info(" ... completed module patch '" + getName() + "'");
logger.info(" ... completed module patch '" + getName() + "'");
}
}
catch (Throwable exception)

View File

@@ -20,10 +20,14 @@ package org.alfresco.module.org_alfresco_module_rm.patch;
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.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService;
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.springframework.beans.factory.BeanNameAware;
@@ -45,6 +49,9 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
/** Site service */
private SiteService siteService;
/** Content service */
private ContentService contentService;
/**
* @param recordsManagementSearchService records management search service
*/
@@ -61,6 +68,14 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
this.siteService = siteService;
}
/**
* @param contentService content service
*/
public void setContentService(ContentService contentService)
{
this.contentService = contentService;
}
/**
* @see org.alfresco.repo.module.AbstractModuleComponent#executeInternal()
*/
@@ -74,19 +89,26 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... updating " + savedSearches.size() + " saved searches");
logger.debug(" ... updating " + savedSearches.size() + " saved searches");
}
for (SavedSearchDetails savedSearchDetails : savedSearches)
{
// re-save each search so that the query is regenerated correctly
recordsManagementSearchService.deleteSavedSearch(RM_SITE_ID, savedSearchDetails.getName());
recordsManagementSearchService.saveSearch(RM_SITE_ID,
savedSearchDetails.getName(),
savedSearchDetails.getDescription(),
savedSearchDetails.getSearch(),
savedSearchDetails.getSearchParameters(),
savedSearchDetails.isPublic());
// refresh the query
String refreshedJSON = savedSearchDetails.toJSONString();
NodeRef nodeRef = savedSearchDetails.getNodeRef();
if (nodeRef != null)
{
ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
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);
String jsonString = reader.getContentString();
SavedSearchDetails savedSearchDetails = SavedSearchDetails.createFromJSON(jsonString, namespaceService, this);
SavedSearchDetails savedSearchDetails = SavedSearchDetails.createFromJSON(jsonString, namespaceService, this, searchNode);
searches.add(savedSearchDetails);
}
@@ -428,7 +428,7 @@ public class RecordsManagementSearchServiceImpl implements RecordsManagementSear
String jsonString = reader.getContentString();
// create the saved search details
result = SavedSearchDetails.createFromJSON(jsonString, namespaceService, this);
result = SavedSearchDetails.createFromJSON(jsonString, namespaceService, this, searchNode);
}
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.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.util.ParameterCheck;
import org.json.JSONException;
@@ -100,6 +101,9 @@ public class SavedSearchDetails extends ReportDetails
/** Indicates whether the saved search is a report */
private boolean isReport = false;
/** Helper method to link to search node ref if provided */
private NodeRef nodeRef = null;
/** Namespace service */
NamespaceService namespaceService;
@@ -115,7 +119,7 @@ public class SavedSearchDetails extends ReportDetails
* @param jsonString
* @return
*/
/*package*/ static SavedSearchDetails createFromJSON(String jsonString, NamespaceService namespaceService, RecordsManagementSearchServiceImpl searchService)
/*package*/ static SavedSearchDetails createFromJSON(String jsonString, NamespaceService namespaceService, RecordsManagementSearchServiceImpl searchService, NodeRef nodeRef)
{
try
{
@@ -197,7 +201,9 @@ public class SavedSearchDetails extends ReportDetails
}
// 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)
{
@@ -265,10 +271,18 @@ public class SavedSearchDetails extends ReportDetails
return compatibility;
}
/**
* @return NodeRef search node ref, null if not set
*/
public NodeRef getNodeRef()
{
return nodeRef;
}
/**
* @return
*/
/*package*/ String toJSONString()
public String toJSONString()
{
try
{