Revision 24571 branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/explorer/filesystem/FilesystemExplorer.java

View differences:

FilesystemExplorer.java
134 134

  
135 135
		for (i = 0; i < files.length; i++) {
136 136
			theFile = new File(this.root, files[i]);
137
			dsp = this.getParameters(theFile);
137
			dsp = this.getParametersFor(theFile);
138 138
			if (dsp != null) {
139 139
				list.add(dsp);
140 140
			}
141

  
142 141
		}
143 142
		return list;
144 143
	}
......
158 157

  
159 158
	public void remove(DataStoreParameters dsp) throws RemoveException {
160 159
		String providerName = dsp.getDataStoreName();
161
		this.checkIsMine(dsp);
162 160
		try {
161
			this.checkIsMine(dsp);
163 162
			DataStoreProvider provider = this.getManager().createStoreProvider(
164 163
					providerName);
165 164

  
......
216 215
		return (DataManagerProviderServices) DALLocator.getDataManager();
217 216
	}
218 217

  
219
	private boolean accept(File file) {
218
	private DataStoreParameters getParametersFor(File file)
219
			throws DataException {
220 220
		if (!file.exists()) {
221
			return false;
222
		}
223
		if (!file.isFile()) {
224
			return false;
225
		}
226
		if (!file.canRead()) {
227
			return false;
228
		}
229
		if (file.isHidden()) { // XXX ???
230
			return false;
231
		}
232
		Iterator filters = getFilters();
233
		while (filters.hasNext()) {
234
			FileFilter filter = (FileFilter) filters.next();
235
			if (filter.accept(file)) {
236
				return true;
237
			}
238
		}
239
		return false;
240
	}
241

  
242
	private DataStoreParameters getParameters(File file) throws DataException {
243
		if (!file.exists()) {
244 221
			return null;
245 222
		}
246 223
		if (!file.isFile()) {
......
256 233
		while (filters.hasNext()) {
257 234
			FilesystemFileFilter filter = (FilesystemFileFilter) filters.next();
258 235
			if (filter.accept(file)) {
259
				return filter.getParameters(file);
236
				DataStoreParameters params = DALLocator.getDataManager()
237
						.createStoreParameters(
238
								filter.getDataStoreProviderName());
239
				((FilesystemStoreParameters) params).setFile(file);
240
				return params;
260 241
			}
261 242
		}
262 243
		return null;
263 244
	}
264 245

  
265 246
	private void checkIsMine(DataStoreParameters dsp)
266
			throws IllegalArgumentException {
267

  
268
		String fileName = (String) dsp.getAttribute("file");
269
		if (fileName == null) {
270
			new IllegalArgumentException("property file not found");
247
			throws IllegalArgumentException, DataException {
248
		if (!(dsp instanceof FilesystemExplorer)) {
249
			new IllegalArgumentException("not instance of FilesystemExplorer");
271 250
		}
272
		File file = new File(fileName);
273
		if (!this.root.equals(file.getParentFile())) {
251
		Iterator filters = getFilters();
252
		File file = ((FilesystemStoreParameters) dsp).getFile();
253
		if (!file.getAbsolutePath().startsWith(this.root.getAbsolutePath())) {
274 254
			throw new IllegalArgumentException("worng explorer");
275 255
		}
276
		if (!this.accept(file)) {
277
			throw new IllegalArgumentException("worng explorer");
256
		FilesystemFileFilter filter;
257
		while (filters.hasNext()) {
258
			filter = (FilesystemFileFilter) filters.next();
259
			if (dsp.getDataStoreName().equals(filter.getDataStoreProviderName())) {
260
				return;
261
			}
278 262
		}
279

  
263
		throw new IllegalArgumentException("worng explorer");
280 264
	}
281 265

  
282 266

  

Also available in: Unified diff