Revision 44297 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.lib/src/main/java/org/gvsig/fmap/dal/serverexplorer/filesystem/impl/DefaultFilesystemServerExplorer.java
DefaultFilesystemServerExplorer.java | ||
---|---|---|
53 | 53 |
import org.gvsig.fmap.dal.spi.AbstractDataServerExplorer; |
54 | 54 |
import org.gvsig.fmap.dal.spi.DataManagerProviderServices; |
55 | 55 |
import org.gvsig.fmap.dal.spi.DataServerExplorerProviderServices; |
56 |
import org.gvsig.fmap.dal.spi.FileMultiResource;
|
|
56 |
import org.gvsig.fmap.dal.spi.ZipResourcesStorage;
|
|
57 | 57 |
import org.gvsig.tools.exception.BaseException; |
58 | 58 |
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension; |
59 |
import org.gvsig.tools.util.ResourcesStorage;
|
|
60 |
import org.gvsig.tools.util.SimpleFileResource;
|
|
59 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
|
|
60 |
import org.gvsig.tools.resourcesstorage.FilesResourcesStorage;
|
|
61 | 61 |
|
62 | 62 |
@SuppressWarnings("UseSpecificCatch") |
63 | 63 |
public class DefaultFilesystemServerExplorer extends AbstractDataServerExplorer |
... | ... | |
494 | 494 |
@Deprecated |
495 | 495 |
@Override |
496 | 496 |
public File getResourcePath(DataStore dataStore, String resourceName) throws DataException { |
497 |
SimpleFileResource resource = (SimpleFileResource) this.getResource(dataStore, resourceName); |
|
498 |
if( resource==null ) { |
|
497 |
try { |
|
498 |
ResourcesStorage theResourceStorage = this.getResourcesStorage(dataStore); |
|
499 |
if( theResourceStorage==null ) { |
|
500 |
return null; |
|
501 |
} |
|
502 |
FilesResourcesStorage.FileResource res = (FilesResourcesStorage.FileResource) theResourceStorage.getResource(resourceName); |
|
503 |
if( res==null ) { |
|
504 |
return null; |
|
505 |
} |
|
506 |
return res.getFile(); |
|
507 |
} catch(Exception ex) { |
|
499 | 508 |
return null; |
500 | 509 |
} |
501 |
return resource.getFile(); |
|
502 | 510 |
} |
503 | 511 |
|
504 | 512 |
@Override |
505 |
public org.gvsig.tools.util.ResourcesStorage.Resource getResource(DataStore dataStore, String resourceName) throws DataException { |
|
506 |
FilesystemServerExplorerProvider provider = this.getProvider(dataStore.getProviderName()); |
|
507 |
if (provider == null) { |
|
508 |
return null; |
|
509 |
} |
|
510 |
String rootPathName = provider.getResourceRootPathName(dataStore); |
|
511 |
if (rootPathName == null) { |
|
512 |
return null; |
|
513 |
} |
|
514 |
if( !dataStore.getChildren().isEmpty() ) { |
|
515 |
FileMultiResource res = new FileMultiResource( |
|
516 |
new File(rootPathName), |
|
517 |
dataStore.getName(), |
|
518 |
resourceName |
|
519 |
); |
|
520 |
return res; |
|
521 |
} |
|
522 |
File f = new File(FilenameUtils.getFullPathNoEndSeparator(rootPathName),resourceName); |
|
523 |
if( f.exists() ) { |
|
524 |
return new SimpleFileResource(f); |
|
525 |
} |
|
526 |
return new SimpleFileResource(new File(rootPathName + "." + resourceName)); |
|
527 |
} |
|
528 |
|
|
529 |
@Override |
|
530 |
public List<ResourcesStorage.Resource> getResources(DataStore dataStore, String resourceName) throws DataException { |
|
531 |
FilesystemServerExplorerProvider provider = this.getProvider(dataStore.getProviderName()); |
|
532 |
if (provider == null) { |
|
533 |
return null; |
|
534 |
} |
|
535 |
String rootPathName = provider.getResourceRootPathName(dataStore); |
|
536 |
if (rootPathName == null) { |
|
537 |
return null; |
|
538 |
} |
|
539 |
List<ResourcesStorage.Resource>ress = new ArrayList<>(); |
|
540 |
int n = 0; |
|
541 |
while(true) { |
|
542 |
String multiresourceName; |
|
543 |
if( n==0 ) { |
|
544 |
multiresourceName = resourceName; |
|
545 |
} else { |
|
546 |
multiresourceName = String.valueOf(n)+"."+resourceName; |
|
513 |
public ResourcesStorage getResourcesStorage(DataStore dataStore) { |
|
514 |
if( this.resourcesStorage==null ) { |
|
515 |
FilesystemServerExplorerProvider provider; |
|
516 |
try { |
|
517 |
provider = this.getProvider(dataStore.getProviderName()); |
|
518 |
} catch (Exception ex) { |
|
519 |
return null; |
|
547 | 520 |
} |
548 |
File f = new File(rootPathName + "." + multiresourceName); |
|
549 |
if( !f.exists() ) { |
|
550 |
break; |
|
521 |
if (provider == null) { |
|
522 |
return null; |
|
551 | 523 |
} |
552 |
ress.add(new SimpleFileResource(f)); |
|
553 |
n++; |
|
524 |
String pathName = provider.getResourceRootPathName(dataStore); |
|
525 |
if (pathName == null) { |
|
526 |
return null; |
|
527 |
} |
|
528 |
pathName = FilenameUtils.removeExtension(pathName); |
|
529 |
if( dataStore.getChildren().isEmpty() ) { |
|
530 |
if( ZipResourcesStorage.existsStorage(pathName) ) { |
|
531 |
this.resourcesStorage = new ZipResourcesStorage( |
|
532 |
pathName, |
|
533 |
dataStore.getName() |
|
534 |
); |
|
535 |
} else { |
|
536 |
this.resourcesStorage = new FilesResourcesStorage( |
|
537 |
pathName |
|
538 |
); |
|
539 |
} |
|
540 |
} else { |
|
541 |
this.resourcesStorage = new ZipResourcesStorage( |
|
542 |
pathName, |
|
543 |
dataStore.getName() |
|
544 |
); |
|
545 |
} |
|
554 | 546 |
} |
555 |
if( ress.isEmpty() ) { |
|
556 |
return null; |
|
557 |
} |
|
558 |
return ress; |
|
547 |
return this.resourcesStorage; |
|
559 | 548 |
} |
560 | 549 |
|
561 |
|
|
562 | 550 |
@Override |
563 | 551 |
public DataStoreParameters get(String name) throws DataException { |
564 | 552 |
File theFile = new File(this.current,name); |
Also available in: Unified diff