Skip to content

Commit

Permalink
Merge pull request #21 from andyward/fix/SchemaInfoParents
Browse files Browse the repository at this point in the history
Fix for #20. Remove all subclasses when getting attributes.
  • Loading branch information
CBenghi authored Nov 21, 2023
2 parents 11376da + e6a6eb6 commit 358507e
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 56 deletions.
16 changes: 11 additions & 5 deletions ids-lib.codegen/IfcSchema_AttributesGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,26 @@ static public string Execute()
{
var attribute = $"\"{pair.Key}\"";
// trying to remove all subclasses
var OnlyTopClasses = pair.Value.ToList();
for (int i = 0; i < OnlyTopClasses.Count; i++)
var toRemove = new HashSet<string>();
var onlyTopClasses = pair.Value.ToList();
for (int i = 0; i < onlyTopClasses.Count; i++)
{
var thisClassName = OnlyTopClasses[i];
var thisClassName = onlyTopClasses[i];
var thisClass = metaD.ExpressType(thisClassName.ToUpperInvariant());

foreach (var sub in thisClass.AllSubTypes)
{
OnlyTopClasses.Remove(sub.ExpressNameUpper);
if(!toRemove.Contains(sub.ExpressNameUpper))
{
toRemove.Add(sub.ExpressNameUpper);
}
}
}

var classesInQuotes = pair.Value.Select(x => $"\"{x}\"").ToArray();
var topClassesInQuotes = OnlyTopClasses.Select(x => $"\"{x}\"").ToArray();
var topClassesInQuotes = onlyTopClasses
.Where(c=> !toRemove.Contains(c))
.Select(x => $"\"{x}\"").ToArray();
var line = $"\t\t\tdestinationSchema.AddAttribute({attribute}, new[] {{ {string.Join(", ", topClassesInQuotes)} }}, new[] {{ {string.Join(", ", classesInQuotes)} }});";

sb.AppendLine(line);
Expand Down
96 changes: 48 additions & 48 deletions ids-lib/IfcSchema/SchemaInfo.Attributes.g.cs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion ids-lib/LibraryInformation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@ public static class LibraryInformation
/// <summary>
/// Static field with hardcoded DLL version number.
/// </summary>
public static string AssemblyVersion => "1.0.55";
public static string AssemblyVersion => "1.0.56";
}
}
2 changes: 1 addition & 1 deletion ids-lib/ids-lib.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<PackageReleaseNotes>First implementation.</PackageReleaseNotes>
<PackageReadmeFile>README.md</PackageReadmeFile>
<!-- Github actions are setup so that when this version is bumped the nuget package is uploaded -->
<AssemblyVersion>1.0.55</AssemblyVersion>
<AssemblyVersion>1.0.56</AssemblyVersion>
<FileVersion>$(AssemblyVersion)</FileVersion>
<Version>$(AssemblyVersion)</Version>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Expand Down
13 changes: 13 additions & 0 deletions ids-tool.tests/IfcSchemaTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,19 @@ public void CanGetTopLevelClassesByAttribute()

}

[Fact]
public void OnlyTopLevelClassesShouldRemoveAllSubClasses()
{
// Issue #20

var topLevelClasses = SchemaInfo.SchemaIfc4.GetAttributeClasses("ObjectType", onlyTopClasses: true);

topLevelClasses.Should().Contain("IFCOBJECT");

topLevelClasses.Should().NotContain("IFCPRODUCT");

}



}
2 changes: 1 addition & 1 deletion ids-tool/ids-tool.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<PackageIcon>icon.png</PackageIcon>
<PackageTags>IDS, buildingSmart</PackageTags>
<!-- Github actions are setup so that when this version is bumped the nuget package is uploaded -->
<AssemblyVersion>1.0.55</AssemblyVersion>
<AssemblyVersion>1.0.56</AssemblyVersion>
<FileVersion>$(AssemblyVersion)</FileVersion>
<Version>$(AssemblyVersion)</Version>
<RepositoryUrl>https://github.com/buildingSMART/IDS-Audit-tool.git</RepositoryUrl>
Expand Down

0 comments on commit 358507e

Please sign in to comment.