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 String mapPartIdentifier(@NonNull String identifier) { 036 return identifier; 037 } 038 }; 039 040 @NonNull 041 String mapRoleIdentifier(@NonNull String identifier); 042 043 @NonNull 044 String mapControlIdentifier(@NonNull String identifier); 045 046 @NonNull 047 String mapGroupIdentifier(@NonNull String identifier); 048 049 @NonNull 050 String mapParameterIdentifier(@NonNull String identifier); 051 052 @NonNull 053 String mapPartIdentifier(@NonNull String identifier); 054 055 @NonNull 056 default String mapByItemType( 057 @NonNull IEntityItem.ItemType itemType, 058 @NonNull String identifier) { 059 String retval; 060 switch (itemType) { 061 case CONTROL: 062 retval = mapControlIdentifier(identifier); 063 break; 064 case GROUP: 065 retval = mapGroupIdentifier(identifier); 066 break; 067 case PARAMETER: 068 retval = mapParameterIdentifier(identifier); 069 break; 070 case PART: 071 retval = mapPartIdentifier(identifier); 072 break; 073 case ROLE: 074 retval = mapRoleIdentifier(identifier); 075 break; 076 case LOCATION: 077 case PARTY: 078 case RESOURCE: 079 retval = identifier; 080 break; 081 default: 082 throw new UnsupportedOperationException("Unsupported item type: " + itemType.name()); 083 } 084 return retval; 085 } 086}