1 16 package org.outerj.daisy.backupTool; 17 18 import java.io.File ; 19 import java.util.ArrayList ; 20 import java.util.Arrays ; 21 import java.util.List ; 22 23 public class FileBackupEntry extends AbstractBackupEntry { 24 25 protected List filesToBackup; 26 27 protected File baseDirectory; 28 29 private File tempDir; 30 31 public FileBackupEntry(File fileToBackup, File backupFile, File baseDirectory, BackupInstance buInstance) throws Exception { 32 super(backupFile, buInstance); 33 filesToBackup = new ArrayList (); 34 this.baseDirectory = baseDirectory; 35 addFileToBackup(fileToBackup); 36 } 37 38 public FileBackupEntry(File backupFile, File baseDirectory, BackupInstance buInstance) { 39 super(backupFile, buInstance); 40 filesToBackup = new ArrayList (); 41 this.baseDirectory = baseDirectory; 42 } 43 44 public FileBackupEntry(File backupFile, File [] filesToBackup, File 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 { 51 for (int i = 0; i < filesToBackup.size(); i++) { 52 File tobackup = getFileToBackup(i); 53 String pathSuffix = tobackup.getPath().substring(baseDirectory.getPath().length()); 54 55 File from = getFileToBackup(i); 56 File to = new File (tempDir, pathSuffix); 57 try { 58 BackupHelper.copyFile(from, to); 59 } catch (Exception e) { 60 throw new Exception ("Error copying file from " + from.getAbsolutePath() + " to " + to.getAbsolutePath()); 61 } 62 } 63 } 64 65 protected File getTempPath() { 66 return tempDir; 67 } 68 69 public void backupInit() throws Exception { 70 tempDir = new File (buInstance.getDirectory(), this.backupFile.getName() + "-tmp"); 71 tempDir.mkdir(); 72 } 73 74 public void restore() throws Exception { 75 for (int i = 0; i < filesToBackup.size(); i++) 76 BackupHelper.deleteFile(getFileToBackup(i), true); 77 78 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 file) { 89 filesToBackup.add(file); 90 } 91 92 public void removeFileFromBackup(File file) { 93 filesToBackup.remove(file); 94 } 95 96 public void clearFilesFromBackup() { 97 filesToBackup.clear(); 98 } 99 100 public File getFileToBackup(int index) { 101 return (File ) filesToBackup.get(index); 102 } 103 104 protected boolean isNothing() { 105 return isEmpty(tempDir); 106 } 107 108 private boolean isEmpty(File file) { 109 if (file.isDirectory()) { 110 File [] 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 |