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 | } |