-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Expand file tree
/
Copy pathCommonUtils.java
More file actions
74 lines (66 loc) · 2.43 KB
/
CommonUtils.java
File metadata and controls
74 lines (66 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package org.openmetadata.mcp.tools;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.openmetadata.schema.CreateEntity;
import org.openmetadata.schema.entity.teams.Team;
import org.openmetadata.schema.entity.teams.User;
import org.openmetadata.schema.type.EntityReference;
import org.openmetadata.schema.type.Include;
import org.openmetadata.schema.utils.JsonUtils;
import org.openmetadata.service.Entity;
import org.openmetadata.service.jdbi3.TeamRepository;
import org.openmetadata.service.jdbi3.UserRepository;
@Slf4j
public class CommonUtils {
public static <T extends CreateEntity> void setOwners(T entity, Map<String, Object> params) {
List<EntityReference> owners = getTeamsOrUsers(params.get("owners"));
if (!owners.isEmpty()) {
entity.setOwners(owners);
}
}
public static List<EntityReference> getTeamsOrUsers(Object teamsOrUsersParam) {
UserRepository userRepository = Entity.getUserRepository();
TeamRepository teamRepository = (TeamRepository) Entity.getEntityRepository(Entity.TEAM);
List<EntityReference> teamsOrUsers = new java.util.ArrayList<>();
for (String owner : JsonUtils.readOrConvertValues(teamsOrUsersParam, String.class)) {
try {
User user = userRepository.findByNameOrNull(owner, Include.NON_DELETED);
if (user == null) {
// If the owner is not a user, check if it's a team
Team team = teamRepository.findByNameOrNull(owner, Include.NON_DELETED);
if (team != null) {
teamsOrUsers.add(team.getEntityReference());
}
} else {
// If the owner is a user, add their reference
teamsOrUsers.add(user.getEntityReference());
}
} catch (Exception e) {
LOG.error(
"Could not resolve owner or reviewer '{}' to a user or team: {}",
owner,
e.getMessage(),
e);
}
}
return teamsOrUsers;
}
public static int parseLimit(Map<String, Object> params, String key, int defaultValue) {
if (!params.containsKey(key)) {
return defaultValue;
}
Object v = params.get(key);
if (v instanceof Number n) {
return n.intValue();
}
if (v instanceof String s) {
try {
return Integer.parseInt(s);
} catch (NumberFormatException e) {
LOG.warn("Invalid value for '{}': '{}', using default {}", key, s, defaultValue);
}
}
return defaultValue;
}
}