You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/05/01 06:09:09 UTC
[23/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1617] backup
export is improved
[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 <so...@apache.org>
Authored: Wed Mar 29 14:03:28 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
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;