Hi All,
We have some list of pages in an array and need to remove all those pages from the list.
Ex:
def list =["/content/we-retail/us/en/test1","/content/we-retail/be/en/test1","/content/we-retail/us/en/test2","/content/we-retail/be/en/test2"]
We tried with below code but it is not working.Could you please assist on this asap.
def buildQuery(list)
{
def queryManager = session.workspace.queryManager
def statement = 'SELECT * FROM [nt:unstructured] AS node WHERE ISDESCENDANTNODE (node, "/content/we-retail") and name()=\'' + list+ '\'';
queryManager.createQuery(statement, 'sql')
}
def list =["/content/we-retail/us/en/test1","/content/we-retail/be/en/test1","/content/we-retail/us/en/test2","/content/we-retail/be/en/test2"]
final def query = buildQuery(list)
final def result = query.execute()
if(result.nodes.size()!=0){
result.nodes.each { node ->
if(node.contains(list))
{
node.remove()
save()
println "removed:"+list
}
}
}
Solved! Go to Solution.
Views
Replies
Total Likes
Tried, tested and true --> https://gist.github.com/stillalex/43c49af065e3dd1fd5bf
Hello @gayatrik8153299 ,
If your goal is to remove pages by the paths from the list, you can just iterate through the list with paths, get nodes and remove them (no querying is required):
def list =["/content/we-retail/us/en/test1","/content/we-retail/be/en/test1","/content/we-retail/us/en/test2","/content/we-retail/be/en/test2"]
list.each {
path ->
def node = getNode(path);
node.remove();
println "removed:"+path
}
session.save()
or using Resource API:
def list =["/content/we-retail/us/en/test1","/content/we-retail/be/en/test1","/content/we-retail/us/en/test2","/content/we-retail/be/en/test2"]
list.each {
path ->
Resource resource = resourceResolver.getResource(path);
if (resource != null) {
resourceResolver.delete(resource);
println "removed:"+path
}
}
resourceResolver.commit();
Regards
Tried, tested and true --> https://gist.github.com/stillalex/43c49af065e3dd1fd5bf
Hi,
I would suggest to ues PageManager API insteadof jcr api