Statistics
| Revision:

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
}