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

IQSS / dataverse / #24512

10 Feb 2025 11:15PM CUT coverage: 22.749% (-0.01%) from 22.762%
#24512

push

github

web-flow
Merge pull request #10906 from IQSS/6467-optimize-permission-lookups-for-a-user

Optimize permission lookups for a user

0 of 65 new or added lines in 5 files covered. (0.0%)

1 existing line in 1 file now uncovered.

19950 of 87697 relevant lines covered (22.75%)

0.23 hits per line

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

0.0
/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/GetUserPermittedCollectionsCommand.java
1
package edu.harvard.iq.dataverse.engine.command.impl;
2

3
import edu.harvard.iq.dataverse.Dataverse;
4
import edu.harvard.iq.dataverse.DvObject;
5
import edu.harvard.iq.dataverse.authorization.Permission;
6
import edu.harvard.iq.dataverse.authorization.groups.impl.ipaddress.ip.IpAddress;
7
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
8
import edu.harvard.iq.dataverse.engine.command.AbstractCommand;
9
import edu.harvard.iq.dataverse.engine.command.CommandContext;
10
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
11
import edu.harvard.iq.dataverse.engine.command.RequiredPermissions;
12
import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
13
import jakarta.json.Json;
14
import jakarta.json.JsonArrayBuilder;
15
import jakarta.json.JsonObjectBuilder;
16

17
import java.util.List;
18
import java.util.logging.Logger;
19

20
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.json;
21

22
@RequiredPermissions({})
23
public class GetUserPermittedCollectionsCommand extends AbstractCommand<JsonObjectBuilder> {
NEW
24
    private static final Logger logger = Logger.getLogger(GetUserPermittedCollectionsCommand.class.getCanonicalName());
×
25

26
    private DataverseRequest request;
27
    private AuthenticatedUser user;
28
    private String permission;
29
    public GetUserPermittedCollectionsCommand(DataverseRequest request, AuthenticatedUser user, String permission) {
NEW
30
        super(request, (DvObject) null);
×
NEW
31
        this.request = request;
×
NEW
32
        this.user = user;
×
NEW
33
        this.permission = permission;
×
NEW
34
    }
×
35

36
    @Override
37
    public JsonObjectBuilder execute(CommandContext ctxt) throws CommandException {
NEW
38
        if (user == null) {
×
NEW
39
            throw new CommandException("User not found.", this);
×
40
        }
41
        int permissionBit;
42
        try {
NEW
43
            permissionBit = permission.equalsIgnoreCase("any") ?
×
NEW
44
                    Integer.MAX_VALUE : (1 << Permission.valueOf(permission).ordinal());
×
NEW
45
        } catch (IllegalArgumentException e) {
×
NEW
46
            throw new CommandException("Permission not valid.", this);
×
NEW
47
        }
×
NEW
48
        List<Dataverse> collections = ctxt.permissions().findPermittedCollections(request, user, permissionBit);
×
NEW
49
        if (collections != null) {
×
NEW
50
            JsonObjectBuilder job = Json.createObjectBuilder();
×
NEW
51
            JsonArrayBuilder jab = Json.createArrayBuilder();
×
NEW
52
            for (Dataverse dv : collections) {
×
NEW
53
                jab.add(json(dv));
×
NEW
54
            }
×
NEW
55
            job.add("count", collections.size());
×
NEW
56
            job.add("items", jab);
×
NEW
57
            return job;
×
58
        }
NEW
59
        return null;
×
60
    }
61
}
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

© 2025 Coveralls, Inc