通过Adobe Experience Manager

时间:2017-02-28 17:55:01

标签: java jsp aem crx

我是Adobe Experience Manager的新手。我的任务是从数据库中检索未使用的图像列表,并需要通过UI删除它。

我已经给出了一个显示未使用图像列表的Select查询。谷歌搜索后,我有一个想法是如何在adobe体验管理器中使用QueryBuilder,但我不知道在下面的代码中将此选择查询放在何处。

SQLQuery = "Select * from [nt:file] 
            where isdesplay([/home/cam/Bwits/master/images/top_images]) 
            and NAME() LIKE 'cq5dam.thumbnail.140.100.png'";

以下代码也是我从adobe支持网站获得的。对于普通的Jsp我知道如何检索文件列表,但现在在JSP中使用adobe(AEM)api不知道

I found some code an adobe help blog that is how to delete a node or folder from jsp.

  如何在CQ创作环境中从JSP中删除内容节点

通过AJAX调用删除

要删除的节点路径:     (例如'/ content / testdelete / deletePage1')
  字符集:   
  命令:   
  强制删除:    (真/假)
  

   

  <div id=”respText”></div>

    

function performDelete() {
    var response = null;
    var url = “/bin/wcmcommand”;

    var pathObj= document.getElementById(‘pathAJ’);

    if(pathObj)
    {

         var params = “path=”+encodeURIComponent(pathObj.value)+”&_charset_=utf-8&cmd=deletePage&force=false”;
         var request = document.all ? new ActiveXObject(“Microsoft.XMLHTTP”) : new XMLHttpRequest();
        //alert(params);
         request.open(“post”, url, false);
         request.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);
         request.send(params);
        var resp= request.responseText;

        document.getElementById(‘respText’).innerHTML=resp;

    }
    }                               
    </script>  
</HTML>

现在我必须在SQL Query的帮助下获取节点列表,并且需要一次从该JSP中删除这些节点。

请建议我在哪里放置sql查询以从数据库中检索图像列表。 感谢您提前合作

1 个答案:

答案 0 :(得分:2)

正如其他人所指出的,有几个论坛(主要是Adobe)的帖子有各种方法来解决这个问题。但是,本着多样性和丰富SO的精神,我认为这个问题需要一个新的答案。

  

以下解决方案基于JS,但没有理由不能在Java,Ruby,bash(使用CURL)或PowerShell等任何其他语言中实现此逻辑。此外,此方法不适用于从CSS和JS文件引用的DAM资产。

以geometrixx OOTB DAM库为例,考虑大部分资产都在/content/dam/geometrixxx文件夹下

您需要构建一个递归迭代循环,以一次一个级别的线性方式遍历DAM库。这可以使用以下逻辑完成:

第1步:确认

使用以下HTTP调用获取内容的根级文件夹结构:

http://localhost:4502/content/dam/geometrixx.1.json

这将返回如下内容:

{
   "jcr:primaryType":"sling:OrderedFolder",
   "jcr:mixinTypes":[
      "rep:AccessControllable"
   ],
   "jcr:createdBy":"admin",
   "jcr:title":"Geometrixx",
   "jcr:created":"Mon Feb 27 2017 13:54:20 GMT+0000",
   "portraits":{
      "jcr:primaryType":"sling:OrderedFolder",
      "jcr:createdBy":"admin",
      "jcr:title":"Portraits",
      "jcr:created":"Mon Feb 27 2017 13:54:20 GMT+0000"
   },
   "drm":{
      "jcr:primaryType":"sling:OrderedFolder",
      "jcr:createdBy":"admin",
      "jcr:created":"Mon Feb 27 2017 13:54:20 GMT+0000"
   },
   "banners":{
      "jcr:primaryType":"sling:OrderedFolder",
      "jcr:createdBy":"admin",
      "jcr:title":"Banners",
      "jcr:created":"Mon Feb 27 2017 13:54:20 GMT+0000"
   }
}

第2步:迭代

递归遍历此结构,直到您到达项目的DAM资产。例如,你在迭代:http://localhost:4502/content/dam/geometrixx/banners.1.json时会得到类似的东西:

{
   "jcr:primaryType":"sling:OrderedFolder",
   "jcr:createdBy":"admin",
   "jcr:title":"Banners",
   "jcr:created":"Mon Feb 27 2017 13:54:20 GMT+0000",
   "banner-mono.png":{
      "jcr:primaryType":"dam:Asset",
      "jcr:createdBy":"admin",
      "jcr:created":"Mon Feb 27 2017 13:54:20 GMT+0000"
   },
   "banner-retro.png":{
      "jcr:primaryType":"dam:Asset",
      "jcr:createdBy":"admin",
      "jcr:created":"Mon Feb 27 2017 13:54:20 GMT+0000"
   },
   "banner-web20.png":{
      "jcr:primaryType":"dam:Asset",
      "jcr:createdBy":"admin",
      "jcr:created":"Mon Feb 27 2017 13:54:20 GMT+0000"
   }
}

因此,关键逻辑是获取文件夹节点的子节点并处理所有dam:Asset节点。

第3步:查找参考资料

点击DAM资产后,您可以使用内置的参考查找器 http://localhost:4502/bin/wcm/references.json?path=找到参考文献。

例如,使用如下的参考实用程序:

http://localhost:4502/bin/wcm/references.json?path=/content/dam/geometrixx/banners/techsummit.jpg

将为您提供以下所有引用:

    {
   "pages":[
      {
         "srcPath":"/content/dam/geometrixx/banners/techsummit.jpg",
         "srcTitle":"Tech Summit",
         "path":"/content/geometrixx/en/events/techsummit",
         "title":"TechSummit",
         "references":[
            "/content/geometrixx/en/events/techsummit/jcr:content/image/fileReference",
            "/content/geometrixx/en/events/techsummit/jcr:content/par/image/fileReference"
         ],
         "published":false,
         "isPage":"true"
      }
   ]
}

任何空的pages数组都是未使用资产的资产。

第4步:删除

删除只是节点路径上的HTTP DELETE请求。例如,如果要删除/content/dam/geometrixx/banners/techsummit.jpg DAM资产,则只需在以下位置发送HTTP DELETE请求:

http://localhost:4502/content/dam/geometrixx/banners/techsummit.jpg

它的内容将被删除。