Page History
This section provides three sets of sample code to demonstrate some scenarios with the query tool. The codes may not be executable or return a correct result. They are just examples to show you how to use the Query tool and how it works.
(i) Example 1
Print any classes whose containing in package com.nomagic.reportwizard.
Without QueryTool:
...
Code Block | ||
---|---|---|
| ||
#foreach ($c in $Class) |
...
#if ($c.qualifiedName. |
...
startsWith("com.nomagic.reportwizard")) |
...
$c.name |
...
#end |
...
#end |
With QueryTool:
Code Block | ||
---|---|---|
| ||
#import("query", "com.nomagic.reportwizard.tools.QueryTool")
#foreach ($c in $query.get("class[qualifiedName^=com.nomagic.reportwizard]"))
$c.name
#end |
(ii) Example 2
Print any classes whose containing in model Design and name ends with Bean.
Without QueryTool:
Code Block | ||
---|---|---|
| ||
#set ($match = false)
#macro (recursiveCheck $e)
#if ($e.elementType == "model" && e.name == "Design")
#set ($match = true)
#else
#recursiveCheck($e.owner)
#end
#end
#foreach ($c in $Class)
#set ($match = false)
#recursiveCheck($c)
#if ($check)
#if ($c.name.endsWith("Bean"))
$c.name
#end
#end
#end |
With QueryTool:
Code Block | ||
---|---|---|
| ||
#import("query", "com.nomagic.reportwizard.tools.QueryTool")
#foreach ($c in $query.get("model[name=Design] class[name$=Bean]"))
$c.name
#end |
(iii) Example 3
Matches any property element which owner element is class whose name attributes value is exactly equal to foo.
Without QueryTool:
Code Block | ||
---|---|---|
| ||
#foreach ($p in $Property)
#set ($owner = $p.owner)
#if ($owner.elementType == "class" && $owner.name == "foo")
$p.name
#end
#end |
With QueryTool:
Code Block | ||
---|---|---|
| ||
#import("query", "com.nomagic.reportwizard.tools.QueryTool")
#foreach ($p in $query.get("class[name=foo] > property"))
$p.name
#end |
...