Example #1
0
        /// <summary>
        /// Sets or clears feature bits for a specific category of features.
        /// </summary>
        /// <param name="category">The feature category whose feature bits are to be updated.</param>
        /// <param name="features">The bits to be set or cleared. See Remarks.</param>
        /// <param name="addFeatures">If <c>true</c>, the given features are ORed into the exiting ones (see Remarks). If <c>false</c>,
        /// the given bits will be cleared.</param>
        /// <remarks>If adding NO bits (i.e. features == 0), then all feature bits are cleared, or none, depending on the category. See implementation.</remarks>
        public void UpdateFeatureBits(FeatureCategory category, uint features, bool addFeatures)
        {
            if (addFeatures)
            {
                if (features == 0)
                {
                    switch (category)
                    {
                    case FeatureCategory.General:
                    case FeatureCategory.Jlp:      // applies only to accelerator features
                    case FeatureCategory.LtoFlash: // applies only to accelerator features
                    case FeatureCategory.Bee3:     // applies only to accelerator features
                    case FeatureCategory.Hive:     // applies only to accelerator features
                        break;

                    default:
                        // A value of zero means INCOMPATIBLE WITH ALL FEATURES, so clear ALL the bits in such a case.
                        CheckAccessSetFeatureBits(category, 0);
                        break;
                    }
                }
                else
                {
                    // BUG ? For video (PAL/NTSC) we usually coerce to prevent "requires" value.
                    CheckAccessSetFeatureBits(category, _features[category] | features);
                }
            }
            else
            {
                CheckAccessSetFeatureBits(category, _features[category] & ~features);
            }
        }
 /// <summary>
 /// Initializes a new instance of the ProgramFeatureImageViewModel class.
 /// </summary>
 /// <param name="name">Display name of the feature.</param>
 /// <param name="image">Icon representing the feature. May be <c>null</c>.</param>
 /// <param name="toolTip">Tool tip for the feature, displayed when hovering over icon.</param>
 /// <param name="category">The category of features to which the specific feature belongs.</param>
 /// <param name="flags">The flag describing the specific feature.</param>
 public ProgramFeatureImageViewModel(string name, OSImage image, string toolTip, FeatureCategory category, uint flags)
 {
     Name     = name;
     Image    = image;
     ToolTip  = toolTip;
     Category = category;
     Flags    = flags;
 }
Example #3
0
 private void CheckAccessSetFeatureBits(FeatureCategory category, uint bits)
 {
     if (IsReadOnly)
     {
         throw new InvalidOperationException(category.ToString());
     }
     _features[category] = bits;
 }
 public object Delete([FromBody] FeatureCategory model)
 {
     try
     {
         featureCategoryService.Delete(model);
         return(true);
     }
     catch (Exception ex)
     {
         return(errorLogService.InsertToErrorLog(ex, MethodBase.GetCurrentMethod().Name, Request.Headers["UserInfo"].ToString()));
     }
 }
Example #5
0
        private (IEnumerable <FeatureCode> codes, IEnumerable <FeatureCategory> categories) ReadFeatureData(string file)
        {
            var categories = new List <FeatureCategory>();
            var codes      = new List <FeatureCode>();

            using (var reader = new StreamReader(file))
            {
                FeatureCategory curCategory = null;
                string          line;
                while (!string.IsNullOrEmpty(line = reader.ReadLine()))
                {
                    var parts = line.Split(Constants.Separator.Tab);
                    switch (parts.Length)
                    {
                    //Feature Category
                    case 1:
                        parts = parts[0].Split(new char[] { ' ' }, 2);
                        if (parts.Length != 2 || parts[0].Length != 1)
                        {
                            throw new InvalidDataException("the feature category data does not have the correct format");
                        }

                        curCategory = new FeatureCategory
                        {
                            Code = parts[0],
                            Name = parts[1]
                        };
                        categories.Add(curCategory);
                        break;

                    case 3:
                        if (curCategory == null)
                        {
                            throw new InvalidDataException("feature category not set");
                        }

                        codes.Add(new FeatureCode
                        {
                            Code            = parts[0],
                            Name            = parts[1],
                            Description     = parts[2],
                            FeatureCategory = curCategory
                        });
                        break;

                    default:
                        throw new InvalidDataException("unexpected feature code format");
                    }
                }
            }

            return(codes : codes, categories : categories);
        }
Example #6
0
        /// <summary>
        /// Initializes a new instance of ProgramFeatureSet.
        /// </summary>
        /// <param name="category">The category of features being described.</param>
        protected ProgramFeatureSet(FeatureCategory category)
        {
            _keyPrefix = string.Empty;
            if ((typeof(T) == typeof(FeatureCompatibility)) || (typeof(T) == typeof(IntellicartCC3Features)))
            {
                _keyPrefix = category.ToString();
            }
            var resourceKey = _keyPrefix + typeof(T).Name + "_Name";

            Name     = typeof(IProgramFeatureSet).GetResourceString(resourceKey);
            Category = category;
        }
        public void GetFeatureCategories_PassedAValidFeatureCategoryId_ReturnsValidResponse()
        {
            //Arrange
            requestURL = serverURL + featureCategoryControllerSegment + @"/" + expectedFeatureCategoryId;

            //Act
            string          response = client.GetAsync(requestURL).Result.Content.ReadAsStringAsync().Result;
            FeatureCategory result   = JsonConvert.DeserializeObject <FeatureCategory>(response);
            string          actualFeatureCategoryId = result.FeatureCategoryId;

            //Assert
            Assert.AreEqual <string>(expectedFeatureCategoryId, actualFeatureCategoryId);
        }
        public IActionResult UpdateSingleFeatureCategory(Upd_VM.FeatureCategory featureCategory)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    List <Upd_VM.FeatureCategory> inputFeatureCategories = new List <Upd_VM.FeatureCategory>();
                    inputFeatureCategories.Add(featureCategory);
                    IEnumerable <FeatureCategory> result = repository.UpdateFeatureCategories(inputFeatureCategories);

                    if (result != null && result.Count() > 0)
                    {
                        var primaryKey = featureCategory.FeatureCategoryId;

                        byte[] inputRowId = featureCategory.RowId;

                        byte[] outputRowId = result
                                             .Where(outputFeatureCategory => outputFeatureCategory.FeatureCategoryId == primaryKey)
                                             .Select(outputFeatureCategory => outputFeatureCategory.RowId)
                                             .FirstOrDefault();

                        bool rowIdsAreEqual = inputRowId.SequenceEqual(outputRowId);

                        if (rowIdsAreEqual)
                        {
                            return(BadRequest(ErrMsgs.ErrorMessages_US_en.NotUpdated_SingleEntry));
                        }
                        else
                        {
                            FeatureCategory outputFeatureCategory = new FeatureCategory();
                            outputFeatureCategory = result.FirstOrDefault();
                            return(Ok(outputFeatureCategory));
                        }
                    }
                    else
                    {
                        return(StatusCode(500));
                    }
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                throw;
            }
        }
 public object Save([FromBody] FeatureCategory model)
 {
     try
     {
         if (model.Id != 0)
         {
             return(featureCategoryService.Update(model));
         }
         else
         {
             return(featureCategoryService.Add(model));
         }
     }
     catch (Exception ex)
     {
         return(errorLogService.InsertToErrorLog(ex, MethodBase.GetCurrentMethod().Name, Request.Headers["UserInfo"].ToString()));
     }
 }
 private static bool FeaturesChanged(ServicePlan deltaServicePlan, FeatureCategory featureCategory)
 {
     foreach (object obj in ((IEnumerable)deltaServicePlan.Organization.Schema))
     {
         FeatureDefinition featureDefinition = (FeatureDefinition)obj;
         if (featureDefinition.Categories.Contains(featureCategory) && deltaServicePlan.Organization.PropertyBag.IsModified(featureDefinition))
         {
             return(true);
         }
     }
     for (int i = 0; i < deltaServicePlan.MailboxPlans.Count; i++)
     {
         foreach (object obj2 in ((IEnumerable)deltaServicePlan.MailboxPlans[i].Schema))
         {
             FeatureDefinition featureDefinition2 = (FeatureDefinition)obj2;
             if (featureDefinition2.Categories.Contains(featureCategory) && deltaServicePlan.MailboxPlans[i].PropertyBag.IsModified(featureDefinition2))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
 public FeatureDefinition(string name, FeatureCategory category, Type type, ServicePlanSkus servicePlanSkus) : this(name, type, servicePlanSkus, new FeatureCategory[]
 {
     category
 })
 {
 }
Example #12
0
        public void FeatureCompatibility_UnsupportedFeatureCategoryToLuigiFeatureFlags_ThrowsInvalidOperationException(FeatureCategory category)
        {
            var featureCompatibility = FeatureCompatibility.Incompatible;

            Assert.Throws <InvalidOperationException>(() => featureCompatibility.ToLuigiFeatureFlags(category));
        }
Example #13
0
        /// <summary>
        /// Converts a CFGVAR ID tag to a tuple of of LUIGI and other metadata identifiers.
        /// </summary>
        /// <param name="tag">The CFGVAR ID to convert.\.</param>
        /// <param name="feature">If <paramref name="tag"/> indicates a program feature, receives which type of feature.</param>
        /// <param name="cfgVarTag">If <paramref name="tag"/> indicates a value not directly part of LUIGI's metadata, nor its feature support.</param>
        /// <returns>The LUIGI metadata identifier tag.</returns>
        /// <remarks>All feature-related data is directly supported by the LUIGI format. Therefore, a CFG metadata tag
        /// that describes a feature will cause this function to return <see cref="LuigiMetadataIdTag.Miscellaneous"/>
        /// and set the specific feature in the <paramref name="feature"/> output. CFGVAR metadata that is not directly represented
        /// by the LUIGI format, nor its defined metadata tags, will cause this function to return <see cref="LuigiMetadataIdTag.Miscellaneous"/>
        /// and the original value of the <paramref name="tag"/> argument will be returned via <paramref name="cfgVarTag"/>.</remarks>
        public static LuigiMetadataIdTag ToLuigiMetadataIdTag(this CfgVarMetadataIdTag tag, out FeatureCategory feature, out CfgVarMetadataIdTag cfgVarTag)
        {
            cfgVarTag = CfgVarMetadataIdTag.Invalid;
            feature   = FeatureCategory.None;
            var luigiTag = LuigiMetadataIdTag.Unknown;

            switch (tag)
            {
            case CfgVarMetadataIdTag.Name:
                luigiTag = LuigiMetadataIdTag.Name;
                break;

            case CfgVarMetadataIdTag.ShortName:
                luigiTag = LuigiMetadataIdTag.ShortName;
                break;

            case CfgVarMetadataIdTag.Author:
                luigiTag = LuigiMetadataIdTag.Author;
                break;

            case CfgVarMetadataIdTag.GameArt:
                luigiTag = LuigiMetadataIdTag.Graphics;
                break;

            case CfgVarMetadataIdTag.Music:
                luigiTag = LuigiMetadataIdTag.Music;
                break;

            case CfgVarMetadataIdTag.SoundEffects:
                luigiTag = LuigiMetadataIdTag.SoundEffects;
                break;

            case CfgVarMetadataIdTag.VoiceActing:
                luigiTag = LuigiMetadataIdTag.VoiceActing;
                break;

            case CfgVarMetadataIdTag.Documentation:
                luigiTag = LuigiMetadataIdTag.Documentation;
                break;

            case CfgVarMetadataIdTag.BoxOrOtherArtwork:
                luigiTag = LuigiMetadataIdTag.BoxOrOtherArtwork;
                break;

            case CfgVarMetadataIdTag.ConceptDesign:
                luigiTag = LuigiMetadataIdTag.ConceptDesign;
                break;

            case CfgVarMetadataIdTag.MoreInfo:
                luigiTag = LuigiMetadataIdTag.UrlContactInfo;
                break;

            case CfgVarMetadataIdTag.Publisher:
                luigiTag = LuigiMetadataIdTag.Publisher;
                break;

            case CfgVarMetadataIdTag.License:
                luigiTag = LuigiMetadataIdTag.License;
                break;

            case CfgVarMetadataIdTag.Description:
                luigiTag = LuigiMetadataIdTag.Description;
                break;

            case CfgVarMetadataIdTag.ReleaseDate:
            case CfgVarMetadataIdTag.Year:
                luigiTag = LuigiMetadataIdTag.Date;
                break;

            case CfgVarMetadataIdTag.BuildDate:
                cfgVarTag = tag;
                luigiTag  = LuigiMetadataIdTag.Miscellaneous;
                break;

            case CfgVarMetadataIdTag.Version:
                cfgVarTag = tag;
                luigiTag  = LuigiMetadataIdTag.Miscellaneous;
                break;

            case CfgVarMetadataIdTag.EcsCompatibility:
                feature = FeatureCategory.Ecs;
                break;

            case CfgVarMetadataIdTag.IntellivoiceCompatibility:
                feature = FeatureCategory.Intellivoice;
                break;

            case CfgVarMetadataIdTag.IntellivisionIICompatibility:
                feature = FeatureCategory.IntellivisionII;
                break;

            case CfgVarMetadataIdTag.KeyboardComponentCompatibility:
                feature = FeatureCategory.KeyboardComponent;
                break;

            case CfgVarMetadataIdTag.TutorvisionCompatibility:
                feature = FeatureCategory.Tutorvision;
                break;

            case CfgVarMetadataIdTag.Ecs:
                feature = FeatureCategory.EcsLegacy;
                break;

            case CfgVarMetadataIdTag.Voice:
                feature  = FeatureCategory.IntellivoiceLegacy;
                luigiTag = LuigiMetadataIdTag.Miscellaneous;
                break;

            case CfgVarMetadataIdTag.IntellivisionII:
                feature  = FeatureCategory.IntellivisionIILegacy;
                luigiTag = LuigiMetadataIdTag.Miscellaneous;
                break;

            case CfgVarMetadataIdTag.LtoFlashMapper:
                feature = FeatureCategory.LtoFlash;
                break;

            case CfgVarMetadataIdTag.JlpAccelerators:
            case CfgVarMetadataIdTag.Jlp:
                feature = FeatureCategory.Jlp;
                break;

            case CfgVarMetadataIdTag.JlpFlash:
                feature = FeatureCategory.JlpFlashCapacity;
                break;

            case CfgVarMetadataIdTag.Invalid:
                break;

            default:
                throw new InvalidOperationException(Resources.Strings.CfgVarMetadata_ToLuigiError);
            }
            return(luigiTag);
        }
Example #14
0
        // Note: this type is marked as 'beforefieldinit'.
        static OrganizationSettingsSchema()
        {
            string          name            = "ManagedFoldersPermissions";
            Type            typeFromHandle  = typeof(bool);
            ServicePlanSkus servicePlanSkus = ServicePlanSkus.Datacenter;

            FeatureCategory[] array = new FeatureCategory[2];
            array[0] = FeatureCategory.AdminPermissions;
            OrganizationSettingsSchema.ManagedFoldersPermissions = new FeatureDefinition(name, typeFromHandle, servicePlanSkus, array);
            OrganizationSettingsSchema.SearchMessagePermissions  = new FeatureDefinition("SearchMessagePermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.ProfileUpdatePermissions           = new FeatureDefinition("ProfileUpdatePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.OpenDomainProfileUpdatePermissions = new FeatureDefinition("OpenDomainProfileUpdatePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.JournalingRulesPermissions         = new FeatureDefinition("JournalingRulesPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.ModeratedRecipientsPermissions = new FeatureDefinition("ModeratedRecipientsPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            string          name2            = "TransportRulesPermissions";
            Type            typeFromHandle2  = typeof(bool);
            ServicePlanSkus servicePlanSkus2 = ServicePlanSkus.All;

            FeatureCategory[] array2 = new FeatureCategory[2];
            array2[0] = FeatureCategory.AdminPermissions;
            OrganizationSettingsSchema.TransportRulesPermissions              = new FeatureDefinition(name2, typeFromHandle2, servicePlanSkus2, array2);
            OrganizationSettingsSchema.UMAutoAttendantPermissions             = new FeatureDefinition("UMAutoAttendantPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.ChangeMailboxPlanAssignmentPermissions = new FeatureDefinition("ChangeMailboxPlanAssignmentPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.TeamMailboxPermissions = new FeatureDefinition("TeamMailboxPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.ConfigCustomizationsPermissions = new FeatureDefinition("ConfigCustomizationsPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.UMSMSMsgWaitingPermissions      = new FeatureDefinition("UMSMSMsgWaitingPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.UMPBXPermissions           = new FeatureDefinition("UMPBXPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.UMCloudServicePermissions  = new FeatureDefinition("UMCloudServicePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.OutlookAnywherePermissions = new FeatureDefinition("OutlookAnywherePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.PopPermissions             = new FeatureDefinition("PopPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.ImapPermissions            = new FeatureDefinition("ImapPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.ActiveSyncPermissions      = new FeatureDefinition("ActiveSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.DeviceFiltersSetupEnabled  = new FeatureDefinition("DeviceFiltersSetupEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.EwsPermissions             = new FeatureDefinition("EwsPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            string          name3            = "UMPermissions";
            Type            typeFromHandle3  = typeof(bool);
            ServicePlanSkus servicePlanSkus3 = ServicePlanSkus.Datacenter;

            FeatureCategory[] array3 = new FeatureCategory[3];
            array3[0] = FeatureCategory.AdminPermissions;
            array3[1] = FeatureCategory.RoleGroupRoleAssignment;
            OrganizationSettingsSchema.UMPermissions                      = new FeatureDefinition(name3, typeFromHandle3, servicePlanSkus3, array3);
            OrganizationSettingsSchema.UMFaxPermissions                   = new FeatureDefinition("UMFaxPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.UMOutDialingPermissions            = new FeatureDefinition("UMOutDialingPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.UMPersonalAutoAttendantPermissions = new FeatureDefinition("UMPersonalAutoAttendantPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.MailTipsPermissions                = new FeatureDefinition("MailTipsPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.OWAPermissions = new FeatureDefinition("OWAPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.SMSPermissions = new FeatureDefinition("SMSPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.SetHiddenFromAddressListPermissions        = new FeatureDefinition("SetHiddenFromAddressListPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.NewUserPasswordManagementPermissions       = new FeatureDefinition("NewUserPasswordManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.NewUserResetPasswordOnNextLogonPermissions = new FeatureDefinition("NewUserResetPasswordOnNextLogonPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.UserLiveIdManagementPermissions            = new FeatureDefinition("UserLiveIdManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.MSOIdPermissions = new FeatureDefinition("MSOIdPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.ResetUserPasswordManagementPermissions = new FeatureDefinition("ResetUserPasswordManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.UserMailboxAccessPermissions           = new FeatureDefinition("UserMailboxAccessPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.MailboxRecoveryPermissions             = new FeatureDefinition("MailboxRecoveryPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.PopSyncPermissions                = new FeatureDefinition("PopSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.AddSecondaryDomainPermissions     = new FeatureDefinition("AddSecondaryDomainPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.HotmailSyncPermissions            = new FeatureDefinition("HotmailSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.ImapSyncPermissions               = new FeatureDefinition("ImapSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.OrganizationalAffinityPermissions = new FeatureDefinition("OrganizationalAffinityPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.MessageTrackingPermissions        = new FeatureDefinition("MessageTrackingPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.ActiveSyncDeviceDataAccessPermissions = new FeatureDefinition("ActiveSyncDeviceDataAccessPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.MOWADeviceDataAccessPermissions       = new FeatureDefinition("MOWADeviceDataAccessPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.GroupAsGroupSyncPermissions           = new FeatureDefinition("GroupAsGroupSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.LitigationHoldPermissions             = new FeatureDefinition("LitigationHoldPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.ArchivePermissions          = new FeatureDefinition("ArchivePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.PermissionManagementEnabled = new FeatureDefinition("PermissionManagementEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.RoleGroupRoleAssignment
            });
            string          name4            = "PrivacyLink";
            Type            typeFromHandle4  = typeof(string);
            ServicePlanSkus servicePlanSkus4 = ServicePlanSkus.Datacenter;

            FeatureCategory[] categories = new FeatureCategory[1];
            OrganizationSettingsSchema.PrivacyLink = new FeatureDefinition(name4, typeFromHandle4, servicePlanSkus4, categories);
            OrganizationSettingsSchema.ApplicationImpersonationEnabled = new FeatureDefinition("ApplicationImpersonationEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.MailTipsEnabled               = new FeatureDefinition("MailTipsEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.AddressListsEnabled           = new FeatureDefinition("AddressListsEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.FastRecipientCountingDisabled = new FeatureDefinition("FastRecipientCountingDisabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.OfflineAddressBookEnabled     = new FeatureDefinition("OfflineAddressBookEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.OpenDomainRoutingEnabled      = new FeatureDefinition("OpenDomainRoutingEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.AddOutlookAcceptedDomains     = new FeatureDefinition("AddOutlookAcceptedDomains", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.GALSyncEnabled = new FeatureDefinition("GALSyncEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.CommonConfiguration                       = new FeatureDefinition("CommonConfiguration", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.HideAdminAccessWarningEnabled             = new FeatureDefinition("HideAdminAccessWarningEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.SkipToUAndParentalControlCheckEnabled     = new FeatureDefinition("SkipToUAndParentalControlCheckEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.SMTPAddressCheckWithAcceptedDomainEnabled = new FeatureDefinition("SMTPAddressCheckWithAcceptedDomainEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.AutoReplyEnabled   = new FeatureDefinition("AutoReplyEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.AutoForwardEnabled = new FeatureDefinition("AutoForwardEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.MSOSyncEnabled     = new FeatureDefinition("MSOSyncEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.AllowDeleteOfExternalIdentityUponRemove = new FeatureDefinition("AllowDeleteOfExternalIdentityUponRemove", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            string          name5            = "SearchMessageEnabled";
            Type            typeFromHandle5  = typeof(bool);
            ServicePlanSkus servicePlanSkus5 = ServicePlanSkus.All;

            FeatureCategory[] categories2 = new FeatureCategory[1];
            OrganizationSettingsSchema.SearchMessageEnabled           = new FeatureDefinition(name5, typeFromHandle5, servicePlanSkus5, categories2);
            OrganizationSettingsSchema.OwaInstantMessagingType        = new FeatureDefinition("OwaInstantMessagingType", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.RecipientManagementPermissions = new FeatureDefinition("RecipientManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All);
            OrganizationSettingsSchema.DistributionListCountQuota     = new FeatureDefinition("DistributionListCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All);
            OrganizationSettingsSchema.MailboxCountQuota             = new FeatureDefinition("MailboxCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All);
            OrganizationSettingsSchema.MailUserCountQuota            = new FeatureDefinition("MailUserCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All);
            OrganizationSettingsSchema.ContactCountQuota             = new FeatureDefinition("ContactCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All);
            OrganizationSettingsSchema.TeamMailboxCountQuota         = new FeatureDefinition("TeamMailboxCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All);
            OrganizationSettingsSchema.PublicFolderMailboxCountQuota = new FeatureDefinition("PublicFolderMailboxCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All);
            OrganizationSettingsSchema.MailPublicFolderCountQuota    = new FeatureDefinition("MailPublicFolderCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All);
            OrganizationSettingsSchema.SupervisionPermissions        = new FeatureDefinition("SupervisionPermissions", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.SupervisionEnabled = new FeatureDefinition("SupervisionEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.TemplateTenant     = new FeatureDefinition("TemplateTenant", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.TransportRulesCollectionsEnabled = new FeatureDefinition("TransportRulesCollectionsEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            string          name6            = "SyncAccountsEnabled";
            Type            typeFromHandle6  = typeof(bool);
            ServicePlanSkus servicePlanSkus6 = ServicePlanSkus.Datacenter;

            FeatureCategory[] categories3 = new FeatureCategory[1];
            OrganizationSettingsSchema.SyncAccountsEnabled = new FeatureDefinition(name6, typeFromHandle6, servicePlanSkus6, categories3);
            OrganizationSettingsSchema.RecipientMailSubmissionRateQuota        = new FeatureDefinition("RecipientMailSubmissionRateQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All);
            OrganizationSettingsSchema.ImapMigrationPermissions                = new FeatureDefinition("ImapMigrationPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.HotmailMigrationPermissions             = new FeatureDefinition("HotmailMigrationPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.ExchangeMigrationPermissions            = new FeatureDefinition("ExchangeMigrationPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.MultiEngineAVEnabled                    = new FeatureDefinition("MultiEngineAVEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.CommonHydrateableObjectsSharedEnabled   = new FeatureDefinition("CommonHydrateableObjectsSharedEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.AdvancedHydrateableObjectsSharedEnabled = new FeatureDefinition("AdvancedHydrateableObjectsSharedEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.ShareableConfigurationEnabled = new FeatureDefinition("ShareableConfigurationEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.IRMPremiumFeaturesPermissions = new FeatureDefinition("IRMPremiumFeaturesPermissions", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions,
                FeatureCategory.RoleGroupRoleAssignment
            });
            OrganizationSettingsSchema.RBACManagementPermissions = new FeatureDefinition("RBACManagementPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.PerMBXPlanRoleAssignmentPolicyEnabled = new FeatureDefinition("PerMBXPlanRoleAssignmentPolicyEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.RoleAssignmentPolicyPermissions = new FeatureDefinition("RoleAssignmentPolicyPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.PerMBXPlanOWAPolicyEnabled = new FeatureDefinition("PerMBXPlanOWAPolicyEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.OWAMailboxPolicyPermissions = new FeatureDefinition("OWAMailboxPolicyPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions
            });
            string          name7            = "PerMBXPlanRetentionPolicyEnabled";
            Type            typeFromHandle7  = typeof(bool);
            ServicePlanSkus servicePlanSkus7 = ServicePlanSkus.Datacenter;

            FeatureCategory[] categories4 = new FeatureCategory[1];
            OrganizationSettingsSchema.PerMBXPlanRetentionPolicyEnabled = new FeatureDefinition(name7, typeFromHandle7, servicePlanSkus7, categories4);
            string          name8            = "ReducedOutOfTheBoxMrmTagsEnabled";
            Type            typeFromHandle8  = typeof(bool);
            ServicePlanSkus servicePlanSkus8 = ServicePlanSkus.Datacenter;

            FeatureCategory[] categories5 = new FeatureCategory[1];
            OrganizationSettingsSchema.ReducedOutOfTheBoxMrmTagsEnabled = new FeatureDefinition(name8, typeFromHandle8, servicePlanSkus8, categories5);
            OrganizationSettingsSchema.AddressBookPolicyPermissions     = new FeatureDefinition("AddressBookPolicyPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.LicenseEnforcementEnabled  = new FeatureDefinition("LicenseEnforcementEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.PerimeterSafelistingUIMode = new FeatureDefinition("PerimeterSafelistingUIMode", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.ExchangeHostedFilteringAdminCenterAvailabilityEnabled = new FeatureDefinition("ExchangeHostedFilteringAdminCenterAvailabilityEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.ExchangeHostedFilteringPerimeterEnabled = new FeatureDefinition("ExchangeHostedFilteringPerimeterEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.ApplicationImpersonationRegularRoleAssignmentEnabled = new FeatureDefinition("ApplicationImpersonationRegularRoleAssignmentEnabled", FeatureCategory.RoleGroupRoleAssignment, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.MailboxImportExportRegularRoleAssignmentEnabled      = new FeatureDefinition("MailboxImportExportRegularRoleAssignmentEnabled", FeatureCategory.RoleGroupRoleAssignment, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.MailboxQuotaPermissions = new FeatureDefinition("MailboxQuotaPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.MailboxSIRPermissions   = new FeatureDefinition("MailboxSIRPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.PublicFoldersEnabled    = new FeatureDefinition("PublicFoldersEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.RoleGroupRoleAssignment,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.QuarantineEnabled = new FeatureDefinition("QuarantineEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.RoleGroupRoleAssignment,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.UseServicePlanAsCounterInstanceName = new FeatureDefinition("UseServicePlanAsCounterInstanceName", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.RIMRoleGroupEnabled         = new FeatureDefinition("RIMRoleGroupEnabled", FeatureCategory.RoleGroupRoleAssignment, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.CalendarVersionStoreEnabled = new FeatureDefinition("CalendarVersionStoreEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.HostedSpamFilteringPolicyCustomizationEnabled = new FeatureDefinition("HostedSpamFilteringPolicyCustomizationEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.MalwareFilteringPolicyCustomizationEnabled = new FeatureDefinition("MalwareFilteringPolicyCustomizationEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.EXOCoreFeatures = new FeatureDefinition("EXOCoreFeatures", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.RoleGroupRoleAssignment,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.MessageTrace = new FeatureDefinition("MessageTrace", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.AcceptedDomains = new FeatureDefinition("AcceptedDomains", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.ServiceConnectors = new FeatureDefinition("ServiceConnectors", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
            OrganizationSettingsSchema.SoftDeletedFeatureManagementPermissions = new FeatureDefinition("SoftDeletedFeatureManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.PilotEnabled = new FeatureDefinition("PilotEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter);
            OrganizationSettingsSchema.DataLossPreventionEnabled = new FeatureDefinition("DataLossPreventionEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[]
            {
                FeatureCategory.OrgWideConfiguration,
                FeatureCategory.AdminPermissions
            });
        }
Example #15
0
        /// <summary>
        /// Converts standard FeatureCompatibility to LuigiFeatureFlags.
        /// </summary>
        /// <param name="compatibility">The compatibility to convert.</param>
        /// <param name="category">The category of feature represented by the compatibility argument.</param>
        /// <returns>The compatibility represented as appropriate LuigiFeatureFlags.</returns>
        public static LuigiFeatureFlags ToLuigiFeatureFlags(this FeatureCompatibility compatibility, FeatureCategory category)
        {
            var luigiFeatureFlags = LuigiFeatureFlags.None;
            var offset            = -1;

            switch (category)
            {
            case FeatureCategory.Intellivoice:
                offset = LuigiFeatureFlagsHelpers.IntellivoiceOffset;
                break;

            case FeatureCategory.Ecs:
                offset = LuigiFeatureFlagsHelpers.EcsOffset;
                break;

            case FeatureCategory.IntellivisionII:
                // Intellivision II doesn't really 'enhance' anything. Ignore that value.
                if (compatibility != FeatureCompatibility.Enhances)
                {
                    offset = LuigiFeatureFlagsHelpers.IntellivisionIIOffset;
                }
                break;

            case FeatureCategory.KeyboardComponent:
                offset = LuigiFeatureFlagsHelpers.KeyboardComponentOffset;
                break;

            case FeatureCategory.Tutorvision:
                // For TutorVision, we need to enable the 'feature compatibility sub-version' as well as the feature itself.
                // This could be any value from 1..3 (two bits). Just enable minimum necessary version.
                luigiFeatureFlags |= (LuigiFeatureFlags)(1ul << LuigiFeatureFlagsHelpers.ExtendedPeripheralCompatibiltyVersionOffset);
                offset             = LuigiFeatureFlagsHelpers.TutorVisionOffset;
                break;

            case FeatureCategory.Jlp:
                offset = LuigiFeatureFlagsHelpers.JlpAccelerationOffset;
                break;

            case FeatureCategory.LtoFlash:
                // NOTE: This isn't strictly correct. There isn't really "compatibility" for LTO Flash! -- just features, which are handled separately.
                break;

            default:
                throw new System.InvalidOperationException(string.Format(Resources.Strings.FeatureCategoryNotSupportedByLuigiFormat, category));
            }
            if (offset >= 0)
            {
                luigiFeatureFlags |= (LuigiFeatureFlags)((ulong)compatibility << offset);
            }

            return(luigiFeatureFlags);
        }
        public void CfgVarMetadataIdTag_ConvertToLuigiMetadataIdTag_ProducesExpectedLuigiMetadataIdTag(CfgVarMetadataIdTag idTag, LuigiMetadataIdTag expectedLuigiMetadataIdTag, FeatureCategory expectedFeatureCategory, CfgVarMetadataIdTag expectedUnsupportedMetadataValue)
        {
            CfgVarMetadataIdTag actualUnsupportedMetadataValue;
            FeatureCategory     actualFeatureCategory;
            var actualRomMetadataIdTag = idTag.ToLuigiMetadataIdTag(out actualFeatureCategory, out actualUnsupportedMetadataValue);

            Assert.Equal(expectedLuigiMetadataIdTag, actualRomMetadataIdTag);
        }
Example #17
0
        /// <summary>
        /// Converts a CFGVAR ID tag to a tuple of ROM and other metadata identifiers.
        /// </summary>
        /// <param name="tag">The CFGVAR ID to convert.</param>
        /// <param name="feature">If <paramref name="tag"/> indicates a program feature, receives which type of feature.</param>
        /// <param name="cfgVarTag">If <paramref name="tag"/> indicates a value that does not have a corresponding ROM metadata ID tag, and is not a feature.</param>
        /// <returns>The ROM metadata identifier tag.</returns>
        public static RomMetadataIdTag ToRomMetadataIdTag(this CfgVarMetadataIdTag tag, out FeatureCategory feature, out CfgVarMetadataIdTag cfgVarTag)
        {
            cfgVarTag = CfgVarMetadataIdTag.Invalid;
            feature   = FeatureCategory.None;
            var romTag = RomMetadataIdTag.Ignore;

            switch (tag)
            {
            case CfgVarMetadataIdTag.Name:
                romTag = RomMetadataIdTag.Title;
                break;

            case CfgVarMetadataIdTag.ShortName:
                romTag = RomMetadataIdTag.ShortTitle;
                break;

            case CfgVarMetadataIdTag.Author:
                cfgVarTag = tag;
                romTag    = RomMetadataIdTag.Credits;
                break;

            case CfgVarMetadataIdTag.GameArt:
                cfgVarTag = tag;
                romTag    = RomMetadataIdTag.Credits;
                break;

            case CfgVarMetadataIdTag.Music:
                cfgVarTag = tag;
                romTag    = RomMetadataIdTag.Credits;
                break;

            case CfgVarMetadataIdTag.SoundEffects:
                cfgVarTag = tag;
                romTag    = RomMetadataIdTag.Credits;
                break;

            case CfgVarMetadataIdTag.VoiceActing:
                cfgVarTag = tag;
                romTag    = RomMetadataIdTag.Credits;
                break;

            case CfgVarMetadataIdTag.Documentation:
                cfgVarTag = tag;
                romTag    = RomMetadataIdTag.Credits;
                break;

            case CfgVarMetadataIdTag.BoxOrOtherArtwork:
                cfgVarTag = tag;
                romTag    = RomMetadataIdTag.Credits;
                break;

            case CfgVarMetadataIdTag.ConceptDesign:
                cfgVarTag = tag;
                romTag    = RomMetadataIdTag.Credits;
                break;

            case CfgVarMetadataIdTag.MoreInfo:
                romTag = RomMetadataIdTag.UrlContactInfo;
                break;

            case CfgVarMetadataIdTag.Publisher:
                romTag = RomMetadataIdTag.Publisher;
                break;

            case CfgVarMetadataIdTag.License:
                romTag = RomMetadataIdTag.License;
                break;

            case CfgVarMetadataIdTag.Description:
                romTag = RomMetadataIdTag.Description;
                break;

            case CfgVarMetadataIdTag.ReleaseDate:
            case CfgVarMetadataIdTag.Year:
                romTag = RomMetadataIdTag.ReleaseDate;
                break;

            case CfgVarMetadataIdTag.BuildDate:
                romTag = RomMetadataIdTag.BuildDate;
                break;

            case CfgVarMetadataIdTag.Version:
                romTag = RomMetadataIdTag.Version;
                break;

            case CfgVarMetadataIdTag.EcsCompatibility:
                feature = FeatureCategory.Ecs;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.IntellivoiceCompatibility:
                feature = FeatureCategory.Intellivoice;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.IntellivisionIICompatibility:
                feature = FeatureCategory.IntellivisionII;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.KeyboardComponentCompatibility:
                feature = FeatureCategory.KeyboardComponent;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.TutorvisionCompatibility:
                feature = FeatureCategory.Tutorvision;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.Ecs:
                feature = FeatureCategory.EcsLegacy;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.Voice:
                feature = FeatureCategory.IntellivoiceLegacy;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.IntellivisionII:
                feature = FeatureCategory.IntellivisionIILegacy;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.LtoFlashMapper:
                feature = FeatureCategory.LtoFlash;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.JlpAccelerators:
            case CfgVarMetadataIdTag.Jlp:
                feature = FeatureCategory.Jlp;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.JlpFlash:
                feature = FeatureCategory.JlpFlashCapacity;
                romTag  = RomMetadataIdTag.Features;
                break;

            case CfgVarMetadataIdTag.Invalid:
                break;

            default:
                throw new InvalidOperationException(Resources.Strings.CfgVarMetadata_ToRomError);
            }
            return(romTag);
        }