001/* 002 * SPDX-FileCopyrightText: none 003 * SPDX-License-Identifier: CC0-1.0 004 */ 005 006package gov.nist.secauto.oscal.lib.profile.resolver.support; 007 008import edu.umd.cs.findbugs.annotations.NonNull; 009 010public interface IIdentifierMapper { 011 @NonNull 012 IIdentifierMapper IDENTITY = new IIdentifierMapper() { 013 014 @Override 015 public String mapRoleIdentifier(@NonNull String identifier) { 016 return identifier; 017 } 018 019 @Override 020 public String mapControlIdentifier(@NonNull String identifier) { 021 return identifier; 022 } 023 024 @Override 025 public String mapGroupIdentifier(@NonNull String identifier) { 026 return identifier; 027 } 028 029 @Override 030 public String mapParameterIdentifier(@NonNull String identifier) { 031 return identifier; 032 } 033 034 @Override 035 public @NonNull 036 String mapPartIdentifier(@NonNull String identifier) { 037 return identifier; 038 } 039 }; 040 041 @NonNull 042 String mapRoleIdentifier(@NonNull String identifier); 043 044 @NonNull 045 String mapControlIdentifier(@NonNull String identifier); 046 047 @NonNull 048 String mapGroupIdentifier(@NonNull String identifier); 049 050 @NonNull 051 String mapParameterIdentifier(@NonNull String identifier); 052 053 @NonNull 054 String mapPartIdentifier(@NonNull String identifier); 055 056 @NonNull 057 default String mapByItemType( 058 @NonNull IEntityItem.ItemType itemType, 059 @NonNull String identifier) { 060 String retval; 061 switch (itemType) { 062 case CONTROL: 063 retval = mapControlIdentifier(identifier); 064 break; 065 case GROUP: 066 retval = mapGroupIdentifier(identifier); 067 break; 068 case PARAMETER: 069 retval = mapParameterIdentifier(identifier); 070 break; 071 case PART: 072 retval = mapPartIdentifier(identifier); 073 break; 074 case ROLE: 075 retval = mapRoleIdentifier(identifier); 076 break; 077 case LOCATION: 078 case PARTY: 079 case RESOURCE: 080 retval = identifier; 081 break; 082 default: 083 throw new UnsupportedOperationException("Unsupported item type: " + itemType.name()); 084 } 085 return retval; 086 } 087}