root / tags / v2_0_0_Build_2050 / libraries / org.gvsig.newlayer / org.gvsig.newlayer.prov / org.gvsig.newlayer.prov.generic / src / main / java / org / gvsig / newlayer / prov / generic / NewLayerGenericProvider.java @ 38695
History | View | Annotate | Download (7.76 KB)
1 | 36022 | fdiaz | /* 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.prov.generic; |
||
23 | |||
24 | import java.util.ArrayList; |
||
25 | 36220 | fdiaz | import java.util.Iterator; |
26 | 36022 | fdiaz | 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.DataServerExplorerParameters; |
||
31 | 38445 | cordinyana | import org.gvsig.fmap.dal.DataStoreParameters; |
32 | 36220 | fdiaz | import org.gvsig.fmap.dal.DataStoreProviderFactory; |
33 | 36721 | fdiaz | import org.gvsig.fmap.dal.exception.DataException; |
34 | 36022 | fdiaz | import org.gvsig.fmap.dal.exception.InitializeException; |
35 | import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException; |
||
36 | import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
||
37 | import org.gvsig.fmap.dal.feature.EditableFeatureType; |
||
38 | import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters; |
||
39 | import org.gvsig.newlayer.NewLayerProviderPanel; |
||
40 | import org.gvsig.newlayer.NewLayerService; |
||
41 | import org.gvsig.newlayer.prov.generic.panels.ExplorerParamsPanel; |
||
42 | import org.gvsig.newlayer.prov.generic.panels.SelectExplorerPanel; |
||
43 | import org.gvsig.newlayer.prov.generic.panels.SelectStoreTypePanel; |
||
44 | import org.gvsig.newlayer.prov.generic.panels.StoreParamsPanel; |
||
45 | import org.gvsig.newlayer.spi.AbstractNewLayerProvider; |
||
46 | 36113 | fdiaz | import org.gvsig.tools.exception.BaseRuntimeException; |
47 | 36022 | fdiaz | import org.slf4j.Logger; |
48 | import org.slf4j.LoggerFactory; |
||
49 | |||
50 | /**
|
||
51 | * NewLayer provider which create a NewLayer.
|
||
52 | *
|
||
53 | * @author gvSIG Team
|
||
54 | * @version $Id$
|
||
55 | */
|
||
56 | public class NewLayerGenericProvider extends AbstractNewLayerProvider { |
||
57 | |||
58 | List<NewLayerProviderPanel> panels = new ArrayList<NewLayerProviderPanel>(); |
||
59 | private String explorerName = null; |
||
60 | private DataServerExplorerParameters explorerParameters = null; |
||
61 | 36113 | fdiaz | private NewFeatureStoreParameters storeParameters = null; |
62 | 36220 | fdiaz | private EditableFeatureType featureType = null; |
63 | 36022 | fdiaz | |
64 | protected NewLayerGenericProvider(NewLayerService service) {
|
||
65 | super(service);
|
||
66 | panels.add(new SelectExplorerPanel(this)); |
||
67 | panels.add(new ExplorerParamsPanel(this)); |
||
68 | panels.add(new SelectStoreTypePanel(this)); |
||
69 | panels.add(new StoreParamsPanel(this)); |
||
70 | } |
||
71 | |||
72 | private static final Logger LOG = |
||
73 | LoggerFactory.getLogger(NewLayerGenericProvider.class); |
||
74 | |||
75 | public EditableFeatureType getFeatureType() {
|
||
76 | 36220 | fdiaz | // if (this.featureType!=null){
|
77 | // if (this.storeParameters != null){
|
||
78 | // if (this.storeParameters.getDataStoreName().equals(this.getStoreName())){
|
||
79 | // return this.featureType;
|
||
80 | // }
|
||
81 | // }
|
||
82 | // }
|
||
83 | // this.featureType = this.getNewStoreParameters().getDefaultFeatureType();
|
||
84 | // return this.featureType;
|
||
85 | return this.getNewStoreParameters().getDefaultFeatureType(); |
||
86 | 36022 | fdiaz | } |
87 | 36220 | fdiaz | |
88 | 36022 | fdiaz | public NewFeatureStoreParameters getNewStoreParameters() {
|
89 | 36113 | fdiaz | if (storeParameters != null){ |
90 | if (storeParameters.getDataStoreName().equals(this.getStoreName())){ |
||
91 | return storeParameters;
|
||
92 | } |
||
93 | } |
||
94 | 36022 | fdiaz | try {
|
95 | 36721 | fdiaz | storeParameters = (NewFeatureStoreParameters) getExplorer().getAddParameters(this.getStoreName());
|
96 | 36113 | fdiaz | return storeParameters;
|
97 | 36022 | fdiaz | } catch (InitializeException e) {
|
98 | LOG.error("Can't initialize store parameters.");
|
||
99 | 36113 | fdiaz | throw new CantInitializeStoreParametersException(e); |
100 | 36022 | fdiaz | } catch (ProviderNotRegisteredException e) {
|
101 | LOG.error("Can't create store parameters, provider not registered.");
|
||
102 | 36113 | fdiaz | throw new CantCreateStoreParametersException(e); |
103 | 36721 | fdiaz | } catch (DataException e) {
|
104 | LOG.error("Can't create store parameters, provider not registered.");
|
||
105 | throw new CantCreateStoreParametersException(e); |
||
106 | 36022 | fdiaz | } |
107 | } |
||
108 | 38445 | cordinyana | |
109 | public DataStoreParameters getOpenStoreParameters() {
|
||
110 | DataManager dataManager = DALLocator.getDataManager(); |
||
111 | try {
|
||
112 | DataStoreParameters storeParameters = (DataStoreParameters) dataManager |
||
113 | .createStoreParameters(this.getStoreName());
|
||
114 | return storeParameters;
|
||
115 | } catch (InitializeException e) {
|
||
116 | throw new CantInitializeStoreParametersException(e); |
||
117 | } catch (ProviderNotRegisteredException e) {
|
||
118 | throw new CantCreateStoreParametersException(e); |
||
119 | } |
||
120 | } |
||
121 | |||
122 | 36113 | fdiaz | class CantCreateStoreParametersException extends BaseRuntimeException { |
123 | /**
|
||
124 | *
|
||
125 | */
|
||
126 | private static final long serialVersionUID = -3487961532247258393L; |
||
127 | private final static String MESSAGE_FORMAT = "Can't create store parameters, provider not registered."; |
||
128 | private final static String MESSAGE_KEY = "_Cant_create_store_parameters_provider_not_registered"; |
||
129 | |||
130 | public CantCreateStoreParametersException(Throwable cause) { |
||
131 | super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
|
||
132 | } |
||
133 | } |
||
134 | |||
135 | class CantInitializeStoreParametersException extends BaseRuntimeException { |
||
136 | /**
|
||
137 | *
|
||
138 | */
|
||
139 | private static final long serialVersionUID = -5263149018209261288L; |
||
140 | private final static String MESSAGE_FORMAT = "Can't initialize store parameters."; |
||
141 | private final static String MESSAGE_KEY = "_Cant_initialize_store_parameters"; |
||
142 | |||
143 | public CantInitializeStoreParametersException(Throwable cause) { |
||
144 | super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
|
||
145 | } |
||
146 | } |
||
147 | |||
148 | |||
149 | 36022 | fdiaz | public List<NewLayerProviderPanel> getPanels() { |
150 | return panels;
|
||
151 | } |
||
152 | |||
153 | public List<String> getExplorerNames(){ |
||
154 | DataManager dataManager = DALLocator.getDataManager(); |
||
155 | return dataManager.getExplorerProviders();
|
||
156 | } |
||
157 | |||
158 | public List<String> getStoreNames(){ |
||
159 | DataManager dataManager = DALLocator.getDataManager(); |
||
160 | 36220 | fdiaz | List<String> writables = new ArrayList<String>(); |
161 | 36721 | fdiaz | if (getExplorer()!=null){ |
162 | List<String> storeProviders = getExplorer().getDataStoreProviderNames();// dataManager.getStoreProviders(); // |
||
163 | |||
164 | for (Iterator iterator = storeProviders.iterator(); iterator.hasNext();) { |
||
165 | String name = (String) iterator.next(); |
||
166 | DataStoreProviderFactory factory = dataManager.getStoreProviderFactory(name); |
||
167 | if (factory != null && factory.allowCreate()!=DataStoreProviderFactory.NO){ |
||
168 | writables.add(name); |
||
169 | } |
||
170 | 36220 | fdiaz | } |
171 | } |
||
172 | |||
173 | return writables;
|
||
174 | 36022 | fdiaz | } |
175 | |||
176 | public void setStoreName(String storeName) { |
||
177 | this.storeName = storeName;
|
||
178 | } |
||
179 | |||
180 | public String getExplorerName(){ |
||
181 | return this.explorerName; |
||
182 | } |
||
183 | |||
184 | public void setExplorerName(String explorerName) { |
||
185 | this.explorerName = explorerName;
|
||
186 | } |
||
187 | |||
188 | public DataServerExplorerParameters getExplorerParameters() throws InitializeException, ProviderNotRegisteredException{ |
||
189 | if (this.explorerParameters==null || !this.explorerParameters.getExplorerName().equalsIgnoreCase(this.getExplorerName())) { |
||
190 | if (this.explorerName == null) { |
||
191 | LOG.error("Can't create explorer parameters, unknow explorer name.");
|
||
192 | throw new RuntimeException("Can't create explorer parameters, unknow explorer name."); |
||
193 | } |
||
194 | DataManager manager = DALLocator.getDataManager(); |
||
195 | this.explorerParameters = manager.createServerExplorerParameters(this.getExplorerName()); |
||
196 | |||
197 | } |
||
198 | return this.explorerParameters; |
||
199 | } |
||
200 | |||
201 | public void createExplorer() { |
||
202 | DataManager manager = DALLocator.getDataManager(); |
||
203 | try {
|
||
204 | explorer = manager.openServerExplorer(getExplorerName(), getExplorerParameters()); |
||
205 | } catch (ValidateDataParametersException e) {
|
||
206 | // TODO Auto-generated catch block
|
||
207 | e.printStackTrace(); |
||
208 | } catch (InitializeException e) {
|
||
209 | // TODO Auto-generated catch block
|
||
210 | e.printStackTrace(); |
||
211 | } catch (ProviderNotRegisteredException e) {
|
||
212 | // TODO Auto-generated catch block
|
||
213 | e.printStackTrace(); |
||
214 | } |
||
215 | } |
||
216 | } |