1
2
3
4
5
6 package gov.nist.secauto.oscal.lib.profile.resolver.support;
7
8 import edu.umd.cs.findbugs.annotations.NonNull;
9
10 public interface IIdentifierMapper {
11 @NonNull
12 IIdentifierMapper IDENTITY = new IIdentifierMapper() {
13
14 @Override
15 public String mapRoleIdentifier(@NonNull String identifier) {
16 return identifier;
17 }
18
19 @Override
20 public String mapControlIdentifier(@NonNull String identifier) {
21 return identifier;
22 }
23
24 @Override
25 public String mapGroupIdentifier(@NonNull String identifier) {
26 return identifier;
27 }
28
29 @Override
30 public String mapParameterIdentifier(@NonNull String identifier) {
31 return identifier;
32 }
33
34 @Override
35 public @NonNull String mapPartIdentifier(@NonNull String identifier) {
36 return identifier;
37 }
38 };
39
40 @NonNull
41 String mapRoleIdentifier(@NonNull String identifier);
42
43 @NonNull
44 String mapControlIdentifier(@NonNull String identifier);
45
46 @NonNull
47 String mapGroupIdentifier(@NonNull String identifier);
48
49 @NonNull
50 String mapParameterIdentifier(@NonNull String identifier);
51
52 @NonNull
53 String mapPartIdentifier(@NonNull String identifier);
54
55 @NonNull
56 default String mapByItemType(
57 @NonNull IEntityItem.ItemType itemType,
58 @NonNull String identifier) {
59 String retval;
60 switch (itemType) {
61 case CONTROL:
62 retval = mapControlIdentifier(identifier);
63 break;
64 case GROUP:
65 retval = mapGroupIdentifier(identifier);
66 break;
67 case PARAMETER:
68 retval = mapParameterIdentifier(identifier);
69 break;
70 case PART:
71 retval = mapPartIdentifier(identifier);
72 break;
73 case ROLE:
74 retval = mapRoleIdentifier(identifier);
75 break;
76 case LOCATION:
77 case PARTY:
78 case RESOURCE:
79 retval = identifier;
80 break;
81 default:
82 throw new UnsupportedOperationException("Unsupported item type: " + itemType.name());
83 }
84 return retval;
85 }
86 }