Esempio n. 1
0
        /// <summary>
        /// Add filter for a role, used by ApplyRoleFilters for none default filters
        /// </summary>
        /// <param name="role">RoleFilter, single flag RoleFilter</param>
        /// <param name="filter">OutPutFilters to assign to role</param>
        /// <remarks>Does not apply filter to this object, used ApplyRoleFilters after setting the RolesFilterHolder items </remarks>
        public void AddRoleFilterHolderItem(RoleFilter role, OutputFilters filter)
        {
            if ((role & (role - 1)) != 0)
            {
                throw new ArgumentException("More than one flag set on role");
            }

            RolesFilterHolder[role] = filter;
        }
Esempio n. 2
0
 /// <summary>
 /// Fill RolesFilterHolder with default values
 /// </summary>
 public void FillDefaultRolesFilterHolder()
 {
     foreach (RoleFilter role in Enum.GetValues(typeof(RoleFilter)))
     {
         string roleFile = role.ToResourceName();
         if (!string.IsNullOrEmpty(roleFile))
         {
             RolesFilterHolder[role] = new OutputFilters(roleFile, _log, role);
         }
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Extension method to use default role configuration resource files
        /// </summary>
        /// <param name="roles">MergeRoles, Flag enum with one or more roles</param>
        /// <param name="append">true = add, false = overwrite existing </param>
        /// <param name="rolesFilter">Dictionary of roles to OutPutFilters to use for merge, overwrites current assigned dictionary</param>
        public void ApplyRoleFilters(RoleFilter roles, bool append = false, Dictionary <RoleFilter, OutputFilters> rolesFilter = null)
        {
            if (rolesFilter != null)
            {
                RolesFilterHolder = rolesFilter;
            }

            var init = append && !IsEmpty();

            OutputFilters mergeFilter = null;

            foreach (RoleFilter role in Enum.GetValues(typeof(RoleFilter)))
            {
                if (!roles.HasFlag(role))
                {
                    continue;
                }
                if (RolesFilterHolder.ContainsKey(role))
                {
                    mergeFilter = RolesFilterHolder[role];
                }
                else
                {
                    // load defaults
                    mergeFilter             = GetDefaults(role, _log);
                    RolesFilterHolder[role] = mergeFilter;
                }
                if (mergeFilter != null)
                {
                    if (!init)
                    {
                        Copy(mergeFilter); //start a fresh
                        init = true;       //want to merge on next loop iteration
                    }
                    else
                    {
                        Merge(mergeFilter);
                    }
                }
                mergeFilter = null;
            }
            //add the default property filters
            OutputFilters defaultPropFilters = new OutputFilters(null, _log, RoleFilter.Unknown, ImportSet.PropertyFilters);

            Merge(defaultPropFilters);

            //save the applied roles at end as this.Copy(mergeFilter) would set to first role in RoleFilter
            AppliedRoles = roles;
        }
Esempio n. 4
0
        /// <summary>
        /// Merge OutPutFilters
        /// </summary>
        /// <param name="mergeFilter">OutPutFilters</param>
        public void Merge(OutputFilters mergeFilter)
        {
            IfcProductFilter.MergeInc(mergeFilter.IfcProductFilter);
            IfcTypeObjectFilter.MergeInc(mergeFilter.IfcTypeObjectFilter);
            IfcAssemblyFilter.MergeInc(mergeFilter.IfcAssemblyFilter);

            ZoneFilter.Merge(mergeFilter.ZoneFilter);
            TypeFilter.Merge(mergeFilter.TypeFilter);
            SpaceFilter.Merge(mergeFilter.SpaceFilter);
            FloorFilter.Merge(mergeFilter.FloorFilter);
            FacilityFilter.Merge(mergeFilter.FacilityFilter);
            SpareFilter.Merge(mergeFilter.SpareFilter);
            ComponentFilter.Merge(mergeFilter.ComponentFilter);
            CommonFilter.Merge(mergeFilter.CommonFilter);
        }
Esempio n. 5
0
        /// <summary>
        /// Copy the OutPutFilters
        /// </summary>
        /// <param name="copyFilter">OutPutFilters to copy </param>
        public void Copy(OutputFilters copyFilter)
        {
            AppliedRoles = copyFilter.AppliedRoles;

            IfcProductFilter.Copy(copyFilter.IfcProductFilter);
            IfcTypeObjectFilter.Copy(copyFilter.IfcTypeObjectFilter);
            IfcAssemblyFilter.Copy(copyFilter.IfcAssemblyFilter);

            ZoneFilter.Copy(copyFilter.ZoneFilter);
            TypeFilter.Copy(copyFilter.TypeFilter);
            SpaceFilter.Copy(copyFilter.SpaceFilter);
            FloorFilter.Copy(copyFilter.FloorFilter);
            FacilityFilter.Copy(copyFilter.FacilityFilter);
            SpareFilter.Copy(copyFilter.SpareFilter);
            ComponentFilter.Copy(copyFilter.ComponentFilter);
            CommonFilter.Copy(copyFilter.CommonFilter);
        }
Esempio n. 6
0
        /// <summary>
        /// Set filters for Federated Model, referenced models
        /// </summary>
        /// <param name="modelRoleMap"></param>
        public Dictionary <T, OutputFilters> SetFedModelFilter <T>(Dictionary <T, RoleFilter> modelRoleMap)
        {
            Dictionary <T, OutputFilters> modelFilterMap = new Dictionary <T, OutputFilters>();

            //save this filter before working out all fed models
            OutputFilters saveFilter = new OutputFilters(_log);

            saveFilter.Copy(this);

            foreach (var item in modelRoleMap)
            {
                ApplyRoleFilters(item.Value);
                OutputFilters roleFilter = new OutputFilters(_log);
                roleFilter.Copy(this);
                modelFilterMap.Add(item.Key, roleFilter);
            }

            Copy(saveFilter); //reset this filter back to state at top of function
            return(modelFilterMap);
        }
Esempio n. 7
0
 /// <summary>
 /// Fill FilterHolder From Directory, if no file use defaults config files in assembly
 /// </summary>
 /// <param name="dir">DirectoryInfo</param>
 public void FillRolesFilterHolderFromDir(DirectoryInfo dir)
 {
     if (!dir.Exists)
     {
         return;
     }
     foreach (RoleFilter role in Enum.GetValues(typeof(RoleFilter)))
     {
         var fileName = Path.Combine(dir.FullName, role + "Filters.xml");
         var fileInfo = new FileInfo(fileName);
         if (fileInfo.Exists)
         {
             RolesFilterHolder[role] = DeserializeXml(fileInfo);
         }
         else
         {
             var roleFile = role.ToResourceName();
             if (!string.IsNullOrEmpty(roleFile))
             {
                 RolesFilterHolder[role] = new OutputFilters(roleFile, _log, role);
             }
         }
     }
 }