1 /******************************************************************************** 2 * InternetCafe is a software solution that helps the management of Cybercafes 3 * according with the ITALIAN DECREE LAW ON ANTI-TERROR MEASURES, 27 JULY 2005. 4 * Copyright (C) 2006 Guido Angelo Ingenito 5 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 9 * of the License, or (at your option) any later version. 10 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19 *******************************************************************************/ 20 package base.backup; 21 22 import java.io.File; 23 import java.util.Date; 24 25 import org.w3c.dom.Document; 26 import org.w3c.dom.Element; 27 import org.w3c.dom.Node; 28 import org.w3c.dom.NodeList; 29 30 import base.ICXmlTags; 31 32 public class Backup { 33 private final int id; 34 35 private String name; 36 37 private String description; 38 39 private Date date; 40 41 private String dbLocationPath; 42 43 private String zipLocationPath; 44 45 private long size = -1; 46 47 /*** 48 * @param id 49 * The backup's id. 50 * @param name 51 * The backup's name. 52 * @param description 53 * The backup's description. 54 * @param date 55 * The backup's date. 56 * @param dbLocationPath 57 * The backup's database file dbLocationPath. 58 * @param zipLocationPath 59 */ 60 protected Backup(int id, String name, String description, Date date, 61 String dbLocationPath, String zipLocationPath) { 62 this.id = id; 63 this.name = name; 64 this.description = description; 65 this.date = date; 66 this.dbLocationPath = dbLocationPath; 67 this.zipLocationPath = zipLocationPath; 68 } 69 70 public Backup(Document document) { 71 NodeList detailsNodeList = document 72 .getElementsByTagName(ICXmlTags.BACKUP_DETAILS_TAG); 73 Node detailsNode = detailsNodeList.item(0); 74 75 this.id = new Integer(detailsNode.getAttributes().getNamedItem( 76 ICXmlTags.BACKUP_ID_ATTRIBUTE).getNodeValue()); 77 this.name = detailsNode.getAttributes().getNamedItem( 78 ICXmlTags.BACKUP_NAME_ATTRIBUTE).getNodeValue(); 79 this.date = new Date(new Long(detailsNode.getAttributes().getNamedItem( 80 ICXmlTags.BACKUP_DATE_ATTRIBUTE).getNodeValue())); 81 82 for (int i = 0; i < detailsNode.getChildNodes().getLength(); i++) { 83 if (detailsNode.getChildNodes().item(i).getNodeName().equals( 84 ICXmlTags.BACKUP_DB_LOCATION_PATH_TAG)) { 85 this.dbLocationPath = detailsNode.getChildNodes().item(i) 86 .getAttributes().getNamedItem( 87 ICXmlTags.BACKUP_DB_LOCATION_PATH_ATTRIBUTE) 88 .getNodeValue(); 89 } 90 91 if (detailsNode.getChildNodes().item(i).getNodeName().equals( 92 ICXmlTags.BACKUP_DESCRIPTION_TAG)) { 93 this.description = detailsNode.getChildNodes().item(i) 94 .getAttributes().getNamedItem( 95 ICXmlTags.BACKUP_DESCRIPTION_ATTRIBUTE) 96 .getNodeValue(); 97 } 98 } 99 } 100 101 /*** 102 * @return Returns the date. 103 */ 104 public Date getDate() { 105 return date; 106 } 107 108 /*** 109 * @param date 110 * The date to set. 111 */ 112 protected void setDate(Date date) { 113 this.date = date; 114 } 115 116 /*** 117 * @return Returns the description. 118 */ 119 public String getDescription() { 120 return description; 121 } 122 123 /*** 124 * @param description 125 * The description to set. 126 */ 127 protected void setDescription(String description) { 128 this.description = description; 129 } 130 131 /*** 132 * @return Returns the name. 133 */ 134 public String getName() { 135 return name; 136 } 137 138 /*** 139 * @param name 140 * The name to set. 141 */ 142 protected void setName(String name) { 143 this.name = name; 144 } 145 146 /*** 147 * @return Returns the dbLocationPath. 148 */ 149 public String getDbLocationPath() { 150 return dbLocationPath; 151 } 152 153 /*** 154 * @return Returns the id. 155 */ 156 public int getId() { 157 return id; 158 } 159 160 public String getBackupFileName() { 161 return this.getDbLocationPath().substring( 162 this.getDbLocationPath().lastIndexOf("" + File.pathSeparator), 163 this.getDbLocationPath().length()); 164 } 165 166 /*** 167 * @return Returns the zipLocationPath. 168 */ 169 public String getZipLocationPath() { 170 return zipLocationPath; 171 } 172 173 /*** 174 * @param currentBackupLocationPath 175 * The currentBackupLocationPath to set. 176 */ 177 public void setCurrentBackupLocationPath(String currentBackupLocationPath) { 178 this.zipLocationPath = currentBackupLocationPath; 179 } 180 181 public Node toXml(Document document) { 182 Element detailsElement = document 183 .createElement(ICXmlTags.BACKUP_DETAILS_TAG); 184 185 detailsElement.setAttribute(ICXmlTags.BACKUP_ID_ATTRIBUTE, "" 186 + this.getId()); 187 detailsElement.setAttribute(ICXmlTags.BACKUP_NAME_ATTRIBUTE, this 188 .getName()); 189 detailsElement.setAttribute(ICXmlTags.BACKUP_DATE_ATTRIBUTE, "" 190 + this.getDate().getTime()); 191 192 Element originalDestinationPathElement = document 193 .createElement(ICXmlTags.BACKUP_DB_LOCATION_PATH_TAG); 194 195 originalDestinationPathElement.setAttribute( 196 ICXmlTags.BACKUP_DB_LOCATION_PATH_ATTRIBUTE, this 197 .getDbLocationPath()); 198 detailsElement.appendChild(originalDestinationPathElement); 199 200 Element descriptionElement = document 201 .createElement(ICXmlTags.BACKUP_DESCRIPTION_TAG); 202 203 descriptionElement.setAttribute(ICXmlTags.BACKUP_DESCRIPTION_ATTRIBUTE, 204 this.getDescription()); 205 detailsElement.appendChild(descriptionElement); 206 207 return detailsElement; 208 } 209 210 /*** 211 * @param dbLocationPath 212 * The dbLocationPath to set. 213 */ 214 protected void setDbLocationPath(String dbLocationPath) { 215 this.dbLocationPath = dbLocationPath; 216 } 217 218 /*** 219 * @param zipLocationPath 220 * The zipLocationPath to set. 221 */ 222 protected void setZipLocationPath(String zipLocationPath) { 223 this.zipLocationPath = zipLocationPath; 224 } 225 226 /*** 227 * @return Returns the size. 228 */ 229 public long getSize() { 230 if (getZipLocationPath() == null) { 231 return size = -1; 232 } 233 234 File zipFile = new File(getZipLocationPath()); 235 236 if (!zipFile.exists()) { 237 return size = -1; 238 } 239 240 return (size != -1) ? size : (size = BackupFactory 241 .fileSizeInKB(zipFile)); 242 } 243 }