NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

创建基于查询参数的包

  • 2011-08-03
  • 本文字数:1751 字

    阅读完需:约 6 分钟

目录

要求

用户级别

入门级

示例文件

在使用内容管理系统时,我们往往需要根据某些参数提取内容。一种极其常见的用例就是依据最后一次同步的日期或者生产系统中内容的最后修改日期,更新生产中的存储或者开发系统。我们可以通过编写一个简单的组件来轻松解决这个问题,首先查询存储库,并使用搜索结果来在服务器上创建包。

查询存储库

Day OOTB 提供了搜索存储库的组件,例如 http://localhost:4502/libs/cq/search/content/querydebug.hml http://localhost:4502/crx/ui/search.jsp

我们可以根据查询参数进行查询,也可在一次查询中指定 XPath/SQL(例如,搜索在 2010 年 4 月 1 日之后更改的所有内容)。

基于参数的搜索

Onhttp://localhost:4502/libs/cq/search/content/querydebug.html, type the params in the text area below:

http://localhost:4502/libs/cq/search/content/querydebug.html 中,在文本区域内输入以下参数:

复制代码
type=cq:Page
path=/content
daterange.property=jcr:content/cq:lastModified
daterange.lowerBound=2010-04-01
orderby=@jcr:content/cq:lastModified
orderby.index=true
orderby.sort=asc

基于 XPath 的查询

http://localhost:5502/crx/ui/search.jsp 中使用 XPath,如下所示:

复制代码
/jcr:root/content//element(*, cq:Page)
[
(@jcr:content/cq:lastModified > xs:dateTime('2010-04-01T00:00:00.000+05:30'))
]
order by jcr:content/@cq:lastModified

我们还可以创建自己的组件来进行搜素,方法是创建一个基于所传入的属性(参数)的 PredicateGroup,随后即可利用一个生成器对象(使用 predicateGroup 和可用 jcr 会话创建)来创建查询,如下所示:

复制代码
QueryBuilder builder = resource.getResourceResolver().adaptTo(QueryBuilder.class);
Session session = resource.getResourceResolver().adaptTo(Session.class);
String queryParam = request.getParameter(“query”);
Properties props = new Properties();
props.load(new ByteArrayInputStream(queryParam.getBytes(“ISO-8859-1″)));
PredicateGroup root = PredicateConverter.createPredicates(props);
// avoid slow //* queries
if (!root.isEmpty())
{
query = builder.createQuery(root, session);
query.setHitsPerPage(0);
}
<p>SearchResult result = query.getResult();</p>

在 SearchResult 对象中,我们可以提取 Hits (result.getHits),并遍历列表来显示结果。我们可以使用相同的列表来创建包,如下一节所述。

通过节点列表创建包

如果拥有节点列表,就可以通过创建过滤器并使用相同的过滤器来进行 Jcr 包定义,从而轻松创建包:

复制代码
DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
for (Hit hit: hits)
{
PathFilterSet pathFilterSet = new PathFilterSet(hit.getPath());
filter.add(pathFilterSet);
}
JcrPackage jcrPackage = packMgr.create(“testGroup”,”testPackage”);
JcrPackageDefinition jcrPackageDefinition = jcrPackage.getDefinition();
jcrPackageDefinition.setFilter(filter, false);
PrintWriter pkgout = new PrintWriter(System.out);
packMgr.assemble(jcrPackage, new DefaultProgressListener(pkgout));

在执行由组名称为“testGroup”的一个包及其中的一个包构成的组合时,将创建一个“testPackage”包,并可通过包管理器访问。

我已经创建了一个示例组件,方法是扩展创建组名称为 testGroup 的包的默认搜索组件。如果已经存在具有相同名称的包,则将忽略请求,不会覆盖现有包。您可以在这里获得示例组件。

访问 http://servername:port/apps/packages/createPkgWithQuery/createPkg.html ,安装并使用包。您可以使用类似于下面这样的参数:

复制代码
type=cq:Page
path=/content
daterange.property=jcr:content/cq:lastModified
daterange.lowerBound=2010-04-01
orderby=@jcr:content/cq:lastModified
orderby.index=true
orderby.sort=asc

clip_image004

本文遵守知识共享—署名- 非商业性使用- 相同方式共享3.0 Unported License (Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License) 许可条件。

查看原文: Creating packages based on query parameters

2011-08-03 05:15719

评论

发布
暂无评论
发现更多内容

2021MWC上海召开丨5G与千行百业“和合共生”

浪潮云

云计算

修改OpenCV一行代码,提升14%图像匹配效果

Smile

机器学习 OpenCV Python Turtle 图像处理

设计模式之代理模式

Geek_7cf491

Java 设计模式 代理模式

关于MVCC,我之前写错了,这次我改好了!

艾小仙

Java MySQL 数据库 面试 MVCC

保持前进

Nydia

将上周写的用例画成流程图-第四章,第三讲

mas

jupyter在加载pkl文件时报错ModuleNotFoundError: No module named 'pandas.core.internals.managers'; '的解决方法

无极限

Python Jupyter Notebook jupyter

浅谈Python中遇到extend和append,该怎么区别使用

莫陌默

Python 列表 函数

程序员成长第十五篇:编码的注意事项

石云升

程序员 28天写作 2月春节不断更

Python入门-位运算

123568

Python 入门 位运算

容器 & 服务:Docker应用的Jenkins构建

程序员架构进阶

Docker 容器 七日更 28天写作 2月春节不断更

程序员的职业生涯与赛道选择

刘旭东

职业规划 码农 职业生涯

工作中当你感觉焦虑的时候,该怎么办?

一笑

28天写作

得不到的永远在骚动——蔡格尼克效应

Justin

心理学 习惯养成 28天写作 游戏设计

(28DW-S8-Day4) 区块链里面2个核心问题

mtfelix

28天写作

日记 2021年2月24日(周三)

Changing Lin

2月春节不断更

设计模式【2.2】-- 工厂模式怎么演变成抽象工厂模式?

秦怀杂货店

设计模式 工厂模式 23种设计模式 工厂方法模式

效率工具分享-Quicker

十天、

效率 效率工具 工具 工具软件

Elasticsearch入门,这一篇就够了

知南茶温暖

几个小实践带你快速上手MindSpore

华为云开发者联盟

华为 AI mindspore 智慧终端 端边云

以AI之名 | 给千万级合同管理安上“AI”,华为商务经理工作量大解放!

华为云开发者联盟

人工智能 华为 合同 商务 合同管理

cobra-强大的CLI应用程序库

happlyfox

GitHub cli 28天写作 2月春节不断更 Go 语言

第十三周命题作业

cc

用例画成流程图 - 第四章,第三讲总结

mas

现在与以前的你相遇在此刻,让二种不同的风格,创造未来你自己的手艺吧。

叶小鍵

华云·云场景应用详解|安超DCM给数据中心“做主”

华云数据

第十三周学习心得

cc

索引失效的场景

new life

MySQL 索引性能

电商平台:收货地址

worry

电商平台

Kafka.06 - 数据持久化介绍

insight

kafka 2月春节不断更

windows10+python3.8.0(anaconda)+MeCab安装总结

lauqasim

Python Mecab 日文分词

创建基于查询参数的包_Java_Yogesh Bahuguna_InfoQ精选文章