From edd4669f53e3cca8428da45925699f20684fe0e2 Mon Sep 17 00:00:00 2001 From: David Dykstal Date: Fri, 27 Oct 2006 01:48:46 +0000 Subject: [PATCH] Bug 160397 - get filtering by file type to work properly in the local and dstore subsystems. --- .../services/local/files/LocalFileService.java | 18 +++++++++++++++--- .../core/subsystems/RemoteFileSubSystem.java | 18 ++++++++---------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java index f5f234a48bb..27a3a09fe67 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java @@ -32,6 +32,8 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.rse.services.clientserver.FileTypeMatcher; +import org.eclipse.rse.services.clientserver.IMatcher; import org.eclipse.rse.services.clientserver.ISystemFileTypes; import org.eclipse.rse.services.clientserver.NamePatternMatcher; import org.eclipse.rse.services.clientserver.SystemEncodingUtil; @@ -123,10 +125,15 @@ public class LocalFileService extends AbstractFileService implements IFileServic public class LocalFileNameFilter implements FilenameFilter { - private NamePatternMatcher _matcher; + private IMatcher _matcher; public LocalFileNameFilter(String filter) { - _matcher = new NamePatternMatcher(filter); + if (filter.endsWith(",")) { + String[] types = filter.split(","); + _matcher = new FileTypeMatcher(types); + } else { + _matcher = new NamePatternMatcher(filter); + } } public boolean accept(File dir, String name) { @@ -134,7 +141,12 @@ public class LocalFileService extends AbstractFileService implements IFileServic } public boolean isGeneric() { - return _matcher.isGeneric(); + boolean result = true; + if (_matcher instanceof NamePatternMatcher) { + NamePatternMatcher new_name = (NamePatternMatcher) _matcher; + result = new_name.isGeneric(); + } + return result; } } diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java index 82e02153a1d..9821f8f7c52 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java @@ -894,9 +894,10 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi */ public IRemoteFile[] listFiles(IRemoteFile parent, String fileNameFilter, IProgressMonitor monitor) throws SystemMessageException { - RemoteFileFilterString filterString = new RemoteFileFilterString(getParentRemoteFileSubSystemConfiguration()); - filterString.setPath(parent.getAbsolutePath()); - filterString.setFile((fileNameFilter == null) ? "*" : fileNameFilter); + fileNameFilter = (fileNameFilter == null) ? "*" : fileNameFilter; + String parentPath = parent.getAbsolutePath(); + IRemoteFileSubSystemConfiguration config = getParentRemoteFileSubSystemConfiguration(); + RemoteFileFilterString filterString = new RemoteFileFilterString(config, parentPath, fileNameFilter); filterString.setShowFiles(true); filterString.setShowSubDirs(false); RemoteFileContext context = new RemoteFileContext(this, parent, filterString); @@ -923,13 +924,10 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi */ public IRemoteFile[] listFoldersAndFiles(IRemoteFile parent, String fileNameFilter, IProgressMonitor monitor) throws SystemMessageException { - - - RemoteFileFilterString filterString = new RemoteFileFilterString(getParentRemoteFileSubSystemConfiguration()); - filterString.setPath(parent.getAbsolutePath()); - if (fileNameFilter == null) - fileNameFilter = "*"; //$NON-NLS-1$ - filterString.setFile(fileNameFilter); + String path = parent.getAbsolutePath(); + fileNameFilter = (fileNameFilter == null) ? "*" : fileNameFilter; + IRemoteFileSubSystemConfiguration config = getParentRemoteFileSubSystemConfiguration(); + RemoteFileFilterString filterString = new RemoteFileFilterString(config, path, fileNameFilter); filterString.setShowFiles(true); filterString.setShowSubDirs(true); RemoteFileContext context = new RemoteFileContext(this, parent, filterString);