Revision 24710 branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/explorer/filesystem/FilesystemExplorer.java
FilesystemExplorer.java | ||
---|---|---|
12 | 12 |
import org.gvsig.fmap.dal.DataStoreParameters; |
13 | 13 |
import org.gvsig.fmap.dal.NewDataStoreParameters; |
14 | 14 |
import org.gvsig.fmap.dal.exception.DataException; |
15 |
import org.gvsig.fmap.dal.exception.FileNotFoundException; |
|
15 | 16 |
import org.gvsig.fmap.dal.exception.InitializeException; |
17 |
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException; |
|
16 | 18 |
import org.gvsig.fmap.dal.exception.RemoveException; |
17 | 19 |
import org.gvsig.fmap.dal.spi.DataExplorerProvider; |
18 | 20 |
import org.gvsig.fmap.dal.spi.DataManagerProviderServices; |
... | ... | |
147 | 149 |
return list; |
148 | 150 |
} |
149 | 151 |
|
150 |
public void setCurrentPath(File path) { |
|
152 |
public void setCurrentPath(File path) throws FileNotFoundException {
|
|
151 | 153 |
// FIXME Comprobar si es un directorio existente |
154 |
if (!path.exists()) { |
|
155 |
throw new FileNotFoundException(path); |
|
156 |
} |
|
157 |
if (!path.isDirectory()) { |
|
158 |
throw new IllegalArgumentException(path.getPath() |
|
159 |
+ " is not a directory"); |
|
160 |
} |
|
161 |
if (!isFromRoot(path)) { |
|
162 |
throw new IllegalArgumentException(path.getPath() |
|
163 |
+ " is not from root"); |
|
164 |
|
|
165 |
} |
|
166 |
|
|
152 | 167 |
this.current = path; |
153 | 168 |
} |
154 | 169 |
|
... | ... | |
196 | 211 |
return this.FILE_FILTER_EPSNAME; |
197 | 212 |
} |
198 | 213 |
|
199 |
public NewDataStoreParameters getAddParameters(String storeName) { |
|
200 |
// TODO Auto-generated method stub |
|
201 |
return null; |
|
214 |
public NewDataStoreParameters getAddParameters(String storeName) |
|
215 |
throws DataException { |
|
216 |
DataStoreProvider provider = this.getProvider(storeName); |
|
217 |
if (provider == null) { |
|
218 |
throw new IllegalArgumentException( |
|
219 |
"Not registered in this explorer"); // FIXME |
|
220 |
} |
|
221 |
|
|
222 |
NewDataStoreParameters nParams = provider.getCreateParameters(); |
|
223 |
// nParams.setAttribute("path", this.getCurrentPath().getPath()); |
|
224 |
return nParams; |
|
202 | 225 |
} |
203 | 226 |
|
204 | 227 |
public boolean canAdd(String storeName) |
205 | 228 |
throws DataException { |
206 |
// String providerName = parameters.getDataStoreName(); |
|
207 |
// this.checkIsMine(parameters); |
|
208 |
// |
|
209 |
// DataStoreProvider provider = this.getManager().createStoreProvider( |
|
210 |
// providerName); |
|
211 |
// |
|
212 |
// return provider.canCreate(parameters); |
|
213 |
return false; |
|
229 |
DataStoreProvider provider = this.getProvider(storeName); |
|
230 |
if (provider == null) { |
|
231 |
throw new IllegalArgumentException( |
|
232 |
"Not registered in this explorer"); // FIXME |
|
233 |
} |
|
214 | 234 |
|
235 |
return provider.canCreate(); |
|
236 |
|
|
215 | 237 |
} |
216 | 238 |
|
217 | 239 |
// ========================================== |
218 | 240 |
|
241 |
private DataStoreProvider getProvider(String storeName) |
|
242 |
throws InitializeException, ProviderNotRegisteredException { |
|
243 |
Iterator filters = getFilters(); |
|
244 |
while (filters.hasNext()) { |
|
245 |
FilesystemFileFilter filter = (FilesystemFileFilter) filters.next(); |
|
246 |
if (filter.getDataStoreProviderName().equals(storeName)) { |
|
247 |
return this.getManager().createStoreProvider(storeName); |
|
248 |
} |
|
249 |
} |
|
250 |
return null; |
|
251 |
} |
|
252 |
|
|
219 | 253 |
private DataManagerProviderServices getManager() { |
220 | 254 |
return (DataManagerProviderServices) DALLocator.getDataManager(); |
221 | 255 |
} |
... | ... | |
238 | 272 |
while (filters.hasNext()) { |
239 | 273 |
FilesystemFileFilter filter = (FilesystemFileFilter) filters.next(); |
240 | 274 |
if (filter.accept(file)) { |
241 |
DataStoreParameters params = DALLocator.getDataManager()
|
|
275 |
DataStoreParameters params = this.getManager()
|
|
242 | 276 |
.createStoreParameters( |
243 | 277 |
filter.getDataStoreProviderName()); |
244 | 278 |
((FilesystemStoreParameters) params).setFile(file); |
... | ... | |
255 | 289 |
} |
256 | 290 |
Iterator filters = getFilters(); |
257 | 291 |
File file = ((FilesystemStoreParameters) dsp).getFile(); |
258 |
if (!file.getAbsolutePath().startsWith(this.root.getAbsolutePath())) {
|
|
292 |
if (!this.isFromRoot(file)) {
|
|
259 | 293 |
throw new IllegalArgumentException("worng explorer"); |
260 | 294 |
} |
261 | 295 |
FilesystemFileFilter filter; |
... | ... | |
268 | 302 |
throw new IllegalArgumentException("worng explorer"); |
269 | 303 |
} |
270 | 304 |
|
305 |
private boolean isFromRoot(File file) { |
|
306 |
return file.getAbsolutePath().startsWith(this.root.getAbsolutePath()); |
|
307 |
} |
|
271 | 308 |
|
309 |
|
|
272 | 310 |
} |
Also available in: Unified diff