[Title] InstallManager can manage invaild package version.
authoryongsung1.kim <yongsung1.kim@samsung.com>
Fri, 30 Aug 2013 07:56:45 +0000 (16:56 +0900)
committeryongsung1.kim <yongsung1.kim@samsung.com>
Fri, 30 Aug 2013 07:56:45 +0000 (16:56 +0900)
[Issue] redmine #10310, 13014

Change-Id: Id0123c68f8a61ca9a3876844e0363ac50b3723f7

InstallManager_java/src/org/tizen/installmanager/pkg/lib/PackageManager.java
InstallManager_java/src/org/tizen/installmanager/pkg/model/Package.java
InstallManager_java/src/org/tizen/installmanager/pkg/model/Version.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/ViewController.java

index 05fb210..d7c06c6 100644 (file)
@@ -287,6 +287,7 @@ public abstract class PackageManager {
                props.add(new Property(Package.FIELD_PACKAGE, "EXTRAS"));
                props.add(new Property(Package.FIELD_LABEL, "Extras"));
                props.add(new Property(Package.FIELD_ATTRIBUTE, "root"));
+               props.add(new Property(Package.FIELD_PACKAGE_SIZE, "0"));
                props.add(new Property(Package.FIELD_UNCOMPRESSED_SIZE, "0"));
                
                Package extraPackage = new Package(props);
index ebb375a..e71942e 100644 (file)
@@ -127,17 +127,25 @@ public class Package {
                        throw new IMFatalException(ErrorCode.WRONG_PACKAGE_URL);
                }
        }
+       
+       public void setProperties(List<Property> properties) {
+               mProperties = properties;
+       }
 
        /**
-        * @return version of this package
+        * @return version of this package. If package does not have version, set version to 0.0.0
         */
        public Version getVersion() {
-               try {
-                       return new Version(getValue(FIELD_VERSION));
-               } catch (IMFatalException e) {
-                       Log.log("Invalid version package. => " + this.getPackageName());
-                       throw e;
+               String version = getValue(FIELD_VERSION);
+               if (version == null || version.isEmpty()) {
+                       List<Property> props = this.getProperties();
+                       for (Property p : props) {
+                               if (p.getName().equalsIgnoreCase(Package.FIELD_VERSION)) {
+                                       p.setValue("0.0.0");
+                               }
+                       }
                }
+               return new Version(getValue(FIELD_VERSION));                            
        }
        
        /**
index bd62c06..9b9e644 100644 (file)
@@ -52,18 +52,11 @@ public class Version {
      * @param version string representation of version
      */
     public Version(String version) {
-       checkValidVersion(version);
-        dividedVersion = version.split("\\.");                 
-    }
-    
-    public static void checkValidVersion(String version) {
-       if (version == null || version.isEmpty()) {
-               Log.err("Package version not found. ==> ");
-               throw new IMFatalException(ErrorCode.CANNOT_FIND_PACKAGE_VERSION);
-       } else if (version.endsWith(".")){
-               Log.err("Invalid package version : " + version);
-               throw new IMFatalException(ErrorCode.INVALID_PACKAGE_VERSION);
+       if (version.endsWith(".")){
+               Log.err("Invalid package version format : " + version);
        }
+
+        dividedVersion = version.split("\\.");                 
     }
     
     public static Version create(String aVersion) {
index 6390774..a09872a 100644 (file)
@@ -75,6 +75,7 @@ import org.tizen.installmanager.lib.exception.IMNetworkException;
 import org.tizen.installmanager.pkg.lib.PackageManager;
 import org.tizen.installmanager.pkg.model.ConfigFile;
 import org.tizen.installmanager.pkg.model.PackageSet;
+import org.tizen.installmanager.pkg.model.Property;
 import org.tizen.installmanager.ui.dialog.AddExtraRepositoryDialog;
 import org.tizen.installmanager.ui.dialog.IndeterminateProgressDialog;
 import org.tizen.installmanager.ui.dialog.MessageBoxDlg;
@@ -94,6 +95,7 @@ import org.tizen.installmanager.ui.page.WelcomePage;
 import org.tizen.installmanager.ui.page.InstallingPage.InstallProgressMonitor;
 import org.tizen.installmanager.ui.page.WelcomePage.RADIO_ACTION;
 import org.tizen.installmanager.util.PathUtil;
+import org.tizen.installmanager.pkg.model.Package;
 
 
 /**
@@ -322,6 +324,10 @@ public class InstallManagerWindow extends ApplicationWindow {
                                        addExtraButton.setVisible(false);
                                        btnSettings.setVisible(false);
                                        if (compositeWelcomePage.getSelectedRadioButton() == RADIO_ACTION.INSTALL) {
+                                               if (!checkVaildPkgVersion()) {
+                                                       btnSettings.setVisible(true);
+                                                       return;
+                                               }
                                                btnNext.setEnabled(compositeLicensePage.getAcceptButton().getSelection());
                                                if (Config.isSupportMultiSDK()) {
                                                        showComposite(compositeLicensePage);
@@ -1041,6 +1047,35 @@ public class InstallManagerWindow extends ApplicationWindow {
        }
        
        /**
+        * Installed packages do not have package version, installmanager will show warning dialog.
+        * @return
+        */
+       private boolean checkVaildPkgVersion() {
+               PackageSet installedPkgs = controller.getInstalledPackages();
+               if (!installedPkgs.isEmpty()) {
+                       for (Package pkg : installedPkgs) {
+                               String vs = pkg.getVersion().toString();
+                               if (vs != "" && vs.equals("0.0.0")) {
+                               Log.err("Package version not found. ==> " + pkg.getPackageName());
+                               int confirm = MessageBoxDlg.showDlg(getShell(), 
+                                                   "WARNING", 
+                                                   "'" + pkg.getPackageName() + "'" + " package version is not found.\n" +
+                                                   "If you keep installing Tizen SDK, some unexpected may occur.\n" +
+                                                   "Do you want to continue?", 
+                                                   DialogType.WARNING, false);
+                               if (confirm == MessageBoxDlg.YES) {
+                                       return true;
+                               } else {
+                                       return false;
+                               }
+                               }
+                       }
+               }
+
+               return true;
+       }
+       
+       /**
         * Get install manager window object.
         * @return install manager window object.
         */
index 253ccf9..0198ace 100644 (file)
@@ -456,7 +456,9 @@ public class Item implements Comparable<Item> {
         */
        public void getTerminalPackages(List<String> installList, boolean checked) {
                if (getCheckState() == CheckState.CHECKED) {
-                       installList.add(getPackageName());
+                       if (!getPackageName().equalsIgnoreCase("EXTRAS")) {
+                               installList.add(getPackageName());                              
+                       }
                } else if (getCheckState() == CheckState.GRAYED) {
                        for (Item childItem : getChildren()) {
                                childItem.getTerminalPackages(installList, checked);
index 03f4193..ccc11c0 100644 (file)
@@ -434,6 +434,10 @@ public class ViewController {
                return packageManager.getInstalledPackageByName(pkgName);
        }
        
+       public PackageSet getInstalledPackages() {
+               return packageManager.getInstalledPackages();
+       }
+       
        /**
         * Get items of tree
         * @return