gvsig-raster / org.gvsig.raster.multifile / trunk / org.gvsig.raster.multifile / org.gvsig.raster.multifile.io / src / main / java / org / gvsig / raster / multifile / io / MultiFileDataParametersImpl.java @ 4181
History | View | Annotate | Download (7.18 KB)
1 | 2458 | nbrodin | /* 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 | |||
23 | /*
|
||
24 | * AUTHORS (In addition to CIT):
|
||
25 | * 2009 IVER T.I {{Task}}
|
||
26 | */
|
||
27 | |||
28 | package org.gvsig.raster.multifile.io; |
||
29 | |||
30 | 4181 | fdiaz | import java.net.URI; |
31 | 2458 | nbrodin | import java.util.ArrayList; |
32 | import java.util.List; |
||
33 | |||
34 | import org.gvsig.fmap.dal.DALLocator; |
||
35 | import org.gvsig.fmap.dal.coverage.store.RasterDataStore; |
||
36 | import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters; |
||
37 | import org.gvsig.fmap.dal.exception.InitializeException; |
||
38 | import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException; |
||
39 | import org.gvsig.fmap.dal.spi.DataManagerProviderServices; |
||
40 | import org.gvsig.fmap.dal.spi.DataStoreProvider; |
||
41 | import org.gvsig.raster.impl.provider.AbstractRasterProvider; |
||
42 | import org.gvsig.raster.impl.provider.RasterProvider; |
||
43 | import org.gvsig.raster.impl.store.AbstractRasterDataParameters; |
||
44 | import org.gvsig.raster.impl.store.AbstractRasterFileDataParameters; |
||
45 | import org.gvsig.raster.impl.store.DefaultRasterStore; |
||
46 | import org.gvsig.tools.ToolsLocator; |
||
47 | import org.gvsig.tools.dynobject.DelegatedDynObject; |
||
48 | import org.gvsig.tools.dynobject.DynStruct; |
||
49 | import org.gvsig.tools.persistence.PersistenceManager; |
||
50 | import org.gvsig.tools.persistence.PersistentState; |
||
51 | import org.gvsig.tools.persistence.exception.PersistenceException; |
||
52 | |||
53 | /**
|
||
54 | * Parameters for the Multifile provider
|
||
55 | * @author Nacho Brodin (nachobrodin@gmail.com)
|
||
56 | */
|
||
57 | public class MultiFileDataParametersImpl extends AbstractRasterFileDataParameters implements MultiFileDataParameters { |
||
58 | private List<RasterProvider> providerList = null; |
||
59 | 4181 | fdiaz | |
60 | 2458 | nbrodin | public MultiFileDataParametersImpl() {
|
61 | super();
|
||
62 | providerList = new ArrayList<RasterProvider>(); |
||
63 | initialize(); |
||
64 | } |
||
65 | 4181 | fdiaz | |
66 | 2458 | nbrodin | protected void initialize() { |
67 | delegatedDynObject = (DelegatedDynObject) ToolsLocator |
||
68 | .getDynObjectManager().createDynObject( |
||
69 | registerDynClass()); |
||
70 | } |
||
71 | 4181 | fdiaz | |
72 | 2458 | nbrodin | @SuppressWarnings("unchecked") |
73 | public void loadFromState(PersistentState state) |
||
74 | throws PersistenceException {
|
||
75 | super.loadFromState(state);
|
||
76 | DataManagerProviderServices dataManager = (DataManagerProviderServices)DALLocator.getDataManager(); |
||
77 | 4181 | fdiaz | |
78 | 2458 | nbrodin | List<RasterDataParameters> parameters = state.getList("parameters"); |
79 | for (int i = 0; i < parameters.size(); i++) { |
||
80 | try {
|
||
81 | DefaultRasterStore dSet = new DefaultRasterStore();
|
||
82 | AbstractRasterProvider provider = (AbstractRasterProvider)dataManager.createProvider(dSet, parameters.get(i)); |
||
83 | addProvider(provider); |
||
84 | } catch (InitializeException e) {
|
||
85 | throw new PersistenceException(e); |
||
86 | } catch (ProviderNotRegisteredException e) {
|
||
87 | throw new PersistenceException(e); |
||
88 | } |
||
89 | } |
||
90 | } |
||
91 | |||
92 | public void saveToState(PersistentState state) throws PersistenceException { |
||
93 | super.saveToState(state);
|
||
94 | List<RasterProvider> provList = getProviders();
|
||
95 | 4181 | fdiaz | List<RasterDataParameters> rasterDataParametersList = new ArrayList<RasterDataParameters>(); |
96 | 2458 | nbrodin | for (int j = 0; j < provList.size(); j++) { |
97 | 4181 | fdiaz | rasterDataParametersList.add(provList.get(j).getDataParameters()); |
98 | 2458 | nbrodin | } |
99 | 4181 | fdiaz | |
100 | state.set("parameters", rasterDataParametersList);
|
||
101 | } |
||
102 | |||
103 | 2458 | nbrodin | public static DynStruct registerDynClass() { |
104 | PersistenceManager manager = ToolsLocator.getPersistenceManager(); |
||
105 | DynStruct definition = manager.getDefinition("MultiFileDataParameters_Persistent");
|
||
106 | if( definition == null ) { |
||
107 | definition = manager.addDefinition( |
||
108 | MultiFileDataParametersImpl.class, |
||
109 | "MultiFileDataParameters_Persistent",
|
||
110 | "MultiFileDataParameters Persistent",
|
||
111 | 4181 | fdiaz | null,
|
112 | 2458 | nbrodin | null
|
113 | ); |
||
114 | AbstractRasterDataParameters.registerDynClass(definition); |
||
115 | } |
||
116 | 4181 | fdiaz | |
117 | 2458 | nbrodin | definition.addDynFieldList("parameters")
|
118 | .setClassOfItems(RasterDataParameters.class) |
||
119 | .setMandatory(false);
|
||
120 | 4181 | fdiaz | |
121 | 2458 | nbrodin | return definition;
|
122 | } |
||
123 | 4181 | fdiaz | |
124 | 2458 | nbrodin | public void removeAllProviders() { |
125 | getProviders().clear(); |
||
126 | getParams().clear(); |
||
127 | } |
||
128 | 4181 | fdiaz | |
129 | 2458 | nbrodin | public boolean hasProviders() { |
130 | return getProviders().size() > 0; |
||
131 | } |
||
132 | 4181 | fdiaz | |
133 | public void removeProvider(URI uri) { |
||
134 | 2458 | nbrodin | if(getProviders() != null) { |
135 | List<RasterProvider> provList = getProviders();
|
||
136 | List<RasterDataParameters> paramList = getParams();
|
||
137 | for (int i = 0; i < provList.size(); i++) { |
||
138 | RasterProvider rProv = provList.get(i); |
||
139 | if(rProv.getURIOfFirstProvider().compareTo(uri) == 0) { |
||
140 | provList.remove(i); |
||
141 | paramList.remove(i); |
||
142 | return;
|
||
143 | } |
||
144 | } |
||
145 | } |
||
146 | } |
||
147 | 4181 | fdiaz | |
148 | 2458 | nbrodin | public void addProviderNotTiled(DataStoreProvider provider) { |
149 | if(provider instanceof RasterProvider) { |
||
150 | RasterProvider prov = (RasterProvider)provider; |
||
151 | if(!prov.isTiled()) {
|
||
152 | addToList(prov); |
||
153 | } |
||
154 | } |
||
155 | } |
||
156 | 4181 | fdiaz | |
157 | 2458 | nbrodin | public void setFirstProvider(DataStoreProvider provider) { |
158 | if(provider instanceof RasterProvider) { |
||
159 | RasterProvider prov = (RasterProvider)provider; |
||
160 | if(getProviders() != null) { |
||
161 | getProviders().set(0, prov);
|
||
162 | getParams().set(0, prov.getDataParameters());
|
||
163 | } |
||
164 | } |
||
165 | } |
||
166 | 4181 | fdiaz | |
167 | 2458 | nbrodin | public void addProvider(DataStoreProvider provider) { |
168 | if(provider instanceof RasterProvider) { |
||
169 | RasterProvider prov = (RasterProvider)provider; |
||
170 | addToList(prov); |
||
171 | } |
||
172 | } |
||
173 | |||
174 | public void addProvider(RasterDataStore rasterDataStore) { |
||
175 | if(rasterDataStore instanceof DefaultRasterStore) { |
||
176 | RasterProvider prov = (RasterProvider)((DefaultRasterStore)rasterDataStore).getProvider(); |
||
177 | addToList(prov); |
||
178 | } |
||
179 | } |
||
180 | 4181 | fdiaz | |
181 | 2458 | nbrodin | private void addToList(RasterProvider prov) { |
182 | addProviderToList(prov); |
||
183 | addParamToList(prov); |
||
184 | } |
||
185 | 4181 | fdiaz | |
186 | 2458 | nbrodin | @SuppressWarnings("unchecked") |
187 | private List<RasterDataParameters> getParams() { |
||
188 | return (List<RasterDataParameters>)getDynValue("parameters"); |
||
189 | } |
||
190 | 4181 | fdiaz | |
191 | 2458 | nbrodin | private void addParamToList(RasterProvider prov) { |
192 | List<RasterDataParameters> paramList = getParams();
|
||
193 | if(paramList == null) { |
||
194 | paramList = new ArrayList<RasterDataParameters>(); |
||
195 | paramList.add(prov.getDataParameters()); |
||
196 | setDynValue("parameters", paramList);
|
||
197 | } else {
|
||
198 | paramList.add(prov.getDataParameters()); |
||
199 | } |
||
200 | } |
||
201 | 4181 | fdiaz | |
202 | 2458 | nbrodin | public List<RasterProvider> getProviders() { |
203 | return this.providerList; |
||
204 | } |
||
205 | 4181 | fdiaz | |
206 | 2458 | nbrodin | private void addProviderToList(RasterProvider prov) { |
207 | 4181 | fdiaz | List<RasterProvider> provList = getProviders();
|
208 | 2458 | nbrodin | if(provList == null) { |
209 | provList = new ArrayList<RasterProvider>(); |
||
210 | provList.add(prov); |
||
211 | setDynValue("parameters", provList);
|
||
212 | } else {
|
||
213 | provList.add(prov); |
||
214 | } |
||
215 | } |
||
216 | 4181 | fdiaz | |
217 | |||
218 | 2458 | nbrodin | public void setProviders(ArrayList<RasterProvider> provList) { |
219 | List<RasterDataParameters> paramsList = new ArrayList<RasterDataParameters>(); |
||
220 | for (int i = 0; i < provList.size(); i++) { |
||
221 | paramsList.add(provList.get(i).getDataParameters()); |
||
222 | } |
||
223 | setDynValue("parameters", paramsList);
|
||
224 | providerList = provList; |
||
225 | } |
||
226 | |||
227 | public String getDataStoreName() { |
||
228 | return MultiFileProvider.NAME;
|
||
229 | } |
||
230 | |||
231 | public String getDescription() { |
||
232 | return MultiFileProvider.DESCRIPTION;
|
||
233 | } |
||
234 | 4181 | fdiaz | |
235 | 2458 | nbrodin | } |