public void read(BridgeRoom room, long parentId) throws SQLException { ResultSet rs = null; try { psBridgeRoomInstallation.setLong(1, parentId); rs = psBridgeRoomInstallation.executeQuery(); while (rs.next()) { long installationId = rs.getLong(1); int classId = rs.getInt(2); if (rs.wasNull() || classId == 0 || Util.classId2cityObject(classId) != CityGMLClass.INT_BRIDGE_INSTALLATION) continue; IntBridgeInstallation intBridgeInstallation = new IntBridgeInstallation(); String clazz = rs.getString(3); if (clazz != null) { Code code = new Code(clazz); code.setCodeSpace(rs.getString(4)); intBridgeInstallation.setClazz(code); } String function = rs.getString(5); String functionCodeSpace = rs.getString(6); if (function != null) intBridgeInstallation.setFunction(Util.string2codeList(function, functionCodeSpace)); String usage = rs.getString(7); String usageCodeSpace = rs.getString(8); if (usage != null) intBridgeInstallation.setUsage(Util.string2codeList(usage, usageCodeSpace)); // boundarySurface // geometry objects of _BoundarySurface elements have to be referenced by lod4Geometry // So we first export all _BoundarySurfaces thematicSurfaceExporter.read(intBridgeInstallation, installationId); // geometry long surfaceGeometryId = rs.getLong(11); Object geomObj = rs.getObject(14); if (surfaceGeometryId != 0 || geomObj != null) { GeometryProperty<AbstractGeometry> geometryProperty = null; if (surfaceGeometryId != 0) { DBSurfaceGeometryResult geometry = surfaceGeometryExporter.read(surfaceGeometryId); if (geometry != null) { geometryProperty = new GeometryProperty<AbstractGeometry>(); if (geometry.getAbstractGeometry() != null) geometryProperty.setGeometry(geometry.getAbstractGeometry()); else geometryProperty.setHref(geometry.getTarget()); } } else { GeometryObject geometry = dbExporterManager.getDatabaseAdapter().getGeometryConverter().getGeometry(geomObj); if (geometry != null) { geometryProperty = new GeometryProperty<AbstractGeometry>(); geometryProperty.setGeometry( geometryExporter.getPointOrCurveGeometry(geometry, true)); } } if (geometryProperty != null) intBridgeInstallation.setLod4Geometry(geometryProperty); } // implicit geometry long implicitGeometryId = rs.getLong(17); if (implicitGeometryId != 0) { GeometryObject referencePoint = null; Object referencePointObj = rs.getObject(20); if (!rs.wasNull() && referencePointObj != null) referencePoint = dbExporterManager .getDatabaseAdapter() .getGeometryConverter() .getPoint(referencePointObj); String transformationMatrix = rs.getString(23); ImplicitGeometry implicit = implicitGeometryExporter.read( implicitGeometryId, referencePoint, transformationMatrix); if (implicit != null) { ImplicitRepresentationProperty implicitProperty = new ImplicitRepresentationProperty(); implicitProperty.setObject(implicit); intBridgeInstallation.setLod4ImplicitRepresentation(implicitProperty); } } cityObjectReader.read(intBridgeInstallation, installationId); IntBridgeInstallationProperty intInstProp = new IntBridgeInstallationProperty(); intInstProp.setObject(intBridgeInstallation); room.addBridgeRoomInstallation(intInstProp); } } finally { if (rs != null) rs.close(); } }
public void read(AbstractBridge bridge, long parentId, ProjectionPropertyFilter projectionFilter) throws SQLException { ResultSet rs = null; try { psBridgeInstallation.setLong(1, parentId); rs = psBridgeInstallation.executeQuery(); while (rs.next()) { long installationId = rs.getLong(1); int classId = rs.getInt(2); if (rs.wasNull() || classId == 0) continue; BridgeInstallation bridgeInstallation = null; IntBridgeInstallation intBridgeInstallation = null; CityGMLClass type = Util.classId2cityObject(classId); switch (type) { case BRIDGE_INSTALLATION: if (projectionFilter.pass(CityGMLModuleType.BRIDGE, "outerBridgeInstallation")) bridgeInstallation = new BridgeInstallation(); break; case INT_BRIDGE_INSTALLATION: if (projectionFilter.pass(CityGMLModuleType.BRIDGE, "interiorBridgeInstallation")) intBridgeInstallation = new IntBridgeInstallation(); break; default: continue; } if (bridgeInstallation == null && intBridgeInstallation == null) return; String clazz = rs.getString(3); if (clazz != null) { Code code = new Code(clazz); code.setCodeSpace(rs.getString(4)); if (bridgeInstallation != null) bridgeInstallation.setClazz(code); else intBridgeInstallation.setClazz(code); } String function = rs.getString(5); String functionCodeSpace = rs.getString(6); if (function != null) { if (bridgeInstallation != null) bridgeInstallation.setFunction(Util.string2codeList(function, functionCodeSpace)); else intBridgeInstallation.setFunction(Util.string2codeList(function, functionCodeSpace)); } String usage = rs.getString(7); String usageCodeSpace = rs.getString(8); if (usage != null) { if (bridgeInstallation != null) bridgeInstallation.setUsage(Util.string2codeList(usage, usageCodeSpace)); else intBridgeInstallation.setUsage(Util.string2codeList(usage, usageCodeSpace)); } // boundarySurface // geometry objects of _BoundarySurface elements have to be referenced by lodXGeometry // So we first export all _BoundarySurfaces if (bridgeInstallation != null) thematicSurfaceExporter.read(bridgeInstallation, installationId); else thematicSurfaceExporter.read(intBridgeInstallation, installationId); // geometry for (int lod = 0; lod < 3; lod++) { long surfaceGeometryId = rs.getLong(9 + lod); Object geomObj = rs.getObject(12 + lod); if (surfaceGeometryId == 0 && geomObj == null) continue; GeometryProperty<AbstractGeometry> geometryProperty = null; if (surfaceGeometryId != 0) { DBSurfaceGeometryResult geometry = surfaceGeometryExporter.read(surfaceGeometryId); if (geometry != null) { geometryProperty = new GeometryProperty<AbstractGeometry>(); if (geometry.getAbstractGeometry() != null) geometryProperty.setGeometry(geometry.getAbstractGeometry()); else geometryProperty.setHref(geometry.getTarget()); } } else { GeometryObject geometry = dbExporterManager.getDatabaseAdapter().getGeometryConverter().getGeometry(geomObj); if (geometry != null) { geometryProperty = new GeometryProperty<AbstractGeometry>(); geometryProperty.setGeometry( geometryExporter.getPointOrCurveGeometry(geometry, true)); } } if (geometryProperty != null) { switch (lod) { case 0: if (bridgeInstallation != null) bridgeInstallation.setLod2Geometry(geometryProperty); break; case 1: if (bridgeInstallation != null) bridgeInstallation.setLod3Geometry(geometryProperty); break; case 2: if (bridgeInstallation != null) bridgeInstallation.setLod4Geometry(geometryProperty); else intBridgeInstallation.setLod4Geometry(geometryProperty); break; } } } // implicit geometry for (int lod = 0; lod < 3; lod++) { long implicitGeometryId = rs.getLong(15 + lod); if (rs.wasNull()) continue; GeometryObject referencePoint = null; Object referencePointObj = rs.getObject(18 + lod); if (!rs.wasNull() && referencePointObj != null) referencePoint = dbExporterManager .getDatabaseAdapter() .getGeometryConverter() .getPoint(referencePointObj); String transformationMatrix = rs.getString(21 + lod); ImplicitGeometry implicit = implicitGeometryExporter.read( implicitGeometryId, referencePoint, transformationMatrix); if (implicit != null) { ImplicitRepresentationProperty implicitProperty = new ImplicitRepresentationProperty(); implicitProperty.setObject(implicit); switch (lod) { case 0: if (bridgeInstallation != null) bridgeInstallation.setLod2ImplicitRepresentation(implicitProperty); break; case 1: if (bridgeInstallation != null) bridgeInstallation.setLod3ImplicitRepresentation(implicitProperty); break; case 2: if (bridgeInstallation != null) bridgeInstallation.setLod4ImplicitRepresentation(implicitProperty); else intBridgeInstallation.setLod4ImplicitRepresentation(implicitProperty); break; } } } if (bridgeInstallation != null) { cityObjectReader.read(bridgeInstallation, installationId); BridgeInstallationProperty bridgeInstProp = new BridgeInstallationProperty(); bridgeInstProp.setObject(bridgeInstallation); bridge.addOuterBridgeInstallation(bridgeInstProp); } else { cityObjectReader.read(intBridgeInstallation, installationId); IntBridgeInstallationProperty intInstProp = new IntBridgeInstallationProperty(); intInstProp.setObject(intBridgeInstallation); bridge.addInteriorBridgeInstallation(intInstProp); } } } finally { if (rs != null) rs.close(); } }