[OPENMEETINGS-1617] backup export is improved
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/d532ba9a Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/d532ba9a Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/d532ba9a Branch: refs/heads/3.2.x Commit: d532ba9aed1fb5b44a549630a0b7c01d36eaa53b Parents: 0d93bd2 Author: Maxim Solodovnik <[email protected]> Authored: Wed Mar 29 14:03:28 2017 +0000 Committer: Maxim Solodovnik <[email protected]> Committed: Wed Mar 29 14:03:28 2017 +0000 ---------------------------------------------------------------------- .../openmeetings/backup/BackupExport.java | 557 +++++++++---------- .../java/org/apache/openmeetings/cli/Admin.java | 2 +- .../web/admin/backup/BackupPanel.java | 12 +- 3 files changed, 268 insertions(+), 303 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d532ba9a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java index 53eb680..7522528 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java @@ -25,6 +25,7 @@ import static org.apache.openmeetings.util.OmFileHelper.BCKP_ROOM_FILES; import static org.apache.openmeetings.util.OmFileHelper.IMPORT_DIR; import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -81,13 +82,13 @@ import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; /** - * + * * @author sebastianwagner - * + * */ public class BackupExport { private static final Logger log = Red5LoggerFactory.getLogger(BackupExport.class, webAppRootKey); - private static final String BACKUP_COMMENT = + private static final String BACKUP_COMMENT = "###############################################\n" + "This File is auto-generated by the Backup Tool \n" + "you should use the BackupPanel to modify or change this file \n" @@ -131,315 +132,297 @@ public class BackupExport { @Autowired private RoomGroupDao roomGroupDao; - public void performExport(File filePath, File backup_dir, boolean includeFiles, ProgressHolder progressHolder) throws Exception { - if (!backup_dir.exists()) { - backup_dir.mkdirs(); - } - Serializer simpleSerializer = new Persister(); - - progressHolder.setProgress(0); - /* - * ##################### Backup Groups - */ - writeList(simpleSerializer, backup_dir, "organizations.xml", "organisations", groupDao.get(0, Integer.MAX_VALUE)); - progressHolder.setProgress(5); - /* - * ##################### Backup Users - */ - exportUsers(backup_dir, userDao.getAllBackupUsers()); - progressHolder.setProgress(10); - - /* - * ##################### Backup Room - */ - { - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - registry.bind(User.class, UserConverter.class); - registry.bind(Room.Type.class, RoomTypeConverter.class); - - writeList(serializer, backup_dir, "rooms.xml", "rooms", roomDao.get()); - progressHolder.setProgress(15); + public void performExport(File zip, boolean includeFiles, ProgressHolder progressHolder) throws Exception { + if (!zip.getParentFile().exists()) { + zip.getParentFile().mkdirs(); } + try (FileOutputStream fos = new FileOutputStream(zip); ZipOutputStream zos = new ZipOutputStream(fos)) { - /* - * ##################### Backup Room Groups - */ - { - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - registry.bind(Group.class, GroupConverter.class); - registry.bind(Room.class, RoomConverter.class); - - writeList(serializer, backup_dir, "rooms_organisation.xml", "room_organisations", roomGroupDao.get()); - progressHolder.setProgress(17); - } + Serializer ser = new Persister(); - /* - * ##################### Backup Calendars - */ - { - List<OmCalendar> list = calendarDao.get(); - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - registry.bind(User.class, UserConverter.class); - - writeList(serializer, backup_dir, "calendars.xml", "calendars", list); - progressHolder.setProgress(22); - } - /* - * ##################### Backup Appointments - */ - { - List<Appointment> list = appointmentDao.get(); - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - registry.bind(User.class, UserConverter.class); - registry.bind(Appointment.Reminder.class, AppointmentReminderTypeConverter.class); - registry.bind(Room.class, RoomConverter.class); - if (list != null && !list.isEmpty()) { - for (Appointment a : list) { - if (a.getStart() != null) { - registry.bind(a.getStart().getClass(), DateConverter.class); - break; - } else if (a.getInserted() != null) { - registry.bind(a.getInserted().getClass(), DateConverter.class); - break; - } - } + progressHolder.setProgress(0); + /* + * ##################### Backup Groups + */ + writeList(ser, zos, "organizations.xml", "organisations", groupDao.get(0, Integer.MAX_VALUE)); + progressHolder.setProgress(5); + /* + * ##################### Backup Users + */ + exportUsers(zos, userDao.getAllBackupUsers()); + progressHolder.setProgress(10); + + /* + * ##################### Backup Room + */ + { + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + registry.bind(User.class, UserConverter.class); + registry.bind(Room.Type.class, RoomTypeConverter.class); + + writeList(serializer, zos, "rooms.xml", "rooms", roomDao.get()); + progressHolder.setProgress(15); } - writeList(serializer, backup_dir, "appointements.xml", "appointments", list); - progressHolder.setProgress(25); - } + /* + * ##################### Backup Room Groups + */ + { + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); - /* - * ##################### Backup Meeting Members - */ - { - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - registry.bind(User.class, UserConverter.class); - registry.bind(Appointment.class, AppointmentConverter.class); - - writeList(serializer, backup_dir, "meetingmembers.xml", - "meetingmembers", meetingMemberDao.getMeetingMembers()); - progressHolder.setProgress(30); - } + registry.bind(Group.class, GroupConverter.class); + registry.bind(Room.class, RoomConverter.class); - /* - * ##################### LDAP Configs - */ - List<LdapConfig> ldapList = ldapConfigDao.get(); - if (!ldapList.isEmpty()) { - ldapList.remove(0); - } - writeList(simpleSerializer, backup_dir, "ldapconfigs.xml", "ldapconfigs", ldapList); - progressHolder.setProgress(35); - - /* - * ##################### Cluster servers - */ - writeList(simpleSerializer, backup_dir, "servers.xml", "servers", serverDao.get(0, Integer.MAX_VALUE)); - progressHolder.setProgress(40); - - /* - * ##################### OAuth2 servers - */ - writeList(simpleSerializer, backup_dir, "oauth2servers.xml", "oauth2servers", auth2Dao.get(0, Integer.MAX_VALUE)); - progressHolder.setProgress(45); - - /* - * ##################### Private Messages - */ - { - List<PrivateMessage> list = privateMessageDao.get(0, Integer.MAX_VALUE); - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - registry.bind(User.class, UserConverter.class); - registry.bind(Room.class, RoomConverter.class); - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); + writeList(serializer, zos, "rooms_organisation.xml", "room_organisations", roomGroupDao.get()); + progressHolder.setProgress(17); } - - writeList(serializer, backup_dir, "privateMessages.xml", - "privatemessages", list); - progressHolder.setProgress(50); - } - /* - * ##################### Private Message Folders - */ - writeList(simpleSerializer, backup_dir, "privateMessageFolder.xml", - "privatemessagefolders", privateMessageFolderDao.get(0, Integer.MAX_VALUE)); - progressHolder.setProgress(55); - - /* - * ##################### User Contacts - */ - { - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - registry.bind(User.class, UserConverter.class); - - writeList(serializer, backup_dir, "userContacts.xml", - "usercontacts", userContactDao.get()); - progressHolder.setProgress(60); - } + /* + * ##################### Backup Calendars + */ + { + List<OmCalendar> list = calendarDao.get(); + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + registry.bind(User.class, UserConverter.class); + + writeList(serializer, zos, "calendars.xml", "calendars", list); + progressHolder.setProgress(22); + } + /* + * ##################### Backup Appointments + */ + { + List<Appointment> list = appointmentDao.get(); + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + registry.bind(User.class, UserConverter.class); + registry.bind(Appointment.Reminder.class, AppointmentReminderTypeConverter.class); + registry.bind(Room.class, RoomConverter.class); + if (list != null && !list.isEmpty()) { + for (Appointment a : list) { + if (a.getStart() != null) { + registry.bind(a.getStart().getClass(), DateConverter.class); + break; + } else if (a.getInserted() != null) { + registry.bind(a.getInserted().getClass(), DateConverter.class); + break; + } + } + } - /* - * ##################### File-Explorer - */ - { - List<FileExplorerItem> list = fileExplorerItemDao.get(); - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); + writeList(serializer, zos, "appointements.xml", "appointments", list); + progressHolder.setProgress(25); } - - writeList(serializer, backup_dir, "fileExplorerItems.xml", - "fileExplorerItems", list); - progressHolder.setProgress(65); - } - /* - * ##################### Recordings - */ - { - List<Recording> list = recordingDao.get(); - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); + /* + * ##################### Backup Meeting Members + */ + { + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + registry.bind(User.class, UserConverter.class); + registry.bind(Appointment.class, AppointmentConverter.class); + + writeList(serializer, zos, "meetingmembers.xml", + "meetingmembers", meetingMemberDao.getMeetingMembers()); + progressHolder.setProgress(30); } - - writeList(serializer, backup_dir, "flvRecordings.xml", "flvrecordings", list); - progressHolder.setProgress(70); - } - /* - * ##################### Polls - */ - { - List<RoomPoll> list = pollManager.get(); - Registry registry = new Registry(); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - registry.bind(User.class, UserConverter.class); - registry.bind(Room.class, RoomConverter.class); - registry.bind(RoomPoll.Type.class, PollTypeConverter.class); - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getCreated().getClass(), DateConverter.class); + /* + * ##################### LDAP Configs + */ + List<LdapConfig> ldapList = ldapConfigDao.get(); + if (!ldapList.isEmpty()) { + ldapList.remove(0); } - - writeList(serializer, backup_dir, "roompolls.xml", "roompolls", list); - progressHolder.setProgress(75); - } + writeList(ser, zos, "ldapconfigs.xml", "ldapconfigs", ldapList); + progressHolder.setProgress(35); + + /* + * ##################### Cluster servers + */ + writeList(ser, zos, "servers.xml", "servers", serverDao.get(0, Integer.MAX_VALUE)); + progressHolder.setProgress(40); + + /* + * ##################### OAuth2 servers + */ + writeList(ser, zos, "oauth2servers.xml", "oauth2servers", auth2Dao.get(0, Integer.MAX_VALUE)); + progressHolder.setProgress(45); + + /* + * ##################### Private Messages + */ + { + List<PrivateMessage> list = privateMessageDao.get(0, Integer.MAX_VALUE); + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + registry.bind(User.class, UserConverter.class); + registry.bind(Room.class, RoomConverter.class); + if (list != null && !list.isEmpty()) { + registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); + } - /* - * ##################### Config - */ - { - List<Configuration> list = configurationDao.getConfigurations(0, Integer.MAX_VALUE, "c.id", true); - Registry registry = new Registry(); - registry.bind(User.class, UserConverter.class); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); + writeList(serializer, zos, "privateMessages.xml", + "privatemessages", list); + progressHolder.setProgress(50); } - - writeList(serializer, backup_dir, "configs.xml", "configs", list); - progressHolder.setProgress(80); - } - - /* - * ##################### Chat - */ - { - List<ChatMessage> list = chatDao.get(0, Integer.MAX_VALUE); - Registry registry = new Registry(); - registry.bind(User.class, UserConverter.class); - registry.bind(Room.class, RoomConverter.class); - Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); - - if (list != null && !list.isEmpty()) { - registry.bind(list.get(0).getSent().getClass(), DateConverter.class); + + /* + * ##################### Private Message Folders + */ + writeList(ser, zos, "privateMessageFolder.xml", + "privatemessagefolders", privateMessageFolderDao.get(0, Integer.MAX_VALUE)); + progressHolder.setProgress(55); + + /* + * ##################### User Contacts + */ + { + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + registry.bind(User.class, UserConverter.class); + + writeList(serializer, zos, "userContacts.xml", "usercontacts", userContactDao.get()); + progressHolder.setProgress(60); } - - writeList(serializer, backup_dir, "chat_messages.xml", "chat_messages", list); - progressHolder.setProgress(85); - } - if (includeFiles) { + /* - * ##################### Backup Room Files + * ##################### File-Explorer */ - File targetRootDir = new File(backup_dir, BCKP_ROOM_FILES); + { + List<FileExplorerItem> list = fileExplorerItemDao.get(); + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + if (list != null && !list.isEmpty()) { + registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); + } - if (!targetRootDir.exists()) { - targetRootDir.mkdir(); + writeList(serializer, zos, "fileExplorerItems.xml", "fileExplorerItems", list); + progressHolder.setProgress(65); } - File sourceDir = OmFileHelper.getUploadDir(); + /* + * ##################### Recordings + */ + { + List<Recording> list = recordingDao.get(); + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + if (list != null && !list.isEmpty()) { + registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); + } - File[] files = sourceDir.listFiles(); - for (File file : files) { - if (file.isDirectory()) { - String fName = file.getName(); - if (!IMPORT_DIR.equals(fName) && !BACKUP_DIR.equals(fName)) { - log.debug("### " + file.getName()); + writeList(serializer, zos, "flvRecordings.xml", "flvrecordings", list); + progressHolder.setProgress(70); + } - FileUtils.copyDirectory(file, new File(targetRootDir, file.getName())); - } + /* + * ##################### Polls + */ + { + List<RoomPoll> list = pollManager.get(); + Registry registry = new Registry(); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + registry.bind(User.class, UserConverter.class); + registry.bind(Room.class, RoomConverter.class); + registry.bind(RoomPoll.Type.class, PollTypeConverter.class); + if (list != null && !list.isEmpty()) { + registry.bind(list.get(0).getCreated().getClass(), DateConverter.class); } + + writeList(serializer, zos, "roompolls.xml", "roompolls", list); + progressHolder.setProgress(75); } /* - * ##################### Backup Recording Files + * ##################### Config */ - File targetDirRec = new File(backup_dir, BCKP_RECORD_FILES); + { + List<Configuration> list = configurationDao.getConfigurations(0, Integer.MAX_VALUE, "c.id", true); + Registry registry = new Registry(); + registry.bind(User.class, UserConverter.class); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + if (list != null && !list.isEmpty()) { + registry.bind(list.get(0).getInserted().getClass(), DateConverter.class); + } - if (!targetDirRec.exists()) { - targetDirRec.mkdir(); + writeList(serializer, zos, "configs.xml", "configs", list); + progressHolder.setProgress(80); } - File sourceDirRec = OmFileHelper.getStreamsHibernateDir(); + /* + * ##################### Chat + */ + { + List<ChatMessage> list = chatDao.get(0, Integer.MAX_VALUE); + Registry registry = new Registry(); + registry.bind(User.class, UserConverter.class); + registry.bind(Room.class, RoomConverter.class); + Strategy strategy = new RegistryStrategy(registry); + Serializer serializer = new Persister(strategy); + + if (list != null && !list.isEmpty()) { + registry.bind(list.get(0).getSent().getClass(), DateConverter.class); + } - FileUtils.copyDirectory(sourceDirRec, targetDirRec); - progressHolder.setProgress(90); - } + writeList(serializer, zos, "chat_messages.xml", "chat_messages", list); + progressHolder.setProgress(85); + } + if (includeFiles) { + //##################### Backup Room Files + for (File file : OmFileHelper.getUploadDir().listFiles()) { + if (file.isDirectory()) { + String fName = file.getName(); + if (!IMPORT_DIR.equals(fName) && !BACKUP_DIR.equals(fName)) { + log.debug("### " + file.getName()); + writeZipDir(BCKP_ROOM_FILES, file.getParentFile().toURI(), file, zos); + } + } + } - writeZipDir(backup_dir, filePath); + //##################### Backup Recording Files + File recDir = OmFileHelper.getStreamsHibernateDir(); + writeZipDir(BCKP_RECORD_FILES, recDir.toURI(), recDir, zos); + progressHolder.setProgress(90); + } + } progressHolder.setProgress(100); log.debug("---Done"); } - - private static <T> void writeList(Serializer ser, File backup_dir, String fileName, String listElement, List<T> list) throws Exception { - FileOutputStream fos = new FileOutputStream(new File(backup_dir, fileName)); - writeList(ser, fos, listElement, list); + + private static <T> void writeList(Serializer ser, ZipOutputStream zos, String fileName, String listElement, List<T> list) throws Exception { + ZipEntry e = new ZipEntry(fileName); + zos.putNextEntry(e); + ByteArrayOutputStream baos = new ByteArrayOutputStream(10 * 1024); //10K + writeList(ser, baos, listElement, list); + zos.write(baos.toByteArray()); + zos.closeEntry(); } - + private static <T> void writeList(Serializer ser, OutputStream os, String listElement, List<T> list) throws Exception { Format format = new Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); OutputNode doc = NodeBuilder.write(new OutputStreamWriter(os, UTF_8), format); @@ -459,15 +442,10 @@ public class BackupExport { root.commit(); } - public void exportUsers(File backup_dir, List<User> list) throws Exception { - FileOutputStream fos = new FileOutputStream(new File(backup_dir, "users.xml")); - exportUsers(fos, list); - } - - public void exportUsers(OutputStream os, List<User> list) throws Exception { + public void exportUsers(ZipOutputStream zos, List<User> list) throws Exception { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); - Serializer serializer = new Persister(strategy); + Serializer ser = new Persister(strategy); registry.bind(Group.class, GroupConverter.class); registry.bind(Salutation.class, SalutationConverter.class); @@ -475,25 +453,16 @@ public class BackupExport { Class<?> dateClass = list.get(0).getRegdate() != null ? list.get(0).getRegdate().getClass() : list.get(0).getInserted().getClass(); registry.bind(dateClass, DateConverter.class); } - - writeList(serializer, os, "users", list); - } - private void writeZipDir(File directoryToZip, File zipFile) throws IOException { - try (FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos)) { - writeZipDir(directoryToZip.toURI(), directoryToZip, zos, zipFile); - } + writeList(ser, zos, "users.xml", "users", list); } - - private void writeZipDir(URI base, File dir, ZipOutputStream zos, File zipFile) throws IOException { + + private void writeZipDir(String prefix, URI base, File dir, ZipOutputStream zos) throws IOException { for (File file : dir.listFiles()) { - if (zipFile.equals(file)) { - continue; - } if (file.isDirectory()) { - writeZipDir(base, file, zos, zipFile); + writeZipDir(prefix, base, file, zos); } else { - String path = base.relativize(file.toURI()).toString(); + String path = prefix + "/" + base.relativize(file.toURI()).toString(); log.debug("Writing '" + path + "' to zip file"); ZipEntry zipEntry = new ZipEntry(path); zos.putNextEntry(zipEntry); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d532ba9a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java index f5375ea..2162223 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java @@ -295,7 +295,7 @@ public class Admin { backup_dir.mkdirs(); BackupExport export = getApplicationContext().getBean(BackupExport.class); - export.performExport(f, backup_dir, includeFiles, new ProgressHolder()); + export.performExport(f, includeFiles, new ProgressHolder()); FileUtils.deleteDirectory(backup_dir); backup_dir.delete(); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d532ba9a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java index 74020d9..f804ba6 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java @@ -114,16 +114,14 @@ public class BackupPanel extends AdminPanel { @Override protected void onSubmit(AjaxRequestTarget target) { - File workingDir = OmFileHelper.getUploadBackupDir(); String dateString = "backup_" + CalendarPatterns.getTimeForStreamId(new Date()); - File backupDir = new File(workingDir, dateString); - backupFile = new File(backupDir, dateString + ".zip"); + backupFile = new File(OmFileHelper.getUploadBackupDir(), dateString + ".zip"); th = null; started = true; progressHolder = new ProgressHolder(); timer.restart(target); - new Thread(new BackupProcess(getBean(BackupExport.class), backupDir, includeFilesInBackup.getObject()) + new Thread(new BackupProcess(getBean(BackupExport.class), includeFilesInBackup.getObject()) , "Openmeetings - " + dateString).start(); // repaint the feedback panel so that it is hidden @@ -209,12 +207,10 @@ public class BackupPanel extends AdminPanel { private class BackupProcess implements Runnable { private BackupExport backup; - private File backupDir; private boolean includeFiles; - public BackupProcess(BackupExport backup, File backupDir, boolean includeFiles) { + public BackupProcess(BackupExport backup, boolean includeFiles) { this.backup = backup; - this.backupDir = backupDir; this.includeFiles = includeFiles; th = null; } @@ -222,7 +218,7 @@ public class BackupPanel extends AdminPanel { @Override public void run() { try { - backup.performExport(backupFile, backupDir, includeFiles, progressHolder); + backup.performExport(backupFile, includeFiles, progressHolder); } catch (Exception e) { log.error("Exception on panel backup download ", e); th = e;
