Revision 47383

View differences:

tags/org.gvsig.desktop-2.0.425/license.txt
1
gvSIG. Desktop Geographic Information System.
2

  
3
Copyright (C) 2007-2023 gvSIG Association.
4

  
5
This program is free software; you can redistribute it and/or
6
modify it under the terms of the GNU General Public License
7
as published by the Free Software Foundation; either version 3
8
of the License, or (at your option) any later version.
9

  
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

  
15
 You should have received a copy of the GNU General Public License 
16
along with this program. If not, see <https://www.gnu.org/licenses/>. 
17

  
18
For any additional information, do not hesitate to contact us
19
at info AT gvsig.com, or visit our website www.gvsig.com.
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.temporarystorage.impl.TemporaryStorageImplLibrary
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.impl/src/main/java/org/gvsig/temporarystorage/impl/TemporaryStorageImplLibrary.java
1
package org.gvsig.temporarystorage.impl;
2

  
3

  
4
import org.gvsig.temporarystorage.TemporaryStorageLibrary;
5
import org.gvsig.temporarystorage.TemporaryStorageLocator;
6
import org.gvsig.tools.library.AbstractLibrary;
7
import org.gvsig.tools.library.LibraryException;
8

  
9
public class TemporaryStorageImplLibrary extends AbstractLibrary {
10

  
11
    @Override
12
    public void doRegistration() {
13
        registerAsImplementationOf(TemporaryStorageLibrary.class);
14
    }
15

  
16
    @Override
17
    protected void doInitialize() throws LibraryException {
18
        TemporaryStorageLocator.registerManager(DefaultTemporaryStorageManager.class);
19
    }
20

  
21
    @Override
22
    protected void doPostInitialize() throws LibraryException {
23

  
24
    }
25
}
26

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.impl/src/main/java/org/gvsig/temporarystorage/impl/DefaultTemporaryStorageManager.java
1
package org.gvsig.temporarystorage.impl;
2

  
3
import java.util.HashMap;
4
import java.util.Iterator;
5
import java.util.Map;
6
import org.gvsig.temporarystorage.TemporaryStorageGroup;
7
import org.gvsig.temporarystorage.TemporaryStorageManager;
8

  
9
public class DefaultTemporaryStorageManager implements TemporaryStorageManager {
10

  
11
    private final Map<String,TemporaryStorageGroup> groups; 
12
    
13
    public DefaultTemporaryStorageManager() {
14
        this.groups = new HashMap<>();
15
    }
16
    
17
    @Override
18
    public TemporaryStorageGroup get(String groupName) {
19
        return this.groups.get(groupName);
20
    }
21

  
22
    @Override
23
    public boolean contains(String groupName) {
24
        return this.groups.containsKey(groupName);
25
    }
26

  
27
    @Override
28
    public TemporaryStorageGroup create(String groupName) {
29
        return this.create(groupName, Object.class);
30
    }
31

  
32
    @Override
33
    public TemporaryStorageGroup create(String groupName, Class classOfElements) {
34
        TemporaryStorageGroup group = this.groups.get(groupName);
35
        if( group!=null ) {
36
            return group;
37
        }
38
        group = new DefaultTemporaryStorageGroup(groupName, classOfElements);
39
        this.groups.put(groupName, group);
40
        return group;
41
    }
42

  
43
    @Override
44
    public Iterator<TemporaryStorageGroup> iterator() {
45
        return this.groups.values().iterator();
46
    }
47

  
48
    @Override
49
    public boolean remove(String groupName) {
50
        return this.groups.remove(groupName)!=null;
51
    }
52

  
53
}
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.impl/src/main/java/org/gvsig/temporarystorage/impl/DefaultTemporaryStorageGroup.java
1
package org.gvsig.temporarystorage.impl;
2

  
3
import java.util.ArrayList;
4
import java.util.Collections;
5
import java.util.Comparator;
6
import java.util.List;
7
import org.apache.commons.lang3.StringUtils;
8
import org.apache.commons.lang3.tuple.MutablePair;
9
import org.apache.commons.lang3.tuple.Pair;
10
import org.gvsig.temporarystorage.TemporaryStorageGroup;
11

  
12
public class DefaultTemporaryStorageGroup implements TemporaryStorageGroup {
13

  
14
    private final String name;
15
    private final Class classOfElements;
16
    private final List<Pair<String, Object>> elements;
17
    
18
    public DefaultTemporaryStorageGroup(String name, Class classOfElements) {
19
        this.name = name;
20
        this.classOfElements = classOfElements;
21
        this.elements = new ArrayList<>();
22
    }
23
    
24
    @Override
25
    public String getName() {
26
       return this.name;
27
    }
28

  
29
    @Override
30
    public Class getClassOfElements() {
31
        return this.classOfElements;
32
    }
33
    
34
    private MutablePair<String, Object> getElement(String name) {
35
        if( StringUtils.isEmpty(name) ) {
36
            return null;
37
        }
38
        for (Pair<String, Object> element : this.elements) {
39
            if( name.equalsIgnoreCase(element.getKey()) ) {
40
                return (MutablePair<String, Object>) element;
41
            }
42
        }
43
        return null;
44
    }
45
    
46
    @Override
47
    public boolean contains(String name) {
48
        Pair<String, Object> element = this.getElement(name);
49
        return element!=null;
50
    }
51

  
52
    @Override
53
    public void put(String name, Object obj) {
54
        if( !this.classOfElements.isInstance(obj) ) {
55
            throw new IllegalArgumentException("The object can't be of class "+this.classOfElements.getName()+".");
56
        }
57
        MutablePair<String, Object> element = this.getElement(name);
58
        if( element == null ) {
59
            element = new MutablePair<>(name,obj);
60
            this.elements.add(element);
61
            this.elements.sort(new Comparator<Pair<String, Object>>() {
62
                @Override
63
                public int compare(Pair<String, Object> o1, Pair<String, Object> o2) {
64
                    return o1.compareTo(o2);
65
                }
66
            });
67
        } else {
68
            element.setValue(obj);
69
        }
70
    }
71

  
72
    @Override
73
    public Object get(String name) {
74
        Pair<String, Object> element = this.getElement(name);
75
        if( element == null ) {
76
            return null;
77
        }
78
        return element.getValue();
79
    }
80

  
81
    @Override
82
    public boolean remove(String name) {
83
        Pair<String, Object> element = this.getElement(name);
84
        if( element == null ) {
85
            return false;
86
        }
87
        return this.elements.remove(element);
88
    }
89

  
90
    @Override
91
    public List<Pair<String, Object>> asList() {
92
        return Collections.unmodifiableList(elements);
93
    }
94
    
95
}
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.impl/pom.xml
1
<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">
2
    <modelVersion>4.0.0</modelVersion>
3
    <artifactId>org.gvsig.temporarystorage.lib.impl</artifactId>
4
    <name>org.gvsig.temporarystorage.lib.impl</name>
5
    <parent>
6
        <groupId>org.gvsig</groupId>
7
        <artifactId>org.gvsig.temporarystorage.lib</artifactId>
8
        <version>2.0.425</version>
9
    </parent>
10
    <groupId>org.gvsig</groupId>
11
    <dependencies>
12
        <dependency>
13
            <groupId>org.gvsig</groupId>
14
            <artifactId>org.gvsig.temporarystorage.lib.api</artifactId>
15
            <scope>compile</scope>
16
        </dependency>
17
    </dependencies>
18
</project>
0 19

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.api/pom.xml
1
<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">
2
  <modelVersion>4.0.0</modelVersion>
3
  <groupId>org.gvsig</groupId>
4
  <artifactId>org.gvsig.temporarystorage.lib.api</artifactId>
5
  <name>org.gvsig.temporarystorage.lib.api</name>
6
  <parent>
7
    <groupId>org.gvsig</groupId>
8
    <artifactId>org.gvsig.temporarystorage.lib</artifactId>
9
    <version>2.0.425</version>
10
  </parent>
11

  
12
  <build>
13
    <plugins>
14
      <plugin>
15
        <groupId>org.apache.maven.plugins</groupId>
16
        <artifactId>maven-jar-plugin</artifactId>
17
        <configuration>
18
        </configuration>
19
        <executions>
20
          <!-- Generates a jar file only with the test classes -->
21
          <execution>
22
            <goals>
23
              <goal>test-jar</goal>
24
            </goals>
25
          </execution>
26
        </executions>
27
      </plugin>
28
    </plugins>
29
  </build>
30

  
31
  <dependencies>
32
    <dependency>
33
      <groupId>org.gvsig</groupId>
34
      <artifactId>org.gvsig.tools.lib</artifactId>
35
      <scope>compile</scope>
36
    </dependency>
37

  
38
  </dependencies>
39
</project>
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.temporarystorage.TemporaryStorageLibrary
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.api/src/main/java/org/gvsig/temporarystorage/TemporaryStorageGroup.java
1
package org.gvsig.temporarystorage;
2

  
3
import java.util.List;
4
import org.apache.commons.lang3.tuple.Pair;
5

  
6
public interface TemporaryStorageGroup  {
7

  
8
    public String getName();
9

  
10
    public Class getClassOfElements();
11

  
12
    public boolean contains(String name);
13

  
14
    public void put(String name, Object obj);
15

  
16
    /**
17
     * return the object or null if not exists
18
     * @param name
19
     * @return 
20
     */
21
    public Object get(String name);
22

  
23
    public boolean remove(String name);
24

  
25
    public List<Pair<String, Object>> asList();
26
}
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.api/src/main/java/org/gvsig/temporarystorage/TemporaryStorageLocator.java
1
package org.gvsig.temporarystorage;
2

  
3
import org.gvsig.tools.locator.AbstractLocator;
4
import org.gvsig.tools.locator.LocatorException;
5

  
6

  
7
public class TemporaryStorageLocator extends AbstractLocator {
8

  
9
    private static final String LOCATOR_NAME = "TemporaryStorageLocator";
10

  
11
    public static final String MANAGER_NAME = "TemporaryStorageManager";
12

  
13
    private static final String MANAGER_DESCRIPTION = "TemporaryStorage of gvSIG";
14

  
15
    /**
16
     * Unique instance.
17
     */
18
    private static final TemporaryStorageLocator instance = new TemporaryStorageLocator();
19

  
20
    /**
21
     * Return the singleton instance.
22
     *
23
     * @return the singleton instance
24
     */
25
    public static TemporaryStorageLocator getInstance() {
26
        return instance;
27
    }
28

  
29
    /**
30
     * Returns the Locator name.
31
     *
32
     * @return String containing the locator name.
33
     */
34
    @Override
35
    public String getLocatorName() {
36
        return LOCATOR_NAME;
37
    }
38

  
39
    public static TemporaryStorageManager getTemporaryStorageManager() throws LocatorException {
40
        return (TemporaryStorageManager) getInstance().get(MANAGER_NAME);
41
    }
42

  
43
    public static void registerManager(Class clazz) {
44
        getInstance().register(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
45
    }
46

  
47
    public static void registerDefaultManager(Class clazz) {
48
        getInstance().registerDefault(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
49
    }
50

  
51
}
0 52

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.api/src/main/java/org/gvsig/temporarystorage/TemporaryStorageLibrary.java
1
package org.gvsig.temporarystorage;
2

  
3
import org.gvsig.tools.ToolsLibrary;
4
import org.gvsig.tools.library.AbstractLibrary;
5
import org.gvsig.tools.library.LibraryException;
6

  
7
public class TemporaryStorageLibrary extends AbstractLibrary {
8

  
9
    @Override
10
    public void doRegistration() {
11
        registerAsAPI(TemporaryStorageLibrary.class);
12
        require(ToolsLibrary.class);
13
    }
14

  
15
    @Override
16
    protected void doInitialize() throws LibraryException {
17
    }
18

  
19
    @Override
20
    protected void doPostInitialize() throws LibraryException {
21

  
22
    }
23
}
24

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/org.gvsig.temporarystorage.lib.api/src/main/java/org/gvsig/temporarystorage/TemporaryStorageManager.java
1
package org.gvsig.temporarystorage;
2

  
3
import java.util.Iterator;
4

  
5
public interface TemporaryStorageManager extends Iterable<TemporaryStorageGroup> {
6

  
7
    /**
8
     * Si existe lo devuelbe, si no falla.
9
     * @param groupName
10
     * @return 
11
     */
12
    public TemporaryStorageGroup get(String groupName);
13

  
14
    public boolean contains(String groupName);
15

  
16
    /**
17
     * Si no existe crea el grupo y lo devuelbe, y si ya existe lo devuelbe sin
18
     * crear nada.
19
     * @param groupName
20
     * @return 
21
     */
22
    public TemporaryStorageGroup create(String groupName);
23

  
24
    public TemporaryStorageGroup create(String groupName, Class classOfElements);
25

  
26
    @Override
27
    public Iterator<TemporaryStorageGroup> iterator();
28

  
29
    /**
30
     *
31
     * @param groupName
32
     * @return
33
     */
34
    public boolean remove(String groupName);
35

  
36
}
0 37

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/org.gvsig.temporarystorage.lib/pom.xml
1
<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">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.temporarystorage</artifactId>
6
    <version>2.0.425</version>
7
  </parent>
8
  <groupId>org.gvsig</groupId>
9
  <artifactId>org.gvsig.temporarystorage.lib</artifactId>
10
  <packaging>pom</packaging>
11
  <modules>
12
    <module>org.gvsig.temporarystorage.lib.api</module>
13
    <module>org.gvsig.temporarystorage.lib.impl</module>
14
  </modules>
15
</project>
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.temporarystorage/pom.xml
1
<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">
2
  <modelVersion>4.0.0</modelVersion>
3
  <artifactId>org.gvsig.temporarystorage</artifactId>
4
  <packaging>pom</packaging>
5
  <description />
6
  <parent>
7
    <groupId>org.gvsig</groupId>
8
    <artifactId>org.gvsig.desktop.library</artifactId>
9
    <version>2.0.425</version>
10
  </parent>
11
  <modules>
12
    <module>org.gvsig.temporarystorage.lib</module>
13
  </modules>
14
</project>
0 15

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.main/src/main/java/org/gvsig/annotation/main/package.html
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!--
3

  
4
    gvSIG. Desktop Geographic Information System.
5

  
6
    Copyright (C) 2007-2013 gvSIG Association.
7

  
8
    This program is free software; you can redistribute it and/or
9
    modify it under the terms of the GNU General Public License
10
    as published by the Free Software Foundation; either version 3
11
    of the License, or (at your option) any later version.
12

  
13
    This program is distributed in the hope that it will be useful,
14
    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
    GNU General Public License for more details.
17

  
18
    You should have received a copy of the GNU General Public License
19
    along with this program; if not, write to the Free Software
20
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21
    MA  02110-1301, USA.
22

  
23
    For any additional information, do not hesitate to contact us
24
    at info AT gvsig.com, or visit our website www.gvsig.com.
25

  
26
-->
27
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
28
<html xmlns="http://www.w3.org/1999/xhtml">
29
<head>
30
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
31
<title>org.gvsig.annotation package documentation</title>
32
</head>
33
<body>
34

  
35
	<p>Annotation library testing and demo application.</p>
36

  
37
</body>
38
</html>
0 39

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.main/src/main/java/org/gvsig/annotation/main/Main.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.annotation.main;
25

  
26
import org.slf4j.Logger;
27
import org.slf4j.LoggerFactory;
28

  
29
import org.gvsig.annotation.AnnotationCreationService;
30
import org.gvsig.annotation.AnnotationLocator;
31
import org.gvsig.annotation.AnnotationManager;
32
import org.gvsig.annotation.swing.AnnotationSwingLocator;
33
import org.gvsig.annotation.swing.AnnotationSwingManager;
34
import org.gvsig.annotation.swing.AnnotationWindowManager;
35
import org.gvsig.annotation.swing.JAnnotationCreationServicePanel;
36
import org.gvsig.fmap.crs.CRSFactory;
37
import org.gvsig.fmap.dal.DALLocator;
38
import org.gvsig.fmap.dal.DataManager;
39
import org.gvsig.fmap.dal.DataStoreParameters;
40
import org.gvsig.fmap.dal.feature.FeatureStore;
41
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
42

  
43
/**
44
 * Main executable class for testing the Annotation library.
45
 * 
46
 * @author gvSIG Team
47
 * @version $Id$
48
 */
49
public class Main {
50

  
51
    private static final Logger LOG = LoggerFactory.getLogger(Main.class);
52

  
53
    private AnnotationManager annotationManager;
54
    private AnnotationSwingManager annotationSwingManager;
55
    private DataManager dataManager;
56

  
57
    public static void main(String args[]) throws Exception {
58
        new DefaultLibrariesInitializer().fullInitialize();
59
        Main main = new Main();
60
        main.show();
61
    }    
62
    
63
    @SuppressWarnings("serial")
64
    public void show() throws Exception {
65
        annotationManager = AnnotationLocator.getManager();
66
        annotationSwingManager = AnnotationSwingLocator.getSwingManager();
67
        dataManager = DALLocator.getDataManager();
68
        
69
        
70
        JAnnotationCreationServicePanel annotationCreationService = annotationSwingManager.createAnnotation(createService());
71
        annotationSwingManager.getWindowManager().showWindow(annotationCreationService, "Annotation App. example", AnnotationWindowManager.MODE_DIALOG);
72
    }   
73
    
74
    /**
75
     * Returns an instance of the {@link AnnotationCreationService}.
76
     * 
77
     * @return a {@link AnnotationCreationService} instance
78
     * @throws Exception
79
     *             if there is any error creating the instance
80
     */
81
    protected AnnotationCreationService createService() throws Exception {
82
    	String sourceFileName = getClass().getClassLoader().getResource("org/gvsig/annotation/data/andalucia.shp").getFile();
83
    	DataStoreParameters sourceParameters = dataManager.createStoreParameters("Shape");
84
     	sourceParameters.setDynValue("shpfile", sourceFileName);
85
     	sourceParameters.setDynValue("crs", CRSFactory.getCRS("EPSG:23030"));
86
     	FeatureStore sourceStore = (FeatureStore) dataManager.openStore("Shape", sourceParameters);
87
    	return annotationManager.getAnnotationCreationService(sourceStore);
88
    }
89

  
90
}
0 91

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.main/src/main/java/org/gvsig/annotation/main/PreferencesMain.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.annotation.main;
25

  
26
import org.slf4j.Logger;
27
import org.slf4j.LoggerFactory;
28

  
29
import org.gvsig.annotation.AnnotationCreationService;
30
import org.gvsig.annotation.AnnotationLocator;
31
import org.gvsig.annotation.AnnotationManager;
32
import org.gvsig.annotation.swing.AnnotationSwingLocator;
33
import org.gvsig.annotation.swing.AnnotationSwingManager;
34
import org.gvsig.annotation.swing.AnnotationWindowManager;
35
import org.gvsig.annotation.swing.JAnnotationPreferencesPanel;
36
import org.gvsig.fmap.crs.CRSFactory;
37
import org.gvsig.fmap.dal.DALLocator;
38
import org.gvsig.fmap.dal.DataManager;
39
import org.gvsig.fmap.dal.DataStoreParameters;
40
import org.gvsig.fmap.dal.feature.FeatureStore;
41
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
42

  
43
/**
44
 * Main executable class for testing the Annotation library.
45
 * 
46
 * @author gvSIG Team
47
 * @version $Id$
48
 */
49
public class PreferencesMain {
50

  
51
    private static final Logger LOG = LoggerFactory.getLogger(PreferencesMain.class);
52

  
53
    private AnnotationManager annotationManager;
54
    private AnnotationSwingManager annotationSwingManager;
55
    private DataManager dataManager;
56

  
57
    public static void main(String args[]) throws Exception {
58
        new DefaultLibrariesInitializer().fullInitialize();
59
        PreferencesMain main = new PreferencesMain();
60
        main.show();
61
    }    
62
    
63
    @SuppressWarnings("serial")
64
    public void show() throws Exception {
65
        annotationManager = AnnotationLocator.getManager();
66
        annotationSwingManager = AnnotationSwingLocator.getSwingManager();
67
        dataManager = DALLocator.getDataManager();
68
        
69
        
70
        JAnnotationPreferencesPanel annotationPreferencesPanel = annotationSwingManager.createAnnotationPreferences();
71
        annotationSwingManager.getWindowManager().showPreferencesWindow(annotationPreferencesPanel, "Annotation Preferences. example", AnnotationWindowManager.MODE_DIALOG);
72
    }   
73
    
74
    /**
75
     * Returns an instance of the {@link AnnotationCreationService}.
76
     * 
77
     * @return a {@link AnnotationCreationService} instance
78
     * @throws Exception
79
     *             if there is any error creating the instance
80
     */
81
    protected AnnotationCreationService createService() throws Exception {
82
    	String sourceFileName = getClass().getClassLoader().getResource("org/gvsig/annotation/data/andalucia.shp").getFile();
83
    	DataStoreParameters sourceParameters = dataManager.createStoreParameters("Shape");
84
     	sourceParameters.setDynValue("shpfile", sourceFileName);
85
     	sourceParameters.setDynValue("crs", CRSFactory.getCRS("EPSG:23030"));
86
     	FeatureStore sourceStore = (FeatureStore) dataManager.openStore("Shape", sourceParameters);
87
    	return annotationManager.getAnnotationCreationService(sourceStore);
88
    }
89

  
90
}
0 91

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.main/src/main/resources/README.txt
1
Put into this folder the resources needed by your classes.
2

  
3
This folder is added to the classpath, so you can load any resources 
4
through the ClassLoader.
5

  
6
By default, in this folder you can find an example of log4j configuration,
7
prepared to log messages through the console, so logging works when you
8
run your classes.
0 9

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.main/src/main/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!--
3

  
4
    gvSIG. Desktop Geographic Information System.
5

  
6
    Copyright (C) 2007-2013 gvSIG Association.
7

  
8
    This program is free software; you can redistribute it and/or
9
    modify it under the terms of the GNU General Public License
10
    as published by the Free Software Foundation; either version 3
11
    of the License, or (at your option) any later version.
12

  
13
    This program is distributed in the hope that it will be useful,
14
    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
    GNU General Public License for more details.
17

  
18
    You should have received a copy of the GNU General Public License
19
    along with this program; if not, write to the Free Software
20
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21
    MA  02110-1301, USA.
22

  
23
    For any additional information, do not hesitate to contact us
24
    at info AT gvsig.com, or visit our website www.gvsig.com.
25

  
26
-->
27
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
28

  
29
<!-- 
30
Log4J configuration file for unit tests execution.
31
 -->
32
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
33

  
34
	<!-- Appender configuration to show logging messages through the console -->
35
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
36
		<layout class="org.apache.log4j.PatternLayout">
37
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
38
		</layout>
39
	</appender>
40

  
41
	<!-- 
42
	Activate logging messages of DEBUG level of higher only for the
43
	org.gvsig.tools packages.
44
	You can put full classes names or packages instead, to configure
45
	logging for all the classes and subpackages of the package.
46
	-->
47
	<category name="org.gvsig.tools">
48
		<priority value="DEBUG" />
49
	</category>
50
	<category name="org.gvsig.annotation">
51
		<priority value="DEBUG" />
52
	</category>
53

  
54
	<!-- 
55
	By default, show only logging messages of INFO level or higher, 
56
	through the previously configured CONSOLE appender. 
57
	-->
58
	<root>
59
		<priority value="INFO" />
60
		<appender-ref ref="CONSOLE" />
61
	</root>
62
</log4j:configuration>
0 63

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.main/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
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/maven-v4_0_0.xsd">
3
  <modelVersion>4.0.0</modelVersion>
4
  <artifactId>org.gvsig.annotation.main</artifactId>
5
  <packaging>jar</packaging>
6
  <name>${project.artifactId}</name>
7
  <parent>
8
    <groupId>org.gvsig</groupId>
9
    <artifactId>org.gvsig.annotation</artifactId>
10
    <version>2.0.425</version>
11
  </parent>
12
  <dependencies>
13
    <dependency>
14
      <groupId>org.gvsig</groupId>
15
      <artifactId>org.gvsig.annotation.lib.api</artifactId>
16
      <scope>compile</scope>
17
    </dependency>
18
    <dependency>
19
      <groupId>org.gvsig</groupId>
20
      <artifactId>org.gvsig.annotation.swing.api</artifactId>
21
      <scope>compile</scope>
22
    </dependency>
23
    <dependency>
24
        <groupId>org.gvsig</groupId>
25
        <artifactId>org.gvsig.tools.lib</artifactId>
26
        <scope>compile</scope>
27
    </dependency>
28
    <dependency>
29
        <groupId>org.gvsig</groupId>
30
        <artifactId>org.gvsig.fmap.dal.api</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.metadata.lib.basic.api</artifactId>
41
        <scope>compile</scope>
42
    </dependency>
43
  </dependencies>
44
</project>
0 45

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.lib/org.gvsig.annotation.lib.impl/src/test/resources/README.txt
1
Put into this folder the resources needed by your test classes.
2

  
3
This folder is added to the Tests classpath, so you can load any resources 
4
through the ClassLoader.
5

  
6
By default, in this folder you can find an example of log4j configuration,
7
prepared to log messages through the console, so logging works when you
8
run your tests classes.
0 9

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.lib/org.gvsig.annotation.lib.impl/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!--
3

  
4
    gvSIG. Desktop Geographic Information System.
5

  
6
    Copyright (C) 2007-2013 gvSIG Association.
7

  
8
    This program is free software; you can redistribute it and/or
9
    modify it under the terms of the GNU General Public License
10
    as published by the Free Software Foundation; either version 3
11
    of the License, or (at your option) any later version.
12

  
13
    This program is distributed in the hope that it will be useful,
14
    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
    GNU General Public License for more details.
17

  
18
    You should have received a copy of the GNU General Public License
19
    along with this program; if not, write to the Free Software
20
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21
    MA  02110-1301, USA.
22

  
23
    For any additional information, do not hesitate to contact us
24
    at info AT gvsig.com, or visit our website www.gvsig.com.
25

  
26
-->
27
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
28

  
29
<!-- 
30
Log4J configuration file for unit tests execution.
31
 -->
32
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
33

  
34
	<!-- Appender configuration to show logging messages through the console -->
35
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
36
		<layout class="org.apache.log4j.PatternLayout">
37
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
38
		</layout>
39
	</appender>
40

  
41
	<!-- 
42
	Activate logging messages of DEBUG level of higher only for the
43
	org.gvsig.tools packages.
44
	You can put full classes names or packages instead, to configure
45
	logging for all the classes and subpackages of the package.
46
	-->
47
	<category name="org.gvsig.tools">
48
		<priority value="DEBUG" />
49
	</category>
50
	<category name="org.gvsig.annotation">
51
		<priority value="DEBUG" />
52
	</category>
53

  
54
	<!-- 
55
	By default, show only logging messages of INFO level or higher, 
56
	through the previously configured CONSOLE appender. 
57
	-->
58
	<root>
59
		<priority value="INFO" />
60
		<appender-ref ref="CONSOLE" />
61
	</root>
62
</log4j:configuration>
0 63

  
tags/org.gvsig.desktop-2.0.425/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.lib/org.gvsig.annotation.lib.impl/src/main/java/org/gvsig/annotation/impl/DefaultAnnotationCreationService.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.annotation.impl;
25

  
26
import java.io.File;
27
import java.io.FileOutputStream;
28
import java.io.IOException;
29
import java.io.InputStream;
30
import java.io.OutputStream;
31

  
32
import org.gvsig.annotation.AnnotationCreationException;
33
import org.gvsig.annotation.AnnotationCreationFinishAction;
34
import org.gvsig.annotation.AnnotationCreationService;
35
import org.gvsig.annotation.AnnotationDataTypes;
36
import org.gvsig.annotation.AnnotationManager;
37
import org.gvsig.annotation.calculator.AnnotationPositionCalculationException;
38
import org.gvsig.annotation.calculator.AnnotationPositionCalculator;
39
import org.gvsig.annotation.calculator.AnnotationPositionCalculatorCreationException;
40
import org.gvsig.fmap.dal.DALLocator;
41
import org.gvsig.fmap.dal.DataManager;
42
import org.gvsig.fmap.dal.DataTypes;
43
import org.gvsig.fmap.dal.exception.DataException;
44
import org.gvsig.fmap.dal.exception.InitializeException;
45
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
46
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
47
import org.gvsig.fmap.dal.feature.EditableFeature;
48
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
49
import org.gvsig.fmap.dal.feature.EditableFeatureType;
50
import org.gvsig.fmap.dal.feature.Feature;
51
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
52
import org.gvsig.fmap.dal.feature.FeatureSet;
53
import org.gvsig.fmap.dal.feature.FeatureStore;
54
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
55
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
56
import org.gvsig.fmap.geom.Geometry;
57
import org.gvsig.tools.ToolsLocator;
58
import org.gvsig.tools.dispose.DisposableIterator;
59
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
60
import org.gvsig.tools.task.AbstractMonitorableTask;
61
import org.gvsig.tools.task.SimpleTaskStatus;
62
import org.gvsig.tools.task.TaskStatusManager;
63

  
64
import org.apache.commons.lang3.StringUtils;
65
import org.slf4j.Logger;
66
import org.slf4j.LoggerFactory;
67

  
68

  
69
/**
70
 * Default {@link AnnotationCreationService} implementation.
71
 * 
72
 * @author gvSIG Team
73
 * @version $Id$
74
 */
75
public class DefaultAnnotationCreationService extends AbstractMonitorableTask implements AnnotationCreationService {
76
	private static final Logger LOG = LoggerFactory.getLogger(DefaultAnnotationCreationService.class);
77
	private static final String TEMPLATE_NAME = "template.gvslab";
78
	private static DataManager dataManager = DALLocator.getDataManager();
79

  
80
	private AnnotationManager manager;
81
	private FeatureStore sourceStore;
82

  
83
	private int sourceFontTypeAttribute = -1;
84
	private int sourceFontStyleAttribute = -1;
85
	private int sourceFontColorAttribute = -1;
86
	private int sourceRotationAttribute = -1;
87
	private int sourceHeigthAttribute = -1;
88
	private AnnotationPositionCalculator annotationPositionCalculator = null;
89

  
90
	private String destinationGeometryAttributeName = null;
91

  
92
	private AnnotationCreationFinishAction annotationCreationFinishAction = null; 
93

  
94
	/**
95
	 * {@link DefaultAnnotationCreationService} constructor with a
96
	 * {@link AnnotationManager}.
97
	 * 
98
	 * @param manager
99
	 *            to use in the service
100
	 * @throws DataException 
101
	 */
102
	public DefaultAnnotationCreationService(FeatureStore featureStore, AnnotationManager manager) throws DataException {
103
		super("annotation");
104
	    this.sourceStore = featureStore; 
105
		this.manager = manager;
106
		destinationGeometryAttributeName = featureStore.getDefaultFeatureType().getDefaultGeometryAttributeName();
107
	}
108

  
109
	public AnnotationManager getManager() {
110
		return this.manager;
111
	}
112

  
113
	public FeatureStore createAnnotationStore(String destinationShapeFile, int textValueAttribute)
114
	throws AnnotationCreationException {		
115
		try {
116
			if (destinationShapeFile == null){
117
				throw new AnnotationCreationException("File can not be null");
118
			}	
119

  
120
			String destinationShapeFileWithoutExtension = destinationShapeFile.toLowerCase().replaceAll("\\.shp", "");
121
			if (destinationShapeFileWithoutExtension.length() == destinationShapeFile.length()-4){
122
				destinationShapeFileWithoutExtension =  destinationShapeFile.substring(0, destinationShapeFile.length()-4);
123
			}else{
124
				destinationShapeFileWithoutExtension = destinationShapeFile;
125
			}			
126

  
127
			NewFeatureStoreParameters newFeatureStoreParameters = (NewFeatureStoreParameters)dataManager.createNewStoreParameters("FilesystemExplorer", "Shape");
128
			newFeatureStoreParameters.setDynValue("shpfile", destinationShapeFileWithoutExtension + ".shp");
129
			newFeatureStoreParameters.setDynValue("dbffile", destinationShapeFileWithoutExtension + ".dbf");
130
			newFeatureStoreParameters.setDynValue("shxfile", destinationShapeFileWithoutExtension + ".shx");
131
			newFeatureStoreParameters.setDynValue("crs", sourceStore.getDefaultFeatureType().getDefaultSRS());
132

  
133
			EditableFeatureType editableFeatureType = sourceStore.getDefaultFeatureType().getEditable();//newFeatureStoreParameters.getDefaultFeatureType().getEditable();
134
			FeatureAttributeDescriptor[] featureAttributeDescriptors = editableFeatureType.getAttributeDescriptors();
135
			for (int i=featureAttributeDescriptors.length-1  ; i>=0 ; i--){
136
				editableFeatureType.remove(i);
137
			}
138
			initializeFeatureType(editableFeatureType);
139
			newFeatureStoreParameters.setDefaultFeatureType(editableFeatureType);
140

  
141
			dataManager.newStore("FilesystemExplorer", "Shape", newFeatureStoreParameters, true);
142

  
143
			//If there is not an annotationPositionCalculator it gets the default 
144
			if (annotationPositionCalculator == null){
145
				annotationPositionCalculator = manager.getDefaultAnnotationPositionCalculator();
146
			}	
147

  
148
			FeatureStore destinationStore = (FeatureStore) dataManager.openStore("Shape", newFeatureStoreParameters);
149

  
150
			copyFeatureStore(sourceStore, 
151
					destinationStore,
152
					textValueAttribute);	
153

  
154
			try {
155
				copyLegend(destinationStore);
156
			} catch (IOException e) {
157
				LOG.error("Error copying the legend");
158
			}
159

  
160
			if (annotationCreationFinishAction != null){
161
				annotationCreationFinishAction.finished(destinationStore);
162
			}
163

  
164
			return destinationStore;
165
		} catch (InitializeException e) {
166
			throw new AnnotationCreationException(e);
167
		} catch (ProviderNotRegisteredException e) {
168
			throw new AnnotationCreationException(e);
169
		} catch (ValidateDataParametersException e) {
170
			throw new AnnotationCreationException(e);
171
		} catch (DynFieldNotFoundException e) {
172
			throw new AnnotationCreationException(e);
173
		} catch (DataException e) {
174
			throw new AnnotationCreationException(e);
175
		} catch (AnnotationPositionCalculatorCreationException e) {
176
			throw new AnnotationCreationException(e);
177
		} 			
178
	}	
179

  
180
	public FeatureStore createAnnotationStore(String destinationShapeFile,
181
			String textValueAttributeName) throws AnnotationCreationException {
182
		try {
183
			return createAnnotationStore(destinationShapeFile, getIndex(textValueAttributeName));
184
		} catch (DataException e) {
185
			throw new AnnotationCreationException(e);
186
		}			
187
	}
188

  
189
	private void initializeFeatureType(EditableFeatureType editableFeatureType) throws DataException
190
	{		
191
		EditableFeatureAttributeDescriptor geometryType = editableFeatureType.add(destinationGeometryAttributeName, DataTypes.GEOMETRY);
192
		geometryType.setAllowNull(false);		
193
		geometryType.setGeometryType(Geometry.TYPES.POINT).setGeometrySubType(Geometry.SUBTYPES.GEOM2D);
194
		geometryType.setSRS(sourceStore.getDefaultFeatureType().getDefaultSRS());
195
		geometryType.setObjectClass(Geometry.class);
196
		editableFeatureType.setDefaultGeometryAttributeName(destinationGeometryAttributeName);
197

  
198
		editableFeatureType.add(AnnotationManager.TEXTVALUE_ATTRIBUTE_NAME, AnnotationDataTypes.TEXT, 256).setAllowNull(true);
199
		editableFeatureType.add(AnnotationManager.FONTTYPE_ATTRIBUTE_NAME, AnnotationDataTypes.FONTTYPE, 30).setAllowNull(true);
200
		editableFeatureType.add(AnnotationManager.FONTSTYLE_ATTRIBUTE_NAME, AnnotationDataTypes.FONTSTYLE, 30).setAllowNull(true);
201
		editableFeatureType.add(AnnotationManager.FONTCOLOR_ATTRIBUTE_NAME, AnnotationDataTypes.FONTCOLOR, 20).setAllowNull(true);
202
		editableFeatureType.add(AnnotationManager.FONTROTATION_ATTRIBUTE_NAME, AnnotationDataTypes.FONTROTATION, 5).setAllowNull(true);
203
		editableFeatureType.add(AnnotationManager.FONTHEGTH_ATTRIBUTE_NAME, AnnotationDataTypes.FONTHEIGHT, 5).setAllowNull(true);
204
	}
205

  
206
	private AttributeInserter createInserter(int attributePosition, Object defaultValue)
207
	{
208
		if (attributePosition > -1){
209
			return new StoreAttributeInserter(attributePosition);
210
		}else{
211
			return new DefaultAttributeInserter(defaultValue);
212
		}
213
	}
214

  
215
	private void copyFeatureStore(FeatureStore sourceStore,
216
			FeatureStore destinationStore, int textAttribute)
217
	throws AnnotationCreationException, DataException {		
218
		FeatureSet featureSet = null;
219
		DisposableIterator iterator = null;
220
		
221
		try{
222
			//Start the edition
223
			destinationStore.edit();
224

  
225
			//Copy data
226
			featureSet = sourceStore.getFeatureSet();
227
			iterator = featureSet.fastIterator();
228
			
229
			
230
			taskStatus.setRangeOfValues(0, featureSet.getSize());
231
	
232
			//Create the attribute inserter's
233
			AttributeInserter fontTypeAttributeInserter = createInserter(sourceFontTypeAttribute, manager.getDefaultFontType());		
234
			AttributeInserter fontStyleAttributeInserter = createInserter(sourceFontStyleAttribute, manager.getDefaultFontStyle());		
235
			AttributeInserter fontColorAttributeInserter = createInserter(sourceFontColorAttribute, manager.getDefaultFontColor());		
236
			AttributeInserter fontRotationAttributeInserter = createInserter(sourceRotationAttribute, manager.getDefaultFontRotation());		
237
			AttributeInserter fontHeigthAttributeInserter = createInserter(sourceHeigthAttribute, manager.getDefaultFontHeight());		
238
	
239
			Feature sourceFeature;
240
			long featureCount = 0;
241
			while (iterator.hasNext()) {			
242
				sourceFeature = (Feature) iterator.next();
243
	
244
				EditableFeature destinationFeature = destinationStore.createNewFeature().getEditable();
245
				try {
246
					destinationFeature.set(destinationGeometryAttributeName, annotationPositionCalculator.getAnnotationPosition(sourceFeature));
247
				} catch (AnnotationPositionCalculationException e) {
248
					LOG.error("Not possible to get the point for the geometry", e);				
249
				}
250
		        String s = (String) sourceFeature.get(textAttribute);
251
                if (StringUtils.isEmpty(s)) {
252
                    s = this.getManager().getDefaultTextValue();
253
                }
254
				destinationFeature.set(AnnotationManager.TEXTVALUE_ATTRIBUTE_NAME, s);
255
				destinationFeature.set(AnnotationManager.FONTTYPE_ATTRIBUTE_NAME, fontTypeAttributeInserter.getValue(sourceFeature));
256
				destinationFeature.set(AnnotationManager.FONTSTYLE_ATTRIBUTE_NAME, fontStyleAttributeInserter.getValue(sourceFeature));
257
				destinationFeature.set(AnnotationManager.FONTCOLOR_ATTRIBUTE_NAME, fontColorAttributeInserter.getValue(sourceFeature));
258
				destinationFeature.set(AnnotationManager.FONTROTATION_ATTRIBUTE_NAME, fontRotationAttributeInserter.getValue(sourceFeature));
259
				destinationFeature.set(AnnotationManager.FONTHEGTH_ATTRIBUTE_NAME, fontHeigthAttributeInserter.getValue(sourceFeature));
260
	
261
				destinationStore.insert(destinationFeature);
262
	    		featureCount++;  
263
	    		this.taskStatus.setCurValue(featureCount);
264
	    
265
	            if (this.taskStatus.isCancellationRequested()) {
266
	            	destinationStore.cancelEditing();
267
	            	this.taskStatus.cancel();
268
	                return;
269
	            }
270
			}
271
		}finally{
272

  
273
			//Finish the edition
274
			if(destinationStore.isEditing()){
275
				destinationStore.finishEditing();
276
			}
277
	
278
			//Dispose resources
279
			if(iterator != null){
280
				iterator.dispose();	
281
			}
282
			if(featureSet != null){
283
				featureSet.dispose();
284
			}
285
			
286
			if(this.taskStatus.isRunning()){
287
				this.taskStatus.terminate();
288
			}
289
	        //this.taskStatus.remove();
290
		}
291
	}
292

  
293
	private void copyLegend(FeatureStore destinationStore) throws ValidateDataParametersException, DataException, IOException {
294
		FilesystemServerExplorer filesystemServerExplorer = (FilesystemServerExplorer)destinationStore.getExplorer();
295
		File target = filesystemServerExplorer.getResourcePath(destinationStore, "gvslab");
296

  
297
		//Copy the template
298
		InputStream in = getClass().getClassLoader().getResourceAsStream(TEMPLATE_NAME);
299
		OutputStream out = null;
300

  
301
		out = new FileOutputStream(target);
302

  
303
		byte[] buf = new byte[1024];
304
		int len;
305
		while ((len = in.read(buf)) > 0) { 
306
			out.write(buf, 0, len); 
307
		} 
308
		in.close();
309
		out.close(); 		
310
	}
311

  
312
	private void checkAttribute(int index, int[] type) throws DataException{
313
		if (index >= sourceStore.getDefaultFeatureType().size()){
314
			throw new IllegalArgumentException("Attribute not found");
315
		}
316
		int datatype = sourceStore.getDefaultFeatureType().getAttributeDescriptor(index).getDataType().getType();
317
		
318
		boolean validType = false;
319
		if(type != null) {
320
			for (int i = 0; i < type.length; i++) {
321
				if(datatype == type[i]) {
322
					validType = true;
323
				}
324
			}
325
		}
326
		
327
		if (!validType) {
328
			throw new IllegalArgumentException("The Attribute has not have the fine type");
329
		}
330
	}
331

  
332

  
333
	public void setFontTypeAttribute(int index) throws DataException {
334
		checkAttribute(index, new int[]{AnnotationDataTypes.FONTTYPE});
335
		this.sourceFontTypeAttribute = index;		
336
	}
337

  
338
	public void setFontStyleAttribute(int index) throws DataException {
339
		checkAttribute(index, new int[]{AnnotationDataTypes.FONTSTYLE});
340
		this.sourceFontStyleAttribute = index;		
341
	}
342

  
343
	public void setFontColorAttribute(int index) throws DataException {
344
		checkAttribute(index, new int[]{AnnotationDataTypes.FONTCOLOR});
345
		this.sourceFontColorAttribute = index;		
346
	}
347

  
348
	public void setFontHeigthAttribute(int index) throws DataException {
349
		checkAttribute(index, new int[]{AnnotationDataTypes.FONTHEIGHT, DataTypes.INT, DataTypes.LONG, DataTypes.FLOAT});
350
		this.sourceHeigthAttribute = index;		
351
	}
352

  
353
	public void setFontRotationAttribute(int index) throws DataException {
354
		checkAttribute(index, new int[]{AnnotationDataTypes.FONTROTATION});
355
		this.sourceRotationAttribute = index;		
356
	}
357

  
358
	public void setAnnotationPositionCalculator(
359
			AnnotationPositionCalculator annotationPositionCalculator) {		
360
		this.annotationPositionCalculator = annotationPositionCalculator;		
361
	}
362

  
363
	public int getIndex(String attributeName) throws DataException{
364
		FeatureAttributeDescriptor featureAttributeDescriptor = sourceStore.getDefaultFeatureType().getAttributeDescriptor(attributeName);
365
		if (featureAttributeDescriptor != null){
366
			return featureAttributeDescriptor.getIndex();
367
		}
368
		return -1;
369
	}
370

  
371
	public void setFontColorAttribute(String attributeName) throws DataException {
372
		setFontColorAttribute(getIndex(attributeName));		
373
	}
374

  
375
	public void setFontHeigthAttribute(String attributeName) throws DataException {
376
		setFontHeigthAttribute(getIndex(attributeName));				
377
	}
378

  
379
	public void setFontRotationAttribute(String attributeName) throws DataException {
380
		setFontRotationAttribute(getIndex(attributeName));				
381
	}
382

  
383
	public void setFontStyleAttribute(String attributeName) throws DataException {
384
		setFontStyleAttribute(getIndex(attributeName));				
385
	}
386

  
387
	public void setFontTypeAttribute(String attributeName) throws DataException {
388
		setFontTypeAttribute(getIndex(attributeName));				
389
	}
390

  
391

  
392
	public FeatureStore getFeatureStore() {
393
		return sourceStore;
394
	}
395

  
396
	private interface AttributeInserter{
397
		public Object getValue(Feature feature);
398
	}
399

  
400

  
401
	private class StoreAttributeInserter implements AttributeInserter{
402
		private int attributePosition = -1;
403

  
404
		public StoreAttributeInserter(int attributePosition) {
405
			super();
406
			this.attributePosition = attributePosition;			
407
		}
408

  
409
		public Object getValue(Feature feature){
410
			return feature.get(attributePosition);
411
		}
412
	}
413

  
414
	private class DefaultAttributeInserter implements AttributeInserter{
415
		private Object defaultValue = null;
416

  
417
		public DefaultAttributeInserter(Object defaultValue) {
418
			super();	
419
			this.defaultValue = defaultValue;
420
		}
421

  
422
		public Object getValue(Feature feature){
423
			return defaultValue;
424
		}
425
	}
426

  
427
	public AnnotationCreationFinishAction getAnnotationCreationFinishAction() {
428
		return annotationCreationFinishAction;
429
	}
430

  
431

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff