diff --git a/source/java/org/alfresco/repo/admin/patch/impl/SWSDPPatch.java b/source/java/org/alfresco/repo/admin/patch/impl/SWSDPPatch.java new file mode 100644 index 0000000000..d858c74b71 --- /dev/null +++ b/source/java/org/alfresco/repo/admin/patch/impl/SWSDPPatch.java @@ -0,0 +1,65 @@ +package org.alfresco.repo.admin.patch.impl; + +import org.alfresco.model.ContentModel; +import org.alfresco.repo.admin.patch.AbstractPatch; +import org.alfresco.repo.model.filefolder.HiddenAspect; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.cmr.site.SiteInfo; +import org.alfresco.service.cmr.site.SiteService; +import org.alfresco.service.namespace.RegexQNamePattern; +import org.springframework.extensions.surf.util.I18NUtil; + +public class SWSDPPatch extends AbstractPatch +{ + private static final String MSG_SITE_PATCHED = "patch.swsdpPatch.success"; + private static final String MSG_SKIPPED = "patch.swsdpPatch.skipped"; + private static final String MSG_MISSING_SURFCONFIG = "patch.swsdpPatch.missingSurfConfig"; + + private SiteService siteService; + private HiddenAspect hiddenAspect; + + public void setSiteService(SiteService siteService) + { + this.siteService = siteService; + } + + public void setNodeService(NodeService nodeService) + { + this.nodeService = nodeService; + } + + public void setHiddenAspect(HiddenAspect hiddenAspect) + { + this.hiddenAspect = hiddenAspect; + } + + @Override + protected String applyInternal() throws Exception + { + SiteInfo siteInfo = siteService.getSite("swsdp"); + if(siteInfo != null) + { + NodeRef nodeRef = siteInfo.getNodeRef(); + NodeRef surfConfigNodeRef = nodeService.getChildByName(nodeRef, ContentModel.ASSOC_CONTAINS, "surf-config"); + if(surfConfigNodeRef == null) + { + return I18NUtil.getMessage(MSG_MISSING_SURFCONFIG); + } + else + { + for(ChildAssociationRef childRef : nodeService.getChildAssocs(surfConfigNodeRef, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL)) + { + hiddenAspect.showNode(childRef.getChildRef(), true); + } + } + + return I18NUtil.getMessage(MSG_SITE_PATCHED); + } + else + { + return I18NUtil.getMessage(MSG_SKIPPED); + } + } +} diff --git a/source/java/org/alfresco/repo/model/filefolder/HiddenAspect.java b/source/java/org/alfresco/repo/model/filefolder/HiddenAspect.java index 5b1840c93a..53887b395c 100644 --- a/source/java/org/alfresco/repo/model/filefolder/HiddenAspect.java +++ b/source/java/org/alfresco/repo/model/filefolder/HiddenAspect.java @@ -452,7 +452,7 @@ public class HiddenAspect * aspects if they are present * @return */ - public void checkHidden(FileInfoImpl fileInfo, boolean both) + public HiddenFileInfo checkHidden(FileInfoImpl fileInfo, boolean both) { NodeRef nodeRef = fileInfo.getNodeRef(); HiddenFileInfo hiddenFileInfo = checkHidden(nodeRef, both); @@ -460,6 +460,7 @@ public class HiddenAspect { fileInfo.setHidden(true); } + return hiddenFileInfo; } /**