| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2006 IBM Corporation and others. |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // which accompanies this distribution, and is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // Contributors: |
| // IBM Corporation - initial implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.library.ui.wizards; |
| |
| import java.io.File; |
| |
| import org.eclipse.epf.common.serviceability.MsgBox; |
| import org.eclipse.epf.library.edit.ui.UserInteractionHelper; |
| import org.eclipse.epf.library.layout.LayoutResources; |
| import org.eclipse.epf.library.services.SafeUpdateController; |
| import org.eclipse.epf.library.ui.LibraryUIResources; |
| import org.eclipse.epf.library.ui.dialogs.LibraryBackupDialog; |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.swt.widgets.Shell; |
| |
| /** |
| * Utility class to back up library. |
| * |
| * @author Jinhua Xi |
| * @since 1.0 |
| */ |
| public class LibraryBackupUtil { |
| |
| private String path = null; |
| |
| /** |
| * Prompts to backup library |
| * |
| * @param shell |
| * @param libPath |
| */ |
| public static void promptBackupLibrary(Shell shell, File libPath) { |
| new LibraryBackupUtil().doBackup(shell, libPath); |
| } |
| |
| private void doBackup(final Shell shell, final File libPath) { |
| path = null; |
| |
| SafeUpdateController.syncExec(new Runnable() { |
| public void run() { |
| Shell s = shell; |
| if (s == null) { |
| s = MsgBox.getDefaultShell(); |
| } |
| |
| if (s == null) { |
| s = new Shell(MsgBox.getDisplay()); |
| } |
| |
| String title = LibraryUIResources.backupLibraryDialog_title; |
| String message = LibraryUIResources.backupLibraryDialog_text; |
| String backupPath = libPath.getAbsolutePath() + ".backup"; //$NON-NLS-1$ |
| |
| LibraryBackupDialog dlg = new LibraryBackupDialog(s, title, |
| message, backupPath); |
| |
| if (dlg.open() == Dialog.OK) { |
| path = dlg.getPath(); |
| } |
| } |
| }); |
| |
| if (path != null) { |
| backup(libPath, new File(path)); |
| } |
| |
| } |
| |
| /** |
| * Back up library |
| * |
| * @param source |
| * @param dest |
| */ |
| public static void backup(final File source, final File dest) { |
| Runnable runnable = new Runnable() { |
| public void run() { |
| try { |
| // excude the non-library files that might be locked by rmc. |
| // these files may cause backup to fail due to file lock. |
| String excludes = ".lock"; |
| LayoutResources.copyDir(source, dest, "**", excludes); |
| } catch (RuntimeException e) { |
| e.printStackTrace(); |
| } |
| } |
| }; |
| |
| UserInteractionHelper.runWithProgress(runnable, |
| LibraryUIResources.backingUpLibraryTask_name); |
| } |
| |
| } |