Revision 9755

View differences:

trunk/libraries/libGDBMS/src/main/java/com/hardcode/gdbms/driver/mysql/MySQLDriver.java
5 5

  
6 6
import java.sql.Connection;
7 7
import java.sql.DriverManager;
8
import java.sql.ResultSet;
8 9
import java.sql.SQLException;
10
import java.sql.Statement;
9 11

  
12
import com.hardcode.gdbms.engine.data.db.JDBCSupport;
10 13
import com.hardcode.gdbms.engine.data.driver.AbstractJDBCDriver;
14
import com.iver.cit.gvsig.fmap.drivers.jdbc.mysql.MySQLSpatialWriter;
15
import com.iver.cit.gvsig.fmap.edition.IWriter;
16
import com.iver.cit.gvsig.fmap.edition.writers.JdbcWriter;
11 17

  
12 18

  
13 19
/**
......
25 31
            driverException = ex;
26 32
        }
27 33
    }
34
    
35
    
36
    MySQLSpatialWriter writer = new MySQLSpatialWriter();
28 37

  
29 38
    
39
    public IWriter getWriter() {
40
		return writer;
41
	}
42
    
43
    public void open(Connection con, String sql) throws SQLException {
44
		jdbcSupport = JDBCSupport.newJDBCSupport(con, sql);
45
		writer.setCreateTable(false);
46
		writer.setWriteAll(false);
47
//		writer.initialize(con);
48
	}
49
    
50
    public void close() throws SQLException {
51
		jdbcSupport.close();
52
//		writer.close();
53
	}
54
    
30 55
    /**
31 56
     * DOCUMENT ME!
32 57
     *
trunk/libraries/libGDBMS/src/main/java/com/hardcode/gdbms/driver/mysql/MySQLWriter.java
1
/*
2
 * Created on 16-ene-2007 by azabala
3
 *
4
 */
5
package com.hardcode.gdbms.driver.mysql;
6

  
7
import java.sql.Connection;
8
import java.sql.SQLException;
9
import java.sql.Statement;
10
import java.sql.Types;
11

  
12
import com.iver.cit.gvsig.fmap.core.IFeature;
13
import com.iver.cit.gvsig.fmap.drivers.jdbc.mysql.MySql;
14
import com.iver.cit.gvsig.fmap.edition.EditionException;
15
import com.iver.cit.gvsig.fmap.edition.IRowEdited;
16
import com.iver.cit.gvsig.fmap.edition.fieldmanagers.JdbcFieldManager;
17
import com.iver.cit.gvsig.fmap.edition.writers.AbstractWriter;
18

  
19
/**
20
 * @author alzabord
21
 * 
22
 * @see MySQLSpatialWriter from extJDBC project
23
 */
24
public class MySQLWriter extends AbstractWriter{
25

  
26
	private int numRows;
27
	private Connection conex;
28
	private Statement st;
29
	private boolean bCreateTable;
30
	private boolean bWriteAll;
31
	private MySql mySql = new MySql();
32
	private JdbcFieldManager fieldManager;
33
	
34
	
35
	
36
	
37
	
38
	public boolean canWriteAttribute(int sqlType) {
39
		switch (sqlType) {
40
		case Types.DOUBLE:
41
		case Types.FLOAT:
42
		case Types.INTEGER:
43
		case Types.BIGINT:
44
			return true;
45
		case Types.DATE:
46
			return true;
47
		case Types.BIT:
48
		case Types.BOOLEAN:
49
			return true;
50
		case Types.VARCHAR:
51
		case Types.CHAR:
52
		case Types.LONGVARCHAR:
53
			return true; 
54

  
55
		}
56
		return false;
57
	}
58

  
59
	
60
	public void preProcess() throws EditionException {
61
		numRows = 0;
62
		try {
63
			conex.setAutoCommit(false);
64
			conex.rollback();			
65
			alterTable();
66
		} catch (SQLException e) {
67
			// TODO Auto-generated catch block
68
			e.printStackTrace();
69
		}
70
	}
71

  
72
	public boolean alterTable() throws EditionException {
73
		return fieldManager.alterTable();
74
	}
75
	
76
	public void process(IRowEdited row) throws EditionException {
77
		String sqlInsert;
78
		try {
79
			switch (row.getStatus()) {
80
			case IRowEdited.STATUS_ADDED:
81
				IFeature feat = (IFeature) row.getLinkedRow();
82
				sqlInsert = mySql.getSqlInsertFeature(lyrDef, feat);
83
				st.execute(sqlInsert);
84
				break;
85
				
86
			case IRowEdited.STATUS_MODIFIED:
87
				IFeature featM = (IFeature) row.getLinkedRow();
88
				if (bWriteAll) {
89
					sqlInsert = mySql.getSqlInsertFeature(lyrDef, featM);
90
					System.out.println("sql = " + sqlInsert);
91
					st.execute(sqlInsert);
92
				} else {
93
					String sqlModify = mySql.getSqlModifyFeature(lyrDef, featM);
94
					st.execute(sqlModify);
95
				}
96
				break;
97
				
98
			case IRowEdited.STATUS_ORIGINAL:
99
				IFeature featO = (IFeature) row.getLinkedRow();
100
				if (bWriteAll) {
101
					sqlInsert = mySql.getSqlInsertFeature(lyrDef, featO);
102
					st.execute(sqlInsert);
103
				}
104
				break;
105
				
106
			case IRowEdited.STATUS_DELETED:
107
				String sqlDelete = mySql.getSqlDeleteFeature(lyrDef, row);
108
				System.out.println("sql = " + sqlDelete);
109
				st.execute(sqlDelete);
110

  
111
				break;
112
			}
113

  
114
			numRows++;
115
		} catch (SQLException e) {
116
			e.printStackTrace();
117
			throw new EditionException(e);
118
		}
119
	}
120

  
121
	
122
	public void postProcess() throws EditionException {
123
		// TODO Auto-generated method stub
124
		
125
	}
126

  
127
	
128
	public boolean canAlterTable() {
129
		// TODO Auto-generated method stub
130
		return false;
131
	}
132

  
133
	
134
	public boolean canSaveEdits() {
135
		// TODO Auto-generated method stub
136
		return false;
137
	}
138

  
139
	public String getName() {
140
		// TODO Auto-generated method stub
141
		return null;
142
	}
143

  
144
}
0 145

  

Also available in: Unified diff