Revision 73

View differences:

trunk/org.gvsig.postgresql/org.gvsig.postgresql.provider/src/main/resources/org/gvsig/fmap/dal/store/postgresql/PostgreSQLParameters.xml
32 32

  
33 33
    <class name="PostgreSQLNewStoreParameters">
34 34
      <extends>
35
        <class>PostgreSQLStoreParameters</class>
36
	    <class namespace="dal" name="NewProviderParameters"/>
35
        <class>JDBCNewStoreParameters</class>
36
        <class>PostgreSQLResourceParameters</class>
37 37
      </extends>
38 38
      <fields/>
39 39
    </class>
trunk/org.gvsig.postgresql/org.gvsig.postgresql.provider/src/main/java/org/gvsig/fmap/dal/store/postgresql/PostgreSQLServerExplorer.java
1 1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
* MA  02110-1301, USA.
20
*
21
*/
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22 22

  
23 23
/*
24
* AUTHORS (In addition to CIT):
25
* 2009 IVER T.I   {{Task}}
26
*/
27

  
24
 * AUTHORS (In addition to CIT):
25
 * 2009 IVER T.I   {{Task}}
26
 */
28 27
/**
29 28
 *
30 29
 */
......
45 44
import org.gvsig.fmap.dal.spi.DataServerExplorerProviderServices;
46 45
import org.gvsig.fmap.dal.store.jdbc.JDBCHelper;
47 46
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorer;
47
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
48 48
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
49 49
import org.gvsig.fmap.dal.store.jdbc.TransactionalAction;
50 50
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCExecuteSQLException;
......
57 57
 *
58 58
 */
59 59
public class PostgreSQLServerExplorer extends JDBCServerExplorer {
60
	final static private Logger logger = LoggerFactory
61
			.getLogger(PostgreSQLServerExplorer.class);
62 60

  
63
	public static final String NAME = "PostgreSQLExplorer";
61
    final static private Logger logger = LoggerFactory
62
            .getLogger(PostgreSQLServerExplorer.class);
64 63

  
64
    public static final String NAME = "PostgreSQLExplorer";
65 65

  
66
	public PostgreSQLServerExplorer(
67
			PostgreSQLServerExplorerParameters parameters,
68
			DataServerExplorerProviderServices services)
69
			throws InitializeException {
70
		super(parameters, services);
71
	}
66
    public PostgreSQLServerExplorer(
67
            PostgreSQLServerExplorerParameters parameters,
68
            DataServerExplorerProviderServices services)
69
            throws InitializeException {
70
        super(parameters, services);
71
    }
72 72

  
73
	private PostgreSQLServerExplorerParameters getPostgreSQLParameters() {
74
		return (PostgreSQLServerExplorerParameters) getParameters();
75
	}
73
    private PostgreSQLServerExplorerParameters getPostgreSQLParameters() {
74
        return (PostgreSQLServerExplorerParameters) getParameters();
75
    }
76 76

  
77
    protected JDBCHelper createHelper() throws InitializeException {
78
        return new PostgreSQLHelper(this, getPostgreSQLParameters());
79
    }
77 80

  
78
	protected JDBCHelper createHelper() throws InitializeException {
79
		return new PostgreSQLHelper(this, getPostgreSQLParameters());
80
	}
81
    public String getStoreName() {
82
        return PostgreSQLStoreProvider.NAME;
83
    }
81 84

  
85
    public String getProviderName() {
86
        return NAME;
87
    }
82 88

  
83
	public String getStoreName() {
84
		return PostgreSQLStoreProvider.NAME;
85
	}
89
    protected JDBCStoreParameters createStoreParams()
90
            throws InitializeException, ProviderNotRegisteredException {
91
        PostgreSQLStoreParameters orgParams = (PostgreSQLStoreParameters) super
92
                .createStoreParams();
86 93

  
87
	public String getProviderName() {
88
		return NAME;
89
	}
94
        orgParams.setUseSSL(getPostgreSQLParameters().getUseSSL());
90 95

  
91
	protected JDBCStoreParameters createStoreParams()
92
			throws InitializeException, ProviderNotRegisteredException {
93
		PostgreSQLStoreParameters orgParams = (PostgreSQLStoreParameters) super
94
				.createStoreParams();
96
        return orgParams;
97
    }
95 98

  
96
		orgParams.setUseSSL(getPostgreSQLParameters().getUseSSL());
97

  
98
		return orgParams;
99
	}
100

  
101

  
102 99
	// ****************************
100
    public boolean canAdd() {
101
        return true;
102
    }
103 103

  
104
    public DataStoreParameters getOpenParameters() throws DataException {
105
        PostgreSQLServerExplorerParameters parameters = getPostgreSQLParameters();
106
        PostgreSQLStoreParameters params = new PostgreSQLStoreParameters();
107
        params.setHost(parameters.getHost());
108
        params.setPort(parameters.getPort());
109
        params.setDBName(parameters.getDBName());
110
        params.setUser(parameters.getUser());
111
        params.setPassword(parameters.getPassword());
112
        params.setCatalog(parameters.getCatalog());
113
        params.setSchema(parameters.getSchema());
114
        params.setJDBCDriverClassName(parameters.getJDBCDriverClassName());
115
        params.setUrl(parameters.getUrl());
116
        return params;
117
    }
104 118

  
105
	public boolean canAdd() {
106
		return true;
107
	}
119
    protected void checkIsMine(DataStoreParameters dsp) {
120
        if (!(dsp instanceof PostgreSQLConnectionParameters)) {
121
            // FIXME Excpetion ???
122
            throw new IllegalArgumentException(
123
                    "not instance of PostgreSQLStoreParameters");
124
        }
125
        super.checkIsMine(dsp);
108 126

  
109
	protected void checkIsMine(DataStoreParameters dsp) {
110
		if (!(dsp instanceof PostgreSQLStoreParameters)) {
111
			// FIXME Excpetion ???
112
			throw new IllegalArgumentException(
113
					"not instance of PostgreSQLStoreParameters");
114
		}
115
		super.checkIsMine(dsp);
127
        PostgreSQLConnectionParameters pgp = (PostgreSQLConnectionParameters) dsp;
128
        if (pgp.getUseSSL().booleanValue() != getPostgreSQLParameters()
129
                .getUseSSL()) {
130
            throw new IllegalArgumentException("worng explorer: Host");
131
        }
132
    }
116 133

  
117
		PostgreSQLStoreParameters pgp = (PostgreSQLStoreParameters) dsp;
118
		if (pgp.getUseSSL().booleanValue() != getPostgreSQLParameters()
119
				.getUseSSL()) {
120
			throw new IllegalArgumentException("worng explorer: Host");
121
		}
122
	}
134
    public void remove(DataStoreParameters dsp) throws RemoveException {
135
        final PostgreSQLStoreParameters pgParams = (PostgreSQLStoreParameters) dsp;
123 136

  
124
	public void remove(DataStoreParameters dsp) throws RemoveException {
125
		final PostgreSQLStoreParameters pgParams =(PostgreSQLStoreParameters) dsp;
137
        TransactionalAction action = new TransactionalAction() {
138
            public boolean continueTransactionAllowed() {
139
                return false;
140
            }
126 141

  
127
		TransactionalAction action = new TransactionalAction() {
128
			public boolean continueTransactionAllowed() {
129
				return false;
130
			}
131
			public Object action(Connection conn) throws DataException {
142
            public Object action(Connection conn) throws DataException {
132 143

  
144
                Statement st;
145
                try {
146
                    st = conn.createStatement();
147
                } catch (SQLException e) {
148
                    throw new JDBCSQLException(e);
149
                }
133 150

  
134
				Statement st;
135
				try{
136
					st = conn.createStatement();
137
				} catch (SQLException e) {
138
					throw new JDBCSQLException(e);
139
				}
151
                String sqlDrop = "Drop table "
152
                        + pgParams.tableID();
140 153

  
141
				String sqlDrop = "Drop table "
142
					+ pgParams.tableID();
154
                StringBuilder strb = new StringBuilder();
155
                strb.append("Delete from GEOMETRY_COLUMNS where f_table_schema = ");
156
                if (pgParams.getSchema() == null || pgParams.getSchema().length() == 0) {
157
                    strb.append("current_schema() ");
158
                } else {
159
                    strb.append('\'');
160
                    strb.append(pgParams.getSchema());
161
                    strb.append("' ");
162
                }
163
                strb.append("and f_table_name = '");
164
                strb.append(pgParams.getTable());
165
                strb.append('\'');
143 166

  
144
				StringBuilder strb = new StringBuilder();
145
				strb.append("Delete from GEOMETRY_COLUMNS where f_table_schema = ");
146
				if (pgParams.getSchema() == null || pgParams.getSchema().length() ==  0) {
147
					strb.append("current_schema() ");
148
				} else {
149
					strb.append('\'');
150
					strb.append(pgParams.getSchema());
151
					strb.append("' ");
152
				}
153
				strb.append("and f_table_name = '");
154
				strb.append(pgParams.getTable());
155
				strb.append('\'');
167
                String sqlDeleteFromGeometry_column = strb.toString();
168
                try {
169
                    try {
170
                        JDBCHelper.execute(st, sqlDrop);
171
                    } catch (SQLException e) {
172
                        throw new JDBCExecuteSQLException(sqlDrop, e);
173
                    }
156 174

  
157
				String sqlDeleteFromGeometry_column = strb.toString();
158
				try{
159
					try{
160
                                                JDBCHelper.execute(st, sqlDrop);
161
					} catch (SQLException e) {
162
						throw new JDBCExecuteSQLException(sqlDrop, e);
163
					}
175
                    try {
176
                        JDBCHelper.execute(st, sqlDeleteFromGeometry_column);
177
                    } catch (SQLException e) {
178
                        throw new JDBCExecuteSQLException(
179
                                sqlDeleteFromGeometry_column, e);
180
                    }
164 181

  
165
					try {
166
                                                JDBCHelper.execute(st, sqlDeleteFromGeometry_column);
167
                                        } catch (SQLException e) {
168
						throw new JDBCExecuteSQLException(
169
								sqlDeleteFromGeometry_column, e);
170
					}
182
                } finally {
183
                    try {
184
                        st.close();
185
                    } catch (SQLException e) {
186
                    };
187
                }
188
                return null;
189
            }
190
        };
191
        try {
192
            this.helper.doConnectionAction(action);
193
        } catch (Exception e) {
194
            throw new RemoveException(this.getProviderName(), e);
195
        }
196
    }
171 197

  
172
				} finally{
173
					try{ st.close(); } catch (SQLException e) {};
174
				}
175
				return null;
176
			}
177
		};
178
		try {
179
			this.helper.doConnectionAction(action);
180
		} catch (Exception e) {
181
			throw new RemoveException(this.getProviderName(), e);
182
		}
183
	}
198
    public NewDataStoreParameters getAddParameters() throws DataException {
199
        PostgreSQLServerExplorerParameters parameters = getPostgreSQLParameters();
200
        PostgreSQLNewStoreParameters params = new PostgreSQLNewStoreParameters();
201
        params.setHost(parameters.getHost());
202
        params.setPort(parameters.getPort());
203
        params.setDBName(parameters.getDBName());
204
        params.setUser(parameters.getUser());
205
        params.setPassword(parameters.getPassword());
206
        params.setCatalog(parameters.getCatalog());
207
        params.setSchema(parameters.getSchema());
208
        params.setJDBCDriverClassName(parameters.getJDBCDriverClassName());
209
        params.setUrl(parameters.getUrl());
210
        params.setUseSSL(parameters.getUseSSL());
184 211

  
185
	public NewDataStoreParameters getAddParameters() throws DataException {
186
		PostgreSQLServerExplorerParameters parameters = getPostgreSQLParameters();
187
		PostgreSQLNewStoreParameters params = new PostgreSQLNewStoreParameters();
188
		params.setHost(parameters.getHost());
189
		params.setPort(parameters.getPort());
190
		params.setDBName(parameters.getDBName());
191
		params.setUser(parameters.getUser());
192
		params.setPassword(parameters.getPassword());
193
		params.setCatalog(parameters.getCatalog());
194
		params.setSchema(parameters.getSchema());
195
		params.setJDBCDriverClassName(parameters.getJDBCDriverClassName());
196
		params.setUrl(parameters.getUrl());
197
		params.setUseSSL(parameters.getUseSSL());
212
        params.setDefaultFeatureType(this.getServerExplorerProviderServices()
213
                .createNewFeatureType());
198 214

  
215
        return params;
216
    }
199 217

  
200
		params.setDefaultFeatureType(this.getServerExplorerProviderServices()
201
				.createNewFeatureType());
218
    public boolean hasGeometrySupport() {
219
        return true;
220
    }
202 221

  
222
    protected PostgreSQLHelper getPgHelper() {
223
        return (PostgreSQLHelper) getHelper();
224
    }
203 225

  
204
		return params;
205
	}
206

  
207

  
208

  
209
	// ***********************
210
	// ***********************
211

  
212

  
213
	public boolean hasGeometrySupport() {
214
		return true;
215
	}
216

  
217
	protected PostgreSQLHelper getPgHelper() {
218
		return (PostgreSQLHelper) getHelper();
219
	}
220

  
221
	@Override
222
	public List getDataStoreProviderNames() {
223
			List x = new ArrayList(1);
224
			x.add(PostgreSQLStoreProvider.NAME);
225
			return x;
226
	}
226
    @Override
227
    public List getDataStoreProviderNames() {
228
        List x = new ArrayList(1);
229
        x.add(PostgreSQLStoreProvider.NAME);
230
        return x;
231
    }
227 232
}
trunk/org.gvsig.postgresql/org.gvsig.postgresql.provider/src/main/java/org/gvsig/fmap/dal/store/postgresql/PostgreSQLNewStoreParameters.java
19 19
 * MA  02110-1301, USA.
20 20
 *
21 21
 */
22

  
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2008 IVER T.I. S.A.   {{Task}}
26
 */
27 22
package org.gvsig.fmap.dal.store.postgresql;
28 23

  
29 24
import org.gvsig.fmap.dal.feature.EditableFeatureType;
30 25
import org.gvsig.fmap.dal.feature.FeatureType;
26
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
31 27
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
32 28

  
33
public class PostgreSQLNewStoreParameters extends JDBCNewStoreParameters implements PostgreSQLConnectionParameters {
29
public class PostgreSQLNewStoreParameters extends JDBCNewStoreParameters
30
        implements NewFeatureStoreParameters, PostgreSQLConnectionParameters {
34 31

  
35 32
    public static final String PARAMETERS_DEFINITION_NAME = "PostgreSQLNewStoreParameters";
36 33

  
......
54 51
        this.setDynValue(DYNFIELDNAME_USESSL, useSSL);
55 52
    }
56 53

  
57
    public void setUseSSL(boolean useSSL) {
58
        this.setDynValue(DYNFIELDNAME_USESSL, new Boolean(useSSL));
59
    }
60

  
61
    public String getUrl() {
62
        return PostgreSQLLibrary.getJdbcUrl(getHost(),
63
                getPort(),
64
                getDBName());
65
    }
66 54
}
trunk/org.gvsig.postgresql/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4

  
5
  <modelVersion>4.0.0</modelVersion>
6
  <artifactId>org.gvsig.postgresql</artifactId>
7
  <version>2.0.22-SNAPSHOT</version>
8
  <packaging>pom</packaging>
9
  <name>${project.artifactId}</name>
10
  <description>PostgreSQL support fort DAL and gvSIG</description>
11
  <parent>
12
      <groupId>org.gvsig</groupId>
13
      <artifactId>org.gvsig.desktop</artifactId>
14
      <version>2.0.42</version>
15
  </parent>
16

  
17
  <url>https://devel.gvsig.org/redmine/projects/gvsig-postgresql</url>
18
  <scm>
19
      <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-postgresql/trunk/org.gvsig.postgresql</connection>
20
      <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-postgresql/trunk/org.gvsig.postgresql</developerConnection>
21
      <url>https://devel.gvsig.org/redmine/projects/gvsig-postgresql/repository/show/trunk/org.gvsig.postgresql</url>
22
  </scm>
23

  
24
    <repositories>
25
        <repository>
26
            <id>gvsig-public-http-repository</id>
27
            <name>gvSIG maven public HTTP repository</name>
28
            <url>http://devel.gvsig.org/m2repo/j2se</url>
29
            <releases>
30
                <enabled>true</enabled>
31
                <updatePolicy>daily</updatePolicy>
32
                <checksumPolicy>warn</checksumPolicy>
33
            </releases>
34
            <snapshots>
35
                <enabled>true</enabled>
36
                <updatePolicy>daily</updatePolicy>
37
                <checksumPolicy>warn</checksumPolicy>
38
            </snapshots>
39
        </repository>
40
    </repositories>
41
  
42
  
43
	<build>
44
		<plugins>
45
			<plugin>
46
				<groupId>org.apache.maven.plugins</groupId>
47
				<artifactId>maven-release-plugin</artifactId>
48
				<configuration>
49
					<tagBase>https://devel.gvsig.org/svn/gvsig-postgresql/tags/</tagBase>
50
					<goals>deploy</goals>
51
				</configuration>
52
			</plugin>
53
		</plugins>
54
	</build>
55

  
56

  
57
  <dependencyManagement>
58
      <dependencies>
59
          <dependency>
60
            <groupId>org.gvsig</groupId>
61
            <artifactId>org.gvsig.postgresql.provider</artifactId>
62
            <version>2.0.22-SNAPSHOT</version>
63
          </dependency>
64
          <dependency>
65
            <groupId>org.gvsig</groupId>
66
            <artifactId>org.gvsig.postgresql.app.mainplugin</artifactId>
67
            <version>2.0.22-SNAPSHOT</version>
68
          </dependency>
69
      </dependencies>
70
  </dependencyManagement>
71

  
72
  <dependencies>
73
        <dependency>
74
            <groupId>org.slf4j</groupId>
75
            <artifactId>slf4j-api</artifactId>
76
            <scope>compile</scope>
77
        </dependency>
78
  </dependencies>
79

  
80
  
81
  <modules>
82
    <module>org.gvsig.postgresql.app</module>
83
    <module>org.gvsig.postgresql.provider</module>
84
  </modules>
85

  
86

  
87
</project>
1
<?xml version="1.0" encoding="UTF-8"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4

  
5
  <modelVersion>4.0.0</modelVersion>
6
  <artifactId>org.gvsig.postgresql</artifactId>
7
  <version>2.0.22-SNAPSHOT</version>
8
  <packaging>pom</packaging>
9
  <name>${project.artifactId}</name>
10
  <description>PostgreSQL support fort DAL and gvSIG</description>
11
  <parent>
12
      <groupId>org.gvsig</groupId>
13
      <artifactId>org.gvsig.desktop</artifactId>
14
      <version>2.0.44-SNAPSHOT</version>
15
  </parent>
16

  
17
  <url>https://devel.gvsig.org/redmine/projects/gvsig-postgresql</url>
18
  <scm>
19
      <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-postgresql/trunk/org.gvsig.postgresql</connection>
20
      <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-postgresql/trunk/org.gvsig.postgresql</developerConnection>
21
      <url>https://devel.gvsig.org/redmine/projects/gvsig-postgresql/repository/show/trunk/org.gvsig.postgresql</url>
22
  </scm>
23

  
24
    <repositories>
25
        <repository>
26
            <id>gvsig-public-http-repository</id>
27
            <name>gvSIG maven public HTTP repository</name>
28
            <url>http://devel.gvsig.org/m2repo/j2se</url>
29
            <releases>
30
                <enabled>true</enabled>
31
                <updatePolicy>daily</updatePolicy>
32
                <checksumPolicy>warn</checksumPolicy>
33
            </releases>
34
            <snapshots>
35
                <enabled>true</enabled>
36
                <updatePolicy>daily</updatePolicy>
37
                <checksumPolicy>warn</checksumPolicy>
38
            </snapshots>
39
        </repository>
40
    </repositories>
41
  
42
  
43
	<build>
44
		<plugins>
45
			<plugin>
46
				<groupId>org.apache.maven.plugins</groupId>
47
				<artifactId>maven-release-plugin</artifactId>
48
				<configuration>
49
					<tagBase>https://devel.gvsig.org/svn/gvsig-postgresql/tags/</tagBase>
50
					<goals>deploy</goals>
51
				</configuration>
52
			</plugin>
53
		</plugins>
54
	</build>
55

  
56

  
57
  <dependencyManagement>
58
      <dependencies>
59
          <dependency>
60
            <groupId>org.gvsig</groupId>
61
            <artifactId>org.gvsig.postgresql.provider</artifactId>
62
            <version>2.0.21-SNAPSHOT</version>
63
          </dependency>
64
          <dependency>
65
            <groupId>org.gvsig</groupId>
66
            <artifactId>org.gvsig.postgresql.app.mainplugin</artifactId>
67
            <version>2.0.21-SNAPSHOT</version>
68
          </dependency>
69
      </dependencies>
70
  </dependencyManagement>
71

  
72
  <dependencies>
73
        <dependency>
74
            <groupId>org.slf4j</groupId>
75
            <artifactId>slf4j-api</artifactId>
76
            <scope>compile</scope>
77
        </dependency>
78
  </dependencies>
79

  
80
  
81
  <modules>
82
    <module>org.gvsig.postgresql.app</module>
83
    <module>org.gvsig.postgresql.provider</module>
84
  </modules>
85

  
86

  
87
</project>

Also available in: Unified diff