Revision 47579 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.sqlite/org.gvsig.sqlite.provider/src/main/java/org/gvsig/sqlite/dal/geopackage/GeopackageGeometryColumns.java

View differences:

GeopackageGeometryColumns.java
13 13
import org.gvsig.fmap.dal.store.jdbc2.JDBCConnection;
14 14
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
15 15
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
16
import org.gvsig.fmap.geom.Geometry;
16 17
import org.gvsig.sqlite.dal.operations.SQLiteFetchFeatureTypeOperation;
17 18
import org.gvsig.sqlite.dal.operations.SQLiteFetchFeatureTypeOperation.SQLiteColumnInfo;
18 19
import org.sqlite.SQLiteException;
......
23 24
 */
24 25
public class GeopackageGeometryColumns {
25 26
    
26
    
27 27
    public static class GeopackageGeometryColumn extends SQLiteFetchFeatureTypeOperation.SQLiteColumnInfo {
28 28

  
29 29
        private String geometry_type_name;
......
126 126
            JDBCUtils.closeQuietly(st);
127 127
        }
128 128
    }    
129
    
130
    public static String buildCreateTableSQLIfNotExists() {
131
        return "CREATE TABLE IF NOT EXISTS \"gpkg_geometry_columns\" (\n"
132
                + "	\"table_name\"	TEXT NOT NULL,\n"
133
                + "	\"column_name\"	TEXT NOT NULL,\n"
134
                + "	\"geometry_type_name\"	TEXT NOT NULL,\n"
135
                + "	\"srs_id\"	INTEGER NOT NULL,\n"
136
                + "	\"z\"	TINYINT NOT NULL,\n"
137
                + "	\"m\"	TINYINT NOT NULL,\n"
138
                + "	CONSTRAINT \"pk_geom_cols\" PRIMARY KEY(\"table_name\",\"column_name\"),\n"
139
                + "	CONSTRAINT \"fk_gc_tn\" FOREIGN KEY(\"table_name\") REFERENCES \"gpkg_contents\"(\"table_name\"),\n"
140
                + "	CONSTRAINT \"uk_gc_table_name\" UNIQUE(\"table_name\"),\n"
141
                + "	CONSTRAINT \"fk_gc_srs\" FOREIGN KEY(\"srs_id\") REFERENCES \"gpkg_spatial_ref_sys\"(\"srs_id\")\n"
142
                + ")";
143
    }
144

  
145
    public static String buildInsertSQL(String tableName, String geomName, int geometryType, int geometrySubtype, Object geometrySRSId) {
146
        String geometryTypeName = "GEOMETRY";
129 147
        
148
        switch(geometryType){
149
            case Geometry.TYPES.POINT:
150
                geometryTypeName = "POINT";
151
                break;
152
            case Geometry.TYPES.ARC:
153
            case Geometry.TYPES.CIRCUMFERENCE:
154
            case Geometry.TYPES.ELLIPTICARC:
155
            case Geometry.TYPES.LINE:
156
            case Geometry.TYPES.PERIELLIPSE:
157
            case Geometry.TYPES.SPLINE:
158
                geometryTypeName = "LINESTRING";
159
                break;
160
            case Geometry.TYPES.CIRCLE:
161
            case Geometry.TYPES.ELLIPSE:
162
            case Geometry.TYPES.FILLEDSPLINE:
163
            case Geometry.TYPES.POLYGON:
164
                geometryTypeName = "POLYGON";
165
                break;
166

  
167
            case Geometry.TYPES.MULTILINE:
168
                geometryTypeName = "MULTILINESTRING";
169
                break;
170
                
171
            case Geometry.TYPES.MULTIPOINT:
172
                geometryTypeName = "MULTIPOINT";
173
                break;
174
                
175
            case Geometry.TYPES.MULTIPOLYGON:
176
                geometryTypeName = "MULTIPOLYGON";
177
                break;
178
        }
179
        String s = String.format(
180
                "INSERT INTO \"main\".\"gpkg_geometry_columns\" (\"table_name\", \"column_name\", \"geometry_type_name\", \"srs_id\", \"z\", \"m\") VALUES ('%s', '%s', '%s', '%s', '%s', '%s')",
181
                tableName,
182
                geomName,
183
                geometryTypeName,
184
                geometrySRSId.toString(),
185
                (geometrySubtype==Geometry.SUBTYPES.GEOM3D || geometrySubtype==Geometry.SUBTYPES.GEOM3DM)?1:0,
186
                (geometrySubtype==Geometry.SUBTYPES.GEOM2DM || geometrySubtype==Geometry.SUBTYPES.GEOM3DM)?1:0
187
                );
188
        
189
        return s;
190
    }
191
    public static String buildDeleteSQL(String tableName, String geomName) {
192
        String s = String.format(
193
                "DELETE FROM \"main\".\"gpkg_geometry_columns\" WHERE \"table_name\" = '%s' and \"column_name\" = '%s'",
194
                tableName,
195
                geomName
196
                );
197
        
198
        return s;
199
    }
130 200
}

Also available in: Unified diff