1
2
3
4
5
6 package dev.metaschema.oscal.lib.profile.resolver.support;
7
8 import dev.metaschema.core.metapath.item.node.IModelNodeItem;
9 import dev.metaschema.oscal.lib.profile.resolver.support.IEntityItem.ItemType;
10 import edu.umd.cs.findbugs.annotations.NonNull;
11
12 public class ReassignmentIndexer
13 extends BasicIndexer {
14 @NonNull
15 private final IIdentifierMapper mapper;
16
17 public ReassignmentIndexer(@NonNull IIdentifierMapper mapper) {
18 this.mapper = mapper;
19 }
20
21 @NonNull
22 protected IIdentifierMapper getMapper() {
23 return mapper;
24 }
25
26 @Override
27 protected AbstractEntityItem.Builder newBuilder(
28 IModelNodeItem<?, ?> item,
29 ItemType itemType,
30 String identifier) {
31 AbstractEntityItem.Builder builder = super.newBuilder(item, itemType, identifier);
32
33 String reassignment = getMapper().mapByItemType(itemType, identifier);
34 if (!identifier.equals(reassignment)) {
35 builder.reassignedIdentifier(reassignment);
36 }
37 return builder;
38 }
39
40 @Override
41 public IEntityItem getEntity(ItemType itemType, String identifier, boolean normalize) {
42
43 String reassignment = getMapper().mapByItemType(itemType, identifier);
44
45 return super.getEntity(itemType, reassignment, normalize);
46 }
47 }