1488
|
1 package goodjava.lucene.backup;
|
|
2
|
|
3 import java.io.File;
|
|
4 import java.io.IOException;
|
|
5 import java.util.List;
|
|
6 import java.util.ArrayList;
|
|
7 import goodjava.io.IoUtils;
|
|
8 import goodjava.lucene.api.LuceneIndexWriter;
|
|
9 import goodjava.lucene.logging.LoggingIndexWriter;
|
|
10 import goodjava.lucene.logging.LogFile;
|
|
11
|
|
12
|
|
13 public class BackupIndexWriter extends LoggingIndexWriter {
|
|
14 private final String name;
|
|
15 private final File dir;
|
|
16
|
|
17 public BackupIndexWriter(LuceneIndexWriter indexWriter,File logDir,String name) throws IOException {
|
|
18 super(indexWriter,logDir);
|
|
19 this.name = name;
|
|
20 File f = new File(System.getProperty("java.io.tmpdir"));
|
|
21 dir = new File(f,"goodjava.lucene/"+name);
|
|
22 dir.mkdirs();
|
|
23 }
|
|
24
|
|
25 public synchronized void commit() throws IOException {
|
|
26 super.commit();
|
|
27 sync();
|
|
28 }
|
|
29
|
|
30 private void sync() throws IOException {
|
|
31 for( File f : dir.listFiles() ) {
|
|
32 IoUtils.delete(f);
|
|
33 }
|
|
34 List<LogFile> logs = new ArrayList<LogFile>();
|
|
35 for( LogFile log : this.logs ) {
|
|
36 File f = new File(dir,log.file.getName());
|
|
37 IoUtils.link(log.file,f);
|
|
38 logs.add( new LogFile(f) );
|
|
39 }
|
|
40 }
|
|
41
|
|
42 }
|