[Title] Typical installtype can have extension packages on component
authoryongsung1.kim <yongsung1.kim@samsung.com>
Wed, 3 Apr 2013 06:59:07 +0000 (15:59 +0900)
committeryongsung1.kim <yongsung1.kim@samsung.com>
Wed, 3 Apr 2013 06:59:07 +0000 (15:59 +0900)
selection page, and InstallManager does not show duplicated extension
packages when 'back' -> 'next' case.
[Desc.]
[Issue] redmine #8957, #8965

InstallManager_java/src/org/tizen/installmanager/core/SDKExtensionInfo.java
InstallManager_java/src/org/tizen/installmanager/pkg/lib/PackageManager.java
InstallManager_java/src/org/tizen/installmanager/ui/InstallManagerWindow.java
InstallManager_java/src/org/tizen/installmanager/ui/model/Item.java
InstallManager_java/src/org/tizen/installmanager/ui/page/InstallableListPage.java
InstallManager_java/src/org/tizen/installmanager/ui/page/ViewController.java

index 856cae6..c8d6896 100644 (file)
@@ -119,6 +119,7 @@ public class SDKExtensionInfo {
         */
        public void remove(String name, String packageRepo) {
                uninstallExtraPackages(packageRepo);
+               removeExtensionPackagesInRepoPackages(packageRepo);
                if (contains(packageRepo)) {
                        userExtensionRepositories.remove(packageRepo);
                }
@@ -127,6 +128,25 @@ public class SDKExtensionInfo {
        }
        
        /**
+        * Remove extension packages in repository packages by extension repository
+        * which is selected for removing on 'Add Extras' dialog.
+        * @param repo specific extension repository for removing.
+        */
+       private void removeExtensionPackagesInRepoPackages(String repo) {
+               PackageManager pm = InstallManager.getInstance().getPackageManager();
+               PackageSet repoPkgs = pm.getRepoPackages();
+               PackageSet clone = (PackageSet) repoPkgs.clone();
+
+               for (Package pkg : repoPkgs) {
+                       if (pkg.getExtensionServer().equalsIgnoreCase(repo)) {
+                               clone.remove(pkg);
+                       }
+               }
+               
+               pm.setRepoPackages(clone);
+       }
+       
+       /**
         * Uninstall extra packages which belong to selected extra repository. 
         * @param repo Selected extra repository for removing.
         */
index c385535..8192e7a 100644 (file)
@@ -436,9 +436,28 @@ public abstract class PackageManager {
        }
        
        /**
+        * Set repository packages.
+        * @param packageSet
+        */
+       public void setRepoPackages(PackageSet packageSet) {
+               repoPackages = packageSet;
+       }
+       
+       /**
         * @return root meta packages of repository
         */
        public PackageSet getRootMetaPackagesOfRepository() {
+               PackageSet clone = (PackageSet) repoPackages.clone();
+               
+               // Repository packages should not have extension packages.
+               for (Package pkg : repoPackages) {
+                       if (pkg.isExtensionPackage()) {
+                               clone.remove(pkg);
+                       }
+               }
+               
+               repoPackages = clone;
+               
                return rootMeta(repoPackages);
        }
        
@@ -1416,7 +1435,7 @@ public abstract class PackageManager {
                PackageSet packageList = repoPackages;
                packageList.addAll(extensionPackages);
                
-               if(packageList.hasPackageByName(pkgName)) {
+               if (packageList.hasPackageByName(pkgName)) {
                        return packageList.getPackageByName(pkgName);
                } else {
                        return null;
@@ -1428,6 +1447,17 @@ public abstract class PackageManager {
 //                     return null;
 //             }
        }
+       
+       public void removePackageFromPackageManager(String pkgName) {
+               PackageSet clone = (PackageSet) repoPackages.clone();
+               Package pkg = clone.getPackageByName(pkgName);
+               
+               if (clone.hasPackage(pkg)) {
+                       clone.remove(pkg);
+               }
+               
+               repoPackages = clone;
+       }
        /**
         * @param packageNames
         * @return packages collected by the given package names
index a12e91d..cef08aa 100644 (file)
@@ -590,9 +590,9 @@ public class InstallManagerWindow extends ApplicationWindow {
                                extraDialog.open();
                                
                                if (sl_composite.topControl == compositeInstallablePage) {
-                                       compositeInstallablePage.addExtensionPackagesToExtra(extraDialog.getPackagesFromExtraRepository());
+                                       compositeInstallablePage.loadPage(controller);
                                } else if (sl_composite.topControl == compositeUpdatableListPage) {
-                                       compositeUpdatableListPage.addExtensionPackagesToExtra(extraDialog.getPackagesFromExtraRepository());
+                                       compositeUpdatableListPage.loadPage(controller);
                                }
                        }
                });
index 34301a0..19373bc 100644 (file)
@@ -490,12 +490,10 @@ public class Item implements Comparable<Item> {
                        for (Item childItem : getChildren()) {
                                childItem.getTerminalPackages(installList, checked);
                        }
-               } 
+               }
                
-               if (getChildren().size() <= 0) {
-                       if (getCheckState() == CheckState.CHECKED) {
-                               installList.add(getPackageName());
-                       }
+               if (getCheckState() == CheckState.CHECKED) {
+                       installList.add(getPackageName());
                }
        }
 
index da44401..20ab50a 100644 (file)
@@ -322,7 +322,7 @@ public class InstallableListPage extends PackageListPage {
                } else {
                        installType = InstallType.CUSTOM;
                }
-               
+
                setCheckedByType(iType);
                checkboxTreeViewer.refresh();
                checkboxTreeViewer.getTree().setEnabled(false);
@@ -331,8 +331,7 @@ public class InstallableListPage extends PackageListPage {
                                + convertToVolumeSize(getCheckedPackageSize(false)));
                lblUncompressedSize.setText("Install size : "
                                + convertToVolumeSize(getCheckedPackageSize(true)));
-               
-               setNextBtnEnabledAboutCheckedPackageCount();    
+               setNextBtnEnabledAboutCheckedPackageCount();
        }
 
        /**
@@ -342,6 +341,7 @@ public class InstallableListPage extends PackageListPage {
                if (installType == null || installType.isEmpty()) {
                        Log.err("Install type is empty. check install type or package server is old.");
                }
+
                Package pkg = InstallManager.getInstance().getPackageManager().getPackageByName(installType);
 
                if (pkg == null) {
index 9054baf..742d956 100644 (file)
@@ -414,7 +414,7 @@ public class ViewController {
                
                //get all meta packages (installable packages)
                //TODO : show all packages. (installable, installed)
-               PackageSet metaPackageSet = packageManager.getRootMetaPackagesOfRepository();           
+               PackageSet metaPackageSet = packageManager.getRootMetaPackagesOfRepository();   
                
                return makeTreeItem(metaPackageSet);
        }