1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package mnemosyne.archiver;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20
21 import java.io.*;
22
23 /***
24 * @version $Id: TransactionDirectory.java,v 1.1.1.1 2004/08/07 06:40:54 charlesblaxland Exp $
25 */
26 public class TransactionDirectory extends ArchiveDirectory
27 {
28 private static final Log log = LogFactory.getLog(TransactionDirectory.class);
29
30 private static final String TRANSACTION_FILE_PREFIX = "";
31 private static final String TRANSACTION_FILE_POSTFIX = "_transaction";
32 private static final String TRANSACTION_FILE_EXTENSION = "txn";
33
34 public TransactionDirectory(String directoryName, ArchiveSequence sequence)
35 {
36 super(directoryName, sequence);
37 }
38
39 protected String prefix()
40 {
41 return TRANSACTION_FILE_PREFIX;
42 }
43
44 protected String postfix()
45 {
46 return TRANSACTION_FILE_POSTFIX;
47 }
48
49 protected String extension()
50 {
51 return TRANSACTION_FILE_EXTENSION;
52 }
53
54 public void readTransactionsSinceSnapshot(long snapshotSequenceNumber) throws ArchiverException
55 {
56 if (log.isDebugEnabled())
57 log.debug("Reading all transactions since sequence number " + snapshotSequenceNumber);
58
59 String firstTransactionFilename = buildArchiveFilename(snapshotSequenceNumber);
60 Object[] filesSinceSnapshot = archiveFiles.tailSet(firstTransactionFilename).toArray();
61
62
63 for (int i = filesSinceSnapshot.length - 1; i >= 0; i--)
64 {
65 String transactionFilename = (String) filesSinceSnapshot[i];
66 File transactionFile = constructArchiveFile(transactionFilename);
67 readArchiveFile(transactionFile);
68 }
69 }
70
71 }