Revision 43687 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/CreateTableOperation.java

View differences:

CreateTableOperation.java
3 3
import java.sql.Connection;
4 4
import java.sql.SQLException;
5 5
import java.sql.Statement;
6
import java.util.ArrayList;
6 7
import java.util.List;
8
import org.apache.commons.collections.CollectionUtils;
7 9
import org.apache.commons.lang3.tuple.Pair;
8 10
import org.gvsig.fmap.dal.exception.DataException;
9 11
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
......
55 57
                type, userAndPrivileges, additionalSQLs);
56 58
    }
57 59

  
60
    protected List<String> buildCreateIndexesSQL(
61
            String database,
62
            String schema,
63
            String table,
64
            FeatureType type
65
        ) {
66
        ArrayList<String> sqls = new ArrayList<>();
67
        
68
        for (FeatureAttributeDescriptor attr : type) {
69
            if( attr.isIndexed() ) {
70
                JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
71
                if( attr.getType()==org.gvsig.fmap.dal.DataTypes.GEOMETRY ) {
72
                    sqlbuilder.create_index().spatial();
73
                }
74
                sqlbuilder.create_index().if_not_exist();
75
                sqlbuilder.create_index().name("idx_" + table + "_" + attr.getName());
76
                sqlbuilder.create_index().column(attr.getName());
77
                sqlbuilder.create_index().table().database(database).schema(schema).name(table);
78
                sqls.addAll(sqlbuilder.create_index().toStrings());
79
            }
80
        }
81
        return sqls;
82
    }
83
    
58 84
    public boolean performCreateTable(Connection conn,
59 85
            String dbName, 
60 86
            String schemaName,
......
95 121

  
96 122
        List<String> sqls;
97 123
        sqls = sqlbuilder.create_table().toStrings();
124
        sqls.addAll(buildCreateIndexesSQL(dbName, schemaName, tableName, type));
98 125
        sqls.addAll(sqlbuilder.grant().toStrings());
99 126
        sqls.addAll(additionalSQLs);
100 127

  
......
102 129
        try {
103 130
            st = conn.createStatement();
104 131
            for (String sql : sqls) {
105
                
106 132
                JDBCUtils.execute(st, sql);
107 133
            }
108 134
        } catch (SQLException ex) {

Also available in: Unified diff