• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

knowledgepixels / nanodash / 18868860701

28 Oct 2025 08:37AM UTC coverage: 13.485% (+0.4%) from 13.1%
18868860701

push

github

tkuhn
feat(MaintainedResource): Add support for resource part views

477 of 4476 branches covered (10.66%)

Branch coverage included in aggregate %.

1255 of 8368 relevant lines covered (15.0%)

0.67 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
src/main/java/com/knowledgepixels/nanodash/component/ViewList.java
1
package com.knowledgepixels.nanodash.component;
2

3
import java.util.List;
4
import java.util.Set;
5

6
import org.apache.wicket.markup.html.WebMarkupContainer;
7
import org.apache.wicket.markup.html.basic.Label;
8
import org.apache.wicket.markup.html.panel.Panel;
9
import org.apache.wicket.markup.repeater.Item;
10
import org.apache.wicket.markup.repeater.data.DataView;
11
import org.apache.wicket.markup.repeater.data.ListDataProvider;
12
import org.eclipse.rdf4j.model.IRI;
13
import org.nanopub.extra.services.QueryRef;
14

15
import com.google.common.collect.ArrayListMultimap;
16
import com.google.common.collect.Multimap;
17
import com.knowledgepixels.nanodash.MaintainedResource;
18
import com.knowledgepixels.nanodash.ResourceView;
19
import com.knowledgepixels.nanodash.Space;
20
import com.knowledgepixels.nanodash.User;
21

22
public class ViewList extends Panel {
23

24
    public ViewList(String markupId, Space space) {
25
        super(markupId);
×
26

27
        add(new DataView<ResourceView>("views", new ListDataProvider<ResourceView>(space.getViews())) {
×
28

29
            @Override
30
            protected void populateItem(Item<ResourceView> item) {
31
                ResourceView view = item.getModelObject();
×
32
                Multimap<String, String> queryRefParams = ArrayListMultimap.create();
×
33
                for (String p : view.getQuery().getPlaceholdersList()) {
×
34
                    String paramName = QueryParamField.getParamName(p);
×
35
                    if (paramName.equals(view.getQueryField())) {
×
36
                        queryRefParams.put(view.getQueryField(), space.getId());
×
37
                        if (QueryParamField.isMultiPlaceholder(p)) {
×
38
                            for (String altId : space.getAltIDs()) {
×
39
                                queryRefParams.put("space", altId);
×
40
                            }
×
41
                        }
42
                    } else if (paramName.equals("user_pubkey") && QueryParamField.isMultiPlaceholder(p)) {
×
43
                        for (IRI userId : space.getUsers()) {
×
44
                            for (String memberHash : User.getUserData().getPubkeyhashes(userId, true)) {
×
45
                                queryRefParams.put("user_pubkey", memberHash);
×
46
                            }
×
47
                        }
×
48
                    } else if (!QueryParamField.isOptional(p)) {
×
49
                        item.add(new Label("view", "<span class=\"negative\">Error: Query has non-optional parameter.</span>").setEscapeModelStrings(false));
×
50
                        return;
×
51
                    }
52
                }
×
53
                QueryRef queryRef = new QueryRef(view.getQuery().getQueryId(), queryRefParams);
×
54
                item.add(QueryResultTable.createComponent("view", queryRef, view, space.getId(), space, 10));
×
55
            }
×
56

57
        });
58

59
        add(new WebMarkupContainer("emptynotice").setVisible(space.getViews().isEmpty()));
×
60
    }
×
61

62
    public ViewList(String markupId, MaintainedResource resource) {
63
        super(markupId);
×
64

65
        final List<ResourceView> views = resource.getTopLevelViews();
×
66
        add(new DataView<ResourceView>("views", new ListDataProvider<ResourceView>(views)) {
×
67

68
            @Override
69
            protected void populateItem(Item<ResourceView> item) {
70
                ResourceView view = item.getModelObject();
×
71
                Multimap<String, String> queryRefParams = ArrayListMultimap.create();
×
72
                for (String p : view.getQuery().getPlaceholdersList()) {
×
73
                    String paramName = QueryParamField.getParamName(p);
×
74
                    if (paramName.equals(view.getQueryField())) {
×
75
                        queryRefParams.put(view.getQueryField(), resource.getId());
×
76
//                        if (QueryParamField.isMultiPlaceholder(p)) {
77
//                            for (String altId : resource.getAltIDs()) {
78
//                                queryRefParams.put("space", altId);
79
//                            }
80
//                        }
81
//                    } else if (paramName.equals("user_pubkey") && QueryParamField.isMultiPlaceholder(p)) {
82
//                        for (IRI userId : resource.getSpace().getUsers()) {
83
//                            for (String memberHash : User.getUserData().getPubkeyhashes(userId, true)) {
84
//                                queryRefParams.put("user_pubkey", memberHash);
85
//                            }
86
//                        }
87
                    } else if (!QueryParamField.isOptional(p)) {
×
88
                        item.add(new Label("view", "<span class=\"negative\">Error: Query has non-optional parameter.</span>").setEscapeModelStrings(false));
×
89
                        return;
×
90
                    }
91
                }
×
92
                QueryRef queryRef = new QueryRef(view.getQuery().getQueryId(), queryRefParams);
×
93
                item.add(QueryResultTable.createComponent("view", queryRef, view, resource.getId(), resource.getSpace(), 10));
×
94
            }
×
95

96
        });
97

98
        add(new WebMarkupContainer("emptynotice").setVisible(views.isEmpty()));
×
99
    }
×
100

101
    public ViewList(String markupId, MaintainedResource resource, String partId, Set<IRI> partClasses) {
102
        super(markupId);
×
103

104
        List<ResourceView> views = resource.getPartLevelViews(partClasses);
×
105
        add(new DataView<ResourceView>("views", new ListDataProvider<ResourceView>(views)) {
×
106

107
            @Override
108
            protected void populateItem(Item<ResourceView> item) {
109
                ResourceView view = item.getModelObject();
×
110
                Multimap<String, String> queryRefParams = ArrayListMultimap.create();
×
111
                for (String p : view.getQuery().getPlaceholdersList()) {
×
112
                    String paramName = QueryParamField.getParamName(p);
×
113
                    if (paramName.equals(view.getQueryField())) {
×
114
                        queryRefParams.put(view.getQueryField(), partId);
×
115
//                        if (QueryParamField.isMultiPlaceholder(p)) {
116
//                            for (String altId : resource.getAltIDs()) {
117
//                                queryRefParams.put("space", altId);
118
//                            }
119
//                        }
120
//                    } else if (paramName.equals("user_pubkey") && QueryParamField.isMultiPlaceholder(p)) {
121
//                        for (IRI userId : resource.getSpace().getUsers()) {
122
//                            for (String memberHash : User.getUserData().getPubkeyhashes(userId, true)) {
123
//                                queryRefParams.put("user_pubkey", memberHash);
124
//                            }
125
//                        }
126
                    } else if (!QueryParamField.isOptional(p)) {
×
127
                        item.add(new Label("view", "<span class=\"negative\">Error: Query has non-optional parameter.</span>").setEscapeModelStrings(false));
×
128
                        return;
×
129
                    }
130
                }
×
131
                QueryRef queryRef = new QueryRef(view.getQuery().getQueryId(), queryRefParams);
×
132
                item.add(QueryResultTable.createComponent("view", queryRef, view, resource.getId(), resource.getSpace(), 10));
×
133
            }
×
134

135
        });
136

137
        add(new WebMarkupContainer("emptynotice").setVisible(views.isEmpty()));
×
138
    }
×
139

140

141
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc