Revision 22964
branches/v2_0_0_prep/libraries/libFMap_dataFile/src-test/org/gvsig/fmap/data/feature/file/ResourceManagerTest.java | ||
---|---|---|
60 | 60 |
} else { |
61 | 61 |
return; |
62 | 62 |
} |
63 |
if (!rNotification.getType().equals(ResourceNotification.OPENED)) {
|
|
63 |
if (rNotification.getType().equals(ResourceNotification.OPENED)) { |
|
64 | 64 |
try { |
65 | 65 |
this.ajustResources(); |
66 | 66 |
} catch (CloseException e) { |
... | ... | |
71 | 71 |
|
72 | 72 |
} |
73 | 73 |
|
74 |
public void closeAll() throws CloseException { |
|
75 |
ResourceManager rManager = ResourceManager.getResourceManager(); |
|
74 | 76 |
|
77 |
Iterator iter = rManager.iterator(); |
|
78 |
while (iter.hasNext()) { |
|
79 |
Resource res = (Resource) iter.next(); |
|
80 |
if (res.isOpen()) { |
|
81 |
res.close(); |
|
82 |
System.out.println("** closed: " + res.getName() + "(" |
|
83 |
+ res.getKey() + ")"); |
|
84 |
} |
|
85 |
|
|
86 |
} |
|
87 |
|
|
88 |
System.out.println("** Closed all resources"); |
|
89 |
} |
|
90 |
|
|
91 |
|
|
75 | 92 |
public void ajustResources() throws CloseException { |
76 | 93 |
SortedSet resources = this.getResourcesOrdered(); |
77 | 94 |
if (resources.isEmpty() || resources.size() < this.maxOpened) { |
78 | 95 |
return; |
79 | 96 |
} |
80 | 97 |
|
81 |
int opened = 0; |
|
82 |
Iterator iter = resources.iterator(); |
|
83 |
while (iter.hasNext()) { |
|
84 |
if (((Resource) iter.next()).isOpen()) { |
|
85 |
opened++; |
|
86 |
} |
|
87 |
} |
|
98 |
int opened = this.getOpenedResources(); |
|
88 | 99 |
int toClose = opened - this.maxOpened; |
89 | 100 |
if (toClose < 1) { |
90 | 101 |
return; |
91 | 102 |
} |
92 | 103 |
System.out.println("** Resources to close: " + toClose); |
93 |
iter = resources.iterator(); |
|
104 |
Iterator iter = resources.iterator();
|
|
94 | 105 |
while (iter.hasNext() && toClose > 0) { |
95 | 106 |
Resource res = (Resource) iter.next(); |
96 | 107 |
if (res.isOpen()) { |
... | ... | |
187 | 198 |
public void test_manual() { |
188 | 199 |
ResourceCloser closer = new ResourceCloser(); |
189 | 200 |
|
201 |
//Nos aseguramos que no hay recursos abiertos |
|
202 |
try { |
|
203 |
closer.closeAll(); |
|
204 |
} catch (CloseException e1) { |
|
205 |
e1.printStackTrace(); |
|
206 |
fail(); |
|
207 |
} |
|
190 | 208 |
|
191 | 209 |
org.gvsig.fmap.data.feature.file.dbf.Register.selfRegister(); |
192 | 210 |
org.gvsig.fmap.data.feature.file.shp.Register.selfRegister(); |
... | ... | |
301 | 319 |
} |
302 | 320 |
assertEquals(2, closer.getOpenedResources()); |
303 | 321 |
|
322 |
try { |
|
323 |
shp.dispose(); |
|
324 |
shp_bis.dispose(); |
|
325 |
shpNull.dispose(); |
|
326 |
} catch (CloseException e) { |
|
327 |
e.printStackTrace(); |
|
328 |
fail(); |
|
329 |
} |
|
304 | 330 |
|
331 |
|
|
305 | 332 |
} |
306 | 333 |
|
307 | 334 |
|
308 | 335 |
|
336 |
public void test_auto() { |
|
337 |
ResourceCloser closer = new ResourceCloser(); |
|
338 |
|
|
339 |
//Nos aseguramos que no hay recursos abiertos |
|
340 |
try { |
|
341 |
closer.closeAll(); |
|
342 |
} catch (CloseException e1) { |
|
343 |
e1.printStackTrace(); |
|
344 |
fail(); |
|
345 |
} |
|
346 |
org.gvsig.fmap.data.feature.file.dbf.Register.selfRegister(); |
|
347 |
org.gvsig.fmap.data.feature.file.shp.Register.selfRegister(); |
|
348 |
org.gvsig.fmap.data.feature.file.dxf.Register.selfRegister(); |
|
349 |
org.gvsig.fmap.data.feature.file.dgn.Register.selfRegister(); |
|
350 |
|
|
351 |
DataStore shp = null; |
|
352 |
DataStore shp_bis = null; |
|
353 |
DataStore shpNull = null; |
|
354 |
DataStore dbf = null; |
|
355 |
|
|
356 |
// A?adimos el 'closer' como observador para que no deje abierta |
|
357 |
// nunca mas de 2 fuentes |
|
358 |
ResourceManager rManager = ResourceManager.getResourceManager(); |
|
359 |
closer.setMaxOpened(2); |
|
360 |
rManager.addObserver(closer); |
|
361 |
|
|
362 |
// Abrimos y cerrarmos uno (ojo los shp son dos recursos el dbf y el shp) |
|
363 |
try { |
|
364 |
shp = dataManager.createDataStore(SHPTest |
|
365 |
.getParams(SHPTest.fileNormal)); |
|
366 |
shp.getMetadata(); |
|
367 |
} catch (BaseException e) { |
|
368 |
e.printStackTrace(); |
|
369 |
fail(); |
|
370 |
} |
|
371 |
assertEquals(2, closer.getOpenedResources()); |
|
372 |
try { |
|
373 |
shp.dispose(); |
|
374 |
} catch (CloseException e) { |
|
375 |
e.printStackTrace(); |
|
376 |
fail(); |
|
377 |
} |
|
378 |
assertEquals(0, closer.getOpenedResources()); |
|
379 |
|
|
380 |
// Abrimos dos veces el mismo y comprobamos que solo |
|
381 |
// hay un recurso |
|
382 |
try { |
|
383 |
shp = dataManager.createDataStore(SHPTest |
|
384 |
.getParams(SHPTest.fileNormal)); |
|
385 |
shp.getMetadata(); |
|
386 |
} catch (BaseException e) { |
|
387 |
e.printStackTrace(); |
|
388 |
fail(); |
|
389 |
} |
|
390 |
|
|
391 |
assertEquals(2, closer.getOpenedResources()); |
|
392 |
try { |
|
393 |
shp_bis = dataManager.createDataStore(SHPTest |
|
394 |
.getParams(SHPTest.fileNormal)); |
|
395 |
shp_bis.getMetadata(); |
|
396 |
} catch (BaseException e) { |
|
397 |
e.printStackTrace(); |
|
398 |
fail(); |
|
399 |
} |
|
400 |
assertEquals(2, closer.getOpenedResources()); |
|
401 |
|
|
402 |
// Abrimos un shp mas y comprobamos si deja solo 2 |
|
403 |
try { |
|
404 |
shpNull = dataManager.createDataStore(SHPTest |
|
405 |
.getParams(SHPTest.fileGeometryNull)); |
|
406 |
shpNull.getMetadata(); |
|
407 |
} catch (BaseException e) { |
|
408 |
e.printStackTrace(); |
|
409 |
fail(); |
|
410 |
} |
|
411 |
assertEquals(2, closer.getOpenedResources()); |
|
412 |
|
|
413 |
//comprobamos que todos se puede volver a usar sin |
|
414 |
//problemas |
|
415 |
|
|
416 |
DataCollection coll; |
|
417 |
try { |
|
418 |
coll = shp.getDataCollection(); |
|
419 |
coll.size(); |
|
420 |
coll.iterator().next(); |
|
421 |
coll.dispose(); |
|
422 |
assertEquals(2, closer.getOpenedResources()); |
|
423 |
|
|
424 |
coll = shp_bis.getDataCollection(); |
|
425 |
coll.size(); |
|
426 |
coll.iterator().next(); |
|
427 |
coll.dispose(); |
|
428 |
assertEquals(2, closer.getOpenedResources()); |
|
429 |
|
|
430 |
coll = shpNull.getDataCollection(); |
|
431 |
coll.size(); |
|
432 |
coll.iterator().next(); |
|
433 |
coll.dispose(); |
|
434 |
assertEquals(2, closer.getOpenedResources()); |
|
435 |
|
|
436 |
} catch (BaseException e) { |
|
437 |
e.printStackTrace(); |
|
438 |
fail(); |
|
439 |
} |
|
440 |
|
|
441 |
assertEquals(2, closer.getOpenedResources()); |
|
442 |
|
|
443 |
} |
|
309 | 444 |
} |
Also available in: Unified diff