Revision 85

View differences:

tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.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.mssqlserver.app</artifactId>
7
  <packaging>pom</packaging>
8
  <name>${project.artifactId}</name>
9
  <parent>
10
      <groupId>org.gvsig</groupId>
11
      <artifactId>org.gvsig.mssqlserver</artifactId>
12
      <version>1.0.12</version>
13
  </parent>
14

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

  
19
</project>
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.app/org.gvsig.mssqlserver.app.mainplugin/buildNumber.properties
1
#Mon Aug 07 14:31:04 CEST 2017
2
buildNumber=14
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.app/org.gvsig.mssqlserver.app.mainplugin/src/main/resources-plugin/readme_es.txt
1

  
2
Notas acerca de la implementacion del proveedor de MS SQLServer.
3
====================================================================
4

  
5
Software
6
----------
7

  
8
Las pruebas realizadas durante el desarrollo se han hecho sobre:
9

  
10
- Microsoft SQL Server Express 2014 (64-bit), versi?n 12.0.2000.8
11
- Microsoft Windows NT 6.3 (9600), plataforma NT x64
12

  
13
El acceso al servidor se realiza a traves de JDBC usando el driver:
14

  
15
- Microsoft JDBC Driver 6.0 for SQL Server, may 2016 (sqljdbc42.jar).
16

  
17
Configuraci?n
18
--------------
19

  
20
Las pruebas se han realizado usando la instancia por defecto "SQLEXPRESS".
21

  
22
Para poder acceder al servidor es necesario:
23

  
24
- Habilitar la conexion al servidor a traves de TCP/IP. Esto se activara
25
  desde:
26
  - Sql Server Configuration Manager
27
  - Configuracion de red de SQL Server
28
  - Protocolos de SQLEXPRESS
29
  - TCP/IP
30
   - General
31
     - Habilitado: Si
32
   - Direcciones IP
33
     - IP4
34
       - Activo: Si
35
       - Habilitado: Si
36

  
37
- Deberan estar "En ejecucion" los servicios de:
38
  - SQL Server (SQLEXPRESS)
39
  - SQL Server Browser.
40
    Este servicio es necesario para poder aceptar conexiones TCP/IP contra el
41
    servidor y por defecto, tras la instalacion de MS SQL Sever, no se iniciaba
42
    automaticamente en mi equipo.
43

  
44
- Durante todas las pruebas se ha utilizado "Autenticaci?n de SQL Server".
45
  Es posible que para otros tipos de autenticaci?n sea necesario incluir alguna
46
  otra libreria (como sqljdbc_auth.dll x64/x86).
47

  
48
Soporte espacial
49
-------------------
50

  
51
Siempre que se exporta a BBDD se utilizara el tipo "geometry" para crear los
52
campos de tipo geometria, y en general se usara siempre este tipo de datos.
53

  
54
Se ha implementado un soporte limitado para el tipo de datos "geography". Si una
55
tabla contiene un campo de este tipo se leera y gvSIG podra trabajar con el. Si
56
una tabla contiene mas de un campo de tipo geometria siendo estos de tipos distintos,
57
unos "geometry" y otros "geography", gvSIG puede dar problemas para acceder a estos,
58
especialmente al de tipo "geography".
59

  
60
Ahora mismo el tipo de geometria asociado a una columna de la BBDD es GEOMETRY,
61
es decir, no se sabe si es punto, linea o poligono.
62

  
63
Sistemas de referencia
64
------------------------
65

  
66
La lista de sistemas de referencia disponibles esta almacenada en la tabla
67
sys.spatial_reference_systems, y solo tiene definidas unos 390 sistemas
68
de referencia. Habria que averiguar cargar otros sistemas de referencia.
69

  
70
Valores por defecto
71
---------------------
72

  
73
Los datos de conexion por defecto son:
74

  
75
- Host: 127.0.0.1
76
- Instance: SQLEXPRESS
77
- Database: master
78
- Schema: dbo
79
- user: sa
80
- password: 123
81

  
82
Los valores instance, database, schema y user se corresponden con valores
83
validos para una instalacion por defecto de SQL Server.
84

  
85
Problemas conocidos
86
--------------------
87

  
88
- No se guardan los datos de la conexion entre sesiones de gvSIG.
89

  
90
- La herramienta "Selection by layer" no funciona.
91

  
92
- Si una capa de gvSIG declara un campo "double" con precision y size,
93
  al expportarlo a BBDD lo exporta como "DOUBLE PRECISION" en lugar de como
94
  "NUMERIC(size,precision)".
95

  
96
- No se estan creando indices sobre los campos al exportar a BBDD.
97

  
98
- En la exportacion a BBDD, en el paso que pide el nombre de la tabla,
99
  primero muestra como esquema "public" y cuando termina de leer las tablas
100
  de la BBDD para mostrarlas (tarda unos segundos) cambia de public a "dbo".
101
  Esto puede causar problemas si el usuario pulsa en siguiente antes de que se
102
  haya actualizado el esquema con el que se corresponde con la BBDD ya que
103
  intentaria crear la tabla en el esquema "public" y este no existe en SQLServer.
104

  
105
- Solo se ha implememtado soporte para geometrias 2D (no 3D, 2DM o 3DM).
106

  
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.app/org.gvsig.mssqlserver.app.mainplugin/src/main/resources-plugin/mssqlserver-jdbc-driver-license60.txt
1
MICROSOFT SOFTWARE LICENSE TERMS
2

  
3
MICROSOFT JDBC DRIVER 6.0 FOR SQL SERVER
4

  
5
These license terms are an agreement between Microsoft Corporation (or based on where you 
6
live, one of its affiliates) and you. Please read them. They apply to the software 
7
named above, which includes the media on which you received it, if any. The terms also apply to 
8
any Microsoft
9

  
10
? updates,
11
? supplements,
12
? Internet-based services, and
13
? support services
14

  
15
for this software, unless other terms accompany those items. If so, those terms apply.
16

  
17
BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT 
18
ACCEPT THEM, DO NOT USE THE SOFTWARE.
19

  
20
If you comply with these license terms, you have the rights below.
21

  
22
1. INSTALLATION AND USE RIGHTS. 
23

  
24
a. Installation and Use.
25

  
26
i. You may install and use any number of copies of the software on your devices.
27

  
28
b. Third Party Programs. The software may include third party programs that Microsoft, 
29
not the third party, licenses to you under this agreement. Notices, if any, for the third 
30
party program are included for your information only.
31

  
32
2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
33

  
34
a. Distributable Code.
35

  
36
i.	Right to Use and Distribute. You are permitted to distribute the software in programs you 
37
develop if you comply with the terms below:
38

  
39
* You may copy and distribute the object code form of the software (?Distributable Code?) in 
40
programs you develop. You may not modify the software.
41
* You may permit distributors of your programs to copy and distribute the Distributable Code 
42
as part of those programs.
43
ii.	Distribution Requirements. For any Distributable Code you distribute, you must
44
* add significant primary functionality to it in your programs;
45
* require distributors and external end users to agree to terms that protect it at least as 
46
much as this agreement;
47
* display your valid copyright notice on your programs; and
48
* indemnify, defend, and hold harmless Microsoft from any claims, including attorneys? fees, 
49
related to the distribution or use of your programs.
50
iii.	Distribution Restrictions. You may not
51
* alter any copyright, trademark or patent notice in the Distributable Code;
52
* use Microsoft?s trademarks in your programs? names or in a way that suggests your programs 
53
come from or are endorsed by Microsoft;
54
* include Distributable Code in malicious, deceptive or unlawful programs; or
55
* modify or distribute the source code of any Distributable Code so that any part of it 
56
becomes subject to an Excluded License. An Excluded License is one that requires, as a 
57
condition of use, modification or distribution, that
58
* the code be disclosed or distributed in source code form; or
59
* others have the right to modify it.
60

  
61

  
62
3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you 
63
some rights to use the software. Microsoft reserves all other rights. Unless applicable law 
64
gives you more rights despite this limitation, you may use the software only as expressly 
65
permitted in this agreement. In doing so, you must comply with any technical limitations in 
66
the software that only allow you to use it in certain ways. You may not
67

  
68
? work around any technical limitations in the software;
69
? reverse engineer, decompile or disassemble the software, except and only to the extent 
70
that applicable law expressly permits, despite this limitation;
71
? make more copies of the software than specified in this agreement or allowed by 
72
applicable law, despite this limitation;
73
? publish the software for others to copy;
74
? rent, lease or lend the software;
75
? transfer the software or this agreement to any third party; or
76
? use the software for commercial software hosting services.
77

  
78
4. EXPORT RESTRICTIONS. The software is subject to United States export laws and 
79
regulations. You must comply with all domestic and international export laws and 
80
regulations that apply to the software. These laws include restrictions on destinations, end 
81
users and end use. For additional information, see www.microsoft.com/exporting.
82

  
83
5. SUPPORT SERVICES. Because this software is ?as is,? we may not provide support 
84
services for it.
85

  
86
6. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-
87
based services and support services that you use, are the entire agreement for the software 
88
and support services.
89

  
90
7. APPLICABLE LAW.
91

  
92
a. United States. If you acquired the software in the United States, Washington state law 
93
governs the interpretation of this agreement and applies to claims for breach of it, 
94
regardless of conflict of laws principles. The laws of the state where you live govern all 
95
other claims, including claims under state consumer protection laws, unfair competition 
96
laws, and in tort.
97

  
98
b. Outside the United States. If you acquired the software in any other country, the laws of 
99
that country apply.
100

  
101
8. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights 
102
under the laws of your country. You may also have rights with respect to the party from 
103
whom you acquired the software. This agreement does not change your rights under the laws 
104
of your country if the laws of your country do not permit it to do so.
105

  
106
9. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED ?AS-IS.? YOU 
107
BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS 
108
WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE 
109
ADDITIONAL CONSUMER RIGHTS UNDER YOUR LOCAL LAWS WHICH THIS 
110
AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER 
111
YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES 
112
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
113
INFRINGEMENT.
114

  
115
10. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN 
116
RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP 
117
TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING 
118
CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL 
119
DAMAGES.
120

  
121
This limitation applies to
122

  
123
? anything related to the software, services, content (including code) on third party Internet 
124
sites, or third party programs, and
125
? claims for breach of contract, breach of warranty, guarantee or condition, strict liability, 
126
negligence, or other tort to the extent permitted by applicable law.
127

  
128
It also applies even if Microsoft knew or should have known about the possibility of the 
129
damages. The above limitation or exclusion may not apply to you because your country may 
130
not allow the exclusion or limitation of incidental, consequential or other damages.
131

  
132
Please note: As this software is distributed in Quebec, Canada, some of the clauses in this 
133
agreement are provided below in French.
134

  
135
Remarque : Ce logiciel ?tant distribu? au Qu?bec, Canada, certaines des clauses dans ce 
136
contrat sont fournies ci-dessous en fran?ais.
137

  
138
EXON?RATION DE GARANTIE. Le logiciel vis? par une licence est offert ? tel quel ?. 
139
Toute utilisation de ce logiciel est ? votre seule risque et p?ril. Microsoft n?accorde aucune 
140
autre garantie expresse. Vous pouvez b?n?ficier de droits additionnels en vertu du droit local 
141
sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont 
142
permises par le droit locale, les garanties implicites de qualit? marchande, d?ad?quation ? un 
143
usage particulier et d?absence de contrefa?on sont exclues.
144

  
145
LIMITATION DES DOMMAGES-INT?R?TS ET EXCLUSION DE 
146
RESPONSABILIT? POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de 
147
ses fournisseurs une indemnisation en cas de dommages directs uniquement ? hauteur de 5,00 
148
$ US. Vous ne pouvez pr?tendre ? aucune indemnisation pour les autres dommages, y 
149
compris les dommages sp?ciaux, indirects ou accessoires et pertes de b?n?fices.
150

  
151
Cette limitation concerne :
152
? tout ce qui est reli? au logiciel, aux services ou au contenu (y compris le code) figurant 
153
sur des sites Internet tiers ou dans des programmes tiers ; et
154
? les r?clamations au titre de violation de contrat ou de garantie, ou au titre de 
155
responsabilit? stricte, de n?gligence ou d?une autre faute dans la limite autoris?e par la loi 
156
en vigueur.
157

  
158
Elle s?applique ?galement, m?me si Microsoft connaissait ou devrait conna?tre l??ventualit? 
159
d?un tel dommage. Si votre pays n?autorise pas l?exclusion ou la limitation de responsabilit? 
160
pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la 
161
limitation ou l?exclusion ci-dessus ne s?appliquera pas ? votre ?gard.
162

  
163
EFFET JURIDIQUE. Le pr?sent contrat d?crit certains droits juridiques. Vous pourriez avoir 
164
d?autres droits pr?vus par les lois de votre pays. Le pr?sent contrat ne modifie pas les droits 
165
que vous conf?rent les lois de votre pays si celles-ci ne le permettent pas.
166

  
167

  
168

  
169

  
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.app/org.gvsig.mssqlserver.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.mssqlserver.MSSQLServerExtension" active="true"/>
8
  </extensions>    
9
</plugin-config>
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.app/org.gvsig.mssqlserver.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.mssqlserver.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>com.microsoft.sqlserver:sqlserver-jdbc</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.mssqlserver-1.0.12/org.gvsig.mssqlserver.app/org.gvsig.mssqlserver.app.mainplugin/src/main/java/org/gvsig/mssqlserver/MSSQLServerExtension.java
1

  
2
package org.gvsig.mssqlserver;
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 MSSQLServerExtension  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-mssqlserver", this);
21
        mapContextMgr.registerIconLayer("MSSQLServer", "layer-icon-mssqlserver");
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.mssqlserver-1.0.12/org.gvsig.mssqlserver.app/org.gvsig.mssqlserver.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.mssqlserver.app.mainplugin</artifactId>
7
  <packaging>jar</packaging>
8
  <name>${project.artifactId}</name>
9
  <description>MS SQLServer support</description>
10

  
11
  <parent>
12
      <groupId>org.gvsig</groupId>
13
      <artifactId>org.gvsig.mssqlserver.app</artifactId>
14
      <version>1.0.12</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.mssqlserver.provider</artifactId>
36
        <scope>compile</scope>
37
    </dependency>
38

  
39
    <dependency>
40
      <groupId>com.microsoft.sqlserver</groupId>
41
      <artifactId>sqlserver-jdbc</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: MS SQLServer support</gvsig.package.info.name>
65
        <gvsig.package.info.state>testing</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.3.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-mssqlserver/pool/</gvsig.package.info.poolURL>
71
    </properties>
72

  
73

  
74
</project>
0 75

  
tags/org.gvsig.mssqlserver-1.0.12/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.mssqlserver</artifactId>
7
    <version>1.0.12</version>
8
    <packaging>pom</packaging>
9
    <name>${project.artifactId}</name>
10
    <description>MS SQLServer support fort DAL and gvSIG</description>
11
    <parent>
12
        <groupId>org.gvsig</groupId>
13
        <artifactId>org.gvsig.desktop</artifactId>
14
        <version>2.0.196</version>
15
    </parent>
16

  
17
    <url>https://devel.gvsig.org/redmine/projects/gvsig-mssqlserver</url>
18
    <scm>
19
        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-mssqlserver/tags/org.gvsig.mssqlserver-1.0.12</connection>
20
        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-mssqlserver/tags/org.gvsig.mssqlserver-1.0.12</developerConnection>
21
        <url>https://devel.gvsig.org/redmine/projects/gvsig-mssqlserver/repository/show/tags/org.gvsig.mssqlserver-1.0.12</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-mssqlserver/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.mssqlserver.provider</artifactId>
62
                <version>1.0.12</version>
63
            </dependency>
64
            <dependency>
65
                <groupId>org.gvsig</groupId>
66
                <artifactId>org.gvsig.mssqlserver.app.mainplugin</artifactId>
67
                <version>1.0.12</version>
68
            </dependency>
69
            <dependency>
70
                <groupId>com.microsoft.sqlserver</groupId>
71
                <artifactId>sqlserver-jdbc</artifactId>
72
                <version>6.0.0</version>
73
            </dependency>
74
        </dependencies>
75
    </dependencyManagement>
76
  
77
    <modules>
78
        <module>org.gvsig.mssqlserver.app</module>
79
        <module>org.gvsig.mssqlserver.provider</module>
80
    </modules>
81

  
82

  
83
</project>
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/operations/MSSQLServerCanModifyTableOperation.java
1
package org.gvsig.mssqlserver.dal.operations;
2

  
3
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.*;
4
import java.sql.Connection;
5
import java.sql.ResultSet;
6
import java.sql.SQLException;
7
import java.sql.Statement;
8
import org.apache.commons.lang3.StringUtils;
9
import org.gvsig.fmap.dal.exception.DataException;
10
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCSQLException;
11
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
12
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
13

  
14
public class MSSQLServerCanModifyTableOperation extends CanModifyTableOperation {
15

  
16
    public MSSQLServerCanModifyTableOperation(
17
            JDBCHelper helper
18
        ) {
19
        this(helper, null, null, null);
20
    }
21

  
22
    public MSSQLServerCanModifyTableOperation(
23
            JDBCHelper helper,
24
            String dbName,
25
            String schemaName,
26
            String tableName
27
        ) {
28
        super(helper,dbName,schemaName,tableName);
29
    }
30

  
31
    private String getFullTableName( 
32
            String dbName,
33
            String schemaName,
34
            String tableName
35
    ) {
36
        StringBuilder builder = new StringBuilder();
37
        if( !StringUtils.isEmpty(dbName) ) {
38
            builder.append(dbName);
39
        }
40
        if( !StringUtils.isEmpty(schemaName) ) {
41
            if( builder.length()>0 ) {
42
                builder.append(".");
43
            }
44
            builder.append(schemaName);
45
        }
46
        if( !StringUtils.isEmpty(tableName) ) {
47
            if( builder.length()>0 ) {
48
                builder.append(".");
49
            }
50
            builder.append(tableName);
51
        }
52
        return builder.toString();
53
    }
54
    
55
    @Override
56
    public boolean canModifyTable(Connection conn,
57
            String dbName,
58
            String schemaName,
59
            String tableName
60
        ) throws DataException {
61

  
62
        String sql = "SELECT count(*) " + 
63
                     "FROM fn_my_permissions('"+getFullTableName(dbName, schemaName, tableName)+"', 'OBJECT') " +
64
                     "WHERE permission_name in ('UPDATE', 'INSERT', 'DELETE') AND subentity_name = ''";
65
        Statement st = null;
66
        ResultSet rs = null;
67
        try {
68
            st = conn.createStatement();
69
            rs = JDBCUtils.executeQuery(st, sql);
70
            if (!rs.next()) {
71
                return false;
72
            }
73
            return rs.getInt(1)==3;
74

  
75
        } catch (SQLException ex) {
76
            throw new JDBCSQLException(ex);
77
        } finally {
78
            JDBCUtils.closeQuietly(st);
79
            JDBCUtils.closeQuietly(rs);
80
        }
81

  
82
    }
83

  
84
}
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/operations/MSSQLServerFetchFeatureTypeOperation.java
1
package org.gvsig.mssqlserver.dal.operations;
2

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

  
21
public class MSSQLServerFetchFeatureTypeOperation extends FetchFeatureTypeOperation {
22

  
23
    public MSSQLServerFetchFeatureTypeOperation(
24
            JDBCHelper helper
25
    ) {
26
        super(helper);
27
    }
28

  
29
    public MSSQLServerFetchFeatureTypeOperation(
30
            JDBCHelper helper,
31
            EditableFeatureType featureType,
32
            String dbname,
33
            String schema,
34
            String table,
35
            List<String> primaryKeys,
36
            String defaultGeometryColumn,
37
            IProjection crs
38
    ) {
39
        super(helper, featureType, dbname, schema, table, primaryKeys, defaultGeometryColumn, crs);
40
    }
41

  
42
    @Override
43
    public void fetch(EditableFeatureType featureType, Connection conn, String dbname, String schema, String table, List<String> pks, String defaultGeometryColumn, IProjection crs) throws DataException {
44
        super.fetch(featureType, conn, dbname, schema, table, pks, defaultGeometryColumn, crs);
45
        ((MSSQLServerHelper) this.helper).setLastUsedFeatureType(featureType);
46
    }
47

  
48
    @Override
49
    protected void fetchGeometryTypeAndSRS(
50
            EditableFeatureAttributeDescriptor attr,
51
            ResultSetMetaData rsMetadata,
52
            int colIndex
53
    ) {
54
        try {
55
            GeometryType geomType = GeometryLocator.getGeometryManager().getGeometryType(
56
                    Geometry.TYPES.GEOMETRY,
57
                    Geometry.SUBTYPES.GEOM2D
58
            );
59
            attr.setGeometryType(geomType);
60

  
61
            String typeName = rsMetadata.getColumnTypeName(colIndex);
62
            attr.setAdditionalInfo("SQLServer_type_name", typeName);
63
            attr.setSRS(getProjectionOfColumn(attr.getName()));
64
        } catch (Exception ex) {
65
            logger.warn("Can't get default geometry type.", ex);
66
        }
67
    }
68
    
69
    private IProjection getProjectionOfColumn(String columnName) {
70
       
71
        JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder();
72
        sqlbuilder.select().limit(1);
73
        sqlbuilder.select().column().value(
74
                sqlbuilder.ST_SRID(sqlbuilder.column(columnName))
75
        );
76
        sqlbuilder.select().where().set(
77
                sqlbuilder.and(
78
                        sqlbuilder.notIsNull(sqlbuilder.column(columnName)),
79
                        sqlbuilder.notIsNull(sqlbuilder.ST_SRID(sqlbuilder.column(columnName)))
80
                )
81
        );
82
        sqlbuilder.select().from().table().schema(this.getSchema()).name(this.getTablename());
83
        Statement st = null;
84
        ResultSet rs = null;
85
        try {
86
            st = this.getConnection().createStatement();
87
            rs = JDBCUtils.executeQuery(st, sqlbuilder.toString());
88
            if (rs.next()) {
89
                int code = rs.getInt(1);
90
                try {
91
                    IProjection proj = this.helper.getProjectionFromDatabaseCode(String.valueOf(code));
92
                    return proj;
93
                } catch (Exception ex) {
94
                    logger.warn("Can't create projection from code '" + code + "'.", ex);
95
                }
96
            }
97
        } catch (Exception ex) {
98
            // Do nothing, return null
99
        } finally {
100
            JDBCUtils.closeQuietly(rs);
101
            JDBCUtils.closeQuietly(st);
102
        }
103
        return null;
104

  
105
    }
106
}
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/operations/MSSQLServerOperationsFactory.java
1

  
2
package org.gvsig.mssqlserver.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.CanModifyTableOperation;
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.mssqlserver.dal.operations.MSSQLServerFetchFeatureTypeOperation;
12

  
13

  
14
public class MSSQLServerOperationsFactory extends OperationsFactoryBase {
15
    
16
    public MSSQLServerOperationsFactory(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 MSSQLServerFetchFeatureTypeOperation(
23
                helper, type, database, schema, table, primaryKeys, 
24
                defaultGeometryField, crs
25
        );
26
    }
27

  
28
    @Override
29
    public CanModifyTableOperation createCanModifyTableOperation(String dbName, String schemaName, String tableName) {
30
        return new MSSQLServerCanModifyTableOperation(
31
                helper, dbName, schemaName, tableName
32
        );
33
    }
34
    
35
    
36
}
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerHelper.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2016 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 3
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.mssqlserver.dal;
23

  
24
import org.gvsig.mssqlserver.dal.operations.MSSQLServerOperationsFactory;
25
import java.sql.Connection;
26
import java.sql.SQLException;
27
import java.text.MessageFormat;
28
import org.apache.commons.dbcp.BasicDataSource;
29
import org.apache.commons.lang3.StringUtils;
30
import org.cresques.cts.IProjection;
31
import org.gvsig.fmap.dal.DataParameters;
32
import org.gvsig.fmap.dal.DataTypes;
33
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
34
import org.gvsig.fmap.dal.feature.FeatureType;
35
import org.gvsig.fmap.dal.SQLBuilder;
36
import org.gvsig.fmap.dal.resource.exception.AccessResourceException;
37
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters;
38
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
39
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
40
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
41
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCDriverClassNotFoundException;
42
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
43
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCHelperBase;
44
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
45
import org.slf4j.Logger;
46
import org.slf4j.LoggerFactory;
47

  
48
public class MSSQLServerHelper extends JDBCHelperBase {
49

  
50
    private static final Logger logger = LoggerFactory.getLogger(MSSQLServerHelper.class);
51

  
52
    public static final String NAME = "MSSQLServer";
53
    public static final String INSTANCE_NAME = "SQLEXPRESS";
54
    public static final int PORT = 1433;
55
    public static final String MSSQLServerJDBCDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
56
    
57
//    private static final boolean ALLOW_AUTOMATIC_VALUES = true;
58
//    private static final String QUOTE_FOR_USE_IN_IDENTIFIERS = "\"";
59
//    private static final String QUOTE_FOR_USE_IN_STRINGS = "'";
60

  
61
    public static String getConnectionURL(JDBCConnectionParameters params) {
62
        String connectionURL = MessageFormat.format(
63
                //"jdbc:sqlserver://{0}:{1,number,#};databaseName={2};instanceName={3};",
64
                "jdbc:sqlserver://{0};databaseName={2};instanceName={3};",
65
                params.getHost(),
66
                params.getPort(),
67
                params.getDBName(),
68
                ((DataParameters) params).getDynValue("instanceName")
69
        );
70
        logger.debug("connectionURL: {}", connectionURL);
71
        return connectionURL;
72
    }
73

  
74
    private static class ConnectionProvider {
75

  
76
        private static boolean needRegisterDriver = true;
77

  
78
        private BasicDataSource dataSource = null;
79

  
80
        private final JDBCConnectionParameters connectionParameters;
81

  
82
        public ConnectionProvider(JDBCConnectionParameters connectionParameters) {
83
            this.connectionParameters = connectionParameters;
84
        }
85

  
86
        public Connection getConnection() throws SQLException {
87
            if (this.dataSource == null) {
88
                this.dataSource = this.createDataSource();
89
            }
90
            Connection conn = this.dataSource.getConnection();
91
            return conn;
92
        }
93

  
94
        private BasicDataSource createDataSource() throws SQLException {
95
            if (!this.isRegistered()) {
96
                this.registerDriver();
97
            }
98
            JDBCConnectionParameters params = connectionParameters;
99

  
100
            BasicDataSource dataSource = new BasicDataSource();
101
            dataSource.setDriverClassName(params.getJDBCDriverClassName());
102
            dataSource.setUsername(params.getUser());
103
            dataSource.setPassword(params.getPassword());
104
            dataSource.setUrl(params.getUrl());
105

  
106
            dataSource.setMaxWait(60L * 1000);
107
            return dataSource;
108
        }
109

  
110
        private boolean isRegistered() {
111
            return needRegisterDriver;
112
        }
113

  
114
        public void registerDriver() throws SQLException {
115
            String className = this.connectionParameters.getJDBCDriverClassName();
116
            if (className == null) {
117
                return;
118
            }
119
            try {
120
                Class theClass = Class.forName(className);
121
                if (theClass == null) {
122
                    throw new JDBCDriverClassNotFoundException(MSSQLServerLibrary.NAME, className);
123
                }
124
            } catch (Exception e) {
125
                throw new SQLException("Can't register JDBC driver '" + className + "'.", e);
126
            }
127
            needRegisterDriver = false;
128
        }
129

  
130
    }
131

  
132
    private ConnectionProvider connectionProvider = null;
133

  
134
    private FeatureType lastUsedFeatureType = null;
135
    private String lastUsedSpatialType = null;
136
    
137
    public MSSQLServerHelper(JDBCConnectionParameters connectionParameters) {
138
        super(connectionParameters);
139
    }
140

  
141
    @Override
142
    public Connection getConnection() throws AccessResourceException {
143
        try {
144
            if (this.connectionProvider == null) {
145
                this.connectionProvider = new ConnectionProvider(this.getConnectionParameters());
146
            }
147
            return this.connectionProvider.getConnection();
148
        } catch (SQLException ex) {
149
            throw new AccessResourceException(MSSQLServerLibrary.NAME, ex);
150
        }
151
    }
152
    
153
    @Override
154
    public String getConnectionURL() {
155
        return getConnectionURL(this.getConnectionParameters());
156
    }
157

  
158
    @Override
159
    protected String getResourceType() {
160
        return MSSQLServerLibrary.NAME;
161
    }
162

  
163
    @Override
164
    public String getProviderName() {
165
        return MSSQLServerLibrary.NAME;
166
    }
167

  
168
    @Override
169
    public JDBCSQLBuilderBase createSQLBuilder() {
170
        return new MSSQLServerSQLBuilder(this);
171
    }
172

  
173
    /**
174
     * Devuelbe el nombre del tipo de datos espacial de SQLServer asociado 
175
     * al ultimo FeatureType cargado.
176
     * 
177
     * Esta funcion es usada para dar un soporte limitado al tipo de datos
178
     * spaciales "geography".
179
     * 
180
     * Si no disponemos de un FeatureType asumimos "geometry".
181
     * Si hay un solo campo espacial asume el tipo de ese campo, y si 
182
     * hay mas de uno asume "geometry".
183
     * En caso de que no haya ningun campo espacial asumimos "geometry".
184
     * 
185
     * @return "geometry" or "geography" for the last used table.
186
     */
187
    public String getSpatialType() {
188
        if( this.lastUsedSpatialType != null ) {
189
            return this.lastUsedSpatialType;
190
        }
191
        if( this.lastUsedFeatureType == null ) {
192
            this.lastUsedSpatialType = "geometry";
193
            return this.lastUsedSpatialType;
194
        }
195
        String spatialType = null;
196
        for (FeatureAttributeDescriptor attr : lastUsedFeatureType) {
197
            if( attr.getType() == DataTypes.GEOMETRY ) {
198
                if( spatialType != null ) {
199
                    this.lastUsedSpatialType = "geometry";
200
                    return this.lastUsedSpatialType;
201
                }
202
                spatialType = (String) attr.getAdditionalInfo("SQLServer_type_name");
203
            }
204
        }
205
        if( StringUtils.isEmpty(spatialType) ) {
206
            this.lastUsedSpatialType = "geometry";
207
            return this.lastUsedSpatialType;
208
        }
209
        this.lastUsedSpatialType = spatialType;
210
        return this.lastUsedSpatialType;
211
    }
212

  
213
    /**
214
     * Devuelbe el tipo de datos espacial de SQLServer asociado a la columna 
215
     * indicada.
216
     * 
217
     * Esta funcion es usada para dar un soporte limitado al tipo de datos
218
     * spaciales "geography".
219
     * 
220
     * Si no disponemos de un FeatureType asumimos "geometry".
221
     * Si no existe el campo solicitado o no es de tipo geoemtria, asumimos 
222
     * el tipo espacia asociado al FeatureType (getSpatialType()).
223
     * 
224
     * @param columnName
225
     * @return "geometry" or "geography" for column in the last used table.
226
     */
227
    public String getSpatialType(String columnName) {
228
        if( this.lastUsedFeatureType == null ) {
229
            return "geometry";
230
        }
231
        FeatureAttributeDescriptor attr = this.lastUsedFeatureType.getAttributeDescriptor(columnName);
232
        if( attr == null ) {
233
            return this.getSpatialType();
234
        }
235
        if( attr.getType() != DataTypes.GEOMETRY ) {
236
            return this.getSpatialType();
237
        }
238
        String spatialType = (String) attr.getAdditionalInfo("SQLServer_type_name");
239
        if( StringUtils.isEmpty(spatialType) ) {
240
            return "geometry";
241
        }
242
        return spatialType;
243
    }
244
    
245
    public void setLastUsedFeatureType(FeatureType featureType) {
246
        this.lastUsedSpatialType = null;
247
        this.lastUsedFeatureType = featureType;
248
    }
249
    
250
    @Override
251
    public OperationsFactory getOperations() {
252
        if (this.operationsFactory == null) {
253
            this.operationsFactory = new MSSQLServerOperationsFactory(this);
254
        }
255
        return operationsFactory;
256
    }
257

  
258
    @Override
259
    public SQLBuilder.GeometrySupportType getGeometrySupportType() {
260
        return SQLBuilder.GeometrySupportType.WKB;
261
    }
262

  
263
    @Override
264
    public boolean hasSpatialFunctions() {
265
        return true;
266
    }
267

  
268
    @Override
269
    public boolean canWriteGeometry(int geometryType, int geometrySubtype) {
270
        return true;
271
    }
272

  
273
    @Override
274
    public String getQuoteForIdentifiers() {
275
        return "\"";
276
    }
277

  
278
    @Override
279
    public boolean allowAutomaticValues() {
280
        return true;
281
    }
282

  
283
    @Override
284
    public boolean supportOffsetInSelect() {
285
        return true;
286
    }
287

  
288
    @Override
289
    public String getQuoteForStrings() {
290
        return "'";
291
    }
292

  
293
    @Override
294
    public int getSRSCode(IProjection crs) {
295
        // TODO: ir a buscarlo a la BBDD a ver donde puede estar
296
        return super.getSRSCode(crs);
297
    }
298

  
299
    @Override
300
    public IProjection getProjectionFromSRSId(int srsid) {
301
        return super.getProjectionFromSRSId(srsid); 
302
    }
303

  
304
    @Override
305
    public String getSourceId(JDBCStoreParameters parameters) {
306
        return parameters.getHost() + ":" +
307
               parameters.getDynValue("InstanceName")+ ":" + 
308
               parameters.getDBName() + "." + 
309
               parameters.getSchema()+ "." + 
310
               parameters.getTable();
311
    }
312

  
313
    @Override
314
    public JDBCNewStoreParameters createNewStoreParameters() {
315
        return new MSSQLServerNewStoreParameters();
316
    }
317

  
318
    @Override
319
    public JDBCStoreParameters createOpenStoreParameters() {
320
        return new MSSQLServerStoreParameters();
321
    }
322

  
323
    @Override
324
    public JDBCServerExplorerParameters createServerExplorerParameters() {
325
        return new MSSQLServerExplorerParameters();
326
    }
327

  
328
}
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerStoreProviderFactory.java
1

  
2
package org.gvsig.mssqlserver.dal;
3

  
4
import org.gvsig.fmap.dal.DataParameters;
5
import org.gvsig.fmap.dal.exception.InitializeException;
6
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
7
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters;
8
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
9
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
10
import org.gvsig.fmap.dal.store.jdbc2.JDBCStoreProvider;
11
import org.gvsig.fmap.dal.store.jdbc2.impl.JDBCStoreProviderFactory;
12

  
13

  
14
public class MSSQLServerStoreProviderFactory extends JDBCStoreProviderFactory {
15

  
16
    private static final String NAME = MSSQLServerLibrary.NAME;
17
    
18
    public MSSQLServerStoreProviderFactory() {
19
        super(
20
                NAME, 
21
                "Microsoft SQL Server store"
22
        );
23
    }
24

  
25
    @Override
26
    public JDBCStoreProvider createProvider(
27
            DataParameters parameters,
28
            DataStoreProviderServices providerServices
29
    ) throws InitializeException {
30
        JDBCHelper helper = new MSSQLServerHelper((JDBCConnectionParameters) parameters);
31
        JDBCStoreProvider provider = helper.createProvider(
32
                (JDBCStoreParameters) parameters, 
33
                providerServices
34
        );
35
        return provider;
36
    }
37

  
38
    @Override
39
    public JDBCStoreParameters createParameters() {
40
        JDBCStoreParameters params = new MSSQLServerStoreParameters();
41
        return params;
42
    }
43
    
44
}
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerStoreParameters.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.mssqlserver.dal;
23

  
24
import org.apache.commons.lang3.StringUtils;
25
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
26
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
27

  
28
public class MSSQLServerStoreParameters extends JDBCStoreParameters {
29

  
30
    public MSSQLServerStoreParameters() {
31
        super(
32
                MSSQLServerLibrary.NAME + "StoreParameters",
33
                MSSQLServerLibrary.NAME
34
        );
35
    }
36

  
37
    @Override
38
    public String getUrl() {
39
        String url = super.getUrl();
40
        if( StringUtils.isEmpty(url) ) {
41
            url = MSSQLServerHelper.getConnectionURL(this);
42
            this.setUrl(url);
43
        }
44
        return url;
45
    }
46

  
47
    @Override
48
    public void validate() throws ValidateDataParametersException {
49
        if (getJDBCDriverClassName() == null) {
50
            setJDBCDriverClassName(MSSQLServerHelper.MSSQLServerJDBCDriver);
51
        }
52
        if (getPort() == null) {
53
            setPort(MSSQLServerHelper.PORT);
54
        }
55
        if (getDynValue("instanceName") == null) {
56
            setDynValue("InstanceName", MSSQLServerHelper.INSTANCE_NAME);
57
        }
58
        super.validate();
59
    }
60
}
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerExplorerParameters.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.mssqlserver.dal;
26

  
27
import org.apache.commons.lang3.StringUtils;
28
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
29
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
30

  
31
public class MSSQLServerExplorerParameters extends
32
        JDBCServerExplorerParameters {
33

  
34
    public MSSQLServerExplorerParameters() {
35
        super(
36
                MSSQLServerLibrary.NAME + "ServerExplorerParameters",
37
                MSSQLServerLibrary.NAME
38
        );
39
    }
40

  
41
    @Override
42
    public String getUrl() {
43
        String url = super.getUrl();
44
        if( StringUtils.isEmpty(url) ) {
45
            url = MSSQLServerHelper.getConnectionURL(this);
46
            this.setUrl(url);
47
        }
48
        return url;
49
    }
50

  
51
    @Override
52
    public void validate() throws ValidateDataParametersException {
53
        if (getJDBCDriverClassName() == null) {
54
            setJDBCDriverClassName(MSSQLServerHelper.MSSQLServerJDBCDriver);
55
        }
56
        if (getPort() == null) {
57
            setPort(MSSQLServerHelper.PORT);
58
        }
59
        if( getDynValue("instanceName") == null ) {
60
            setDynValue("InstanceName", MSSQLServerHelper.INSTANCE_NAME);
61
        }
62
        super.validate();
63
    }
64
}
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerLibrary.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.mssqlserver.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 MSSQLServerLibrary extends AbstractLibrary {
35

  
36
    // com.microsoft.sqlserver.jdbc.SQLServerDriver
37

  
38
    public static final String NAME = "MSSQLServer";
39

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

  
46
    @Override
47
    protected void doInitialize() throws LibraryException {
48
    }
49

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

  
54
        DataManagerProviderServices dataman = 
55
                (DataManagerProviderServices) DALLocator.getDataManager();
56

  
57
        DBHelper.registerParametersDefinition(
58
                NAME + "StoreParameters",
59
                MSSQLServerStoreParameters.class,
60
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
61
        );
62
        DBHelper.registerParametersDefinition(
63
                NAME + "NewStoreParameters",
64
                MSSQLServerNewStoreParameters.class,
65
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
66
        );
67
        DBHelper.registerParametersDefinition(
68
                NAME + "ServerExplorerParameters",
69
                MSSQLServerExplorerParameters.class,
70
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
71
        );
72
//        DBHelper.registerParametersDefinition(
73
//                NAME + "ResourceParameters",
74
//                MSSQLServerResourceParameters.class,
75
//                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
76
//        );
77
        try {
78
            DBHelper.registerMetadataDefinition(
79
                NAME,
80
                JDBCStoreProviderBase.class,
81
                dataman.getResourceAsStream(this, NAME + "Metadata.xml")
82
            );
83
        } catch (MetadataException e) {
84
            ex = new LibraryException(this.getClass(), e);
85
        }
86

  
87
//        ResourceManagerProviderServices resman = (ResourceManagerProviderServices) DALLocator
88
//                .getResourceManager();
89
//
90
//        if (!resman.getResourceProviders().contains(NAME)) {
91
//            resman.register(NAME,
92
//                "Resource for " + NAME,
93
//                MSSQLServerResource.class,
94
//                MSSQLServerResourceParameters.class
95
//            );
96
//        }
97

  
98
        if (!dataman.getStoreProviderRegister().exits(NAME)) {
99
            dataman.registerStoreProviderFactory(new MSSQLServerStoreProviderFactory());
100
        }
101

  
102
        if (!dataman.getServerExplorerRegister().exits(NAME)) {
103
            dataman.registerServerExplorerFactory(new MSSQLServerExplorerFactory());
104
        }
105
        if (ex != null) {
106
            throw ex;
107
        }
108
    }
109

  
110
}
tags/org.gvsig.mssqlserver-1.0.12/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerSQLBuilder.java
1
package org.gvsig.mssqlserver.dal;
2

  
3
import java.text.MessageFormat;
4
import java.util.ArrayList;
5
import java.util.List;
6
import org.cresques.cts.IProjection;
7
import org.gvsig.fmap.dal.DataTypes;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff