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

knowledgepixels / nanodash / 18222607513

03 Oct 2025 12:44PM UTC coverage: 14.137% (+0.4%) from 13.699%
18222607513

push

github

tkuhn
feat(Spaces): Set SPACE query param for pinned queries and views

453 of 4116 branches covered (11.01%)

Branch coverage included in aggregate %.

1199 of 7570 relevant lines covered (15.84%)

0.71 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/QueryItem.java
1
package com.knowledgepixels.nanodash.component;
2

3
import com.knowledgepixels.nanodash.GrlcQuery;
4
import com.knowledgepixels.nanodash.User;
5
import com.knowledgepixels.nanodash.Utils;
6
import com.knowledgepixels.nanodash.page.QueryPage;
7

8
import org.apache.wicket.markup.html.WebMarkupContainer;
9
import org.apache.wicket.markup.html.basic.Label;
10
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
11
import org.apache.wicket.markup.html.panel.Panel;
12
import org.apache.wicket.request.mapper.parameter.PageParameters;
13
import org.eclipse.rdf4j.model.IRI;
14
import org.nanopub.SimpleTimestampPattern;
15
import org.nanopub.extra.security.NanopubSignatureElement;
16
import org.nanopub.extra.security.SignatureUtils;
17
import org.slf4j.Logger;
18
import org.slf4j.LoggerFactory;
19

20
import java.text.SimpleDateFormat;
21
import java.util.Calendar;
22

23
/**
24
 * A panel representing a single query item in a list.
25
 * Displays the query label as a link, the user who created it, and the creation timestamp.
26
 */
27
public class QueryItem extends Panel {
28

29
    private static final Logger logger = LoggerFactory.getLogger(QueryItem.class);
×
30

31
    /**
32
     * Constructor.
33
     *
34
     * @param id    the Wicket id for this panel
35
     * @param query the GrlcQuery object containing query details
36
     */
37
    public QueryItem(String id, GrlcQuery query, PageParameters additionalParams, boolean extended) {
38
        super(id);
×
39

40
        PageParameters params = new PageParameters();
×
41
        params.add("id", query.getQueryId());
×
42
        if (additionalParams != null) params.mergeWith(additionalParams);
×
43
        BookmarkablePageLink<Void> l = new BookmarkablePageLink<Void>("querylink", QueryPage.class, params);
×
44
        l.add(new Label("linktext", query.getLabel()));
×
45
        add(l);
×
46

47
        WebMarkupContainer statusPart = new WebMarkupContainer("status");
×
48
        if (extended) {
×
49
            String userString = "somebody";
×
50
            try {
51
                NanopubSignatureElement se = SignatureUtils.getSignatureElement(query.getNanopub());
×
52
                if (se != null) {
×
53
                    IRI signer = (se.getSigners().isEmpty() ? null : se.getSigners().iterator().next());
×
54
                    String pubkeyhash = Utils.createSha256HexHash(se.getPublicKeyString());
×
55
                    userString = User.getShortDisplayNameForPubkeyhash(signer, pubkeyhash);
×
56
                }
57
            } catch (Exception ex) {
×
58
                logger.error("Error retrieving signature info: {}", ex.getMessage());
×
59
            }
×
60
            statusPart.add(new Label("user", userString));
×
61
            String timeString = "unknown date";
×
62
            Calendar c = SimpleTimestampPattern.getCreationTime(query.getNanopub());
×
63
            if (c != null) {
×
64
                timeString = (new SimpleDateFormat("yyyy-MM-dd")).format(c.getTime());
×
65
            }
66
            statusPart.add(new Label("timestamp", timeString));
×
67
        } else {
×
68
            statusPart.setVisible(false);
×
69
        }
70
        add(statusPart);
×
71
    }
×
72

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