From 39f5b4e54a6c74d8779d1bc191c24fe233c0061d Mon Sep 17 00:00:00 2001 From: donghee yang Date: Tue, 20 Nov 2012 10:47:04 +0900 Subject: [PATCH] [Title] Enabled "Cancel" button when using Package Manger --- .../nativeplatform/pkgmgr/RPMPackageCommander.java | 243 +++++++-------------- .../pkgmgr/RPMPackageCommands.properties | 8 +- .../nativeplatform/pkgmgr/ui/BuildSystemTab.java | 29 ++- .../tizen/nativeplatform/pkgmgr/ui/DeviceTab.java | 1 + .../nativeplatform/pkgmgr/ui/RPMPackageDialog.java | 5 +- .../nativeplatform/views/ui/RootstrapView.java | 8 +- 6 files changed, 106 insertions(+), 188 deletions(-) diff --git a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/RPMPackageCommander.java b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/RPMPackageCommander.java index ad84cc9..56aba99 100644 --- a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/RPMPackageCommander.java +++ b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/RPMPackageCommander.java @@ -42,6 +42,7 @@ import javax.xml.parsers.ParserConfigurationException; import java.util.Enumeration; +import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.console.MessageConsoleStream; import org.tizen.common.ui.view.console.ConsoleManager; import org.tizen.common.util.FileUtil; @@ -71,47 +72,41 @@ public class RPMPackageCommander { http_proxy = proxy; } - public static void DistUpgradeRootstrap(String path) { + + public static void DistUpgradeRootstrap(String path, + IProgressMonitor monitor ) throws InterruptedException { actionBeforeUseZypper(path); String command = getChrootedCommand(path, String.format("%s;%s;%s", getProxyCmd(), getResetDbCmd(), getDistUpgradeCmd())); - try { - CommandLauncher.executeSudo(command, null, "Platform Internal", null); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + CommandLauncher.executeSudo(command, null, "Platform Internal", monitor); } - public static void InstallLocalPkgToRootstrap(ArrayList fileList, String path) { + public static void InstallLocalPkgToRootstrap(ArrayList fileList, + String path, IProgressMonitor monitor) throws InterruptedException { + actionBeforeUseZypper(path); - try { - // copy - ArrayList fileListOnRootstrap = new ArrayList(); - for (String filePath : fileList) { - String filename = new File(filePath).getName(); - String pathOnRootstrap = "/tmp/" + filename; - try { - FileUtil.copyTo(filePath, path + pathOnRootstrap); - } catch (IOException e) { - //do nothing - } - fileListOnRootstrap.add(pathOnRootstrap); - } + // copy + ArrayList fileListOnRootstrap = new ArrayList(); + for (String filePath : fileList) { + String filename = new File(filePath).getName(); + String pathOnRootstrap = "/tmp/" + filename; + try { + FileUtil.copyTo(filePath, path + pathOnRootstrap); + } catch (IOException e) { + //do nothing + } + fileListOnRootstrap.add(pathOnRootstrap); + } - // install - String cmd = String.format("%s;%s", getResetDbCmd(), getInstallLocalPkgCmd(fileListOnRootstrap)); - String command = getChrootedCommand(path, cmd); - CommandLauncher.executeSudo(command, null, "Platform Internal", null); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + // install + String cmd = String.format("%s;%s", getResetDbCmd(), getInstallLocalPkgCmd(fileListOnRootstrap)); + String command = getChrootedCommand(path, cmd); + CommandLauncher.executeSudo(command, null, "Platform Internal", monitor); } @@ -194,17 +189,13 @@ public class RPMPackageCommander { return doc; } - public static void uninstallPkgFromRootstrap(CopyOnWriteArrayList pkgList, String path) { + public static void uninstallPkgFromRootstrap(CopyOnWriteArrayList pkgList, + String path, IProgressMonitor monitor) throws InterruptedException { String cmd = String.format("%s;%s", getResetDbCmd(), getUninstallPkgCmd(pkgList)); String command = getChrootedCommand(path, cmd); - try { - CommandLauncher.executeSudo(command, null, "Platform Internal", null); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + CommandLauncher.executeSudo(command, null, "Platform Internal", monitor); } @@ -379,62 +370,60 @@ public class RPMPackageCommander { } - public static ArrayList getPackageListForRootstrap(String path) { + public static ArrayList getPackageListForRootstrap(String path, + IProgressMonitor monitor ) throws InterruptedException { + ArrayList packageList = new ArrayList(); Hashtable packageHash = new Hashtable(); - try { - // get list using zypper - String cmd = String.format("%s;%s;%s", getProxyCmd(), getResetDbCmd(), getRemotePkgListCmd()); - String command = getChrootedCommand(path, cmd); - String result = CommandLauncher.executeSudoOutput(command); - String[] splitStr = result.split("\n"); - for (String s : splitStr ) { - s = s.replaceAll(" ", ""); - String[] part = s.split("\\|"); - if ( part.length == 5 && !part[0].equals("S")) { - String name = part[2]; - String version = part[3]; - String arch = part[4]; - if ( part[0].equals("i") ) { - packageHash.put(name, new Package(name,version,version,arch) ); - } - else if ( part[0].equals("v") ) { - Package p = packageHash.get(name); - if ( version.compareTo( p.getNewVersion() ) > 0 ) { - p.setNewVersion(version); - } - } - else { - packageHash.put(name, new Package(name,"",version,arch) ); + // get list using zypper + String cmd = String.format("%s;%s;%s", getProxyCmd(), getResetDbCmd(), getRemotePkgListCmd()); + String command = getChrootedCommand(path, cmd); + String result = CommandLauncher.executeSudoOutput(command, null, false, monitor); + String[] splitStr = result.split("\n"); + for (String s : splitStr ) { + s = s.replaceAll(" ", ""); + String[] part = s.split("\\|"); + if ( part.length == 5 && !part[0].equals("S")) { + String name = part[2]; + String version = part[3]; + String arch = part[4]; + if ( part[0].equals("i") ) { + packageHash.put(name, new Package(name,version,version,arch) ); + } + else if ( part[0].equals("v") ) { + Package p = packageHash.get(name); + if ( version.compareTo( p.getNewVersion() ) > 0 ) { + p.setNewVersion(version); } } + else { + packageHash.put(name, new Package(name,"",version,arch) ); + } } + } - // get installed packages using rpm - cmd = String.format("%s;%s", getResetDbCmd(), getInstalledPkgListCmd()); - command = getChrootedCommand(path, cmd); - result = CommandLauncher.executeSudoOutput(command); - splitStr = result.split("\n"); - for (String s : splitStr) { - s = s.replaceAll(" ", "").trim(); - String[] part = s.split(","); - if ( part.length == 3 ) { - String name = part[0]; - String version = part[1]; - String arch = part[2]; - Package pkg = packageHash.get(name); - if ( pkg == null ) { - packageHash.put(name, new Package(name,version,"",arch)); - } - else { - pkg.setInstalledVersion(version); - } + // get installed packages using rpm + cmd = String.format("%s;%s", getResetDbCmd(), getInstalledPkgListCmd()); + command = getChrootedCommand(path, cmd); + result = CommandLauncher.executeSudoOutput(command); + splitStr = result.split("\n"); + for (String s : splitStr) { + s = s.replaceAll(" ", "").trim(); + String[] part = s.split(","); + if ( part.length == 3 ) { + String name = part[0]; + String version = part[1]; + String arch = part[2]; + Package pkg = packageHash.get(name); + if ( pkg == null ) { + packageHash.put(name, new Package(name,version,"",arch)); + } + else { + pkg.setInstalledVersion(version); } } - } catch (Exception e) { - // do nothing - } + } Enumeration e = packageHash.elements(); while(e.hasMoreElements()) { @@ -515,84 +504,6 @@ public class RPMPackageCommander { } - public static String getRemotePackageListForRootstrap(String path) { - - String result = ""; - String cmd = String.format("%s;%s;%s", getProxyCmd(), getResetDbCmd(), getRemotePkgListCmd()); - String command = getChrootedCommand(path, cmd); - - try { - result = CommandLauncher.executeSudoOutput(command); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return result; - } - - public static String getInstalledPackageListForRootstrap(String path) { - String result = ""; - String cmd = String.format("%s;%s;%s", getProxyCmd(), getResetDbCmd(), getInstalledPkgListCmd()); - String command = getChrootedCommand(path, cmd); - - try { - result = CommandLauncher.executeSudoOutput(command); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return result; - } - - public static String getRemotePackageListForDevice(IDevice device, PackageManagerOuputReceiver rec) { - - String result = ""; - - try { - String command = String.format("%s;%s;%s", getProxyCmd(), getResetDbCmd(), getRemotePkgListCmd()); - rec.cleanLog(); - device.executeShellCommand(command, rec, MAX_TIMEOUT); - } catch (Exception e) { - e.printStackTrace(); - } - - for (String l : rec.getLog()) { - result = result.concat(l + "\n"); - } - - return result; - } - - - // return (name -> url) hash table - public static Hashtable getRepositoryListForRootstrap(String path) { - Hashtable reposHash = new Hashtable(); - String cmd = String.format("%s;%s", getResetDbCmd(), getRepoListCmd()); - String command = getChrootedCommand(path, cmd); - - try { - String result = CommandLauncher.executeSudoOutput(command); - String[] splitStr = result.split("\n"); - - // url list starts at 3 line - for (String reposStr: splitStr) { - reposStr = reposStr.replaceAll(" ", ""); - String[] part = reposStr.split("\\|"); - if ( part.length == 6 && !part[0].equals("#") ) { - reposHash.put(part[1], part[5]); - } - } - - } catch (Exception e) { - // do nothing - } - - return reposHash; - } - - public static void resetRepositoryForRootstrap(String path) { String cmd = String.format("%s", getRepoResetCmd()); String command = getChrootedCommand(path, cmd); @@ -645,6 +556,7 @@ public class RPMPackageCommander { return result; } + public static void refreshRepositoryForDevice(IDevice device) { try { PackageManagerOuputReceiver rec = getNewOuputReceiver(); @@ -720,18 +632,15 @@ public class RPMPackageCommander { - public static void installRemotePkgForRootstrap(CopyOnWriteArrayList selectedList, String path) { + public static void installRemotePkgForRootstrap(CopyOnWriteArrayList selectedList, + String path, IProgressMonitor monitor ) throws InterruptedException { actionBeforeUseZypper(path); String cmd = String.format("%s;%s;%s", getProxyCmd(), getResetDbCmd(), getInstallPkgCmd(selectedList)); String command = getChrootedCommand(path, cmd); - try { - CommandLauncher.executeSudo(command, null, "Platform Internal", null); - } catch (Exception e) { - e.printStackTrace(); - } + CommandLauncher.executeSudo(command, null, "Platform Internal", monitor); } diff --git a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/RPMPackageCommands.properties b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/RPMPackageCommands.properties index 0844526..b57d0b7 100644 --- a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/RPMPackageCommands.properties +++ b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/RPMPackageCommands.properties @@ -5,12 +5,12 @@ Command.Install.Local.Pkg = zypper --non-interactive in --force %s Command.Install.Local.Pkg.RPM = rpm -ihv %s --ignoreos --force Command.Uninstall.Pkg.NoDeps = rpm -e %s --nodeps Command.Uninstall.Pkg = zypper --non-interactive remove %s -Command.Remove.Repo = zypper rr %s -Command.Add.Repo = zypper ar %s %s -Command.Refresh.Repo = zypper refresh +Command.Remove.Repo = zypper --non-interactive rr %s +Command.Add.Repo = zypper --non-interactive ar %s %s +Command.Refresh.Repo = zypper --non-interactive refresh Command.List.Repo = zypper lr -u Command.Reset.Repo = rm -rf /etc/zypp/repos.d/* -Command.List.Remote.Pkg = zypper pa +Command.List.Remote.Pkg = zypper --non-interactive pa Command.List.Installed.Pkg = rpm -qa --qf \\\"%{NAME},%{VERSION}-%{RELEASE},%{ARCH}\\n\\\" Command.List.Installed.Pkg.Device = rpm -qa --qf \"%{NAME},%{VERSION}-%{RELEASE},%{ARCH}\\n\" Command.Show.Pkg = rpm -qa %s diff --git a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/BuildSystemTab.java b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/BuildSystemTab.java index 330b2d7..f182d00 100644 --- a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/BuildSystemTab.java +++ b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/BuildSystemTab.java @@ -57,11 +57,13 @@ public class BuildSystemTab extends CommonTab { } - public static void initializePackageInfo(PlatformRootstrap rootstrap) { + public static void initializePackageInfo(PlatformRootstrap rootstrap, + IProgressMonitor monitor ) throws InterruptedException { + String rootstrapPath = SmartBuildInterface.getInstance().getPlatformRootstrapPath(rootstrap.getPath().toOSString()); PackageProvider.INSTANCE.getBuildsystemPkgs().clear(); PackageProvider.INSTANCE.getBuildsystemPkgs() - .addAll(RPMPackageCommander.getPackageListForRootstrap(rootstrapPath)); + .addAll(RPMPackageCommander.getPackageListForRootstrap(rootstrapPath, monitor)); } @@ -137,13 +139,13 @@ public class BuildSystemTab extends CommonTab { ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell); try { - dialog.run(true, false, new IRunnableWithProgress() { + dialog.run(true, true, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask(resources.getString("PkgMgr.Message.Upgrade"), -1); - RPMPackageCommander.DistUpgradeRootstrap(rootstrapPath); + RPMPackageCommander.DistUpgradeRootstrap(rootstrapPath, monitor); monitor.done(); } }); @@ -166,13 +168,13 @@ public class BuildSystemTab extends CommonTab { ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell); try { - dialog.run(true, false, new IRunnableWithProgress() { + dialog.run(true, true, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask(resources.getString("PkgMgr.Message.Installing.Package"), -1); - RPMPackageCommander.installRemotePkgForRootstrap(selectedList, rootstrapPath); + RPMPackageCommander.installRemotePkgForRootstrap(selectedList, rootstrapPath, monitor); monitor.done(); } }); @@ -189,13 +191,13 @@ public class BuildSystemTab extends CommonTab { ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell); try { - dialog.run(true, false, new IRunnableWithProgress() { + dialog.run(true, true, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask(resources.getString("PkgMgr.Message.Installing.LocalPackage"), -1); - RPMPackageCommander.InstallLocalPkgToRootstrap(selectedFiles, rootstrapPath); + RPMPackageCommander.InstallLocalPkgToRootstrap(selectedFiles, rootstrapPath, monitor); monitor.done(); } }); @@ -217,13 +219,13 @@ public class BuildSystemTab extends CommonTab { ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell); try { - dialog.run(true, false, new IRunnableWithProgress() { + dialog.run(true, true, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask(resources.getString("PkgMgr.Message.Uninstalling.Package"), -1); - RPMPackageCommander.uninstallPkgFromRootstrap(selectedList, rootstrapPath); + RPMPackageCommander.uninstallPkgFromRootstrap(selectedList, rootstrapPath, monitor); monitor.done(); } }); @@ -241,7 +243,12 @@ public class BuildSystemTab extends CommonTab { protected void updatePackageInfo(ArrayList localPackageFileList ) { - ArrayList fullList = RPMPackageCommander.getPackageListForRootstrap(rootstrapPath); + ArrayList fullList; + try { + fullList = RPMPackageCommander.getPackageListForRootstrap(rootstrapPath, null); + } catch (InterruptedException e) { + fullList = new ArrayList(); + } ArrayList removeList = new ArrayList(); for( Package pkg: PackageProvider.INSTANCE.getBuildsystemPkgs()) { boolean found = false; diff --git a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/DeviceTab.java b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/DeviceTab.java index a4c7eca..b17ccdf 100644 --- a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/DeviceTab.java +++ b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/DeviceTab.java @@ -54,6 +54,7 @@ public class DeviceTab extends CommonTab{ public static void initializePackageInfo(IDevice device) { + PackageProvider.INSTANCE.getDevicePkgs().clear(); PackageProvider.INSTANCE.getDevicePkgs() .addAll(RPMPackageCommander.getPackageListForDevice(device)); diff --git a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/RPMPackageDialog.java b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/RPMPackageDialog.java index a541ed0..c114b50 100644 --- a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/RPMPackageDialog.java +++ b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkgmgr/ui/RPMPackageDialog.java @@ -31,6 +31,7 @@ package org.tizen.nativeplatform.pkgmgr.ui; import java.util.ResourceBundle; import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; @@ -228,10 +229,10 @@ public class RPMPackageDialog extends Dialog { } - public void initializeDialogData() { + public void initializeDialogData(IProgressMonitor monitor) throws InterruptedException { // init data for buildSystem Tab BuildSystemTab.initializeRepositoryInfo(rootstrap); - BuildSystemTab.initializePackageInfo(rootstrap); + BuildSystemTab.initializePackageInfo(rootstrap, monitor); // init data for device Tab if connected if ( device != null ) { diff --git a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/views/ui/RootstrapView.java b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/views/ui/RootstrapView.java index 85dba8d..c24381a 100644 --- a/org.tizen.nativeplatform/src/org/tizen/nativeplatform/views/ui/RootstrapView.java +++ b/org.tizen.nativeplatform/src/org/tizen/nativeplatform/views/ui/RootstrapView.java @@ -606,19 +606,19 @@ public class RootstrapView extends ViewPart { ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell); try { - dialog.run(true, false, new IRunnableWithProgress() { + dialog.run(true, true, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask(resources.getString("Action.Msg.Progress.Initializing.PkgMgr"), -1); - dlg.initializeDialogData(); + dlg.initializeDialogData(monitor); } }); } catch (Exception e1) { - DialogUtil.openErrorDialog( String.format("%s\n * %s", + DialogUtil.openErrorDialog( String.format("%s\n * %s\n * %s", resources.getString("Action.Msg.Error.InitFailed.PkgMgr"), - e1.getMessage() ) ); + e1.getMessage(), "If no response for long time, check your proxy setting." ) ); return; } -- 2.7.4