Statistics
| Revision:

gvsig-mssqlserver / trunk / org.gvsig.mssqlserver / org.gvsig.mssqlserver.provider / src / main / java / org / gvsig / mssqlserver / dal / operations / MSSQLServerCanModifyTableOperation.java @ 5

History | View | Annotate | Download (1.74 KB)

1
package org.gvsig.mssqlserver.dal.operations;
2

    
3
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.*;
4
import java.sql.Connection;
5
import java.sql.ResultSet;
6
import java.sql.SQLException;
7
import java.sql.Statement;
8
import org.gvsig.fmap.dal.exception.DataException;
9
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCSQLException;
10
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
11
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
12

    
13
public class MSSQLServerCanModifyTableOperation extends CanModifyTableOperation {
14

    
15
    public MSSQLServerCanModifyTableOperation(
16
            JDBCHelper helper
17
        ) {
18
        this(helper, null, null, null);
19
    }
20

    
21
    public MSSQLServerCanModifyTableOperation(
22
            JDBCHelper helper,
23
            String dbName,
24
            String schemaName,
25
            String tableName
26
        ) {
27
        super(helper,dbName,schemaName,tableName);
28
    }
29

    
30
    @Override
31
    public boolean canModifyTable(Connection conn,
32
            String dbName,
33
            String schemaName,
34
            String tableName
35
        ) throws DataException {
36

    
37
        String sql = "SELECT count(*) " + 
38
                     "FROM fn_my_permissions('master.dbo.provincias_andalucia', 'OBJECT') " +
39
                     "WHERE permission_name in ('UPDATE', 'INSERT', 'DELETE') AND subentity_name = ''";
40
        Statement st = null;
41
        ResultSet rs = null;
42
        try {
43
            st = conn.createStatement();
44
            rs = JDBCUtils.executeQuery(st, sql);
45
            if (!rs.next()) {
46
                return false;
47
            }
48
            return rs.getInt(1)==3;
49

    
50
        } catch (SQLException ex) {
51
            throw new JDBCSQLException(ex);
52
        } finally {
53
            JDBCUtils.closeQuietly(st);
54
            JDBCUtils.closeQuietly(rs);
55
        }
56

    
57
    }
58

    
59
}