private List<StringBuffer> getRelationalCreates() { List<StringBuffer> ddl = new ArrayList<StringBuffer>(); for ( short ftId = 0; ftId < schema.getFts(); ftId++ ) { QName ftName = schema.getFtName( ftId ); FeatureTypeMapping ftMapping = schema.getFtMapping( ftName ); if ( ftMapping != null ) { ddl.addAll( process( ftMapping ) ); } } return ddl; }
@Override protected List<String> getBLOBCreates() { List<String> ddl = new ArrayList<String>(); // create feature_type table TableName ftTable = schema.getBBoxMapping().getTable(); String ftTableSchema = ftTable.getSchema() == null ? "public" : ftTable.getSchema(); ddl.add( "CREATE TABLE " + ftTable + " (id smallint PRIMARY KEY, qname text NOT NULL)" ); ddl.add( "COMMENT ON TABLE " + ftTable + " IS 'Ids and bboxes of concrete feature types'" ); ddl.add( "SELECT ADDGEOMETRYCOLUMN('" + ftTableSchema.toLowerCase() + "', '" + ftTable.getTable().toLowerCase() + "','bbox','" + undefinedSrid + "','GEOMETRY',2)" ); // populate feature_type table for ( short ftId = 0; ftId < schema.getFts(); ftId++ ) { QName ftName = schema.getFtName( ftId ); ddl.add( "INSERT INTO " + ftTable + " (id,qname) VALUES (" + ftId + ",'" + ftName + "')" ); } // create gml_objects table TableName blobTable = schema.getBlobMapping().getTable(); String blobTableSchema = blobTable.getSchema() == null ? "public" : blobTable.getSchema(); ddl.add( "CREATE TABLE " + blobTable + " (id serial PRIMARY KEY, " + "gml_id text UNIQUE NOT NULL, ft_type smallint REFERENCES " + ftTable + " , binary_object bytea)" ); ddl.add( "COMMENT ON TABLE " + blobTable + " IS 'All objects (features and geometries)'" ); ddl.add( "SELECT ADDGEOMETRYCOLUMN('" + blobTableSchema.toLowerCase() + "', '" + blobTable.getTable().toLowerCase() + "','gml_bounded_by','" + undefinedSrid + "','GEOMETRY',2)" ); ddl.add( "ALTER TABLE " + blobTable + " ADD CONSTRAINT gml_objects_geochk CHECK (ST_IsValid(gml_bounded_by))" ); ddl.add( "CREATE INDEX gml_objects_sidx ON " + blobTable + " USING GIST (gml_bounded_by)" ); // ddl.add( "CREATE TABLE gml_names (gml_object_id integer REFERENCES gml_objects," // + "name text NOT NULL,codespace text,prop_idx smallint NOT NULL)" ); return ddl; }
QName ftName = schema.getFtName( ftId ); ddl.add( "INSERT INTO " + ftTable + " (id,qname) VALUES (" + ftId + ",'" + ftName + "')" );
@Override protected List<String> getBLOBCreates() { List<String> ddl = new ArrayList<String>(); // create feature_type table TableName ftTable = schema.getBBoxMapping().getTable(); ddl.add( "CREATE TABLE " + ftTable + " (id integer PRIMARY KEY, qname text NOT NULL, bbox GEOMETRY)" ); // populate feature_type table for ( short ftId = 0; ftId < schema.getFts(); ftId++ ) { QName ftName = schema.getFtName( ftId ); ddl.add( "INSERT INTO " + ftTable + " (id,qname) VALUES (" + ftId + ",'" + ftName + "')" ); } // create gml_objects table TableName blobTable = schema.getBlobMapping().getTable(); ddl.add( "CREATE TABLE " + blobTable + " (id integer IDENTITY(1,1) PRIMARY KEY, " + "gml_id varchar(2000) NOT NULL, ft_type integer REFERENCES " + ftTable + " , binary_object varbinary(max), gml_bounded_by GEOMETRY)" ); ddl.add( "ALTER TABLE " + blobTable + " ADD CONSTRAINT gml_objects_geochk CHECK (gml_bounded_by.STIsValid() = 1)" ); double[] dom = schema.getBlobMapping().getCRS().getValidDomain(); ddl.add( "CREATE SPATIAL INDEX gml_objects_sidx ON " + blobTable + "(gml_bounded_by) WITH ( BOUNDING_BOX = ( " + ArrayUtils.join( ",", dom ) + " ) )" ); // ddl.add( "CREATE INDEX gml_objects_sidx ON " + blobTable + " USING GIST (gml_bounded_by GIST_GEOMETRY_OPS)" // ); // ddl.add( "CREATE TABLE gml_names (gml_object_id integer REFERENCES gml_objects," // + "name text NOT NULL,codespace text,prop_idx smallint NOT NULL)" ); return ddl; }