Wiki source code of Intersection table of ontology elements
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | {{velocity output="false"}} |
| 2 | #set($ROOT_SPACE = "OntologyElements") | ||
| 3 | |||
| 4 | #set($groups = {}) | ||
| 5 | #set($meta = {}) | ||
| 6 | |||
| 7 | #set($q = "select doc.fullName, doc.space from Document doc where doc.fullName like '${ROOT_SPACE}.%'") | ||
| 8 | #set($rows = $services.query.xwql($q).execute()) | ||
| 9 | |||
| 10 | #foreach($row in $rows) | ||
| 11 | #set($fullName = $row.get(0).toString()) | ||
| 12 | #set($space = $row.get(1).toString()) | ||
| 13 | |||
| 14 | #set($parts = $space.split("\.")) | ||
| 15 | #set($size = $parts.size()) | ||
| 16 | |||
| 17 | #if($size >= 2) | ||
| 18 | #set($lastIndex = $size - 1) | ||
| 19 | #set($pagePart = $parts.get($lastIndex)) | ||
| 20 | |||
| 21 | ## parentSpace | ||
| 22 | #set($parentParts = []) | ||
| 23 | #set($i = 0) | ||
| 24 | #foreach($p in $parts) | ||
| 25 | #if($i < $lastIndex) | ||
| 26 | #set($discard = $parentParts.add($p)) | ||
| 27 | #end | ||
| 28 | #set($i = $i + 1) | ||
| 29 | #end | ||
| 30 | #set($parentSpace = $parentParts.join(".")) | ||
| 31 | |||
| 32 | ## baseName | ||
| 33 | #set($baseName = $pagePart.replaceAll("_\d+$","")) | ||
| 34 | |||
| 35 | #set($key = "${parentSpace}|${baseName}") | ||
| 36 | |||
| 37 | #if(!$groups.containsKey($key)) | ||
| 38 | #set($discard = $groups.put($key, [])) | ||
| 39 | |||
| 40 | #set($m = {}) | ||
| 41 | #set($discard = $m.put("parentSpace", $parentSpace)) | ||
| 42 | #set($discard = $m.put("baseName", $baseName)) | ||
| 43 | #set($discard = $meta.put($key, $m)) | ||
| 44 | #end | ||
| 45 | |||
| 46 | #set($discard = $groups.get($key).add($fullName)) | ||
| 47 | #end | ||
| 48 | #end | ||
| 49 | |||
| 50 | #set($dupKeys = []) | ||
| 51 | #foreach($k in $groups.keySet()) | ||
| 52 | #set($lst = $groups.get($k)) | ||
| 53 | #if($lst.size() > 1) | ||
| 54 | #set($discard = $dupKeys.add($k)) | ||
| 55 | #end | ||
| 56 | #end | ||
| 57 | {{/velocity}} | ||
| 58 | |||
| 59 | {{velocity output="true"}} | ||
| 60 | #if($dupKeys.isEmpty()) | ||
| 61 | {{info}}No duplicates found.{{/info}} | ||
| 62 | #else | ||
| 63 | #set($discard = $dupKeys.sort()) | ||
| 64 | {{info}}Number of duplicate groups found: $dupKeys.size(){{/info}} | ||
| 65 | |||
| 66 | {{html wiki="true" clean="false"}} | ||
| 67 | <table class="xwiki-table"> | ||
| 68 | <thead> | ||
| 69 | <tr> | ||
| 70 | <th>Base name</th> | ||
| 71 | <th>Count</th> | ||
| 72 | <th>Pages</th> | ||
| 73 | <th>Parents</th> | ||
| 74 | </tr> | ||
| 75 | </thead> | ||
| 76 | <tbody> | ||
| 77 | #foreach($k in $dupKeys) | ||
| 78 | #set($info = $meta.get($k)) | ||
| 79 | #set($lst = $groups.get($k)) | ||
| 80 | <tr> | ||
| 81 | <td><code>$info.get("baseName")</code></td> | ||
| 82 | <td>$lst.size()</td> | ||
| 83 | |||
| 84 | <td> | ||
| 85 | #foreach($fn in $lst) | ||
| 86 | <div>[[$fn]]</div> | ||
| 87 | #end | ||
| 88 | </td> | ||
| 89 | |||
| 90 | <td> | ||
| 91 | #foreach($fn in $lst) | ||
| 92 | #set($rdoc = $xwiki.getDocument($fn)) | ||
| 93 | #set($parent = $rdoc.getParent()) | ||
| 94 | #if($parent && $parent != "") | ||
| 95 | <div>[[$parent>>$parent]]</div> | ||
| 96 | #else | ||
| 97 | <div><span style="color:#888;">(empty)</span></div> | ||
| 98 | #end | ||
| 99 | #end | ||
| 100 | </td> | ||
| 101 | |||
| 102 | </tr> | ||
| 103 | #end | ||
| 104 | </tbody> | ||
| 105 | </table> | ||
| 106 | {{/html}} | ||
| 107 | #end | ||
| 108 | {{/velocity}} |