Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extJDBC / src / com / iver / cit / gvsig / fmap / drivers / jdbc / JdbcWriter.java @ 5558

History | View | Annotate | Download (3.4 KB)

1
package com.iver.cit.gvsig.fmap.drivers.jdbc;
2

    
3
import java.sql.Connection;
4
import java.sql.ResultSet;
5
import java.sql.ResultSetMetaData;
6
import java.sql.SQLException;
7

    
8
import com.hardcode.gdbms.engine.values.Value;
9
import com.iver.cit.gvsig.fmap.core.IRow;
10
import com.iver.cit.gvsig.fmap.drivers.ITableDefinition;
11
import com.iver.cit.gvsig.fmap.edition.EditionException;
12
import com.iver.cit.gvsig.fmap.edition.IRowEdited;
13
import com.iver.cit.gvsig.fmap.edition.writers.AbstractWriter;
14

    
15
public class JdbcWriter extends AbstractWriter {
16
        Connection conn;
17
        ResultSet rs;
18
        Value[] record;
19
        int numRecord;
20
        
21
        private boolean bWriteAll;
22
        private boolean bCreateTable;
23
        
24
        private ResultSetMetaData metaData = null;
25

    
26
        public JdbcWriter(){
27
        }
28
        public void initialize(Connection conn, ResultSet rs) throws SQLException{
29
                this.conn = conn;
30
                this.rs = rs;
31
                metaData = rs.getMetaData();
32
        }
33
        public void preProcess() throws EditionException {
34
                        numRecord = 0;
35
                        try {
36
                                conn.setAutoCommit(false);
37
                        } catch (SQLException e) {
38
                                e.printStackTrace();
39
                                throw new EditionException(e);
40
                        }
41
                        /* Statement st = conn.createStatement();
42

43
                        if (bCreateTable) {
44
                                try {
45
                                        st.execute("DROP TABLE " + lyrDef.getTableName() + ";");
46
                                } catch (SQLException e1) {
47
                                        // Si no existe la tabla, no hay que borrarla.
48
                                }
49

50
                                String sqlCreate = PostGIS.getSqlCreateSpatialTable(lyrDef,
51
                                                lyrDef.getFieldsDesc(), true);
52
                                System.out.println("sqlCreate =" + sqlCreate);
53
                                st.execute(sqlCreate);
54
                        } */
55
                        
56
        }
57

    
58
        public void process(IRowEdited editedRow) throws EditionException {
59
                IRow row = (IRow) editedRow.getLinkedRow();
60

    
61
                try {
62
                        System.out.println("Intento escribir el registro " +
63
                                        numRecord + " de la capa " + metaData.getTableName(1));
64
                        switch (editedRow.getStatus())
65
                        {
66
                    case IRowEdited.STATUS_ADDED:
67
                            record=row.getAttributes();
68
                            rs.moveToInsertRow();
69
                            for (int i=0; i < record.length; i++)
70
                                    XTypes.updateValue(rs, i, record[i]); 
71
                            rs.insertRow();
72
                            break;
73
                    case IRowEdited.STATUS_MODIFIED:
74
                            record=row.getAttributes();
75
                            rs.absolute(editedRow.getIndex());
76
                            for (int i=0; i < record.length; i++)
77
                                    XTypes.updateValue(rs, i, record[i]); 
78
                            rs.updateRow();
79
                            break;
80
                    case IRowEdited.STATUS_ORIGINAL:
81
                            break;
82
                    case IRowEdited.STATUS_DELETED:
83
                            rs.absolute(editedRow.getIndex());
84
                        rs.deleteRow();
85
                            break;
86
                        }
87
                        numRecord++;
88
                        rs.next();
89

    
90
                } catch (SQLException e) {
91
                        throw new EditionException(e);
92
                } 
93

    
94
        }
95

    
96
        public void postProcess() throws EditionException {
97
                try {
98
                        conn.commit();
99
                } catch (SQLException e) {
100
                        e.printStackTrace();
101
                        throw new EditionException(e);
102
                }
103
        }
104

    
105
        public boolean canWriteAttribute(int sqlType) {
106
                return true;
107
        }
108

    
109
        public String getName() {
110
                return "JDBC Writer";
111
        }
112
        /**
113
         * @return Returns the bCreateTable.
114
         */
115
        public boolean isCreateTable() {
116
                return bCreateTable;
117
        }
118

    
119
        /**
120
         * @param createTable
121
         *            The bCreateTable to set.
122
         */
123
        public void setCreateTable(boolean createTable) {
124
                bCreateTable = createTable;
125
        }
126

    
127
        /**
128
         * @return Returns the bWriteAll.
129
         */
130
        public boolean isWriteAll() {
131
                return bWriteAll;
132
        }
133

    
134
        /**
135
         * @param writeAll
136
         *            The bWriteAll to set.
137
         */
138
        public void setWriteAll(boolean writeAll) {
139
                bWriteAll = writeAll;
140
        }
141
        public void initialize(ITableDefinition tableDefinition) throws EditionException {
142
                // TODO Auto-generated method stub
143
                
144
        }
145

    
146
        
147
}