/** * @param building * @return the DataObjectInfo which holds values of the given building. */ private DataObjectInfo<RenderablePrototype> createDataObjectInfo( WorldRenderableObject building ) { RenderableQualityModel rqm = building.getQualityLevel( 0 ); if ( rqm == null ) { LOG.info( "Could not extract the quality level of the RenderablePrototype with id:" + building.getId() ); return null; } rqm = createScaledQualityModel( rqm ); Envelope env = new GeometryFactory().createEnvelope( new double[] { 0, 0, 0 }, new double[] { 1, 1, 1 }, null ); building.setBbox( env ); RenderablePrototype rp = new RenderablePrototype( building.getId(), building.getTime(), building.getBbox(), rqm ); return new DataObjectInfo<RenderablePrototype>( building.getId(), Type.PROTOTYPE.getModelTypeName(), building.getName(), building.getExternalReference(), building.getBbox(), rp ); }
/** * Method called while serializing this object * * @param out * to write to. * @throws IOException */ private void write( WorldRenderableObject wro, DataOutputStream out ) throws IOException { Envelope env = wro.getBbox(); writeEnvelope( out, env ); int numberOfQL = wro.getNumberOfQualityLevels(); if ( numberOfQL > 0 ) { out.writeInt( numberOfQL ); for ( int i = 0; i < numberOfQL; ++i ) { RenderableQualityModel rqm = wro.getQualityLevel( i ); if ( rqm != null ) { // was this qualitymodel not null? out.writeInt( i ); write( rqm, out ); } else { out.writeInt( -1 ); } } } else { out.write( -1 ); } }
/** * @param wro * @return */ private RenderablePrototype createRenderablePrototype( WorldRenderableObject wro ) { RenderableQualityModel[] models = wro.getQualityLevels(); if ( models == null || models.length != 1 ) { return null; } return new RenderablePrototype( wro.getId(), wro.getTime(), wro.getBbox(), models[0] ); }
/** * @param building * @return the DataObjectInfo which holds values of the given building. */ private DataObjectInfo<WorldRenderableObject> createDataObjectInfo( WorldRenderableObject building ) { return new DataObjectInfo<WorldRenderableObject>( building.getId(), Type.BUILDING.getModelTypeName(), building.getName(), building.getExternalReference(), building.getBbox(), building ); }
WorldRenderableObject wo = dm.getData(); boolean mergeEnvelopes = false; for ( int i = 0; i < wo.getNumberOfQualityLevels(); ++i ) { RenderableQualityModel rqm = wo.getQualityLevel( i ); if ( rqm != null ) { oldWRO.setQualityLevel( i, rqm ); } else { mergeEnvelopes = oldWRO.getQualityLevel( i ) != null; Envelope nEnv = wo.getBbox(); Envelope oldEnv = oldWRO.getBbox();
if ( wro != null ) { Envelope env = createEnvelope( (G) rs.getObject( RelevantColumns.envelope.getColumnName() ) ); wro.setBbox( env ); wro.setExternalReference( rs.getString( RelevantColumns.externalRef.getColumnName() ) ); wro.setType( rs.getString( RelevantColumns.type.getColumnName() ) ); wro.setName( rs.getString( RelevantColumns.name.getColumnName() ) ); wro.setId( rs.getString( RelevantColumns.uuid.getColumnName() ) ); wro.setTime( rs.getTimestamp( RelevantColumns.lastupdate.getColumnName() ).toString() ); result.add( wro ); } else {
WorldRenderableObject wro = new WorldRenderableObject( id, new Timestamp( System.currentTimeMillis() ).toString(), env, numberOfQualityLevels ); wro.setName( fileName ); wro.setExternalReference( fileName ); wro.setQualityLevel( qualityLevel, result );
new float[] { (float) translation[0], (float) translation[1] }, width, height, depth ); RenderableQualityModel modelQL = building.getQualityLevel( qualityLevel ); if ( modelQL != null ) { modelQL.setPrototype( pr ); modelQL = new RenderableQualityModel( pr ); building.setQualityLevel( qualityLevel, modelQL ); DataObjectInfo<WorldRenderableObject> updated = new DataObjectInfo<WorldRenderableObject>( buildingID, Type.BUILDING.getModelTypeName(), building.getName(), building.getExternalReference(), building.getBbox(), building ); List<DataObjectInfo<WorldRenderableObject>> insert = new ArrayList<DataObjectInfo<WorldRenderableObject>>(
if ( wro.getNumberOfQualityLevels() == 0 || 0 > levelOfInterest || levelOfInterest > wro.getNumberOfQualityLevels() ) { throw new IllegalArgumentException( "No objects in WorldRenderableObject to create a simplified form from." ); RenderableQualityModel rqm = wro.getQualityLevel( levelOfInterest ); if ( rqm == null || rqm.getPrototypeReference() != null ) { throw new IllegalArgumentException( wro.setQualityLevel( targetQualityLevel, createRenderableGeometry( convexHull, form.getMinZ(), form.getMaxZ() ) );
@Override public List<WorldRenderableObject> importFromFile( String fileName, int numberOfQualityLevels, int qualityLevel ) throws IOException { FeatureCollection fc = null; try { fc = readGML( fileName ); } catch ( Exception e ) { throw new IOException( "Error while importing file: " + fileName + " because: " + e.getLocalizedMessage(), e ); } Map<String, WorldRenderableObject> bMap = new HashMap<String, WorldRenderableObject>( fc.size() ); for ( Feature f : fc ) { if ( BUILDING_QNAME.equals( f.getName() ) ) { WorldRenderableObject wro = createDataObjectWithMaterial( f, numberOfQualityLevels, qualityLevel ); if ( wro != null ) { if ( !bMap.containsKey( wro.getId() ) ) { bMap.put( wro.getId(), wro ); } else { LOG.warn( "Duplicate building with id: " + wro.getId() + " using first building with envelope: " + wro.getBbox().toString() ); } } } else { LOG.warn( "Unhandled feature type '" + f.getName() + "' -- skipping." ); } } List<WorldRenderableObject> result = new ArrayList<WorldRenderableObject>( bMap.size() ); result.addAll( bMap.values() ); return result; }
/** * @param building * @return */ private DataObjectInfo<WorldRenderableObject> createDataObjectInfo( String uuid, String type, String name, WorldRenderableObject stage ) { Envelope envelope = stage.getBbox(); return new DataObjectInfo<WorldRenderableObject>( uuid, type, name, uuid, envelope, stage ); }
@SuppressWarnings("unchecked") private Object getDeSerializedObjectForUUID( Connection connection, Type objectType, String uuid ) throws IOException { Object result = null; try { PreparedStatement ps = connection.prepareStatement( mapTypeToTable( OBJ_FROM_ID, objectType ) ); ps.setString( 1, uuid ); ResultSet rs = ps.executeQuery(); ObjectSerializer<?> serializer = super.getSerializerForType( objectType ); if ( rs.next() ) { byte[] b = rs.getBytes( RelevantColumns.data.getColumnName() ); if ( b != null ) { result = serializer.deserializeDataObject( b ); if ( result != null ) { if ( result instanceof WorldRenderableObject ) { WorldRenderableObject wro = (WorldRenderableObject) result; wro.setId( uuid ); wro.setBbox( createEnvelope( ( (G) rs.getObject( RelevantColumns.envelope.getColumnName() ) ) ) ); } } } } ps.close(); } catch ( SQLException e ) { throw new IOException( e ); } return result; }
/** * @param in * @return * @throws IOException */ private WorldRenderableObject readWRO( DataInputStream in ) throws IOException { Envelope env = readEnvelope( in ); WorldRenderableObject result = null; int numberOfQL = in.readInt(); if ( numberOfQL != -1 ) { RenderableQualityModel[] qm = new RenderableQualityModel[numberOfQL]; for ( int i = 0; i < numberOfQL; ++i ) { qm[i] = readQualityModel( in ); } result = new WorldRenderableObject( null, null, env, qm ); } return result; }
uuid ); if ( obj != null ) { RenderableQualityModel[] rqms = obj.getQualityLevels(); if ( rqms != null ) { if ( qualityLevel < rqms.length ) { info.addOrdinates( -ordinates ); info.addTextureOrdinates( -textureOrdinates ); obj.setQualityLevel( qualityLevel, null ); boolean deleteRow = true; for ( int i = 0; i < obj.getNumberOfQualityLevels() && deleteRow; ++i ) { deleteRow = ( obj.getQualityLevel( i ) == null ); null, null, obj.getBbox(), obj );
rp.setId( doi.getUuid() ); rp.setTime( new Timestamp( doi.getTime() ).toString() ); rp.setExternalReference( doi.getExternalRef() ); rp.setName( doi.getName() ); rp.setType( doi.getType() ); bm.add( rp );
WorldRenderableObject rwo = new WorldRenderableObject( id, new Timestamp( System.currentTimeMillis() ).toString(), env, numberOfLevels ); QName name = building.getName(); if ( name != null ) { rwo.setName( name.getLocalPart() ); } else { rwo.setName( id ); rwo.setExternalReference( externalReference ); RenderableQualityModel rqm = null; try { rwo.setQualityLevel( qualityLevel, rqm );
wos.createSimplified3DObject( building, sourceQL, targetQL ); DataObjectInfo<WorldRenderableObject> updated = new DataObjectInfo<WorldRenderableObject>( building.getId(), Type.BUILDING.getModelTypeName(), building.getName(), building.getExternalReference(), building.getBbox(), building ); insert.add( updated );
/** * Adds the given branch group to the scene and set the appropriate distance etc. After adding the branch group to * the rotation group which is controlled by the mouse rotator. * * @param b * a list of WorldRenderableObjects, can be <Code>null</Code>. */ public void addDataObjectToScene( WorldRenderableObject b ) { if ( b != null ) { Envelope env = b.getBbox(); if ( env != null ) { if ( isDefaultBBox() ) { bbox = env; } else { bbox = bbox.merge( env ); } } calcViewParameters(); worldRenderableObjects.add( b ); } }
/** * @param mappedColumns * @param values * @return */ private WorldRenderableObject createWRO( Map<Column, Integer> mappedColumns, String[] values ) { float height = parseFloatingPoint( values[mappedColumns.get( Column.HEIGHT )], Column.HEIGHT ); float width = 1; float depth = 1; float northing = parseFloatingPoint( values[mappedColumns.get( Column.NORTHING )], Column.NORTHING ); northing += wpvsTranslationVector[1]; float easting = parseFloatingPoint( values[mappedColumns.get( Column.EASTING )], Column.EASTING ); easting += wpvsTranslationVector[0]; float groundLevel = parseFloatingPoint( values[mappedColumns.get( Column.GROUND_LEVEL )], Column.GROUND_LEVEL ); String protoTypeRef = values[mappedColumns.get( Column.PROTOTYPE )]; float[] location = new float[] { easting, northing, groundLevel }; PrototypeReference reference = new PrototypeReference( protoTypeRef, 0, location, width, height, depth ); RenderableQualityModel[] qualityLevels = new RenderableQualityModel[numberOfLevels]; Envelope env = getEnvelope( location, width, height, depth ); qualityLevels[qualityLevel] = new RenderableQualityModel( reference ); WorldRenderableObject result = new WorldRenderableObject( values[mappedColumns.get( Column.ID )], null, env, qualityLevels ); return result; }