KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > backupTool > FileBackupEntry


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.outerj.daisy.backupTool;
17
18 import java.io.File JavaDoc;
19 import java.util.ArrayList JavaDoc;
20 import java.util.Arrays JavaDoc;
21 import java.util.List JavaDoc;
22
23 public class FileBackupEntry extends AbstractBackupEntry {
24
25     protected List JavaDoc filesToBackup;
26
27     protected File JavaDoc baseDirectory;
28
29     private File JavaDoc tempDir;
30
31     public FileBackupEntry(File JavaDoc fileToBackup, File JavaDoc backupFile, File JavaDoc baseDirectory, BackupInstance buInstance) throws Exception JavaDoc {
32         super(backupFile, buInstance);
33         filesToBackup = new ArrayList JavaDoc();
34         this.baseDirectory = baseDirectory;
35         addFileToBackup(fileToBackup);
36     }
37
38     public FileBackupEntry(File JavaDoc backupFile, File JavaDoc baseDirectory, BackupInstance buInstance) {
39         super(backupFile, buInstance);
40         filesToBackup = new ArrayList JavaDoc();
41         this.baseDirectory = baseDirectory;
42     }
43
44     public FileBackupEntry(File JavaDoc backupFile, File JavaDoc[] filesToBackup, File JavaDoc baseDirectory, BackupInstance buInstance) {
45         super(backupFile, buInstance);
46         this.filesToBackup = Arrays.asList(filesToBackup);
47         this.baseDirectory = baseDirectory;
48     }
49
50     public void backup() throws Exception JavaDoc {
51         for (int i = 0; i < filesToBackup.size(); i++) {
52             File JavaDoc tobackup = getFileToBackup(i);
53             String JavaDoc pathSuffix = tobackup.getPath().substring(baseDirectory.getPath().length());
54
55             File JavaDoc from = getFileToBackup(i);
56             File JavaDoc to = new File JavaDoc (tempDir, pathSuffix);
57             try {
58                 BackupHelper.copyFile(from, to);
59             } catch (Exception JavaDoc e) {
60                 throw new Exception JavaDoc("Error copying file from " + from.getAbsolutePath() + " to " + to.getAbsolutePath());
61             }
62         }
63     }
64
65     protected File JavaDoc getTempPath() {
66         return tempDir;
67     }
68
69     public void backupInit() throws Exception JavaDoc {
70         tempDir = new File JavaDoc(buInstance.getDirectory(), this.backupFile.getName() + "-tmp");
71         tempDir.mkdir();
72     }
73
74     public void restore() throws Exception JavaDoc {
75         for (int i = 0; i < filesToBackup.size(); i++)
76             BackupHelper.deleteFile(getFileToBackup(i), true);
77
78         // make sure the base directory gets created, also when the
79
// backupFile is not present (e.g. to recreate an empty indexstore or pubreq dir)
80
baseDirectory.mkdirs();
81         if (backupFile.exists()) {
82             BackupHelper.unzipToDirectory(backupFile, baseDirectory);
83         } else {
84             System.out.println("Backup does not contain file " + backupFile.getName() + ", skipping its restore.");
85         }
86     }
87
88     public void addFileToBackup(File JavaDoc file) {
89         filesToBackup.add(file);
90     }
91
92     public void removeFileFromBackup(File JavaDoc file) {
93         filesToBackup.remove(file);
94     }
95
96     public void clearFilesFromBackup() {
97         filesToBackup.clear();
98     }
99
100     public File JavaDoc getFileToBackup(int index) {
101         return (File JavaDoc) filesToBackup.get(index);
102     }
103
104     protected boolean isNothing() {
105         return isEmpty(tempDir);
106     }
107
108     private boolean isEmpty(File JavaDoc file) {
109         if (file.isDirectory()) {
110             File JavaDoc[] children = file.listFiles();
111             for (int i = 0; i < children.length; i++) {
112                 if (children[i].isFile()) {
113                     return false;
114                 } else {
115                     boolean dirEmpty = isEmpty(children[i]);
116                     if (!dirEmpty)
117                         return false;
118                 }
119             }
120             return true;
121         } else {
122             return false;
123         }
124     }
125 }
126
Popular Tags