diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2010-04-19 12:30:48 +0200 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2010-04-19 12:30:48 +0200 |
commit | ce32f503cec0025c5ec9193669cd0a9a2da3480e (patch) | |
tree | 451ec7489a03c64e38b85a4a020c2afa148acc8f | |
parent | 3be404f4827c9e8e24dba80b03936c8fb81a406b (diff) | |
download | gimd-ce32f503cec0025c5ec9193669cd0a9a2da3480e.tar.gz |
Such a filter is general enough that it's better to extract it it's own
object so it can be reused.
Change-Id: I30635577f6d1ca8dbfacec99c85de9919451a9da
Signed-off-by: Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com>
-rw-r--r-- | src/main/scala/com/google/gimd/jgit/FileTypeTreeFilter.scala | 38 | ||||
-rw-r--r-- | src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala | 18 |
2 files changed, 39 insertions, 17 deletions
diff --git a/src/main/scala/com/google/gimd/jgit/FileTypeTreeFilter.scala b/src/main/scala/com/google/gimd/jgit/FileTypeTreeFilter.scala new file mode 100644 index 0000000..217c693 --- /dev/null +++ b/src/main/scala/com/google/gimd/jgit/FileTypeTreeFilter.scala @@ -0,0 +1,38 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.gimd.jgit + +import org.spearce.jgit.lib.FileMode +import com.google.gimd.file.FileType +import org.spearce.jgit.treewalk.filter.{AndTreeFilter, PathFilter, PathSuffixFilter, TreeFilter} +import org.spearce.jgit.treewalk.TreeWalk + + +object FileTypeTreeFilter { + + def apply[T](fileType: FileType[T]): TreeFilter = + AndTreeFilter.create( + Array( + RegularFileFilter, + fileType.pathPrefix.map(PathFilter.create(_)).getOrElse(TreeFilter.ALL), + fileType.pathSuffix.map(PathSuffixFilter.create(_)).getOrElse(TreeFilter.ALL) + ) + ) + + private object RegularFileFilter extends TreeFilter { + def shouldBeRecursive = false + def include(treeWalk: TreeWalk) = + treeWalk.isSubtree || FileMode.REGULAR_FILE.equals(treeWalk.getFileMode(0)) + override def clone = this + } + +} diff --git a/src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala b/src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala index 094577a..ab1e7d3 100644 --- a/src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala +++ b/src/main/scala/com/google/gimd/jgit/JGitSnapshot.scala @@ -27,7 +27,7 @@ final class JGitSnapshot(val branch: JGitBranch, val commit: RevCommit) extends val treeWalk = new TreeWalk(branch.repository) treeWalk.reset(commit.getTree) treeWalk.setRecursive(true) - treeWalk.setFilter(treeFilter(fileType)) + treeWalk.setFilter(FileTypeTreeFilter(fileType)) val fileIterator = new Iterator[File[T]] { private var doesHasNext = treeWalk.next @@ -44,20 +44,4 @@ final class JGitSnapshot(val branch: JGitBranch, val commit: RevCommit) extends fileIterator } - private def treeFilter[T](fileType: FileType[T]): TreeFilter = - AndTreeFilter.create( - Array( - RegularFileFilter, - fileType.pathPrefix.map(PathFilter.create(_)).getOrElse(TreeFilter.ALL), - fileType.pathSuffix.map(PathSuffixFilter.create(_)).getOrElse(TreeFilter.ALL) - ) - ) - - private object RegularFileFilter extends TreeFilter { - def shouldBeRecursive = false - def include(treeWalk: TreeWalk) = - treeWalk.isSubtree || FileMode.REGULAR_FILE.equals(treeWalk.getFileMode(0)) - override def clone = this - } - } |