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

knowledgepixels / nanodash / 22618039211

03 Mar 2026 10:05AM UTC coverage: 16.058% (+0.2%) from 15.884%
22618039211

Pull #365

github

web-flow
Merge 1e7e700f0 into a8c4b4a77
Pull Request #365: Refactor of `ResourceWithProfile` and related classes

699 of 5287 branches covered (13.22%)

Branch coverage included in aggregate %.

1721 of 9783 relevant lines covered (17.59%)

2.41 hits per line

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

0.0
src/main/java/com/knowledgepixels/nanodash/page/UserListPage.java
1
package com.knowledgepixels.nanodash.page;
2

3
import java.util.ArrayList;
4
import java.util.List;
5
import java.util.stream.Collectors;
6

7
import com.knowledgepixels.nanodash.domain.IndividualAgent;
8
import org.apache.wicket.markup.html.link.ExternalLink;
9
import org.apache.wicket.request.mapper.parameter.PageParameters;
10
import org.eclipse.rdf4j.model.IRI;
11
import org.nanopub.extra.services.ApiResponseEntry;
12
import org.nanopub.extra.services.QueryRef;
13

14
import com.knowledgepixels.nanodash.QueryApiAccess;
15
import com.knowledgepixels.nanodash.domain.User;
16
import com.knowledgepixels.nanodash.Utils;
17
import com.knowledgepixels.nanodash.component.ItemListElement;
18
import com.knowledgepixels.nanodash.component.ItemListPanel;
19
import com.knowledgepixels.nanodash.component.TitleBar;
20

21
/**
22
 * Page that lists all users and groups.
23
 */
24
public class UserListPage extends NanodashPage {
25

26
    /**
27
     * The mount path for this page.
28
     */
29
    public static final String MOUNT_PATH = "/userlist";
30

31
    /**
32
     * {@inheritDoc}
33
     */
34
    @Override
35
    public String getMountPath() {
36
        return MOUNT_PATH;
×
37
    }
38

39
    /**
40
     * Constructor for the user list page.
41
     *
42
     * @param parameters the page parameters
43
     */
44
    public UserListPage(final PageParameters parameters) {
45
        super(parameters);
×
46

47
        add(new TitleBar("titlebar", this, "users"));
×
48

49
//                final List<Group> groupList = new ArrayList<Group>(Group.getGroups());
50
//                add(new DataView<Group>("groups", new ListDataProvider<Group>(groupList)) {
51
//
52
//                        @Override
53
//                        protected void populateItem(Item<Group> item) {
54
//                                Group g = item.getModelObject();
55
//                                PageParameters params = new PageParameters();
56
//                                params.add("id", g.getIri());
57
//                                BookmarkablePageLink<Void> l = new BookmarkablePageLink<Void>("grouplink", GroupPage.class, params);
58
//                                l.add(new Label("linktext", g.getName()));
59
//                                item.add(l);
60
//                        }
61
//
62
//                });
63

64
        add(new ItemListPanel<IRI>(
×
65
                "topcreators",
66
                "Most Active Nanopublishers Last Month",
67
                new QueryRef(QueryApiAccess.GET_TOP_CREATORS_LAST30D),
68
                (apiResponse) -> {
69
                    List<IRI> users = new ArrayList<>();
×
70
                    for (ApiResponseEntry e : apiResponse.getData()) {
×
71
                        users.add(Utils.vf.createIRI(e.get("userid")));
×
72
                    }
×
73
                    return users;
×
74
                },
75
                (userIri) -> {
76
                    return new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri));
×
77
                }
78
            ));
79

80
        add(new ItemListPanel<IRI>(
×
81
                "latestusers",
82
                "Latest New Users",
83
                new QueryRef(QueryApiAccess.GET_LATEST_USERS),
84
                (apiResponse) -> {
85
                    List<IRI> users = new ArrayList<>();
×
86
                    for (ApiResponseEntry e : apiResponse.getData()) {
×
87
                        users.add(Utils.vf.createIRI(e.get("user")));
×
88
                    }
×
89
                    return users;
×
90
                },
91
                (userIri) -> {
92
                    return new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri));
×
93
                },
94
                User::getShortDisplayName
95
            ));
96

97
        add(new ItemListPanel<IRI>(
×
98
                "approved-human-users",
99
                "Human Users",
100
                User.getUsers(true).stream().filter(iri -> !IndividualAgent.isSoftware(iri)).collect(Collectors.toList()),
×
101
                (userIri) -> {
102
                    return new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri));
×
103
                },
104
                User::getShortDisplayName
105
            ));
106

107
        add(new ItemListPanel<IRI>(
×
108
                "approved-software-agents",
109
                "Software Agents",
110
                User.getUsers(true).stream().filter(IndividualAgent::isSoftware).collect(Collectors.toList()),
×
111
                (userIri) -> {
112
                    return new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri));
×
113
                },
114
                User::getShortDisplayName
115
            ));
116

117
        add(new ItemListPanel<IRI>(
×
118
                "other-users",
119
                "Non-Approved Users",
120
                User.getUsers(false),
×
121
                (userIri) -> {
122
                    return new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri));
×
123
                },
124
                User::getShortDisplayName
125
            ));
126

127
        add(new ExternalLink("approve", PublishPage.MOUNT_PATH + "?template=http://purl.org/np/RA6TVVSnZChEwyxjvFDNAujk1i8sSPnQx60ZQjldtiDkw&template-version=latest", "approve somebody else"));
×
128
        //add(new ExternalLink("newgroup", PublishPage.MOUNT_PATH + "?template=http://purl.org/np/RAJz6w5cvlsFGkCDtWOUXt2VwEQ3tVGtPdy3atPj_DUhk&template-version=latest", "new group"));
129
    }
×
130

131
    /**
132
     * {@inheritDoc}
133
     */
134
    @Override
135
    protected boolean hasAutoRefreshEnabled() {
136
        return true;
×
137
    }
138

139
}
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