Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / edition / writers / gdbms / GdbmsWriter.java @ 4328

History | View | Annotate | Download (2.58 KB)

1
package com.iver.cit.gvsig.fmap.edition.writers.gdbms;
2

    
3
import java.sql.Types;
4

    
5
import com.hardcode.gdbms.engine.data.driver.DriverException;
6
import com.hardcode.gdbms.engine.data.edition.DataWare;
7
import com.hardcode.gdbms.engine.values.Value;
8
import com.iver.cit.gvsig.fmap.core.FShape;
9
import com.iver.cit.gvsig.fmap.core.IRow;
10
import com.iver.cit.gvsig.fmap.edition.EditionException;
11
import com.iver.cit.gvsig.fmap.edition.IRowEdited;
12
import com.iver.cit.gvsig.fmap.edition.writers.AbstractWriter;
13

    
14
public class GdbmsWriter extends AbstractWriter {
15
        DataWare dataWare;
16
        Value[] record;
17
        int numRecord;
18

    
19
        public GdbmsWriter(DataWare dataWare)
20
        {
21
                this.dataWare = dataWare;
22
        }
23

    
24

    
25
        public void preProcess() throws EditionException {
26
                try {
27
                        dataWare.beginTrans();
28
                        numRecord = 0;
29
                } catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
30
                        throw new EditionException(e);
31
                }
32
        }
33

    
34
        public void process(IRowEdited editedRow) throws EditionException {
35
                IRow row = (IRow) editedRow.getLinkedRow();
36

    
37
                try {
38
                        /* System.out.println("Intento escribir el registro " +
39
                                        numRows + " de la capa " + lyrVect.getName()); */
40

    
41

    
42
                        switch (editedRow.getStatus())
43
                        {
44
                    case IRowEdited.STATUS_ADDED:
45
                            record=row.getAttributes();
46
                                    //record[i] = row.getAttribute(i);
47
                            dataWare.insertFilledRow(record);
48
                            break;
49
                    case IRowEdited.STATUS_MODIFIED:
50
                            record=row.getAttributes();
51
                            for (int i=0; i < record.length; i++)
52
                                    dataWare.setFieldValue(numRecord, i, record[i]);
53
                            break;
54
                    case IRowEdited.STATUS_ORIGINAL:
55
                            break;
56
                    case IRowEdited.STATUS_DELETED:
57
                        dataWare.deleteRow(numRecord);
58
                            break;
59
                        }
60
                        numRecord++;
61

    
62
                } catch (DriverException e) {
63
                        throw new EditionException(e);
64
                }
65

    
66
        }
67

    
68
        public void postProcess() throws EditionException {
69
                try {
70
                        dataWare.commitTrans();
71
                } catch (DriverException e) {
72
                        try {
73
                                dataWare.rollBackTrans();
74
                        } catch (DriverException e1) {
75
                                throw new EditionException(e1);
76
                        }
77
                        throw new EditionException(e);
78
                }
79

    
80

    
81
        }
82

    
83

    
84
        public String getName() {
85
                return "GDBMS WRITER";
86
        }
87

    
88
        public boolean canWriteGeometry(int gvSIGgeometryType) {
89
                return false;
90
        }
91

    
92
        public boolean canWriteAttribute(int sqlType) {
93
                switch (sqlType)
94
                {
95
                case Types.DOUBLE:
96
                case Types.FLOAT: 
97
                case Types.INTEGER:
98
                case Types.BIGINT:
99
                        return true;
100
                case Types.DATE:
101
                        return true;
102
                case Types.BIT:
103
                case Types.BOOLEAN:
104
                        return true;                        
105
                case Types.VARCHAR:
106
                case Types.CHAR: 
107
                case Types.LONGVARCHAR:
108
                        return true; // TODO: Revisar esto, porque no creo que admita campos muy grandes
109

    
110
                }
111
                
112
                return false;
113
        }
114
        
115

    
116
}