summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2010-04-19 12:22:45 +0200
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2010-04-19 12:22:45 +0200
commita8e277ae32d43459cb5f5b893cdeaa546b5f55dc (patch)
tree23a8ae1e880a3e52556957030fd2da597363ebeb
parent5aaef587ec746145959482568c83172455a19ac9 (diff)
downloadgimd-a8e277ae32d43459cb5f5b893cdeaa546b5f55dc.tar.gz
Add list of supported file types to Database trait.
Make Gimd Database aware of FileTypes it supports. This will be useful if we want to initialise to traverse all files stored in database to for example index them. Change-Id: Ibbba331ec6601bfb57486550b19d5c316243b5bd Signed-off-by: Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com>
-rw-r--r--src/main/scala/com/google/gimd/Database.scala5
-rw-r--r--src/main/scala/com/google/gimd/jgit/JGitDatabase.scala2
-rw-r--r--src/test/scala/com/google/gimd/jgit/JGitDatabaseTestCase.scala16
3 files changed, 15 insertions, 8 deletions
diff --git a/src/main/scala/com/google/gimd/Database.scala b/src/main/scala/com/google/gimd/Database.scala
index 9a34055..14923bb 100644
--- a/src/main/scala/com/google/gimd/Database.scala
+++ b/src/main/scala/com/google/gimd/Database.scala
@@ -21,6 +21,11 @@ import query.Predicate
trait Database {
/**
+ * List of all file types that can be stored in Database.
+ */
+ val fileTypes: List[FileType[_]]
+
+ /**
* Query database for all user objects of type U stored in files of
* type FileType[W] satisfying predicate p using latest Snapshot of Database.
*
diff --git a/src/main/scala/com/google/gimd/jgit/JGitDatabase.scala b/src/main/scala/com/google/gimd/jgit/JGitDatabase.scala
index f3da9fc..2ef9d9c 100644
--- a/src/main/scala/com/google/gimd/jgit/JGitDatabase.scala
+++ b/src/main/scala/com/google/gimd/jgit/JGitDatabase.scala
@@ -25,7 +25,7 @@ import org.spearce.jgit.lib.RefUpdate.Result
import org.spearce.jgit.dircache.{DirCache, DirCacheEditor, DirCacheEntry}
import org.spearce.jgit.revwalk.{RevCommit, RevTree, RevWalk}
-final class JGitDatabase(branch: JGitBranch) extends Database {
+final class JGitDatabase(val fileTypes: List[FileType[_]], branch: JGitBranch) extends Database {
/**
* The maximal number of merge/transaction rebase retries.
diff --git a/src/test/scala/com/google/gimd/jgit/JGitDatabaseTestCase.scala b/src/test/scala/com/google/gimd/jgit/JGitDatabaseTestCase.scala
index 36f5eab..aa783f1 100644
--- a/src/test/scala/com/google/gimd/jgit/JGitDatabaseTestCase.scala
+++ b/src/test/scala/com/google/gimd/jgit/JGitDatabaseTestCase.scala
@@ -41,6 +41,8 @@ final class JGitDatabaseTestCase extends AbstractJGitTestCase {
def name(m: Message) = userType.name(m)
}
+ private val fileTypes = SimpleMessageFileType :: Nil
+
@Test
def allPaths {
val first = SimpleMessage("first", 1)
@@ -53,7 +55,7 @@ final class JGitDatabaseTestCase extends AbstractJGitTestCase {
)
commit(files)
- val db = new JGitDatabase(masterBranch)
+ val db = new JGitDatabase(fileTypes, masterBranch)
val foundFiles = db.latestSnapshot.all(SimpleMessageFileType).toList
@@ -73,7 +75,7 @@ final class JGitDatabaseTestCase extends AbstractJGitTestCase {
)
commit(files)
- val db = new JGitDatabase(masterBranch)
+ val db = new JGitDatabase(fileTypes, masterBranch)
val foundFiles = db.latestSnapshot.all(SimpleMessageFileType).toList
@@ -94,7 +96,7 @@ final class JGitDatabaseTestCase extends AbstractJGitTestCase {
val commitId = createCommit("Test commit", treeId)
moveMaster(commitId)
- val db = new JGitDatabase(masterBranch)
+ val db = new JGitDatabase(fileTypes, masterBranch)
val foundFiles = db.latestSnapshot.all(SimpleMessageFileType).toList
assertEquals(Nil, foundFiles)
@@ -113,7 +115,7 @@ final class JGitDatabaseTestCase extends AbstractJGitTestCase {
writeMessage(SimpleMessageType, second))
commit(paths zip blobIds)
- val db = new JGitDatabase(masterBranch)
+ val db = new JGitDatabase(fileTypes, masterBranch)
db.modify { snapshot =>
val sms = snapshot.query(SimpleMessageFileType, (sm: SimpleMessage) => sm.name == "second")
@@ -142,7 +144,7 @@ final class JGitDatabaseTestCase extends AbstractJGitTestCase {
writeMessage(SimpleMessageType, second))
commit(paths zip blobIds)
- val db = new JGitDatabase(masterBranch)
+ val db = new JGitDatabase(fileTypes, masterBranch)
val third = SimpleMessage("third", 3)
@@ -174,7 +176,7 @@ final class JGitDatabaseTestCase extends AbstractJGitTestCase {
)
commit(files)
- val db = new JGitDatabase(masterBranch)
+ val db = new JGitDatabase(fileTypes, masterBranch)
db.modify { snapshot =>
val sms = snapshot.query(SimpleMessageFileType, (sm: SimpleMessage) => sm.name == "second")
@@ -198,7 +200,7 @@ final class JGitDatabaseTestCase extends AbstractJGitTestCase {
commit(List(path -> blobId))
- val db = new JGitDatabase(masterBranch)
+ val db = new JGitDatabase(fileTypes, masterBranch)
val result = db.modifyAndReturn { _ => (DatabaseModification.empty, expected) }