Revision 420

View differences:

org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/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.dgn</artifactId>
7
  <packaging>pom</packaging>
8
  <name>${project.artifactId}</name>
9
  <version>2.0.89</version>
10
  <description>DGN support fort DAL and gvSIG</description>
11
  <parent>
12
      <groupId>org.gvsig</groupId>
13
      <artifactId>org.gvsig.desktop</artifactId>
14
      <version>2.0.204</version>
15
  </parent>
16
  <url>https://devel.gvsig.org/redmine/projects/gvsig-dgn</url>
17

  
18
  <scm>
19
      <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-dgn/org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89</connection>
20
      <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-dgn/org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89</developerConnection>
21
      <url>https://devel.gvsig.org/redmine/projects/gvsig-dgn/repository/show/org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89</url>
22
  </scm>
23
    <repositories>
24
      <repository>
25
        <id>gvsig-public-http-repository</id>
26
        <name>gvSIG maven public HTTP repository</name>
27
        <url>http://devel.gvsig.org/m2repo/j2se</url>
28
        <releases>
29
          <enabled>true</enabled>
30
          <updatePolicy>daily</updatePolicy>
31
          <checksumPolicy>warn</checksumPolicy>
32
        </releases>
33
        <snapshots>
34
          <enabled>true</enabled>
35
          <updatePolicy>daily</updatePolicy>
36
          <checksumPolicy>warn</checksumPolicy>
37
        </snapshots>
38
      </repository>
39
    </repositories>
40
      
41
	<build>
42
		<plugins>
43
			<plugin>
44
				<groupId>org.apache.maven.plugins</groupId>
45
				<artifactId>maven-release-plugin</artifactId>
46
				<configuration>
47
					<tagBase>https://devel.gvsig.org/svn/gvsig-dgn/org.gvsig.dgn/tags</tagBase>
48
				</configuration>
49
			</plugin>
50
		</plugins>
51
	</build>
52

  
53
  <dependencyManagement>
54
      <dependencies>
55
          <dependency>
56
            <groupId>org.gvsig</groupId>
57
            <artifactId>org.gvsig.dgn.provider</artifactId>
58
            <version>2.0.89</version>
59
          </dependency>
60
          <dependency>
61
            <groupId>org.gvsig</groupId>
62
            <artifactId>org.gvsig.dgn.provider.legend</artifactId>
63
            <version>2.0.89</version>
64
          </dependency>
65
          <dependency>
66
            <groupId>org.gvsig</groupId>
67
            <artifactId>org.gvsig.dgn.app.mainplugin</artifactId>
68
            <version>2.0.89</version>
69
          </dependency>
70
      </dependencies>
71
  </dependencyManagement>
72

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

  
81
  <modules>
82
    <module>org.gvsig.dgn.app</module>
83
    <module>org.gvsig.dgn.provider</module>
84
    <module>org.gvsig.dgn.provider.legend</module>
85
  </modules>
86

  
87

  
88
</project>
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.app/org.gvsig.dgn.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.andami.LibraryExtension" active="false"/>
8
  </extensions>
9
</plugin-config>
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.app/org.gvsig.dgn.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
  </files>
17

  
18
  <fileSets>
19
    <fileSet>
20
      <directory>src/main/resources-plugin</directory>
21
      <outputDirectory>.</outputDirectory>
22
    </fileSet>
23
  </fileSets>
24

  
25
  <dependencySets>
26
    <dependencySet>
27
      <useProjectArtifact>false</useProjectArtifact>
28
      <useTransitiveDependencies>false</useTransitiveDependencies>
29
      <outputDirectory>lib</outputDirectory>
30
      <includes>
31
        <include>org.gvsig:org.gvsig.dgn.provider.legend</include>
32
        <include>org.gvsig:org.gvsig.dgn.provider</include>
33
      </includes>
34
    </dependencySet>
35
  </dependencySets>
36

  
37
</assembly>
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.app/org.gvsig.dgn.app.mainplugin/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<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">
3
  <modelVersion>4.0.0</modelVersion>
4
  <artifactId>org.gvsig.dgn.app.mainplugin</artifactId>
5
  <packaging>jar</packaging>
6
  <name>${project.artifactId}</name>
7
  <description>DGN file format support</description>
8
  <parent>
9
      <groupId>org.gvsig</groupId>
10
      <artifactId>org.gvsig.dgn.app</artifactId>
11
      <version>2.0.89</version>
12
  </parent>
13

  
14
  <dependencies>
15
    <dependency>
16
        <groupId>org.gvsig</groupId>
17
        <artifactId>org.gvsig.tools.lib</artifactId>
18
        <scope>compile</scope>
19
    </dependency>
20
    <dependency>
21
        <groupId>org.gvsig</groupId>
22
        <artifactId>org.gvsig.andami</artifactId>
23
        <scope>compile</scope>
24
    </dependency>
25
    <dependency>
26
        <groupId>org.gvsig</groupId>
27
        <artifactId>org.gvsig.dgn.provider</artifactId>
28
        <scope>compile</scope>
29
    </dependency>
30
    <dependency>
31
        <groupId>org.gvsig</groupId>
32
        <artifactId>org.gvsig.dgn.provider.legend</artifactId>
33
        <scope>compile</scope>
34
    </dependency>
35

  
36
  </dependencies>
37
  
38
    <properties>
39
        <!-- Package info property values -->
40
        <!-- Default values in org.gvsig.desktop -->
41
        <gvsig.package.info.name>Formats: DGN file format support</gvsig.package.info.name>
42
        <gvsig.package.info.state>testing</gvsig.package.info.state>
43
        <gvsig.package.info.official>true</gvsig.package.info.official>
44
        <gvsig.package.info.dependencies>required: org.gvsig.app.mainplugin -ge 2.1.0-A</gvsig.package.info.dependencies>
45
        <gvsig.package.info.categories>Formats,Vector</gvsig.package.info.categories>
46
        <gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-dgn/pool/</gvsig.package.info.poolURL>
47
    </properties>
48
  
49
</project>
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.app/org.gvsig.dgn.app.mainplugin/buildNumber.properties
1
#Fri Sep 22 10:41:24 CEST 2017
2
buildNumber=2147
0 3

  
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.app/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<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">
3
  <modelVersion>4.0.0</modelVersion>
4
  <artifactId>org.gvsig.dgn.app</artifactId>
5
  <packaging>pom</packaging>
6
  <name>${project.artifactId}</name>
7
  <parent>
8
      <groupId>org.gvsig</groupId>
9
      <artifactId>org.gvsig.dgn</artifactId>
10
      <version>2.0.89</version>
11
  </parent>
12

  
13
  <modules>
14
    <module>org.gvsig.dgn.app.mainplugin</module>
15
  </modules>
16

  
17

  
18
</project>
0 19

  
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider.legend/src/main/java/org/gvsig/fmap/dal/store/dgn/legend/DGNGetLabeling.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
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

  
28
package org.gvsig.fmap.dal.store.dgn.legend;
29

  
30
import org.gvsig.fmap.dal.exception.OpenException;
31
import org.gvsig.fmap.dal.store.dgn.DGNStoreProvider;
32
import org.gvsig.fmap.dal.store.dgn.LegendBuilder;
33
import org.gvsig.tools.ToolsLocator;
34
import org.gvsig.tools.dynobject.AbstractDynMethod;
35
import org.gvsig.tools.dynobject.DynClass;
36
import org.gvsig.tools.dynobject.DynObject;
37
import org.gvsig.tools.dynobject.DynObjectManager;
38
import org.gvsig.tools.dynobject.exception.DynMethodException;
39
import org.gvsig.tools.dynobject.exception.DynMethodNotSupportedException;
40

  
41
public class DGNGetLabeling extends AbstractDynMethod {
42
	private static int code = DynObjectManager.NULLCODE;
43

  
44
	static void register(DynClass DGNDynClass) {
45
		if (code != DynObjectManager.NULLCODE) {
46
			return;
47
		}
48
		code = ToolsLocator.getDynObjectManager().registerDynMethod(
49
			DGNDynClass, 
50
			new DGNGetLabeling()
51
		);
52

  
53
	}
54
        
55
        public DGNGetLabeling() {
56
            super(LegendBuilder.DYNMETHOD_GETLABELING_NAME,"DGN Labeling");
57
        }
58
        
59
        @Override
60
	public int getCode() throws DynMethodNotSupportedException {
61
		return code;
62
	}
63

  
64
        @Override
65
	public Object invoke(DynObject self, Object[] args)
66
			throws DynMethodException {
67
		try {
68
			return ((DGNStoreProvider) self).getLabeling();
69
		} catch (OpenException e) {
70
			//FIXME
71
			throw new RuntimeException(e);
72
		}
73
	}
74

  
75
}
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider.legend/src/main/java/org/gvsig/fmap/dal/store/dgn/legend/DGNGetLegend.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
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

  
28
package org.gvsig.fmap.dal.store.dgn.legend;
29

  
30
import org.gvsig.fmap.dal.exception.OpenException;
31
import org.gvsig.fmap.dal.store.dgn.DGNStoreProvider;
32
import org.gvsig.fmap.dal.store.dgn.LegendBuilder;
33
import org.gvsig.tools.ToolsLocator;
34
import org.gvsig.tools.dynobject.AbstractDynMethod;
35
import org.gvsig.tools.dynobject.DynClass;
36
import org.gvsig.tools.dynobject.DynObject;
37
import org.gvsig.tools.dynobject.DynObjectManager;
38
import org.gvsig.tools.dynobject.exception.DynMethodException;
39
import org.gvsig.tools.dynobject.exception.DynMethodNotSupportedException;
40

  
41
public class DGNGetLegend extends AbstractDynMethod {
42
	private static int code = DynObjectManager.NULLCODE;
43

  
44
	static void register(DynClass DGNDynClass) {
45
		if (code != DynObjectManager.NULLCODE) {
46
			return;
47
		}
48
		code = ToolsLocator.getDynObjectManager().registerDynMethod(
49
			DGNDynClass, 
50
			new DGNGetLegend()
51
		);
52

  
53
	}
54
        
55
        public DGNGetLegend() {
56
            super(LegendBuilder.DYNMETHOD_GETLEGEND_NAME,"DGN Legend");
57
        }
58
        
59
        @Override
60
	public int getCode() throws DynMethodNotSupportedException {
61
		return code;
62
	}
63

  
64
        @Override
65
	public Object invoke(DynObject self, Object[] args)
66
			throws DynMethodException {
67
		try {
68
			return ((DGNStoreProvider) self).getLegend();
69
		} catch (OpenException e) {
70
			throw new RuntimeException(e);
71
		}
72
	}
73

  
74
}
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider.legend/src/main/java/org/gvsig/fmap/dal/store/dgn/legend/DGNLegendLibrary.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
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

  
28
/**
29
 *
30
 */
31
package org.gvsig.fmap.dal.store.dgn.legend;
32

  
33
import org.gvsig.fmap.dal.DALLibrary;
34
import org.gvsig.fmap.dal.store.dgn.DGNLibrary;
35
import org.gvsig.fmap.dal.store.dgn.DGNStoreProvider;
36
import org.gvsig.metadata.MetadataLibrary;
37
import org.gvsig.metadata.MetadataLocator;
38
import org.gvsig.tools.dynobject.DynClass;
39
import org.gvsig.tools.library.AbstractLibrary;
40
import org.gvsig.tools.library.LibraryException;
41

  
42
/**
43
 * @author jmvivo
44
 *
45
 */
46
public class DGNLegendLibrary extends AbstractLibrary {
47

  
48
    @Override
49
    public void doRegistration() {
50
        registerAsServiceOf(DALLibrary.class);
51
        require(DGNLibrary.class);
52
        require(MetadataLibrary.class);
53
    }
54

  
55
	@Override
56
	protected void doInitialize() throws LibraryException {
57
	}
58

  
59
	@Override
60
	protected void doPostInitialize() throws LibraryException {
61
		DynClass metadataDefinition = (DynClass) MetadataLocator.getMetadataManager()
62
			.getDefinition(DGNStoreProvider.METADATA_DEFINITION_NAME);
63
		DGNGetLegendBuilder.register(metadataDefinition);
64
		DGNGetLegend.register(metadataDefinition);
65
		DGNGetLabeling.register(metadataDefinition);
66
	}
67
}
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider.legend/src/main/java/org/gvsig/fmap/dal/store/dgn/legend/DGNGetLegendBuilder.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
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

  
28
package org.gvsig.fmap.dal.store.dgn.legend;
29

  
30
import org.gvsig.fmap.dal.store.dgn.LegendBuilder;
31
import org.gvsig.tools.ToolsLocator;
32
import org.gvsig.tools.dynobject.AbstractDynMethod;
33
import org.gvsig.tools.dynobject.DynClass;
34
import org.gvsig.tools.dynobject.DynObject;
35
import org.gvsig.tools.dynobject.DynObjectManager;
36
import org.gvsig.tools.dynobject.exception.DynMethodException;
37
import org.gvsig.tools.dynobject.exception.DynMethodNotSupportedException;
38

  
39
public class DGNGetLegendBuilder extends AbstractDynMethod {
40
	private static int code = DynObjectManager.NULLCODE;
41

  
42
	static void register(DynClass DGNDynClass) {
43
		if (code != DynObjectManager.NULLCODE) {
44
			return;
45
		}
46
		code = ToolsLocator.getDynObjectManager().registerDynMethod(
47
			DGNDynClass, 
48
			new DGNGetLegendBuilder()
49
		);
50

  
51
	}
52
	
53
        public DGNGetLegendBuilder() {
54
            super(LegendBuilder.DYNMETHOD_BUILDER_NAME,"DGN LegendBuilder creator");
55
        }
56
        
57
        @Override
58
	public int getCode() throws DynMethodNotSupportedException {
59
		return code;
60
	}
61

  
62
        @Override
63
	public Object invoke(DynObject self, Object[] args)
64
			throws DynMethodException {
65
		return new DGNLegendBuilder();
66
	}
67

  
68
}
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider.legend/src/main/java/org/gvsig/fmap/dal/store/dgn/legend/DGNLegendBuilder.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
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

  
28
package org.gvsig.fmap.dal.store.dgn.legend;
29

  
30
import java.awt.Color;
31

  
32
import org.gvsig.fmap.dal.DataTypes;
33
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
34
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider;
35
import org.gvsig.fmap.dal.store.dgn.DGNStoreProvider;
36
import org.gvsig.fmap.dal.store.dgn.LegendBuilder;
37
import org.gvsig.fmap.dal.store.dgn.lib.DGNReader;
38
import org.gvsig.fmap.geom.Geometry;
39
import org.gvsig.fmap.mapcontext.MapContextLocator;
40
import org.gvsig.fmap.mapcontext.MapContextManager;
41
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorialUniqueValueLegend;
42
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
43
import org.gvsig.symbology.SymbologyLocator;
44
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.IAttrInTableLabelingStrategy;
45
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol;
46
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol;
47
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IMarkerSymbol;
48

  
49
public class DGNLegendBuilder implements LegendBuilder {
50

  
51
	private MapContextManager mapContextManager = MapContextLocator
52
			.getMapContextManager();
53

  
54
	private IVectorialUniqueValueLegend defaultLegend = null;
55
	private IAttrInTableLabelingStrategy labelingStragegy = null;
56

  
57
	public void begin() {
58
		// Nothing to do
59
	}
60

  
61
	public void end() {
62
		// Nothing to do
63
	}
64

  
65
	public Object getLegend() {
66
		return defaultLegend;
67
	}
68

  
69
	public LegendBuilder initialize(FeatureStoreProvider store) {
70
		defaultLegend = (IVectorialUniqueValueLegend) mapContextManager.createLegend(
71
						IVectorialUniqueValueLegend.LEGEND_NAME);
72
		defaultLegend.setShapeType(Geometry.TYPES.GEOMETRY);
73
		defaultLegend
74
				.setClassifyingFieldNames(new String[] { DGNStoreProvider.NAME_FIELD_COLOR });
75
		defaultLegend.setClassifyingFieldTypes(new int[] { DataTypes.INT });
76

  
77
		ISymbol myDefaultSymbol =
78
				mapContextManager.getSymbolManager()
79
				.createSymbol(Geometry.TYPES.GEOMETRY);
80

  
81
		defaultLegend.setDefaultSymbol(myDefaultSymbol);
82

  
83
		labelingStragegy = SymbologyLocator.getSymbologyManager().createAttrInTableLabelingStrategy();
84
		labelingStragegy.setTextField(DGNStoreProvider.NAME_FIELD_TEXT);
85
		labelingStragegy
86
				.setRotationField(DGNStoreProvider.NAME_FIELD_ROTATIONTEXT);
87
		labelingStragegy.setHeightField(DGNStoreProvider.NAME_FIELD_HEIGHTTEXT);
88
		labelingStragegy.setUnit(1); // MapContext.NAMES[1] (meters)
89
		return this;
90
	}
91

  
92
	public void process(FeatureProvider feature, DGNReader dgnReader) {
93
		Integer clave = (Integer) feature.get("Color");
94
		if (clave == null) {
95
			return;
96
		}
97

  
98
		defaultLegend.useDefaultSymbol(false);
99
		if (defaultLegend.getSymbolByValue(clave) == null) {
100
			ISymbol theSymbol;
101
			Color color = dgnReader.DGNLookupColor(clave.intValue());
102
			theSymbol =
103
					mapContextManager.getSymbolManager().createSymbol(
104
					Geometry.TYPES.GEOMETRY, color);
105

  
106
			theSymbol.setDescription(clave.toString());
107

  
108
			if (theSymbol instanceof IMarkerSymbol) {
109
				((IMarkerSymbol) theSymbol).setSize(1);
110
			}
111

  
112
			if (theSymbol instanceof ILineSymbol) {
113
				ILineSymbol lineSymbol = (ILineSymbol) theSymbol;
114
				lineSymbol.setLineWidth(1);
115
				lineSymbol.setLineColor(color);
116
			}
117

  
118
			if (theSymbol instanceof IFillSymbol) {
119
				IFillSymbol fillSymbol = (IFillSymbol) theSymbol;
120
				fillSymbol.getOutline().setLineColor(color);
121
				fillSymbol.getOutline().setLineWidth(1);
122
				fillSymbol.setFillColor(null);
123
			}
124
			if (theSymbol != null) {
125
				defaultLegend.addSymbol(clave, theSymbol);
126
			}
127
		}
128
        defaultLegend.useDefaultSymbol(true);
129
	}
130

  
131
	public Object getLabeling() {
132
		return labelingStragegy;
133
	}
134

  
135

  
136
}
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider.legend/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<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">
3
  <modelVersion>4.0.0</modelVersion>
4
  <artifactId>org.gvsig.dgn.provider.legend</artifactId>
5
  <packaging>jar</packaging>
6
  <name>${project.artifactId}</name>
7
  <description>DAL provider for DGN files</description>
8
  <parent>
9
      <groupId>org.gvsig</groupId>
10
      <artifactId>org.gvsig.dgn</artifactId>
11
      <version>2.0.89</version>
12
  </parent>
13

  
14
  <dependencies>
15

  
16
    <dependency>
17
      <groupId>org.gvsig</groupId>
18
      <artifactId>org.gvsig.dgn.provider</artifactId>
19
      <scope>compile</scope>
20
    </dependency>
21

  
22
    <dependency>
23
      <groupId>commons-io</groupId>
24
      <artifactId>commons-io</artifactId>
25
      <scope>compile</scope>
26
    </dependency>
27

  
28
    <dependency>
29
        <groupId>org.gvsig</groupId>
30
        <artifactId>org.gvsig.tools.lib</artifactId>
31
        <scope>compile</scope>
32
    </dependency>
33
    <dependency>
34
        <groupId>org.gvsig</groupId>
35
        <artifactId>org.gvsig.projection.api</artifactId>
36
        <scope>compile</scope>
37
    </dependency>
38
    <dependency>
39
        <groupId>org.gvsig</groupId>
40
        <artifactId>org.gvsig.fmap.dal.api</artifactId>
41
        <scope>compile</scope>
42
    </dependency>
43
    <dependency>
44
        <groupId>org.gvsig</groupId>
45
        <artifactId>org.gvsig.fmap.dal.spi</artifactId>
46
        <scope>compile</scope>
47
    </dependency>
48
    <dependency>
49
        <groupId>org.gvsig</groupId>
50
        <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
51
        <scope>compile</scope>
52
    </dependency>
53
    <dependency>
54
        <groupId>org.gvsig</groupId>
55
        <artifactId>org.gvsig.fmap.geometry.api</artifactId>
56
        <scope>compile</scope>
57
    </dependency>
58
    <dependency>
59
        <groupId>org.gvsig</groupId>
60
        <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
61
        <scope>compile</scope>
62
    </dependency>
63

  
64
    <dependency>
65
        <groupId>org.gvsig</groupId>
66
        <artifactId>org.gvsig.symbology.lib.api</artifactId>
67
        <scope>compile</scope>
68
    </dependency>
69
    <dependency>
70
        <groupId>org.gvsig</groupId>
71
        <artifactId>org.gvsig.timesupport.lib.api</artifactId>
72
        <scope>compile</scope>
73
    </dependency>  
74
    <dependency>
75
      <groupId>org.gvsig</groupId>
76
      <artifactId>org.gvsig.utils</artifactId>
77
      <scope>compile</scope>
78
    </dependency>
79

  
80

  
81
    <!-- TESTS -->
82
    <dependency>
83
      <groupId>org.gvsig</groupId>
84
      <artifactId>org.gvsig.tools.lib</artifactId>
85
      <type>test-jar</type>
86
      <scope>test</scope>
87
    </dependency>
88
    <dependency>
89
      <groupId>org.gvsig</groupId>
90
      <artifactId>org.gvsig.compat.se</artifactId>
91
      <scope>test</scope>
92
    </dependency>
93
    <dependency>
94
      <groupId>org.gvsig</groupId>
95
      <artifactId>org.gvsig.fmap.dal.impl</artifactId>
96
      <scope>test</scope>
97
    </dependency>
98
    <!--
99
    <dependency>
100
      <groupId>org.gvsig</groupId>
101
      <artifactId>org.gvsig.fmap.geometry.generalpath</artifactId>
102
      <scope>test</scope>
103
    </dependency>
104
    -->
105
    <dependency>
106
      <groupId>org.gvsig</groupId>
107
      <artifactId>org.gvsig.projection.cresques.impl</artifactId>
108
      <scope>test</scope>
109
    </dependency>
110
    <dependency>
111
      <groupId>org.gvsig</groupId>
112
      <artifactId>org.gvsig.timesupport.lib.impl</artifactId>
113
      <scope>test</scope>
114
    </dependency>   
115

  
116

  
117
  </dependencies>
118

  
119
</project>
0 120

  
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider/src/test/java/org/gvsig/fmap/dal/store/dgn/TestDGN.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
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

  
28
package org.gvsig.fmap.dal.store.dgn;
29

  
30
import java.io.File;
31
import java.net.URL;
32
import org.gvsig.fmap.dal.DALLocator;
33
import org.gvsig.fmap.dal.DataManager;
34

  
35
import org.gvsig.fmap.dal.DataStoreParameters;
36
import org.gvsig.fmap.dal.exception.DataException;
37
import org.gvsig.fmap.dal.feature.FeatureStore;
38
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
39

  
40
import static junit.framework.Assert.assertNotNull;
41

  
42
public class TestDGN extends AbstractLibraryAutoInitTestCase {
43

  
44
	private File file_prueba = null;
45
        private DataManager dataManager = null;
46

  
47
        @Override
48
        protected void doSetUp() throws Exception {
49
            URL res = TestDGN.class.getResource("data/prueba.dgn");
50
            this.file_prueba = new File(res.getFile());
51
            this.dataManager = DALLocator.getDataManager();
52
        }
53

  
54
        
55
	/*
56
	 * (non-Javadoc)
57
	 *
58
	 * @see
59
	 * org.gvsig.fmap.dal.feature.BaseTestFeatureStore#getDefaultDataStoreParameters
60
	 * ()
61
	 */
62
	public DataStoreParameters getDefaultDataStoreParameters()
63
			throws DataException {
64
            
65
		DGNOpenStoreParameters dgnParameters = null;
66

  
67
		dgnParameters = (DGNOpenStoreParameters) dataManager
68
				.createStoreParameters(DGNStoreProvider.NAME);
69

  
70
		dgnParameters.setFile(file_prueba.getAbsolutePath());
71
		dgnParameters.setCRS("EPSG:23030");
72
		return dgnParameters;
73
	}
74

  
75
	/*
76
	 * (non-Javadoc)
77
	 *
78
	 * @see org.gvsig.fmap.dal.feature.BaseTestFeatureStore#hasExplorer()
79
	 */
80
	public boolean hasExplorer() {
81
		// TODO Auto-generated method stub
82
		return false;
83
	}
84

  
85
	public boolean usesResources() {
86
		return true;
87
	}
88

  
89

  
90
	public void testLegendAndLabeling() throws Exception {
91
		FeatureStore store = (FeatureStore) dataManager.openStore(
92
                        DGNStoreProvider.NAME,
93
                        getDefaultDataStoreParameters()
94
                );
95

  
96
		assertNotNull(store.invokeDynMethod("getLegend", null));
97
		assertNotNull(store.invokeDynMethod("getLabeling", null));
98
		store.dispose();
99
	}
100
}
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider/src/main/java/org/gvsig/fmap/dal/store/dgn/DGNOpenStoreParameters.java
1
package org.gvsig.fmap.dal.store.dgn;
2

  
3
import java.io.File;
4
import java.util.regex.Pattern;
5
import org.apache.commons.lang3.StringUtils;
6

  
7
import org.cresques.cts.IProjection;
8
import org.gvsig.fmap.dal.FileHelper;
9
import org.gvsig.fmap.dal.feature.EditableFeatureType;
10
import org.gvsig.fmap.dal.feature.FeatureType;
11
import org.gvsig.fmap.dal.feature.OpenFeatureStoreParameters;
12
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
13
import org.gvsig.fmap.dal.spi.AbstractDataParameters;
14
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
15
import org.gvsig.fmap.geom.Geometry;
16
import org.gvsig.tools.dynobject.DelegatedDynObject;
17

  
18
public class DGNOpenStoreParameters extends AbstractDataParameters implements
19
        FilesystemStoreParameters,
20
        OpenFeatureStoreParameters {
21

  
22
    public static final String PARAMETERS_DEFINITION_NAME = "DGN";
23

  
24
    private static final String FIELD_FILE = "file";
25
    private static final String FIELD_CRS = "CRS";
26
    private static final String FIELD_XMLFILE = "XMLFile";
27
    private static final String FIELD_LOAD_MODE = "LoadMode";
28
    private static final String FIELD_RELOAD = "Reload";
29
    private static final String FIELD_GEOMTYPE_FILTER = "geomtypeFilter";
30
    private static final String FIELD_LEVEL_FILTER = "levelFilter";
31
    private static final String FIELD_TEXT_FILTER = "textFilter";
32
    private static final String FIELD_COLOR_FILTER = "colorFilter";
33
    private static final String FIELD_STYLE_FILTER = "styleFilter";
34
    private static final String FIELD_WEIGHT_FILTER = "weightFilter";
35
    private static final String FIELD_TYPE_FILTER = "typeFilter";
36
    private static final String FIELD_STYPE_FILTER = "stypeFilter";
37
    private static final String FIELD_GROUP_FILTER = "groupFilter";
38
    private static final String FIELD_ID_FILTER = "idFilter";
39
    private static final String FIELD_CROP_FILTER = "cropFilter";
40
    private static final String FIELD_CROPOPERATION_FILTER = "cropOperationFilter";
41
    private static final String FIELD_SKYPCORRUPTGEOMETRIES_FILTER = "skipCorruptGeometries";
42
    private static final String FIELD_SORT_BY_GEOMETRY_TYPE = "sortByGeometryType";
43
    private static final String FIELD_LOGS_ERRORS = "logErrors";
44
    private static final String FIELD_IGNORE_Z = "ignoreZ";
45
    private static final String FIELD_GROUPBY = "groupby";
46
//    private static final String FIELD_APPLYCONVEXHULL = "applyConvexHull";
47
    private static final String FIELD_USE_Z_AS_ELEVATION = "useZAsElevation";
48
    private static final String FIELD_ELEVATION_FACTOR = "elevationFactor";
49
    private static final String FIELD_ROUND_ELEVATION = "roundElevation";
50

  
51
    public static final String FIELD_LINK_FILTER_INDEX = "LinkFilterIndex";
52
    public static final String FIELD_LINK_FILTER_TYPE = "LinkFilterType";
53
    public static final String FIELD_LINK_FILTER_ENTITY = "LinkFilterEntity";
54
    public static final String FIELD_LINK_FILTER_MS = "LinkFilterMS";
55
    public static final String FIELD_LINK_FILTER_DATA = "LinkFilterData";
56

  
57
    public static final String FIELD_GROUP_GEOMETRIES_OPERATION = "GroupGeometriesOperation";
58
    public static final String FIELD_FORZE2D = "force2D";
59
    
60
    
61
    private DelegatedDynObject parameters;
62

  
63
    public DGNOpenStoreParameters() {
64
        this(PARAMETERS_DEFINITION_NAME);
65
    }
66

  
67
    protected DGNOpenStoreParameters(String parametersDefinitionName) {
68
        this(parametersDefinitionName, DGNStoreProvider.NAME);
69
    }
70

  
71
    public DGNOpenStoreParameters(String parametersDefinitionName, String name) {
72
        super();
73
        this.parameters = (DelegatedDynObject) FileHelper.newParameters(parametersDefinitionName);
74
        this.setDynValue(DataStoreProviderServices.PROVIDER_PARAMTER_NAME, name);
75
    }
76

  
77
    public String getDataStoreName() {
78
        return (String) this.getDynValue(DataStoreProviderServices.PROVIDER_PARAMTER_NAME);
79
    }
80

  
81
    public String getDescription() {
82
        return this.getDynClass().getDescription();
83
    }
84

  
85
    public void setCRS(IProjection srs) {
86
        setDynValue(FIELD_CRS, srs);
87
    }
88

  
89
    public void setCRS(String srs) {
90
        setDynValue(FIELD_CRS, srs);
91
    }
92

  
93
    public IProjection getCRS() {
94
        return (IProjection) getDynValue(FIELD_CRS);
95
    }
96

  
97
    public String getFileName() {
98
        return this.getFile().getPath();
99
    }
100

  
101
    public boolean isValid() {
102
        if (getCRS() == null) {
103
            return false;
104
        }
105
        if (getFile() == null) {
106
            return false;
107
        }
108
        return true;
109
    }
110

  
111
    public File getFile() {
112
        return (File) this.getDynValue(FIELD_FILE);
113
    }
114

  
115
    public File getXMLFile() {
116
        return (File) this.getDynValue(FIELD_XMLFILE);
117
    }
118

  
119
    public int getGeometryTypeFilter() {
120
        Integer x = (Integer) this.getDynValue(FIELD_GEOMTYPE_FILTER);
121
        if (x == null) {
122
            return Geometry.TYPES.GEOMETRY;
123
        }
124
        return x.intValue();
125
    }
126

  
127
    public int getLoadMode() {
128
        Integer x = (Integer) this.getDynValue(FIELD_LOAD_MODE);
129
        if (x == null) {
130
            return DGNStoreProvider.LOAD_MODE_PLAIN;
131
        }
132
        return x.intValue();
133
    }
134
    
135
    public int getGroupGeometriesOperation() {
136
        Integer x = (Integer) this.getDynValue(FIELD_GROUP_GEOMETRIES_OPERATION);
137
        if (x == null) {
138
            return DGNStoreProvider.GROUP_GEOMETRIES_NONE;
139
        }
140
        return x.intValue();
141
    }
142
    
143
    public double geElevationFactor() {
144
        Double x = (Double) this.getDynValue(FIELD_ELEVATION_FACTOR);
145
        if (x == null) {
146
            return 1;
147
        }
148
        return x.doubleValue();
149
    }
150
    
151
    public int getCropOperationFilter() {
152
        Integer x = (Integer) this.getDynValue(FIELD_CROPOPERATION_FILTER);
153
        if (x == null) {
154
            return DGNStoreProvider.CROP_OPERATION_NONE;
155
        }
156
        return x.intValue();
157
    }
158

  
159
    public Geometry getCropFilter() {
160
        Geometry x = (Geometry) this.getDynValue(FIELD_CROP_FILTER);
161
        return x;
162
    }
163

  
164
    public String getGroupBy() {
165
        return (String) this.getDynValue(FIELD_GROUPBY);
166
    }
167

  
168
    public String getLevelFilter() {
169
        return (String) this.getDynValue(FIELD_LEVEL_FILTER);
170
    }
171

  
172
    public String getGroupFilter() {
173
        return (String) this.getDynValue(FIELD_GROUP_FILTER);
174
    }
175

  
176
    public String getTextFilter() {
177
        return (String) this.getDynValue(FIELD_TEXT_FILTER);
178
    }
179

  
180
    public String getIDFilter() {
181
        return (String) this.getDynValue(FIELD_ID_FILTER);
182
    }
183

  
184
    public String getTypeFilter() {
185
        return (String) this.getDynValue(FIELD_TYPE_FILTER);
186
    }
187

  
188
    public String getSTypeFilter() {
189
        return (String) this.getDynValue(FIELD_STYPE_FILTER);
190
    }
191

  
192
    public String getColorFilter() {
193
        return (String) this.getDynValue(FIELD_COLOR_FILTER);
194
    }
195

  
196
    public String getStyleFilter() {
197
        return (String) this.getDynValue(FIELD_STYLE_FILTER);
198
    }
199

  
200
    public String getWeightFilter() {
201
        return (String) this.getDynValue(FIELD_WEIGHT_FILTER);
202
    }
203

  
204
    public boolean useReload() {
205
        Boolean x = (Boolean) this.getDynValue(FIELD_RELOAD);
206
        if (x == null) {
207
            return Boolean.FALSE;
208
        }
209
        return x.booleanValue();
210
    }
211

  
212
//    public boolean getApplyConvexHull() {
213
//        Boolean x = (Boolean) this.getDynValue(FIELD_APPLYCONVEXHULL);
214
//        if (x == null) {
215
//            return Boolean.FALSE;
216
//        }
217
//        return x.booleanValue();
218
//    }
219

  
220
    public boolean getApplyRoundToElevation() {
221
        Boolean x = (Boolean) this.getDynValue(FIELD_ROUND_ELEVATION);
222
        if (x == null) {
223
            return Boolean.FALSE;
224
        }
225
        return x.booleanValue();
226
    }
227

  
228
     public String getLinkFilterData() {
229
        return StringUtils.trimToNull((String) this.getDynValue(FIELD_LINK_FILTER_DATA));
230
    }
231

  
232
     public Pattern getLinkFilterDataAsPattern() {
233
        String s = getLinkFilterData();
234
        if( s == null ) {
235
            return null;
236
        }
237
        return Pattern.compile(s);
238
    }
239

  
240
    public Integer getLinkFilterIndex() {
241
        return (Integer) this.getDynValue(FIELD_LINK_FILTER_INDEX);
242
    }
243

  
244
    public Integer getLinkFilterType() {
245
        return (Integer) this.getDynValue(FIELD_LINK_FILTER_TYPE);
246
    }
247

  
248
    public Integer getLinkFilterEntity() {
249
        return (Integer) this.getDynValue(FIELD_LINK_FILTER_ENTITY);
250
    }
251

  
252
    public Integer getLinkFilterMS() {
253
        return (Integer) this.getDynValue(FIELD_LINK_FILTER_MS);
254
    }
255

  
256
    
257
    public boolean ignoreZs() {
258
        Boolean x = (Boolean) this.getDynValue(FIELD_IGNORE_Z);
259
        if (x == null) {
260
            return Boolean.FALSE;
261
        }
262
        return x.booleanValue();
263
    }
264

  
265
    public boolean logErrors() {
266
        Boolean x = (Boolean) this.getDynValue(FIELD_LOGS_ERRORS);
267
        if (x == null) {
268
            return Boolean.FALSE;
269
        }
270
        return x.booleanValue();
271
    }
272

  
273
    public boolean skipCorruptGeometries() {
274
        Boolean x = (Boolean) this.getDynValue(FIELD_SKYPCORRUPTGEOMETRIES_FILTER);
275
        if (x == null) {
276
            return Boolean.FALSE;
277
        }
278
        return x.booleanValue();
279
    }
280

  
281
    boolean useZAsElevation() {
282
        Boolean x = (Boolean) this.getDynValue(FIELD_USE_Z_AS_ELEVATION);
283
        if (x == null) {
284
            return Boolean.FALSE;
285
        }
286
        return x.booleanValue();
287
    }
288

  
289
    boolean force2D() {
290
        Boolean x = (Boolean) this.getDynValue(FIELD_FORZE2D);
291
        if (x == null) {
292
            return Boolean.FALSE;
293
        }
294
        return x.booleanValue();
295
    }
296

  
297
    public boolean sortByGeometryType() {
298
        Boolean x = (Boolean) this.getDynValue(FIELD_SORT_BY_GEOMETRY_TYPE);
299
        if (x == null) {
300
            return Boolean.TRUE;
301
        }
302
        return x.booleanValue();
303
    }
304

  
305
    public void setFile(File file) {
306
        this.setDynValue(FIELD_FILE, file);
307
    }
308

  
309
    public void setFile(String file) {
310
        this.setDynValue(FIELD_FILE, file);
311
    }
312

  
313
    public EditableFeatureType getDefaultFeatureType() {
314
        return null; //TODO ????
315
    }
316

  
317
    public void setDefaultFeatureType(FeatureType defaultFeatureType) {
318
        throw new UnsupportedOperationException();
319
    }
320

  
321
    protected DelegatedDynObject getDelegatedDynObject() {
322
        return parameters;
323
    }
324

  
325

  
326
}
org.gvsig.dgn/tags/org.gvsig.dgn-2.0.89/org.gvsig.dgn.provider/src/main/java/org/gvsig/fmap/dal/store/dgn/PostProcessFilterOperation.java
1
package org.gvsig.fmap.dal.store.dgn;
2

  
3
import java.util.regex.Pattern;
4
import org.apache.commons.lang3.StringUtils;
5
import org.gvsig.fmap.dal.feature.FeatureType;
6
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
7
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_CONTAINS;
8
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_COVEREDBY;
9
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_COVERS;
10
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_CROSSES;
11
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_DISJOINT;
12
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_INTERSECT;
13
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_NONE;
14
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_OVERLAPS;
15
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_TOUCHES;
16
import static org.gvsig.fmap.dal.store.dgn.DGNStoreProvider.CROP_OPERATION_WITHIN;
17
import org.gvsig.fmap.geom.Geometry;
18
import org.gvsig.fmap.geom.GeometryLocator;
19
import org.gvsig.fmap.geom.GeometryManager;
20
import org.gvsig.fmap.geom.primitive.Point;
21
import org.gvsig.fmap.geom.type.GeometryType;
22
import org.slf4j.Logger;
23
import org.slf4j.LoggerFactory;
24

  
25
public class PostProcessFilterOperation {
26

  
27
    private static final Logger logger = LoggerFactory.getLogger(PostProcessFilterOperation.class);
28
            
29
    private Pattern levelFilter = null;
30
    private Pattern colorFilter = null;
31
    private Pattern styleFilter = null;
32
    private Pattern weighFilter = null;
33
    private Pattern typeFilter = null;
34
    private Pattern stypeFilter = null;
35
    private Pattern idFilter = null;
36
    private Pattern groupFilter = null;
37
    private Pattern textFilter = null;
38
    private Point pointForCheckGeometries = null;
39
    private boolean hasfilter = false;
40
    private boolean skipCurruptGeometries = true;
41
    private int geometryTypeFilter = Geometry.TYPES.GEOMETRY;
42
    private int counter_exceptions = 0;
43
    private int cropOperationFilter;
44
    private Geometry cropFilter = null;
45
    private int ID_FIELD_LEVEL = -1;
46
    private int ID_FIELD_COLOR = -1;
47
    private int ID_FIELD_STYLE = -1;
48
    private int ID_FIELD_WEIGHT = -1;
49
    private int ID_FIELD_TYPE = -1;
50
    private int ID_FIELD_STYPE = -1;
51
    private int ID_FIELD_GROUP = -1;
52
    private int ID_FIELD_ID = -1;
53
    private int ID_FIELD_TEXT = -1;
54

  
55
    PostProcessFilterOperation(DGNOpenStoreParameters parameters, FeatureType featureType) {
56
        GeometryManager geomManager = GeometryLocator.getGeometryManager();
57

  
58
        geometryTypeFilter = parameters.getGeometryTypeFilter();
59
        skipCurruptGeometries = parameters.skipCorruptGeometries();
60
        if (!StringUtils.isBlank(parameters.getLevelFilter())) {
61
            this.levelFilter = Pattern.compile(parameters.getLevelFilter());
62
            this.ID_FIELD_LEVEL = featureType.getIndex(DGNStoreProvider.NAME_FIELD_LEVEL);
63
            this.hasfilter = true;
64
        }
65
        if (!StringUtils.isBlank(parameters.getColorFilter())) {
66
            colorFilter = Pattern.compile(parameters.getColorFilter());
67
            this.ID_FIELD_COLOR = featureType.getIndex(DGNStoreProvider.NAME_FIELD_COLOR);
68
            this.hasfilter = true;
69
        }
70
        if (!StringUtils.isBlank(parameters.getStyleFilter())) {
71
            styleFilter = Pattern.compile(parameters.getStyleFilter());
72
            this.ID_FIELD_STYLE = featureType.getIndex(DGNStoreProvider.NAME_FIELD_STYLE);
73
            this.hasfilter = true;
74
        }
75
        if (!StringUtils.isBlank(parameters.getTypeFilter())) {
76
            this.typeFilter = Pattern.compile(parameters.getTypeFilter());
77
            this.ID_FIELD_TYPE = featureType.getIndex(DGNStoreProvider.NAME_FIELD_TYPE);
78
            this.hasfilter = true;
79
        }
80
        if (!StringUtils.isBlank(parameters.getSTypeFilter())) {
81
            this.stypeFilter = Pattern.compile(parameters.getSTypeFilter());
82
            this.ID_FIELD_STYPE = featureType.getIndex(DGNStoreProvider.NAME_FIELD_STYPE);
83
            this.hasfilter = true;
84
        }
85
        if (!StringUtils.isBlank(parameters.getWeightFilter())) {
86
            weighFilter = Pattern.compile(parameters.getWeightFilter());
87
            this.ID_FIELD_WEIGHT = featureType.getIndex(DGNStoreProvider.NAME_FIELD_WEIGHT);
88
            this.hasfilter = true;
89
        }
90
        if (!StringUtils.isBlank(parameters.getGroupFilter())) {
91
            groupFilter = Pattern.compile(parameters.getGroupFilter());
92
            this.ID_FIELD_GROUP = featureType.getIndex(DGNStoreProvider.NAME_FIELD_GROUP);
93
            this.hasfilter = true;
94
        }
95
        if (!StringUtils.isBlank(parameters.getIDFilter())) {
96
            idFilter = Pattern.compile(parameters.getIDFilter());
97
            this.ID_FIELD_ID = featureType.getIndex(DGNStoreProvider.NAME_FIELD_ID);
98
            this.hasfilter = true;
99
        }
100
        if (!StringUtils.isBlank(parameters.getTextFilter())) {
101
            textFilter = Pattern.compile(parameters.getTextFilter());
102
            this.ID_FIELD_TEXT = featureType.getIndex(DGNStoreProvider.NAME_FIELD_TEXT);
103
            this.hasfilter = true;
104
        }
105
        if (this.geometryTypeFilter != Geometry.TYPES.GEOMETRY) {
106
            this.hasfilter = true;
107
        }
108
        this.cropFilter = parameters.getCropFilter();
109
        if (this.cropFilter != null) {
110
            this.hasfilter = true;
111
        }
112
        this.cropOperationFilter = parameters.getCropOperationFilter();
113
        if (this.cropOperationFilter == CROP_OPERATION_NONE) {
114
            this.cropFilter = null;
115
        }
116
        this.pointForCheckGeometries = null;
117
        if (skipCurruptGeometries) {
118
            try {
119
                int geomSubtype = featureType.getDefaultGeometryAttribute().getGeomType().getSubType();
120
                this.pointForCheckGeometries = geomManager.createPoint(1, 1, geomSubtype);
121
                if (geomSubtype == Geometry.SUBTYPES.GEOM3D) {
122
                    this.pointForCheckGeometries.setCoordinateAt(Geometry.DIMENSIONS.Z, 1);
123
                }
124
            } catch (Exception ex) {
125
                this.pointForCheckGeometries = null;
126
            }
127
        }
128
    }
129
    
130
    public boolean hasFilter() {
131
        return this.hasfilter;
132
    }
133

  
134
    private boolean match(Pattern exp, Object value) {
135
        if (value == null) {
136
            return false;
137
        }
138
        return exp.matcher(value.toString()).matches();
139
    }
140

  
141
    public boolean accept(FeatureProvider data) {
142

  
143
        if (!this.hasfilter) {
144
            return true;
145
        }
146

  
147
        Geometry geometry = data.getDefaultGeometry();
148
        if (this.pointForCheckGeometries != null) {
149
            if (geometry != null) {
150
                try {
151
                    this.pointForCheckGeometries.intersects(geometry);
152
                } catch (Exception ex) {
153
                    // Skip geometries with problems
154
                    data.setDefaultGeometry(null);
155
                    geometry = null;
156
                }
157
            }
158
        }
159

  
160
        try {
161
            if (levelFilter!=null && !match(levelFilter, data.get(ID_FIELD_LEVEL))) {
162
                return false;
163
            }
164
            if (colorFilter!=null && !match(colorFilter, data.get(ID_FIELD_COLOR))) {
165
                return false;
166
            }
167
            if (styleFilter!=null && !match(styleFilter, data.get(ID_FIELD_STYLE))) {
168
                return false;
169
            }
170
            if (weighFilter!=null && !match(weighFilter, data.get(ID_FIELD_WEIGHT))) {
171
                return false;
172
            }
173
            if (typeFilter!=null && !match(typeFilter, data.get(ID_FIELD_TYPE))) {
174
                return false;
175
            }
176
            if (stypeFilter!=null && !match(stypeFilter, data.get(ID_FIELD_STYPE))) {
177
                return false;
178
            }
179
            if (groupFilter!=null && !match(groupFilter, data.get(ID_FIELD_GROUP))) {
180
                return false;
181
            }
182
            if (idFilter!=null && !match(idFilter, data.get(ID_FIELD_ID))) {
183
                return false;
184
            }
185
            if (textFilter!=null && !match(textFilter, data.get(ID_FIELD_TEXT))) {
186
                return false;
187
            }
188

  
189
            if (geometry != null) {
190
                if (geometryTypeFilter != Geometry.TYPES.GEOMETRY) {
191
                    GeometryType geomtype = geometry.getGeometryType();
192
                    switch (geometryTypeFilter) {
193
                        case Geometry.TYPES.POINT:
194
                            if (!geomtype.isTypeOf(Geometry.TYPES.POINT)
195
                                    && !geomtype.isTypeOf(Geometry.TYPES.MULTIPOINT)) {
196
                                return false;
197
                            }
198
                            break;
199
                        case Geometry.TYPES.CURVE:
200
                            if (!geomtype.isTypeOf(Geometry.TYPES.CURVE)
201
                                    && !geomtype.isTypeOf(Geometry.TYPES.MULTICURVE)) {
202
                                return false;
203
                            }
204
                            break;
205
                        case Geometry.TYPES.SURFACE:
206
                            if (!geomtype.isTypeOf(Geometry.TYPES.SURFACE)
207
                                    && !geomtype.isTypeOf(Geometry.TYPES.MULTISURFACE)) {
208
                                return false;
209
                            }
210
                            break;
211
                        default:
212
                            break;
213
                    }
214
                }
215
                if (this.cropFilter != null) {
216
                    switch (this.cropOperationFilter) {
217
                        case CROP_OPERATION_CONTAINS:
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff