Download - ATG Advanced RQL
![Page 1: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/1.jpg)
ATG RQLRepository Query Language
![Page 2: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/2.jpg)
RQL
generic language for formulating queries that map to any repository implementation, such as SQL or LDAP.
![Page 3: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/3.jpg)
Multi-Valued Property Queries
• interests INCLUDES "biking“
• interests INCLUDES ANY { "biking", "swimming" }
• interests INCLUDES ALL { "biking", "swimming" }
• addresses INCLUDES ITEM (zip = "48322" AND state = "MI")
![Page 4: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/4.jpg)
RQL RANGE
• age > 30 RANGE +10
• age > 30 RANGE 10+
• age > 30 RANGE 40+10
![Page 5: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/5.jpg)
atg.repository.QueryBuilder
defines the available query operations
build Query objects
![Page 6: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/6.jpg)
ComparisonQuery
RepositoryView userView = getRepository().getItemDescriptor(USER).getRepositoryView();
QueryBuilder userBuilder = userView.getQueryBuilder();
QueryExpression userType = userBuilder.createPropertyQueryExpression(USER_TYPE);
QueryExpression two = userBuilder.createConstantQueryExpression(USER_TYPE_2);
Query userTypeIsTwo = userBuilder.createComparisonQuery(userType, two, QueryBuilder.EQUALS);
RepositoryItem[] answer = userView.executeQuery(userTypeIsTwo);
![Page 7: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/7.jpg)
PatternMatchQuery
RepositoryView employeeView = getRepository().getView(USER);
QueryBuilder queryBuilder = employeeView.getQueryBuilder();
QueryExpression propertyExpression = queryBuilder.createPropertyQueryExpression(“login”);
QueryExpression valueExpression = queryBuilder.createConstantQueryExpression(“name”);
Query accountQuery = queryBuilder.createPatternMatchQuery(propertyExpression, valueExpression, QueryBuilder.CONTAINS);
RepositoryItem[] repositoryItems = employeeView.executeQuery(accountQuery);
![Page 8: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/8.jpg)
IncludesQuery
RepositoryView employeeView = getRepository().getView(USER);
QueryBuilder queryBuilder = employeeView.getQueryBuilder();
QueryExpression propertyExpression = queryBuilder.createPropertyQueryExpression("user_id");
QueryExpression valueExpression = queryBuilder.createConstantQueryExpression(ids);
Query employeeQuery = queryBuilder.createIncludesQuery(valueExpression, propertyExpression);
RepositoryItem[] repositoryItems = employeeView.executeQuery(employeeQuery);
![Page 9: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/9.jpg)
Complex QueryRepositoryView userView = getRepository().getItemDescriptor(USER).getRepositoryView();
QueryBuilder userBuilder = userView.getQueryBuilder();
QueryExpression userType = userBuilder.createPropertyQueryExpression("userType");
QueryExpression two = userBuilder.createConstantQueryExpression(2);
Query userTypeLTTwo = userBuilder.createComparisonQuery(userType, two, QueryBuilder.LESS_THAN);
QueryExpression login = userBuilder.createPropertyQueryExpression("login");
QueryExpression j = userBuilder.createConstantQueryExpression("j");
Query startsWithJ = userBuilder.createPatternMatchQuery(login, j, QueryBuilder.STARTS_WITH);
Query[] pieces = { userTypeLTTwo, startsWithJ };
Query andQuery = userBuilder.createAndQuery(pieces);
RepositoryItem[] answer = userView.executeQuery(andQuery);
![Page 10: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/10.jpg)
atg.repository.QueryOptions
let you limit the size of the result set, direct how the result set should be sorted,
precache specified properties
![Page 11: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/11.jpg)
QueryOptions
RepositoryView view = getRepository().getView(USER);
Query query = view.getQueryBuilder().createUnconstrainedQuery();
String[] precachedPropertyNames = { "login", "password" };
SortDirectives sortDirectives = new SortDirectives();
sortDirectives.addDirective(new SortDirective( "login", SortDirective.DIR_ASCENDING));
RepositoryItem[] items = view.executeQuery(query, new QueryOptions(0, 5, sortDirectives, precachedPropertyNames));
![Page 12: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/12.jpg)
atg.repository.rql.RqlStatementRepositoryView view = getRepository().getView(USER);
RqlStatement statement = RqlStatement.parseRqlStatement("lastName STARTS WITH ?0");
Object params[] = { new String("m") };
RepositoryItem items[] = statement.executeQuery(view, params);
![Page 13: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/13.jpg)
Operation tags
<add-item>
<update-item><remove-item>
to add or update or remove items
<export-items><import-items>
to export and import items
<print-item> to print item
<transaction>
to maintain transactions while adding or removing items.
![Page 14: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/14.jpg)
Generate DDL
<print-ddl/>
• bin\startSQLRepository -m <module-name> -repository /atg/commerce/catalog/ProductCatalog -outputSQLFile product_catalog.sql
startSQLRepository
![Page 15: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/15.jpg)
To check what items are in cache
<dump-caches item-descriptors="skuSpecialPriceRules" dump-type="both"/>
![Page 16: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/16.jpg)
Querying using date or timestamp by using RQLdate <query-items item-descriptor="order">
creationDate>
date("2011-10-10") and state="SUBMITTED" </query-items>
Timestamp
<query-items item-descriptor="order"> creationDate>
date("2011-10-10 10:00:00 EST") and state="SUBMITTED"
</query-items>
![Page 17: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/17.jpg)
How to get sysdate in RQL named query?
![Page 18: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/18.jpg)
Repository filtering
• Use the <rql-filter> tag in the definition file for an item descriptor.
• Set the filterQuery property of the item descriptor to a Query object.
• Set the rqlFilterString property of the item descriptor to an RQL string, which is compiled into the Query object that defines the filter.
![Page 19: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/19.jpg)
<rql-filter>
<item-descriptor name="article">
<rql-filter>
<rql>name starts with ?0 or availabilityDate < ?1</rql>
<param value="n"></param>
<param bean="/myApp.IssueDate"></param>
</rql-filter>
<table name="article" id-column-names="article_id">
<property name="name" />
<property name="date" />
</table>
</item-descriptor>
![Page 20: ATG Advanced RQL](https://reader036.vdocument.in/reader036/viewer/2022082502/554f6683b4c9058a148b4b70/html5/thumbnails/20.jpg)
QUESTIONS?