Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.newlayer / org.gvsig.newlayer.prov / org.gvsig.newlayer.prov.generic / src / main / java / org / gvsig / newlayer / prov / generic / NewLayerGenericProvider.java @ 40560

History | View | Annotate | Download (7.8 KB)

1 40560 jjdelcerro
/**
2
 * gvSIG. Desktop Geographic Information System.
3 40435 jjdelcerro
 *
4 40560 jjdelcerro
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6 40435 jjdelcerro
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8 40560 jjdelcerro
 * as published by the Free Software Foundation; either version 3
9 40435 jjdelcerro
 * of the License, or (at your option) any later version.
10 40560 jjdelcerro
 *
11 40435 jjdelcerro
 * 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 40560 jjdelcerro
 *
16 40435 jjdelcerro
 * 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 40560 jjdelcerro
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 40435 jjdelcerro
 * MA  02110-1301, USA.
20 40560 jjdelcerro
 *
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 40435 jjdelcerro
 */
24
package org.gvsig.newlayer.prov.generic;
25
26
import java.util.ArrayList;
27
import java.util.Iterator;
28
import java.util.List;
29
30
import org.gvsig.fmap.dal.DALLocator;
31
import org.gvsig.fmap.dal.DataManager;
32
import org.gvsig.fmap.dal.DataServerExplorerParameters;
33
import org.gvsig.fmap.dal.DataStoreParameters;
34
import org.gvsig.fmap.dal.DataStoreProviderFactory;
35
import org.gvsig.fmap.dal.exception.DataException;
36
import org.gvsig.fmap.dal.exception.InitializeException;
37
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
38
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
39
import org.gvsig.fmap.dal.feature.EditableFeatureType;
40
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
41
import org.gvsig.newlayer.NewLayerProviderPanel;
42
import org.gvsig.newlayer.NewLayerService;
43
import org.gvsig.newlayer.prov.generic.panels.ExplorerParamsPanel;
44
import org.gvsig.newlayer.prov.generic.panels.SelectExplorerPanel;
45
import org.gvsig.newlayer.prov.generic.panels.SelectStoreTypePanel;
46
import org.gvsig.newlayer.prov.generic.panels.StoreParamsPanel;
47
import org.gvsig.newlayer.spi.AbstractNewLayerProvider;
48
import org.gvsig.tools.exception.BaseRuntimeException;
49
import org.slf4j.Logger;
50
import org.slf4j.LoggerFactory;
51
52
/**
53
 * NewLayer provider which create a NewLayer.
54
 *
55
 * @author gvSIG Team
56
 * @version $Id$
57
 */
58
public class NewLayerGenericProvider extends AbstractNewLayerProvider {
59
60
        List<NewLayerProviderPanel> panels = new ArrayList<NewLayerProviderPanel>();
61
        private String explorerName = null;
62
        private DataServerExplorerParameters explorerParameters = null;
63
        private NewFeatureStoreParameters storeParameters = null;
64
        private EditableFeatureType featureType = null;
65
66
    protected NewLayerGenericProvider(NewLayerService service) {
67
                super(service);
68
                panels.add(new SelectExplorerPanel(this));
69
                panels.add(new ExplorerParamsPanel(this));
70
                panels.add(new SelectStoreTypePanel(this));
71
                panels.add(new StoreParamsPanel(this));
72
        }
73
74
        private static final Logger LOG =
75
        LoggerFactory.getLogger(NewLayerGenericProvider.class);
76
77
        public EditableFeatureType getFeatureType() {
78
//                if (this.featureType!=null){
79
//                        if (this.storeParameters != null){
80
//                                if (this.storeParameters.getDataStoreName().equals(this.getStoreName())){
81
//                                        return this.featureType;
82
//                                }
83
//                        }
84
//                }
85
//                this.featureType = this.getNewStoreParameters().getDefaultFeatureType();
86
//                return this.featureType;
87
                return this.getNewStoreParameters().getDefaultFeatureType();
88
        }
89
90
        public NewFeatureStoreParameters getNewStoreParameters() {
91
                if (storeParameters != null){
92
                        if (storeParameters.getDataStoreName().equals(this.getStoreName())){
93
                                return storeParameters;
94
                        }
95
                }
96
                try {
97
                        storeParameters = (NewFeatureStoreParameters) getExplorer().getAddParameters(this.getStoreName());
98
                        return storeParameters;
99
                } catch (InitializeException e) {
100
                        LOG.error("Can't initialize store parameters.");
101
                        throw new CantInitializeStoreParametersException(e);
102
                } catch (ProviderNotRegisteredException e) {
103
                        LOG.error("Can't create store parameters, provider not registered.");
104
                        throw new CantCreateStoreParametersException(e);
105
                } catch (DataException e) {
106
                        LOG.error("Can't create store parameters, provider not registered.");
107
                        throw new CantCreateStoreParametersException(e);
108
                }
109
        }
110
111
        public DataStoreParameters getOpenStoreParameters() {
112
                DataManager dataManager = DALLocator.getDataManager();
113
                try {
114
                        DataStoreParameters storeParameters = (DataStoreParameters) dataManager
115
                                        .createStoreParameters(this.getStoreName());
116
                        return storeParameters;
117
                } catch (InitializeException e) {
118
                        throw new CantInitializeStoreParametersException(e);
119
                } catch (ProviderNotRegisteredException e) {
120
                        throw new CantCreateStoreParametersException(e);
121
                }
122
        }
123
124
        class CantCreateStoreParametersException extends BaseRuntimeException {
125
                /**
126
                 *
127
                 */
128
                private static final long serialVersionUID = -3487961532247258393L;
129
                private final static String MESSAGE_FORMAT = "Can't create store parameters, provider not registered.";
130
                private final static String MESSAGE_KEY = "_Cant_create_store_parameters_provider_not_registered";
131
132
                public CantCreateStoreParametersException(Throwable cause) {
133
                        super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
134
                }
135
        }
136
137
        class CantInitializeStoreParametersException extends BaseRuntimeException {
138
                /**
139
                 *
140
                 */
141
                private static final long serialVersionUID = -5263149018209261288L;
142
                private final static String MESSAGE_FORMAT = "Can't initialize store parameters.";
143
                private final static String MESSAGE_KEY = "_Cant_initialize_store_parameters";
144
145
                public CantInitializeStoreParametersException(Throwable cause) {
146
                        super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
147
                }
148
        }
149
150
151
        public List<NewLayerProviderPanel> getPanels() {
152
                return panels;
153
        }
154
155
        public List<String> getExplorerNames(){
156
                DataManager dataManager = DALLocator.getDataManager();
157
        return dataManager.getExplorerProviders();
158
        }
159
160
        public List<String> getStoreNames(){
161
                DataManager dataManager = DALLocator.getDataManager();
162
                List<String> writables = new ArrayList<String>();
163
                if (getExplorer()!=null){
164
                        List<String> storeProviders = getExplorer().getDataStoreProviderNames();// dataManager.getStoreProviders(); //
165
166
                        for (Iterator iterator = storeProviders.iterator(); iterator.hasNext();) {
167
                                String name = (String) iterator.next();
168
                                DataStoreProviderFactory factory = dataManager.getStoreProviderFactory(name);
169
                                if (factory != null && factory.allowCreate()!=DataStoreProviderFactory.NO){
170
                                        writables.add(name);
171
                                }
172
                        }
173
                }
174
175
        return writables;
176
        }
177
178
        public void setStoreName(String storeName) {
179
                this.storeName = storeName;
180
        }
181
182
        public String getExplorerName(){
183
                return this.explorerName;
184
        }
185
186
        public void setExplorerName(String explorerName) {
187
                this.explorerName = explorerName;
188
        }
189
190
        public DataServerExplorerParameters getExplorerParameters() throws InitializeException, ProviderNotRegisteredException{
191
                if (this.explorerParameters==null || !this.explorerParameters.getExplorerName().equalsIgnoreCase(this.getExplorerName())) {
192
                        if (this.explorerName == null) {
193
                                LOG.error("Can't create explorer parameters, unknow explorer name.");
194
                                throw new RuntimeException("Can't create explorer parameters, unknow explorer name.");
195
                        }
196
                        DataManager manager = DALLocator.getDataManager();
197
                        this.explorerParameters = manager.createServerExplorerParameters(this.getExplorerName());
198
199
                }
200
                return this.explorerParameters;
201
        }
202
203
        public void createExplorer() {
204
                DataManager manager = DALLocator.getDataManager();
205
                try {
206
                        explorer = manager.openServerExplorer(getExplorerName(), getExplorerParameters());
207
                } catch (ValidateDataParametersException e) {
208
                        // TODO Auto-generated catch block
209
                        e.printStackTrace();
210
                } catch (InitializeException e) {
211
                        // TODO Auto-generated catch block
212
                        e.printStackTrace();
213
                } catch (ProviderNotRegisteredException e) {
214
                        // TODO Auto-generated catch block
215
                        e.printStackTrace();
216
                }
217
        }
218
 }