private void processBuilding(CityModel cityModel, IfcBuilding ifcBuilding) throws SerializerException { Building building = new Building(); setGlobalId(building, ifcBuilding); setName(building.getName(), ifcBuilding.getName()); CityObjectMember cityObjectMember = new CityObjectMember(); cityObjectMember.setCityObject(building); cityModel.addCityObjectMember(cityObjectMember); IfcPostalAddress ifcBuildingAddress = ifcBuilding.getBuildingAddress(); if (ifcBuildingAddress != null) { building.addAddress(createAddress(ifcBuildingAddress)); } for (IfcRelContainedInSpatialStructure ifcRelContainedInSpatialStructure : ifcBuilding.getContainsElements()) { for (IfcProduct ifcProduct : ifcRelContainedInSpatialStructure.getRelatedElements()) { processBoundary(building, createFakeRoom(building), ifcProduct, null); } } for (IfcRelDecomposes ifcRelDecomposes : ifcBuilding.getIsDecomposedBy()) { for (IfcObjectDefinition ifcObjectDefinition : ifcRelDecomposes.getRelatedObjects()) { if (ifcObjectDefinition instanceof IfcBuildingStorey) { IfcBuildingStorey ifcBuildingStorey = (IfcBuildingStorey) ifcObjectDefinition; processStorey(building, ifcBuildingStorey); } } } }