svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / main / java / org / gvsig / sqlite / dal / geopackage / index / GeopackageIndexRTree.java @ 47579
History | View | Annotate | Download (3.46 KB)
1 |
package org.gvsig.sqlite.dal.geopackage.index; |
---|---|
2 |
|
3 |
import java.util.ArrayList; |
4 |
import java.util.List; |
5 |
import org.gvsig.sqlite.dal.utils.TemplateUtils; |
6 |
|
7 |
/**
|
8 |
*
|
9 |
* @author jjdelcerro
|
10 |
*/
|
11 |
public class GeopackageIndexRTree extends AbstractGeopackageIndex { |
12 |
|
13 |
//
|
14 |
// https://github.com/opengeospatial/geopackage/blob/master/spec/core/annexes/extension_spatialindex.adoc
|
15 |
//
|
16 |
|
17 |
private static final String ATTRIBUTE_INDEX_FLAG_NAME = "gpkg_rtree_index"; |
18 |
public static final String GROUP_NAME = "rtree"; |
19 |
|
20 |
|
21 |
public GeopackageIndexRTree() {
|
22 |
|
23 |
} |
24 |
|
25 |
@Override
|
26 |
protected String getGroup() { |
27 |
return GROUP_NAME;
|
28 |
} |
29 |
|
30 |
@Override
|
31 |
protected String getAttributeIndexFlagName() { |
32 |
return ATTRIBUTE_INDEX_FLAG_NAME;
|
33 |
} |
34 |
|
35 |
@Override
|
36 |
public List<String> getCreateIndexSQL(String tablename, String fieldnamegeom, String fieldnameid) { |
37 |
List<String> sqls = new ArrayList<>(); |
38 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "create_table_gpkg_extensions"));
|
39 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "create_rtree_table", tablename, fieldnamegeom));
|
40 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "create_trigger_rtree_delete", tablename, fieldnamegeom, fieldnameid));
|
41 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "create_trigger_rtree_insert", tablename, fieldnamegeom, fieldnameid));
|
42 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "create_trigger_rtree_update1", tablename, fieldnamegeom, fieldnameid));
|
43 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "create_trigger_rtree_update2", tablename, fieldnamegeom, fieldnameid));
|
44 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "create_trigger_rtree_update3", tablename, fieldnamegeom, fieldnameid));
|
45 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "create_trigger_rtree_update4", tablename, fieldnamegeom, fieldnameid));
|
46 |
sqls.add(TemplateUtils.getSqlTemplate(getGroup(), "insert_into_table_gpkg_extensions", tablename, fieldnamegeom));
|
47 |
|
48 |
return sqls;
|
49 |
} |
50 |
|
51 |
@Override
|
52 |
public String getEnvelopeSQL(String tablename, String fieldnamegeom) { |
53 |
String sql = TemplateUtils.getSqlTemplate(getGroup(), "bbox_of_index", tablename, fieldnamegeom); |
54 |
return sql;
|
55 |
} |
56 |
|
57 |
@Override
|
58 |
public List<String> getRemoveIndexSQL(String tablename, String fieldnamegeom) { |
59 |
List<String> sqls = new ArrayList<>(); |
60 |
|
61 |
sqls.add(String.format("DROP TRIGGER IF EXISTS \"rtree_%s_%s_delete\"",tablename, fieldnamegeom)); |
62 |
sqls.add(String.format("DROP TRIGGER IF EXISTS \"rtree_%s_%s_insert\"",tablename, fieldnamegeom)); |
63 |
sqls.add(String.format("DROP TRIGGER IF EXISTS \"rtree_%s_%s_update1\"",tablename, fieldnamegeom)); |
64 |
sqls.add(String.format("DROP TRIGGER IF EXISTS \"rtree_%s_%s_update2\"",tablename, fieldnamegeom)); |
65 |
sqls.add(String.format("DROP TRIGGER IF EXISTS \"rtree_%s_%s_update3\"",tablename, fieldnamegeom)); |
66 |
sqls.add(String.format("DROP TRIGGER IF EXISTS \"rtree_%s_%s_update4\"",tablename, fieldnamegeom)); |
67 |
|
68 |
sqls.add(String.format("DROP TABLE IF EXISTS \"rtree_%s_%s\"",tablename, fieldnamegeom)); |
69 |
sqls.add(String.format("DROP TABLE IF EXISTS \"rtree_%s_%s_node\"",tablename, fieldnamegeom)); |
70 |
sqls.add(String.format("DROP TABLE IF EXISTS \"rtree_%s_%s_parent\"",tablename, fieldnamegeom)); |
71 |
sqls.add(String.format("DROP TABLE IF EXISTS \"rtree_%s_%s_rowid\"",tablename, fieldnamegeom)); |
72 |
|
73 |
return sqls;
|
74 |
} |
75 |
|
76 |
} |