Revision 130

View differences:

tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.app/org.gvsig.mysql.app.mainplugin/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.mysql.app.mainplugin</artifactId>
7
  <packaging>jar</packaging>
8
  <name>${project.artifactId}</name>
9
  <description>MySQL support</description>
10

  
11
  <parent>
12
      <groupId>org.gvsig</groupId>
13
      <artifactId>org.gvsig.mysql.app</artifactId>
14
      <version>2.4.20</version>
15
  </parent>
16

  
17
  <dependencies>
18
    <dependency>
19
        <groupId>org.gvsig</groupId>
20
        <artifactId>org.gvsig.tools.lib</artifactId>
21
        <scope>compile</scope>
22
    </dependency>
23
    <dependency>
24
        <groupId>org.gvsig</groupId>
25
        <artifactId>org.gvsig.andami</artifactId>
26
        <scope>compile</scope>
27
    </dependency>
28
    <dependency>
29
        <groupId>org.gvsig</groupId>
30
        <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
31
        <scope>compile</scope>
32
    </dependency>
33
    <dependency>
34
        <groupId>org.gvsig</groupId>
35
        <artifactId>org.gvsig.mysql.provider</artifactId>
36
        <scope>compile</scope>
37
    </dependency>
38

  
39
    <dependency>
40
      <groupId>mysql</groupId>
41
      <artifactId>mysql-connector-java</artifactId>
42
      <scope>runtime</scope>
43
    </dependency>
44
    <dependency>
45
      <groupId>commons-dbcp</groupId>
46
      <artifactId>commons-dbcp</artifactId>
47
      <scope>runtime</scope>
48
    </dependency>
49
    <dependency>
50
      <groupId>commons-collections</groupId>
51
      <artifactId>commons-collections</artifactId>
52
      <scope>runtime</scope>
53
    </dependency>
54
    <dependency>
55
      <groupId>commons-pool</groupId>
56
      <artifactId>commons-pool</artifactId>
57
      <scope>runtime</scope>
58
    </dependency>
59
  </dependencies>
60

  
61
    <properties>
62
        <!-- Package info property values -->
63
        <!-- Default values in org.gvsig.desktop -->
64
        <gvsig.package.info.name>Formats: MySQL support</gvsig.package.info.name>
65
        <gvsig.package.info.state>devel</gvsig.package.info.state>
66
        <gvsig.package.info.official>true</gvsig.package.info.official>
67
        <gvsig.package.info.javaVM>j1_8</gvsig.package.info.javaVM>
68
        <gvsig.package.info.dependencies>required: org.gvsig.app.mainplugin -ge 2.4.0</gvsig.package.info.dependencies>
69
        <gvsig.package.info.categories>Formats,Vector,Database</gvsig.package.info.categories>
70
        <gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-mysql/pool/</gvsig.package.info.poolURL>
71
    </properties>
72

  
73

  
74
</project>
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.app/org.gvsig.mysql.app.mainplugin/buildNumber.properties
1
#Sat Jan 27 21:17:00 CET 2018
2
buildNumber=2421
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.app/org.gvsig.mysql.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
1
<assembly>
2
  <id>gvsig-plugin-package</id>
3
  <formats>
4
    <format>zip</format>
5
  </formats>
6
  <baseDirectory>${project.artifactId}</baseDirectory>
7
  <includeBaseDirectory>true</includeBaseDirectory>
8
  <files>
9
    <file>
10
      <source>target/${project.artifactId}-${project.version}.jar</source>
11
      <outputDirectory>lib</outputDirectory>
12
    </file>
13
    <file>
14
      <source>target/package.info</source>
15
    </file>
16
    <file>
17
      <source>src/main/resources-plugin/config.xml</source>
18
    </file>
19
  </files>
20
  <fileSets>
21
    <fileSet>
22
      <directory>src/main/resources-plugin</directory>
23
      <outputDirectory>.</outputDirectory>
24
    </fileSet>
25
  </fileSets>
26
  <dependencySets>
27

  
28
    <dependencySet>
29
      <useProjectArtifact>false</useProjectArtifact>
30
      <useTransitiveDependencies>false</useTransitiveDependencies>
31
      <outputDirectory>lib</outputDirectory>
32
      <includes>
33
        <include>org.gvsig:org.gvsig.mysql.provider</include>
34
      </includes>
35
    </dependencySet>
36

  
37
    <dependencySet>
38
      <useProjectArtifact>false</useProjectArtifact>
39
      <useTransitiveDependencies>false</useTransitiveDependencies>
40
      <outputDirectory>lib</outputDirectory>
41
      <includes>
42
		<include>mysql:mysql-connector-java</include>
43
		<include>commons-dbcp:commons-dbcp</include>
44
		<include>commons-collections:commons-collections</include>
45
		<include>commons-pool:commons-pool</include>
46
      </includes>
47
    </dependencySet>
48

  
49
  </dependencySets>
50

  
51
</assembly>
52

  
53

  
54

  
55

  
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.app/org.gvsig.mysql.app.mainplugin/src/main/java/org/gvsig/mysql/MySQLExtension.java
1

  
2
package org.gvsig.mysql;
3

  
4
import org.gvsig.andami.IconThemeHelper;
5
import org.gvsig.andami.plugins.Extension;
6
import org.gvsig.fmap.mapcontext.MapContextLocator;
7
import org.gvsig.fmap.mapcontext.MapContextManager;
8

  
9

  
10
public class MySQLExtension  extends Extension {
11

  
12
    @Override
13
    public void initialize() {
14
    }
15

  
16
    @Override
17
    public void postInitialize() {
18
        MapContextManager mapContextMgr = MapContextLocator.getMapContextManager();
19
        
20
        IconThemeHelper.registerIcon("layer", "layer-icon-mysql", this);
21
        mapContextMgr.registerIconLayer("MySQL", "layer-icon-mysql");
22
    }
23
    
24
    @Override
25
    public void execute(String actionCommand) {
26
    }
27

  
28
    @Override
29
    public boolean isEnabled() {
30
        return false;
31
    }
32

  
33
    @Override
34
    public boolean isVisible() {
35
        return false;
36
    }
37
    
38
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.app/org.gvsig.mysql.app.mainplugin/src/main/resources-plugin/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<plugin-config>
3
  <libraries library-dir="lib/"/>
4
  <depends plugin-name="org.gvsig.app.mainplugin"/>
5
  <resourceBundle name="text"/>
6
  <extensions>
7
     <extension class-name="org.gvsig.mysql.MySQLExtension" active="true"/>
8
  </extensions>
9
</plugin-config>
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.app/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.mysql.app</artifactId>
7
  <packaging>pom</packaging>
8
  <name>${project.artifactId}</name>
9
  <parent>
10
      <groupId>org.gvsig</groupId>
11
      <artifactId>org.gvsig.mysql</artifactId>
12
      <version>2.4.20</version>
13
  </parent>
14

  
15
  <modules>
16
    <module>org.gvsig.mysql.app.mainplugin</module>
17
  </modules>
18

  
19
</project>
tags/org.gvsig.mysql-2.4.20/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.mysql</artifactId>
7
    <version>2.4.20</version>
8
    <packaging>pom</packaging>
9
    <name>${project.artifactId}</name>
10
    <description>MySQL support for DAL and gvSIG</description>
11
    <parent>
12
        <groupId>org.gvsig</groupId>
13
        <artifactId>org.gvsig.desktop</artifactId>
14
        <version>2.0.216</version>
15
    </parent>
16

  
17
    <url>https://devel.gvsig.org/redmine/projects/gvsig-mysql</url>
18
    <scm>
19
        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-mysql/tags/org.gvsig.mysql-2.4.20</connection>
20
        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-mysql/tags/org.gvsig.mysql-2.4.20</developerConnection>
21
        <url>https://devel.gvsig.org/redmine/projects/gvsig-mysql/repository/show/tags/org.gvsig.mysql-2.4.20</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-mysql/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.mysql.provider</artifactId>
62
                <version>2.4.20</version>
63
            </dependency>
64
            <dependency>
65
                <groupId>org.gvsig</groupId>
66
                <artifactId>org.gvsig.mysql.app.mainplugin</artifactId>
67
                <version>2.4.20</version>
68
            </dependency>
69
            <dependency>
70
              <groupId>mysql</groupId>
71
              <artifactId>mysql-connector-java</artifactId>
72
              <version>6.0.6</version>
73
            </dependency>
74

  
75

  
76
        </dependencies>
77
    </dependencyManagement>
78

  
79
    <modules>
80
        <module>org.gvsig.mysql.app</module>
81
        <module>org.gvsig.mysql.provider</module>
82
    </modules>
83

  
84

  
85
</project>
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/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.mysql.provider</artifactId>
7
    <packaging>jar</packaging>
8
    <name>${project.artifactId}</name>
9
    <description>DAL provider for MySQL</description>
10
    <parent>
11
        <groupId>org.gvsig</groupId>
12
        <artifactId>org.gvsig.mysql</artifactId>
13
        <version>2.4.20</version>
14
    </parent>
15

  
16
    <dependencies>
17
        <dependency>
18
            <groupId>com.googlecode.log4jdbc</groupId>
19
            <artifactId>log4jdbc</artifactId>
20
            <scope>compile</scope>
21
        </dependency>
22
        <dependency>
23
            <groupId>org.gvsig</groupId>
24
            <artifactId>org.gvsig.tools.lib</artifactId>
25
            <scope>compile</scope>
26
        </dependency>
27
        <dependency>
28
            <groupId>org.gvsig</groupId>
29
            <artifactId>org.gvsig.projection.api</artifactId>
30
            <scope>compile</scope>
31
        </dependency>
32
        <dependency>
33
            <groupId>org.gvsig</groupId>
34
            <artifactId>org.gvsig.fmap.dal.api</artifactId>
35
            <scope>compile</scope>
36
        </dependency>
37
        <dependency>
38
            <groupId>org.gvsig</groupId>
39
            <artifactId>org.gvsig.fmap.dal.impl</artifactId>
40
            <scope>test</scope>
41
        </dependency>
42

  
43
        <dependency>
44
            <groupId>org.gvsig</groupId>
45
            <artifactId>org.gvsig.fmap.dal.db.jdbc</artifactId>
46
            <scope>compile</scope>
47
        </dependency>
48

  
49
        <dependency>
50
            <groupId>org.gvsig</groupId>
51
            <artifactId>org.gvsig.fmap.dal.db.lib</artifactId>
52
            <scope>compile</scope>
53
        </dependency>
54
        <dependency>
55
            <groupId>org.gvsig</groupId>
56
            <artifactId>org.gvsig.fmap.dal.spi</artifactId>
57
            <scope>compile</scope>
58
        </dependency>
59
        <dependency>
60
            <groupId>org.gvsig</groupId>
61
            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
62
            <scope>compile</scope>
63
        </dependency>
64
        <dependency>
65
            <groupId>org.gvsig</groupId>
66
            <artifactId>org.gvsig.fmap.geometry.api</artifactId>
67
            <scope>compile</scope>
68
        </dependency>
69
        <dependency>
70
            <groupId>org.gvsig</groupId>
71
            <artifactId>${org.gvsig.fmap.geometry.impl}</artifactId>
72
            <scope>test</scope>
73
        </dependency>
74
<!--
75
        <dependency>
76
            <groupId>org.gvsig</groupId>
77
            <artifactId>org.gvsig.utils</artifactId>
78
            <scope>compile</scope>
79
        </dependency>
80
        -->
81
        <dependency>
82
            <groupId>mysql</groupId>
83
            <artifactId>mysql-connector-java</artifactId>
84
            <scope>compile</scope>
85
        </dependency>
86
        <dependency>
87
            <groupId>commons-dbcp</groupId>
88
            <artifactId>commons-dbcp</artifactId>
89
            <scope>compile</scope>
90
        </dependency>
91
        <dependency>
92
            <groupId>commons-collections</groupId>
93
            <artifactId>commons-collections</artifactId>
94
            <scope>compile</scope>
95
        </dependency>
96

  
97

  
98
        <!-- TESTS -->
99
        <dependency>
100
            <groupId>org.gvsig</groupId>
101
            <artifactId>org.gvsig.tools.lib</artifactId>
102
            <type>test-jar</type>
103
            <scope>test</scope>
104
        </dependency>
105
        <dependency>
106
            <groupId>org.gvsig</groupId>
107
            <artifactId>org.gvsig.compat.se</artifactId>
108
            <scope>test</scope>
109
        </dependency>
110
        <dependency>
111
            <groupId>org.gvsig</groupId>
112
            <artifactId>org.gvsig.fmap.dal.impl</artifactId>
113
            <type>test-jar</type>
114
            <scope>test</scope>
115
        </dependency>
116
        <dependency>
117
            <groupId>org.gvsig</groupId>
118
            <artifactId>org.gvsig.metadata.lib.basic.impl</artifactId>
119
            <scope>compile</scope>
120
        </dependency>
121
        <dependency>
122
            <groupId>org.gvsig</groupId>
123
            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
124
            <scope>test</scope>
125
        </dependency>
126
        <dependency>
127
            <groupId>org.gvsig</groupId>
128
            <artifactId>org.gvsig.timesupport.lib.impl</artifactId>
129
            <scope>test</scope>
130
        </dependency>
131
        <dependency>
132
            <groupId>junit</groupId>
133
            <artifactId>junit</artifactId>
134
            <type>jar</type>
135
        </dependency>
136
    </dependencies>
137
    <build>
138
        <plugins>
139

  
140
            <plugin>
141
                <groupId>org.codehaus.mojo</groupId>
142
                <artifactId>animal-sniffer-maven-plugin</artifactId>
143
                <executions>
144
                    <execution>
145
                        <id>check-java-api</id>
146
                        <phase>package</phase>
147
                        <goals>
148
                            <goal>check</goal>
149
                        </goals>
150
                        <configuration>
151
                            <skip>true</skip>
152
                            <signature>
153
                                <groupId>org.codehaus.mojo.signature</groupId>
154
                                <artifactId>java18</artifactId>
155
                                <version>1.0</version>
156
                            </signature>
157
                        </configuration>
158
                    </execution>
159
                </executions>
160
            </plugin>
161

  
162

  
163

  
164
        </plugins>
165
    </build>
166

  
167
</project>
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/resources/org/gvsig/mysql/dal/MySQLMetadata.xml
1
<?xml version="1.0"?>
2
<definitions>
3
  <version>1.0.0</version>
4
  <classes>
5
    <class name="MySQL" namespace="Metadata">
6
      <extends>
7
      	<class name="JDBC2" namespace="Metadata"/>
8
      </extends>
9
      <description>Metadata for MySQL</description>
10
      <fields>
11
      </fields>
12
    </class>
13

  
14
  </classes>
15
</definitions>  
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/resources/org/gvsig/mysql/dal/MySQLParameters.xml
1
<?xml version="1.0"?>
2
<definitions>
3
  <version>1.0.0</version>
4
  <classes>
5
    <class name="MySQLResourceParameters">
6
      <extends>
7
        <class>JDBC2ResourceParameters</class>
8
      </extends>
9
      <fields>
10
        <field name="JDBCDriverClass" type="string" mandatory="true"
11
          defaultValue="com.mysql.jdbc.Driver" group="Advanced">
12
          <description>JDBC driver class for MySQL</description>
13
        </field>
14
        <field name="port" type="integer" mandatory="true"
15
          defaultValue="3306" group="Connection" hidden="false">
16
          <description></description>
17
        </field>
18
        <field name="host" type="string" mandatory="true" 
19
            defaultValue="localhost" group="Connection" hidden="false">
20
          <description></description>
21
        </field>
22
        <field name="dbname" type="string" mandatory="true" hidden="false" defaultValue="" group="Basic">
23
          <description></description>
24
        </field>
25
        <field name="schema" type="string" mandatory="false" hidden="true" defaultValue="" group="Basic">
26
          <description></description>
27
        </field>
28
        <field name="catalog" type="string" mandatory="false" hidden="true" defaultValue="" group="Basic">
29
          <description></description>
30
        </field>
31
        <field name="url" type="string" mandatory="false" hidden="false" defaultValue="" group="Basic">
32
          <description></description>
33
        </field>
34
        <field name="dbuser" type="string" mandatory="false" defaultValue="" group="Basic">
35
          <description></description>
36
        </field>
37
        <field name="password" type="string" mandatory="false" defaultValue="" group="Basic">
38
          <description></description>
39
        </field>           
40
      </fields>
41
    </class>
42

  
43
    <class name="MySQLStoreParameters">
44
      <extends>
45
        <class>JDBC2StoreParameters</class>
46
        <class>MySQLResourceParameters</class>
47
      </extends>
48
      <fields/>
49
    </class>
50

  
51
    <class name="MySQLNewStoreParameters">
52
      <extends>
53
        <class>JDBC2NewStoreParameters</class>
54
        <class>MySQLResourceParameters</class>
55
      </extends>
56
      <fields/>
57
    </class>
58

  
59

  
60
    <class name="MySQLServerExplorerParameters">
61
      <extends>
62
        <class>MySQLResourceParameters</class>
63
        <class>JDBC2ServerExplorerParameters</class>
64
      </extends>
65
      <fields/>
66
    </class>
67

  
68

  
69
  </classes>
70
</definitions>  
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.mysql.dal.MySQLLibrary
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/MySQLStoreParameters.java
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
 */
22
package org.gvsig.mysql.dal;
23

  
24
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
25
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
26

  
27
public class MySQLStoreParameters extends JDBCStoreParameters implements MySQLConnectionParameters {
28

  
29
    private final MySQLConnectionParametersHelper helper;
30
    
31
    public MySQLStoreParameters() {
32
        super(
33
                MySQLLibrary.NAME + "StoreParameters",
34
                MySQLLibrary.NAME
35
        );
36
        this.helper = new MySQLConnectionParametersHelper(this);
37
    }
38

  
39
    @Override
40
    public String getUrl() {
41
        return this.helper.getUrl();
42
    }
43
    
44
    @Override
45
    public void validate() throws ValidateDataParametersException {
46
        this.helper.validate();
47
        super.validate();
48
    }
49

  
50
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/MySQLConnectionParameters.java
1

  
2
package org.gvsig.mysql.dal;
3

  
4
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters;
5

  
6
public interface MySQLConnectionParameters extends JDBCConnectionParameters {
7
    
8
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/MySQLConnectionParametersHelper.java
1

  
2
package org.gvsig.mysql.dal;
3

  
4
import org.apache.commons.lang3.StringUtils;
5
import org.gvsig.fmap.dal.DataParameters;
6
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
7
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters;
8

  
9

  
10
public class MySQLConnectionParametersHelper {
11

  
12
    private final JDBCConnectionParameters parameters;
13
    
14
    
15
    public MySQLConnectionParametersHelper(JDBCConnectionParameters parameters) {
16
        this.parameters = parameters;
17
    }
18

  
19
    public String getUrl() {
20
        String url = (String) this.getDynValue(JDBCConnectionParameters.URL_PARAMTER_NAME);
21
        if( StringUtils.isEmpty(url) ) {
22
            url = MySQLHelper.getConnectionURL((MySQLConnectionParameters) this.parameters);
23
            this.setDynValue(JDBCConnectionParameters.URL_PARAMTER_NAME,url);
24
        }
25
        return url;
26
    }
27
    
28
    public void validate() throws ValidateDataParametersException {
29
        // Do nothing
30
    }
31

  
32
    private Object getDynValue(String name) {
33
        return ((DataParameters)this.parameters).getDynValue(name);
34
    }
35
    
36
    private void setDynValue(String name, Object value) {
37
        ((DataParameters)this.parameters).setDynValue(name,value);
38
    }
39
        
40
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/MySQLExplorerParameters.java
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
 */
22
/**
23
 *
24
 */
25
package org.gvsig.mysql.dal;
26

  
27
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
28
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
29

  
30
public class MySQLExplorerParameters extends
31
        JDBCServerExplorerParameters 
32
    implements
33
        MySQLConnectionParameters
34
    {
35
    
36
    private final MySQLConnectionParametersHelper helper;
37

  
38
    public MySQLExplorerParameters() {
39
        super(
40
                MySQLLibrary.NAME + "ServerExplorerParameters",
41
                MySQLLibrary.NAME
42
        );
43
        this.helper = new MySQLConnectionParametersHelper(this);
44
    }
45

  
46
    @Override
47
    public String getUrl() {
48
        return this.helper.getUrl();
49
    }
50
    
51
    @Override
52
    public void validate() throws ValidateDataParametersException {
53
        this.helper.validate();
54
        super.validate();
55
    }
56

  
57
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/MySQLLibrary.java
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
 */
22
package org.gvsig.mysql.dal;
23

  
24
import org.gvsig.fmap.dal.DALLibrary;
25
import org.gvsig.fmap.dal.DALLocator;
26
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
27
import org.gvsig.fmap.dal.store.db.DBHelper;
28
import org.gvsig.fmap.dal.store.jdbc2.JDBCLibrary;
29
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCStoreProviderBase;
30
import org.gvsig.metadata.exceptions.MetadataException;
31
import org.gvsig.tools.library.AbstractLibrary;
32
import org.gvsig.tools.library.LibraryException;
33

  
34
public class MySQLLibrary extends AbstractLibrary {
35

  
36
    public static final String NAME = "MySQL";
37

  
38
    @Override
39
    public void doRegistration() {
40
        registerAsServiceOf(DALLibrary.class);
41
        require(JDBCLibrary.class);
42
    }
43

  
44
    @Override
45
    protected void doInitialize() throws LibraryException {
46
    }
47

  
48
    @Override
49
    protected void doPostInitialize() throws LibraryException {
50
        LibraryException ex = null;
51

  
52
        DataManagerProviderServices dataman = 
53
                (DataManagerProviderServices) DALLocator.getDataManager();
54

  
55
        try {
56
            Class.forName(MySQLHelper.MySQLJDBCDriver);
57
        } catch(Throwable th) {
58
            MySQLHelper.logger.warn("Can't load MySQL JDBC Driver.",th);
59
        }
60
        
61
        DBHelper.registerParametersDefinition(
62
                NAME + "StoreParameters",
63
                MySQLStoreParameters.class,
64
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
65
        );
66
        DBHelper.registerParametersDefinition(
67
                NAME + "NewStoreParameters",
68
                MySQLNewStoreParameters.class,
69
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
70
        );
71
        DBHelper.registerParametersDefinition(
72
                NAME + "ServerExplorerParameters",
73
                MySQLExplorerParameters.class,
74
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
75
        );
76
//        DBHelper.registerParametersDefinition(
77
//                NAME + "ResourceParameters",
78
//                MySQLResourceParameters.class,
79
//                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
80
//        );
81
        try {
82
            DBHelper.registerMetadataDefinition(
83
                NAME,
84
                JDBCStoreProviderBase.class,
85
                dataman.getResourceAsStream(this, NAME + "Metadata.xml")
86
            );
87
        } catch (MetadataException e) {
88
            ex = new LibraryException(this.getClass(), e);
89
        }
90

  
91
//        ResourceManagerProviderServices resman = (ResourceManagerProviderServices) DALLocator
92
//                .getResourceManager();
93
//
94
//        if (!resman.getResourceProviders().contains(NAME)) {
95
//            resman.register(NAME,
96
//                "Resource for " + NAME,
97
//                MySQLResource.class,
98
//                MySQLResourceParameters.class
99
//            );
100
//        }
101

  
102
        if (!dataman.getStoreProviderRegister().exits(NAME)) {
103
            dataman.registerStoreProviderFactory(new MySQLStoreProviderFactory());
104
        }
105

  
106
        if (!dataman.getServerExplorerRegister().exits(NAME)) {
107
            dataman.registerServerExplorerFactory(new MySQLExplorerFactory());
108
        }
109
        if (ex != null) {
110
            throw ex;
111
        }
112
    }
113

  
114
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/MySQLSQLBuilder.java
1
package org.gvsig.mysql.dal;
2

  
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
6
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
7

  
8
public class MySQLSQLBuilder extends JDBCSQLBuilderBase {
9

  
10
    public MySQLSQLBuilder(MySQLHelper helper) {
11
        super(helper);
12
        
13
        //
14
        // MySQL 5.5, SQL functions reference list
15
        //
16
        // https://dev.mysql.com/doc/refman/5.5/en/sql-syntax.html
17
        // https://dev.mysql.com/doc/refman/5.5/en/using-spatial-data.html
18
        //
19
        // https://dev.mysql.com/doc/refman/5.7/en/spatial-function-reference.html
20
        //
21
        
22
        config.set(SQLConfig.default_schema, "");
23
        config.set(SQLConfig.quote_for_identifiers, "`");
24
        config.set(SQLConfig.allowAutomaticValues, true);
25
        config.set(SQLConfig.geometry_type_support, this.helper.getGeometrySupportType());
26
        config.set(SQLConfig.has_spatial_functions, this.helper.hasSpatialFunctions());
27

  
28
        config.remove_functionality(SQLConfig.DELETE_GEOMETRY_COLUMN_FROM_TABLE_schema_table);
29
        config.remove_functionality(SQLConfig.DELETE_GEOMETRY_COLUMN_FROM_TABLE_table);
30
         
31
        
32
        // MySQL no tiene funciones de agregado sobre geometrias.
33
        // Esto no es nada eficiente y fallara con tablas grandes.
34
        // https://forums.mysql.com/read.php?23,249284,249284#msg-249284
35
        config.set(SQLConfig.ST_ExtentAggregate, "ST_AsWKB(ST_Envelope(ST_GeomCollFromText(GROUP_CONCAT(ST_AsWKT({0})))))");
36
        config.set(SQLConfig.ST_UnionAggregate, "null");
37
        
38
        
39
                
40
        config.set(SQLConfig.UPDATE_TABLE_STATISTICS_table,"ANALYZE TABLE {0}");
41
        
42
        config.set(SQLConfig.lcase, "lower({0})");
43
        config.set(SQLConfig.ucase, "upper({0})");
44
        config.set(SQLConfig.operator_ILIKE, "lower({0}) LIKE lower({1})");
45
        config.set(SQLConfig.isNull, "( ({0}) IS NULL )");
46
        config.set(SQLConfig.notIsNull, "( ({0}) IS NOT NULL )");
47

  
48
        config.set(SQLConfig.type_boolean, "BIT");
49
        config.set(SQLConfig.type_byte, "TINYINT");
50
        config.set(SQLConfig.type_bytearray, "BINARY");
51
        config.set(SQLConfig.type_geometry, "GEOMETRY");
52
        config.set(SQLConfig.type_char, "TEXT");
53
        config.set(SQLConfig.type_date, "DATETIME");
54
        config.set(SQLConfig.type_double, "DOUBLE"); 
55
        config.set(SQLConfig.type_numeric_p, "DECIMAL({0})");
56
        config.set(SQLConfig.type_numeric_ps, "DECIMAL({0},{1})");
57
        config.set(SQLConfig.type_bigdecimal, "DECIMAL");
58
        config.set(SQLConfig.type_float, "FLOAT");
59
        config.set(SQLConfig.type_int, "INTEGER");
60
        config.set(SQLConfig.type_long, "BIGINT");
61
        config.set(SQLConfig.type_string, "CHAR");
62
        config.set(SQLConfig.type_string_p, "VARCHAR({0})");
63
        config.set(SQLConfig.type_time, "TIME");
64
        config.set(SQLConfig.type_timestamp, "TIMESTAMP");
65
        config.set(SQLConfig.type_version, "VARCHAR(45)");
66
        config.set(SQLConfig.type_URI, "TEXT");
67
        config.set(SQLConfig.type_URL, "TEXT");
68
        config.set(SQLConfig.type_FILE, "TEXT");
69
        config.set(SQLConfig.type_FOLDER, "TEXT");        
70
    }
71

  
72
    public MySQLHelper getHelper() {
73
        return (MySQLHelper) helper;
74
    }
75
    
76
    public class MySQLTableNameBuilderBase extends TableNameBuilderBase {
77

  
78
        @Override
79
        public boolean has_schema() {
80
            return false;
81
        }
82
        
83
    }
84
    
85
    protected class MySQLCreateTableBuilder extends CreateTableBuilderBase {
86

  
87
        @Override
88
        public List<String> toStrings() {
89

  
90
            List<String> sqls = new ArrayList<>();
91
            StringBuilder builder = new StringBuilder();
92

  
93
            builder.append("CREATE TABLE ");
94
            builder.append(this.table.toString());
95
            builder.append(" (");
96
            boolean first = true;
97
            for (ColumnDescriptor column : columns) {
98
                if (first) {
99
                    first = false;
100
                } else {
101
                    builder.append(", ");
102
                }
103
                builder.append(identifier(column.getName()));
104
                builder.append(" ");
105
                builder.append(sqltype(column.getType(), column.getPrecision(), column.getSize()));
106
                if (column.isPrimaryKey()) {
107
                    builder.append(" PRIMARY KEY");
108
                }
109
                if( column.isAutomatic() ) {
110
                    builder.append(" AUTO_INCREMENT");
111
                }
112
                if (column.getDefaultValue() == null) {
113
                    if (column.allowNulls()) {
114
                        builder.append(" DEFAULT NULL");
115
                    }
116
                } else {
117
                    builder.append(" DEFAULT '");
118
                    builder.append(column.getDefaultValue().toString());
119
                    builder.append("'");
120
                }
121
                if (column.allowNulls()) {
122
                    builder.append(" NULL");
123
                } else {
124
                    builder.append(" NOT NULL");
125
                }
126
            }
127
            builder.append(" )");
128
            sqls.add(builder.toString());
129

  
130
            return sqls;
131
        }
132
    }
133

  
134
    public class MySQLSelectBuilderBase extends SelectBuilderBase {
135
        
136
        @Override
137
        protected boolean isValid(StringBuilder message) {
138
            if( message == null ) {
139
                message = new StringBuilder();
140
            }
141
            if( this.has_offset() && !this.has_order_by() ) {
142
                // Algunos gestores de BBDD requieren que se especifique un
143
                // orden para poder usar OFFSET. Como eso parece buena idea para
144
                // asegurar que siempre tengamos los mismo resultados, lo exijimos
145
                // siempre.
146
                message.append("Can't use OFFSET without an ORDER BY.");
147
                return false;
148
            }
149
            return true;
150
        }        
151
        
152
        @Override
153
        public String toString() {
154
            // MySQL requiere que si se especifica OFFSET deba especificarse
155
            // LIMIT obligatoriamente. Se le puede poner un LIMIT -1 cuando 
156
            // queramos un OFFSET sin especificar un LIMIT.
157
            StringBuilder builder = new StringBuilder();
158
            if( !isValid(builder) ) {
159
                throw new IllegalStateException(builder.toString());
160
            }
161
            builder.append("SELECT ");
162
            if( this.distinct ) {
163
                builder.append("DISTINCT ");
164
            }
165
            boolean first = true;
166
            for (SelectColumnBuilder column : columns) {
167
                if (first) {
168
                    first = false;
169
                } else {
170
                    builder.append(", ");
171
                }
172
                builder.append(column.toString());
173
            }
174

  
175
            if ( this.has_from() ) {
176
                builder.append(" FROM ");
177
                builder.append(this.from.toString());
178
            }
179
            if ( this.has_where() ) {
180
                builder.append(" WHERE ");
181
                builder.append(this.where.toString());
182
            }
183
            
184
            if( this.has_order_by() ) {
185
                builder.append(" ORDER BY ");
186
                first = true;
187
                for (OrderByBuilder item : this.order_by) {
188
                    if (first) {
189
                        first = false;
190
                    } else {
191
                        builder.append(", ");
192
                    }
193
                    builder.append(item.toString());                    
194
                }   
195
            }
196
            
197
            if ( this.has_limit() && this.has_offset() ) {
198
                builder.append(" LIMIT ");
199
                builder.append(this.limit);
200
                builder.append(" OFFSET ");
201
                builder.append(this.offset);
202
                
203
            } else if ( this.has_limit()) {
204
                builder.append(" LIMIT ");
205
                builder.append(this.limit);
206

  
207
            } else if ( this.has_offset() ) {
208
                // See https://dev.mysql.com/doc/refman/5.7/en/select.html#idm140126933499488
209
                builder.append(" LIMIT 18446744073709551615 OFFSET ");
210
                builder.append(this.offset);    
211
            }
212
            return builder.toString();
213

  
214
        }
215
    }
216

  
217
    @Override
218
    public String bytearray(byte[] data) {
219
        // MySQL usa un formato diferencte para especificar un array de 
220
        // bytes. En lugar de 0x... usa x'...' .
221
        StringBuilder builder = new StringBuilder();
222
        builder.append("x'");
223
        for (byte abyte : data) {
224
            int v = abyte & 0xff;
225
            builder.append(String.format("%02x", v));
226
        }
227
        builder.append("'");
228
        return builder.toString();
229
    }
230
    
231
    @Override
232
    protected TableNameBuilder createTableNameBuilder() {
233
        return new MySQLTableNameBuilderBase();
234
    }
235
    
236
    @Override
237
    protected CreateTableBuilder createCreateTableBuilder() {
238
        return new MySQLCreateTableBuilder();
239
    }
240

  
241
    @Override
242
    protected SelectBuilder createSelectBuilder() {
243
        return new MySQLSelectBuilderBase();
244
    }
245

  
246
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/MySQLExplorerFactory.java
1

  
2
package org.gvsig.mysql.dal;
3

  
4
import org.gvsig.fmap.dal.DataServerExplorerParameters;
5
import org.gvsig.fmap.dal.exception.InitializeException;
6
import org.gvsig.fmap.dal.spi.DataServerExplorerProviderServices;
7
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters;
8
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
9
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
10
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
11
import org.gvsig.fmap.dal.store.jdbc2.impl.JDBCServerExplorerFactory;
12

  
13

  
14
public class MySQLExplorerFactory extends JDBCServerExplorerFactory {
15

  
16
    private static final String NAME = MySQLLibrary.NAME;
17
    
18
    public MySQLExplorerFactory() {
19
        super(
20
                NAME,
21
                "MySQL Server"
22
        );
23
    }
24

  
25
    @Override
26
    public JDBCServerExplorer create(
27
            DataServerExplorerParameters parameters, 
28
            DataServerExplorerProviderServices providerServices
29
        ) throws InitializeException {
30
        JDBCHelper helper = new MySQLHelper((JDBCConnectionParameters) parameters);
31
        JDBCServerExplorer server = helper.createServerExplorer(
32
                (JDBCServerExplorerParameters) parameters, 
33
                providerServices
34
        );
35
        return server;
36
    }
37
        
38

  
39
    @Override
40
    public JDBCServerExplorerParameters createParameters() {
41
        JDBCServerExplorerParameters params = new MySQLExplorerParameters();
42
        return params;    
43
    }
44
    
45
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/MySQLNewStoreParameters.java
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
 */
22
package org.gvsig.mysql.dal;
23

  
24
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
25
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
26

  
27
public class MySQLNewStoreParameters 
28
    extends 
29
        JDBCNewStoreParameters 
30
    implements 
31
        MySQLConnectionParameters 
32
    {
33

  
34
    private final MySQLConnectionParametersHelper helper;
35
    
36
    public MySQLNewStoreParameters() {
37
        super(
38
            MySQLLibrary.NAME + "NewStoreParameters", 
39
            MySQLLibrary.NAME
40
        );
41
        this.helper = new MySQLConnectionParametersHelper(this);
42
    }
43

  
44
    @Override
45
    public String getUrl() {
46
        return this.helper.getUrl();
47
    }
48
    
49
    @Override
50
    public void validate() throws ValidateDataParametersException {
51
        this.helper.validate();
52
    }
53

  
54
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/operations/MySQLOperationsFactory.java
1

  
2
package org.gvsig.mysql.dal.operations;
3

  
4
import java.util.List;
5
import org.cresques.cts.IProjection;
6
import org.gvsig.fmap.dal.feature.EditableFeatureType;
7
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
8
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.CalculateEnvelopeOfColumnOperation;
9
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.FetchFeatureTypeOperation;
10
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.OperationsFactoryBase;
11
import org.gvsig.fmap.geom.primitive.Envelope;
12

  
13

  
14
public class MySQLOperationsFactory extends OperationsFactoryBase {
15
    
16
    public MySQLOperationsFactory(JDBCHelper helper) {
17
        super(helper);
18
    }
19

  
20
    @Override
21
    public FetchFeatureTypeOperation createFetchFeatureType(EditableFeatureType type, String database, String schema, String table, List<String> primaryKeys, String defaultGeometryField, IProjection crs) {
22
        return new MySQLFetchFeatureTypeOperation(helper, type, database, schema, table, primaryKeys, defaultGeometryField, crs);
23
    }
24

  
25
    @Override
26
    public CalculateEnvelopeOfColumnOperation createCalculateEnvelopeOfColumn(String subquery, String database, String schema, String table, String columnName, String baseFilter, Envelope workingArea, IProjection crs) {
27
        return new MySQLCalculateEnvelopeOfColumnOperation(helper, subquery, table, schema, table, columnName, baseFilter, workingArea, crs);
28
    }
29
    
30
    
31
    
32
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/operations/MySQLCalculateEnvelopeOfColumnOperation.java
1
package org.gvsig.mysql.dal.operations;
2

  
3
import java.sql.Connection;
4
import java.sql.ResultSet;
5
import java.sql.Statement;
6
import org.apache.commons.lang3.StringUtils;
7
import org.cresques.cts.IProjection;
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
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
13
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.CalculateEnvelopeOfColumnOperation;
14
import org.gvsig.fmap.geom.Geometry;
15
import org.gvsig.fmap.geom.GeometryLocator;
16
import org.gvsig.fmap.geom.primitive.Envelope;
17

  
18
public class MySQLCalculateEnvelopeOfColumnOperation extends CalculateEnvelopeOfColumnOperation {
19

  
20
    public MySQLCalculateEnvelopeOfColumnOperation(JDBCHelper helper, String subquery, String dbName, String schemaName, String tableName, String columnName, String baseFilter, Envelope limit, IProjection crs) {
21
        super(helper, subquery, dbName, schemaName, tableName, columnName, baseFilter, limit, crs);
22
    }
23

  
24
    @Override
25
    public Envelope calculateEnvelopeOfColumn(
26
            Connection conn,
27
            String subquery,
28
            String dbName,
29
            String schemaName,
30
            String tableName,
31
            String columnName,
32
            String baseFilter,
33
            Envelope limit,
34
            IProjection crs
35
    ) throws DataException {
36

  
37
        //
38
        // MySQL no soporta la funcion de agregado ST_Extent
39
        //
40
        JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder();
41
        sqlbuilder.select().column().value(
42
            sqlbuilder.getAsGeometry(
43
                sqlbuilder.ST_Envelope(
44
                        sqlbuilder.column(columnName)
45
                )
46
            )
47
        );
48

  
49
        if (StringUtils.isEmpty(subquery)) {
50
            sqlbuilder.select().from().table().database(dbName).schema(schemaName).name(tableName);
51
        } else {
52
            sqlbuilder.select().from().subquery(subquery);
53
        }
54

  
55
        if (StringUtils.isEmpty(baseFilter)) {
56
            if (limit != null) {
57
                sqlbuilder.select().where().set(
58
                        sqlbuilder.ST_Intersects(
59
                                sqlbuilder.ST_Envelope(
60
                                        sqlbuilder.column(columnName)
61
                                ),
62
                                sqlbuilder.ST_Envelope(
63
                                        sqlbuilder.geometry(limit.getGeometry(), crs)
64
                                )
65
                        )
66
                );
67
            }
68
        } else {
69
            sqlbuilder.select().where().set( sqlbuilder.custom(baseFilter) );
70
            if (limit != null) {
71
                sqlbuilder.select().where().and(
72
                        sqlbuilder.ST_Intersects(
73
                            sqlbuilder.ST_Envelope(
74
                                    sqlbuilder.column(columnName)
75
                            ),
76
                            sqlbuilder.ST_Envelope(
77
                                    sqlbuilder.geometry(limit.getGeometry(), crs)
78
                            )
79
                        )
80
                );
81
            }
82
        }
83

  
84
        String sql = sqlbuilder.select().toString();
85

  
86
        Statement st = null;
87
        ResultSet rs = null;
88
        try {
89
            st = conn.createStatement();
90
            rs = JDBCUtils.executeQuery(st, sql);
91
            Envelope env = GeometryLocator.getGeometryManager().createEnvelope(Geometry.SUBTYPES.GEOM2D);
92
            while( rs.next() ) { 
93
                Geometry geom = this.helper.getGeometryFromColumn(rs, 1);
94
                if (geom != null) {
95
                    env.add(geom);
96
                }
97
            }
98
            return env;
99
        } catch (Exception ex) {
100
            throw new JDBCSQLException(ex);
101
        } finally {
102
            JDBCUtils.closeQuietly(st);
103
            JDBCUtils.closeQuietly(rs);
104
        }
105
    }
106

  
107
}
tags/org.gvsig.mysql-2.4.20/org.gvsig.mysql.provider/src/main/java/org/gvsig/mysql/dal/operations/MySQLFetchFeatureTypeOperation.java
1

  
2
package org.gvsig.mysql.dal.operations;
3

  
4
import java.sql.Connection;
5
import java.sql.ResultSet;
6
import java.sql.ResultSetMetaData;
7
import java.sql.SQLException;
8
import java.sql.Statement;
9
import java.util.HashMap;
10
import java.util.List;
11
import java.util.Map;
12
import org.cresques.cts.IProjection;
13
import org.gvsig.fmap.dal.DataTypes;
14
import org.gvsig.fmap.dal.exception.DataException;
15
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
16
import org.gvsig.fmap.dal.feature.EditableFeatureType;
17
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
18
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
19
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
20
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.FetchFeatureTypeOperation;
21
import org.gvsig.fmap.geom.Geometry;
22
import org.gvsig.fmap.geom.GeometryLocator;
23
import org.gvsig.fmap.geom.GeometryManager;
24
import org.gvsig.fmap.geom.type.GeometryType;
25

  
26
public class MySQLFetchFeatureTypeOperation extends FetchFeatureTypeOperation {
27

  
28
    private static Map<String,GeometryType>mySQLGeometryTypes = null;
29
    
30
    public MySQLFetchFeatureTypeOperation(
31
            JDBCHelper helper
32
        ) {
33
        super(helper);
34
    }
35

  
36
    private GeometryType getGT(
37
            GeometryManager manager, 
38
            int type, 
39
            int subtype
40
        ) {
41
        try {
42
            return manager.getGeometryType(type, subtype);
43
        } catch (Exception ex) {
44
            return null;
45
        }
46
    }
47
    
48
    public MySQLFetchFeatureTypeOperation(
49
            JDBCHelper helper,
50
            EditableFeatureType featureType,
51
            String dbname,
52
            String schema,
53
            String table,
54
            List<String> primaryKeys,
55
            String defaultGeometryColumn,
56
            IProjection crs
57
        ) {
58
        super(helper, featureType, dbname, schema, table, primaryKeys, defaultGeometryColumn, crs);
59
    }            
60

  
61
    @Override
62
    public void fetch(EditableFeatureType featureType, Connection conn, String dbname, String schema, String table, List<String> pks, String defaultGeometryColumn, IProjection crs) throws DataException {
63
        super.fetch(featureType, conn, dbname, schema, table, pks, defaultGeometryColumn, crs);
64
    }
65

  
66
    @Override
67
    protected int getDataTypeFromMetadata(
68
            ResultSetMetaData rsMetadata,
69
            int colIndex
70
        ) throws SQLException {
71
        if( rsMetadata.getColumnType(colIndex) != java.sql.Types.BINARY ) {
72
            return super.getDataTypeFromMetadata(rsMetadata, colIndex);
73
        }
74
        String typeName = rsMetadata.getColumnTypeName(colIndex);
75
        GeometryType gt = getGeometryTypeFromMySQLTypeName(typeName);
76
        if( gt==null ) {
77
            return super.getDataTypeFromMetadata(rsMetadata, colIndex);
78
        }
79
        return DataTypes.GEOMETRY;
80
    }
81
        
82
    @Override
83
    protected void fetchGeometryTypeAndSRS(
84
            EditableFeatureAttributeDescriptor attr,
85
            ResultSetMetaData rsMetadata,
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff