mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -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"
|
||||||
|
@@ -93,7 +93,7 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent
|
|||||||
|
|
||||||
if (logger.isInfoEnabled() == true)
|
if (logger.isInfoEnabled() == true)
|
||||||
{
|
{
|
||||||
logger.info(" ... completed module patch '" + getName() + "'");
|
logger.info(" ... completed module patch '" + getName() + "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Throwable exception)
|
catch (Throwable exception)
|
||||||
|
@@ -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()
|
||||||
*/
|
*/
|
||||||
@@ -74,19 +89,26 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
|
|||||||
|
|
||||||
if (logger.isDebugEnabled() == true)
|
if (logger.isDebugEnabled() == true)
|
||||||
{
|
{
|
||||||
logger.debug(" ... updating " + savedSearches.size() + " saved searches");
|
logger.debug(" ... updating " + savedSearches.size() + " saved searches");
|
||||||
}
|
}
|
||||||
|
|
||||||
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() + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user