/// <summary> /// Copy values from passed ObjectFilter /// </summary> /// <param name="copyFilter">ObjectFilter to copy</param> public void Copy(ObjectFilter copyFilter) { _itemsToExclude = null; //reset exclude this.Items.Clear(); //fill dictionary from passed argument Items foreach (var pair in copyFilter.Items) { this.Items[pair.Key] = pair.Value; } this.PreDefinedType.Clear(); foreach (var pair in copyFilter.PreDefinedType) { this.PreDefinedType[pair.Key] = pair.Value; } }
/// <summary> /// Will read Configuration file if passed, or default COBieAttributesFilters.config /// </summary> /// <param name="configFileName">Full path/name for config file</param> private void FiltersHelperInit(ImportSet import, string configFileName = null) { string resFile = configFileName; //set default if (resFile == null) { resFile = "Xbim.COBieLiteUK.FilterHelper.COBieDefaultFilters.config"; } Configuration config = GetResourceConfig(resFile); //IfcProduct and IfcTypeObject filters if ((import == ImportSet.All) || (import == ImportSet.IfcFilters)) { IfcProductFilter = new ObjectFilter(config.GetSection("IfcElementInclusion")); IfcTypeObjectFilter = new ObjectFilter(config.GetSection("IfcTypeInclusion")); IfcTypeObjectFilter.FillPreDefinedTypes(config.GetSection("IfcPreDefinedTypeFilter")); IfcAssemblyFilter = new ObjectFilter(config.GetSection("IfcAssemblyInclusion")); } //Property name filters if ((import == ImportSet.All) || (import == ImportSet.PropertyFilters)) { ZoneFilter = new PropertyFilter(config.GetSection("ZoneFilter")); TypeFilter = new PropertyFilter(config.GetSection("TypeFilter")); SpaceFilter = new PropertyFilter(config.GetSection("SpaceFilter")); FloorFilter = new PropertyFilter(config.GetSection("FloorFilter")); FacilityFilter = new PropertyFilter(config.GetSection("FacilityFilter")); SpareFilter = new PropertyFilter(config.GetSection("SpareFilter")); ComponentFilter = new PropertyFilter(config.GetSection("ComponentFilter")); CommonFilter = new PropertyFilter(config.GetSection("CommonFilter")); } if (configFileName == null) { File.Delete(config.FilePath); } }
/// <summary> /// Merge together ObjectFilter /// </summary> /// <param name="mergeFilter">ObjectFilter to merge</param> public void MergeInc(ObjectFilter mergeFilter) { _itemsToExclude = null; //reset exclude //find all includes for the incoming merge ObjectFilter var mergeInc = mergeFilter.Items.Where(i => i.Value == true).ToDictionary(i => i.Key, v => v.Value); //set the true flag on 'this' Items with same key as incoming merges found above in mergeInc foreach (var pair in mergeInc) { Items[pair.Key] = pair.Value; } var mergeData = this.PreDefinedType.Concat(mergeFilter.PreDefinedType).GroupBy(v => v.Key).ToDictionary(k => k.Key, v => v.SelectMany(x => x.Value).Distinct().ToArray()); //rebuild PreDefinedType from merge linq statement this.PreDefinedType.Clear(); foreach (var item in mergeData) { this.PreDefinedType.Add(item.Key, item.Value); } }
/// <summary> /// Empty constructor for Serialize /// </summary> public OutPutFilters() { //will flip filter result from true to false FlipResult = false; //object filters IfcProductFilter = new ObjectFilter(); IfcTypeObjectFilter = new ObjectFilter(); IfcAssemblyFilter = new ObjectFilter(); //Property name filters ZoneFilter = new PropertyFilter(); TypeFilter = new PropertyFilter(); SpaceFilter = new PropertyFilter(); FloorFilter = new PropertyFilter(); FacilityFilter = new PropertyFilter(); SpareFilter = new PropertyFilter(); ComponentFilter = new PropertyFilter(); CommonFilter = new PropertyFilter(); //role storage RolesFilterHolder = new Dictionary <RoleFilter, OutPutFilters>(); }