Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / org.gvsig.newlayer / org.gvsig.newlayer.lib / org.gvsig.newlayer.lib.impl / src / main / java / org / gvsig / newlayer / impl / DefaultNewLayerService.java @ 36022

History | View | Annotate | Download (4.02 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.newlayer.impl;
23

    
24
import java.util.ArrayList;
25
import java.util.Iterator;
26
import java.util.List;
27

    
28
import org.gvsig.fmap.dal.DALLocator;
29
import org.gvsig.fmap.dal.DataManager;
30
import org.gvsig.fmap.dal.DataServerExplorer;
31
import org.gvsig.fmap.dal.NewDataStoreParameters;
32
import org.gvsig.fmap.dal.exception.DataException;
33
import org.gvsig.fmap.dal.feature.EditableFeatureType;
34
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
35
import org.gvsig.newlayer.NewLayerException;
36
import org.gvsig.newlayer.NewLayerManager;
37
import org.gvsig.newlayer.NewLayerProvider;
38
import org.gvsig.newlayer.NewLayerProviderFactory;
39
import org.gvsig.newlayer.NewLayerService;
40
import org.gvsig.newlayer.NewLayerServiceException;
41

    
42
/**
43
 * Default {@link NewLayerService} implementation.
44
 * 
45
 * @author gvSIG Team
46
 * @version $Id$
47
 */
48
public class DefaultNewLayerService implements NewLayerService {
49

    
50
    private NewLayerManager newLayerManager;
51
    private NewLayerProviderFactory type;
52
    private NewLayerProvider provider;
53

    
54
    /**
55
     * {@link DefaultNewLayerService} constructor 
56

57
     */
58
    public DefaultNewLayerService(NewLayerManager manager) { 
59
        this.newLayerManager = manager;
60
    }
61

    
62
    public NewLayerProvider getProvider(){
63
                return provider;
64
    }
65
    
66
        public void createLayer()
67
                        throws NewLayerServiceException {
68
                try {
69
                        this.getExplorer().add(this.getStoreName(), this.getNewStoreParameters(), true);
70
                } catch (DataException e) {
71
                        throw new CantCreateNewLayerException(e);
72
                }
73
                
74
        }
75
        
76
        public class CantCreateNewLayerException extends NewLayerServiceException {
77
                /**
78
                 * 
79
                 */
80
                private static final long serialVersionUID = 4208215791054246118L;
81

    
82
                public CantCreateNewLayerException(Throwable cause) {
83
                        super("Can't create the layer", cause, "_cant_create_the_layer", serialVersionUID);
84
                }
85
        }
86

    
87
        public void setType(String type) {
88
                List<NewLayerProviderFactory> providers = this.newLayerManager.getProviders(NewLayerManager.STORETYPE.ANY);
89
                Iterator<NewLayerProviderFactory> it = providers.iterator();
90
                while (it.hasNext()) {
91
                        NewLayerProviderFactory newLayerProviderFactory = it.next();
92
                        if (newLayerProviderFactory.getName().equalsIgnoreCase(type)){
93
                                this.type = newLayerProviderFactory;
94
                                this.provider = newLayerProviderFactory.create(this);
95
                                return;
96
                        }
97
                }
98
                throw new IllegalArgumentException(type);
99
        }
100

    
101
        public DataServerExplorer getExplorer() {
102
                return getProvider().getExplorer();
103
        }
104

    
105
        public String getStoreName() {
106
                return getProvider().getStoreName();
107
        }
108

    
109
        public EditableFeatureType getFeatureType() {
110
                return getProvider().getFeatureType();
111
        }
112

    
113
        public NewFeatureStoreParameters getNewStoreParameters() {
114
                return getProvider().getNewStoreParameters();
115
        }
116

    
117
        public List<String> getTypes() {
118
                List<String> types = new ArrayList<String>();
119
                List<NewLayerProviderFactory> providers = this.newLayerManager.getProviders(NewLayerManager.STORETYPE.ANY);
120
                Iterator<NewLayerProviderFactory> it = providers.iterator();
121
                while (it.hasNext()) {
122
                        NewLayerProviderFactory newLayerProviderFactory = it.next();
123
                        types.add(newLayerProviderFactory.getName());
124
                }
125
                return types;
126
        }
127

    
128
        public String getType() {
129
                return this.type.getName();
130
        }
131

    
132
}