Here is the Groovy script to achieve this task:
import org.jahia.api.Constants
import org.jahia.tools.patches.LoggerWrapper
import org.jahia.services.content.JCRCallback
import org.jahia.services.content.JCRNodeWrapper
import org.jahia.services.content.JCRSessionWrapper
import org.jahia.services.content.JCRTemplate
import org.jahia.services.content.JCRPublicationService
import javax.jcr.NodeIterator
import javax.jcr.RepositoryException
import javax.jcr.query.Query
final LoggerWrapper logger = log
final String nodeTypeName = "jnt:externalLink"
final String jUrl = "j:url"
final String jUuid= "jcr:uuid"
final String jNodename = "j:nodename"
final String urlFound
final String nodeName
final String uuid
final String[] urlToFind = ["http://www.google.fr","http://www.google.en"]
final String[] urlToReplace = ["http://www.google.com","http://www.google.com"]
JCRTemplate.getInstance().doExecuteWithSystemSession(null, Constants.EDIT_WORKSPACE, new JCRCallback() {
@Override
Object doInJCR(JCRSessionWrapper session) throws RepositoryException {
final String stmt = "SELECT * FROM [" + nodeTypeName + "] WHERE ISDESCENDANTNODE(&#quot;/sites/covea&#quot;)"
final NodeIterator iteratorSites = session.getWorkspace().getQueryManager().createQuery(stmt, Query.JCR_SQL2).execute().getNodes()
while (iteratorSites.hasNext()) {
JCRNodeWrapper node = iteratorSites.nextNode() as JCRNodeWrapper
urlFound = node.getPropertyAsString(jUrl)
for(i = 0; i < urlToFind.length; i++)
if (urlFound.equals(urlToFind[i]))
{
nodeName = node.getPropertyAsString(jNodename)
uuid = node.getPropertyAsString(jUuid)
node.setProperty(jUrl,urlToReplace[i])
session.save()
JCRPublicationService.getInstance().publishByMainId(uuid)
log.info("URL: "+urlToFind[i]+" of Node name: "+nodeName+" replaced by URL: "+urlToReplace[i]+" in Default and Live workspaces")
}
}
return null
}
})