Transpiled version (15053L) is out of date.
1 | static <A extends Concept> A nuLike findConceptWhereCI(Class<A> c, O... params) {
|
2 | ret findConceptWhereCI(db_mainConcepts(), c, params); |
3 | } |
4 | |
5 | static <A extends Concept> A findConceptWhereCI(Concepts concepts, Class<A> c, O... params) {
|
6 | params = expandParams(c, params); |
7 | |
8 | // find smallest index to use |
9 | new Lowest<IF0<Cl<A>>> bestIndex; |
10 | |
11 | if (concepts.ciFieldIndices != null) |
12 | for ping (int i = 0; i < l(params); i += 2) {
|
13 | O val = params[i+1]; |
14 | IFieldIndex<A, O> index = concepts.getCIFieldIndex(c, (S) params[i]); |
15 | if (index != null) {
|
16 | Cl<A> l = index.getAll(val); |
17 | bestIndex.put(() -> l, l(l)); |
18 | } |
19 | if (concepts.useBackRefsForSearches && val instanceof Concept) {
|
20 | // conservatively use full ref count as score until we store backRefs by class |
21 | bestIndex.put(() -> findBackRefs(val/Concept, c), val/Concept._backRefCount()); |
22 | } |
23 | } |
24 | |
25 | ifdef findConceptWhereCI_debug |
26 | print("findConceptWhereCI bestIndex count=" + bestIndex.score());
|
27 | endifdef |
28 | if (bestIndex.has()) {
|
29 | Cl<A> l = bestIndex!!; |
30 | if (l(params) == 2) ret first(l); // nothing to filter, index should suffice |
31 | for ping (A x : l) |
32 | if (checkConceptFieldsIC(x, params)) ret x; |
33 | null; |
34 | } else {
|
35 | // table scan |
36 | for ping (A x : concepts.list(c)) |
37 | if (checkConceptFieldsIC(x, params)) ret x; |
38 | null; |
39 | } |
40 | } |
41 | |
42 | static Concept findConceptWhereCI(Concepts concepts, S c, O... params) {
|
43 | for ping (Concept x : concepts.list(c)) |
44 | if (checkConceptFieldsIC(x, params)) ret x; |
45 | null; |
46 | } |
Began life as a copy of #1005039
download show line numbers debug dex old transpilations
Travelled to 8 computer(s): bhatertpkbcr, cfunsshuasjs, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, qsqiayxyrbia, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1023276 |
| Snippet name: | findConceptWhereCI - new optimized version |
| Eternal ID of this version: | #1023276/9 |
| Text MD5: | 2034d857522b18c47d2b008736686fcd |
| Author: | stefan |
| Category: | javax / concepts |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-04-29 12:27:42 |
| Source code size: | 1593 bytes / 46 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 553 / 736 |
| Version history: | 8 change(s) |
| Referenced in: | [show references] |