import org.tizen.installmanager.core.Config;
import org.tizen.installmanager.core.IMExitException;
+import org.tizen.installmanager.core.IMFatalException;
import org.tizen.installmanager.core.InstallManager;
+import org.tizen.installmanager.core.Options;
+import org.tizen.installmanager.core.Config.ServerType;
import org.tizen.installmanager.lib.ErrorController;
import org.tizen.installmanager.lib.IIMProgressMonitor;
import org.tizen.installmanager.lib.Log;
import org.tizen.installmanager.lib.Registry;
import org.tizen.installmanager.lib.ErrorController.ErrorCode;
-import org.tizen.installmanager.pkg.lib.PackageManager2;
-import org.tizen.installmanager.pkg.model.Package2;
+import org.tizen.installmanager.pkg.lib.PackageManager;
+import org.tizen.installmanager.pkg.model.Package;
import org.tizen.installmanager.pkg.model.PackageSet;
import org.tizen.installmanager.ui.page.InstallingPage.InstallProgressMonitor;
import org.tizen.installmanager.util.PathUtil;
*/
public class ViewController {
- private InstallManager mInstallManager;
- private PackageManager2 mPackageManager2;
+ private InstallManager installManager;
+ private PackageManager packageManager;
/**
* Initialize objects which need to install.
*/
public boolean init() {
Log.log("ViewController init");
- mInstallManager = InstallManager.getInstance();
- boolean bResult = mInstallManager.init();
- mPackageManager2 = mInstallManager.getPackageManager2();
-
- bResult = bResult && existInstallableOrRemovablePackages();
-
- return bResult;
+
+ try {
+ installManager = InstallManager.getInstance();
+ installManager.init();
+ packageManager = installManager.getPackageManager();
+
+ if (packageManager == null) {
+ throw new IMFatalException("Cannot read package information.");
+ } else {
+ if (existInstallableOrRemovablePackages()) {
+ return true;
+ } else {
+ ErrorController.setInstallationSuccess(false);
+ return false;
+ }
+ }
+ } catch(IMFatalException e) {
+ Log.ExceptionLog(e);
+ return false;
+ }
}
/**
* @return Meta package set
*/
public PackageSet getInstallableOrUpdatableMetaPackages() {
- if (mPackageManager2 == null) {
+ if (packageManager == null) {
return null;
} else {
- return mPackageManager2.getInstallableOrUpdatableMetaPackages();
+ return packageManager.getInstallableOrUpdatableMetaPackages();
}
}
* @return Meta package set
*/
public PackageSet getInstallableMetaPackageList() {
- if (mPackageManager2 == null) {
+ if (packageManager == null) {
return null;
} else {
- return mPackageManager2.getInstallableMetaPackages();
+ return packageManager.getInstallableMetaPackages();
+ }
+ }
+
+ /**
+ * Get meta packages in repository.
+ * @return Meta package set
+ */
+ public PackageSet getRootMetaPackageListOfRepository() {
+ if (packageManager == null) {
+ return null;
+ } else {
+ return packageManager.getRootMetaPackagesOfRepository();
}
}
* @return Meta package set
*/
public PackageSet getUpdatableMetapackageList() {
- if (mPackageManager2 == null) {
+ if (packageManager == null) {
return null;
} else {
- return mPackageManager2.getUpdatableMetaPackages();
+ return packageManager.getUpdatableMetaPackages();
+ }
+ }
+
+ /**
+ * Get meta packages that are available to update.
+ * @return Meta package set
+ */
+ public PackageSet getNotUpdatableMetapackageList() {
+ if (packageManager == null) {
+ return null;
+ } else {
+ return packageManager.getNotInstallableAndNotUpdatablePackages();
}
}
* @return Meta package set
*/
public PackageSet getRemovableMetaPackageList() {
- if (mPackageManager2 == null) {
+ if (packageManager == null) {
+ return null;
+ } else {
+ return packageManager.getRemovableMetaPackages();
+ }
+ }
+
+ public PackageSet getInstallablePackageListInSnapshot() {
+ if (packageManager == null) {
return null;
} else {
- return mPackageManager2.getRemovableMetaPackages();
+ return packageManager.getInstallableMetaPackagesInSnapshot();
}
}
* @return package set
*/
public PackageSet getRemovablePackageList() {
- return mPackageManager2.getInstalledPackages();
+ if (packageManager == null) {
+ return null;
+ } else {
+ return packageManager.getInstalledPackages();
+ }
}
/**
* @return if installed package exists, return true. if not return false.
*/
public boolean existRemovablePackage() {
- return mPackageManager2.existInstalledPackages();
+ if (packageManager == null) {
+ return false;
+ } else {
+ return packageManager.existInstalledPackages();
+ }
}
/**
Log.log("======== Start Installing ========");
Log.log("ViewController install => Selected package list: " + installList);
- if (mPackageManager2 == null) {
+ if (packageManager == null) {
Log.err("Package list does not exist.");
return false;
}
return true;
}
- PackageSet selectedMetas = mPackageManager2.getPackagesByNames(installList);
+ PackageSet selectedMetas = packageManager.getPackagesByNames(installList);
+
+ //add mandotory packages
+ selectedMetas.addAll(packageManager.getMandatoryPackages());
+
+ //get package set by pusrpose.
+ selectedMetas = getMetaPackagesByPurpose(selectedMetas);
- return mInstallManager.install(selectedMetas, targetPath, monitor);
+ return installManager.install(selectedMetas, targetPath, monitor);
}
+
+ private PackageSet getMetaPackagesByPurpose(PackageSet metaPackages) {
+ for (Package pkg : metaPackages) {
+ String attribute = pkg.getAttribute();
+
+ if (!attribute.equalsIgnoreCase("root") && attribute.equals("extra")) {
+ if (!attribute.equalsIgnoreCase(attribute)) {
+ metaPackages.remove(pkg);
+ }
+ }
+ }
+
+ return metaPackages;
+ }
/**
* Start to uninstall
*/
public boolean uninstall(List<String> uninstallList, IIMProgressMonitor monitor) {
Log.log("ViewController Uninstall Start => " + uninstallList);
- if (mPackageManager2 == null || uninstallList.size() == 0) {
+ if (packageManager == null || uninstallList.size() == 0) {
Log.err("ViewController.uninstall() uninstalllist does not exist. => " + uninstallList);
ErrorController.setError(ErrorCode.ERROR);
return false;
}
- if (uninstallList.size() == 1 && uninstallList.get(0).equals(Config.SDK_NAME)) {
+ if (Options.doRemoveOldSDK || (uninstallList.size() == 1 && uninstallList.get(0).equals(Config.SDK_NAME))) {
uninstallAll(monitor);
+ return true;
+ } else {
+ PackageSet removablePackages = packageManager.getInstalledPackagesByName(uninstallList);
+
+ return uninstallPackages(removablePackages, monitor);
}
-
- PackageSet removablePackages = mPackageManager2.getPackagesByNames(uninstallList);
-
- return uninstallPackages(removablePackages, monitor);
}
/**
* @return If removable packages can success to uninstall, return true. if not return false.
*/
public boolean uninstallPackages(PackageSet removableMetapkgs, IIMProgressMonitor monitor) {
- boolean bRet = mInstallManager.removePackages(removableMetapkgs, monitor);
+ boolean bRet = installManager.removePackages(removableMetapkgs, monitor);
Log.log("ViewController Uninstall End => " + bRet);
return bRet;
*/
public void uninstallAll(IIMProgressMonitor monitor) {
Log.log("ViewController Unintall All");
- mInstallManager.removeAll(monitor);
+ installManager.removeAll(monitor);
Registry.removeRegistry();
}
/**
* Get package version that is installed already.
- * @param pkg is installed packages already.
+ * @param pkgName is installed packages already.
* @return version
*/
- public String getInstalledVersion(Package2 pkg) {
- if (pkg == null) {
- return null;
- }
-
- return mPackageManager2.getInstalledVersion(pkg);
+ public Package getInstalledPackage(String pkgName) {
+ return packageManager.getInstalledPackageByName(pkgName);
}
/**
* @return size
*/
public long getTotalSizeWithDepends(String packageName) {
- Package2 pkg = mPackageManager2.getPackagesByName(packageName);
- return getTotalSizeWithDepends(pkg);
+ Package pkg = packageManager.getPackageByName(packageName);
+ return getInstallablePackagesSize(pkg);
}
/**
* @return size
*/
public long getTotalSizeWithDepends(Collection<String> pkgList) {
- PackageSet pkgSet = mPackageManager2.getPackagesByNames(pkgList);
+ PackageSet pkgSet = packageManager.getPackagesByNames(pkgList);
return getTotalSizeWithDepends(pkgSet);
}
* @param pkg is package format.
* @return size
*/
- public long getTotalSizeWithDepends(Package2 pkg) {
- return mPackageManager2.getTotalSizeWithDepends(pkg);
+ public long getInstallablePackagesSize(Package pkg) {
+ return packageManager.getTotalSizeOfInstallablePackages(pkg);
+ }
+
+ /**
+ * Get total size depends on a package format.
+ * @param pkg is package format.
+ * @return size
+ */
+ public long getRemovablePackagesSize(Package pkg) {
+ return packageManager.getTotalSizeOfRemovablePackages(pkg);
}
/**
* @return size
*/
public long getTotalSizeWithDepends(PackageSet pkgs) {
- return mPackageManager2.getTotalSizeWithDepends(pkgs);
+ return packageManager.getTotalSizeOfInstallablePackages(pkgs);
}
/**
* @return There are packages to install or remove, return true. if not false.
*/
public boolean existInstallableOrUpdatablePackages() {
- return (getInstallableOrUpdatableMetaPackages().size() > 0);
+ if (Options.snapshot || Config.fromWhere == Config.ConfDialog.LOCAL_IMAGE) {
+ return (getInstallablePackageListInSnapshot().size() > 0);
+ } else {
+ return (getInstallableOrUpdatableMetaPackages().size() > 0);
+ }
}
/**
* @return configure object.
*/
public Config getConfig() {
- return mInstallManager.getConfig();
+ return installManager.getConfig();
}
/**
* @return decription of package.
*/
public String getDescription(String pkgName) {
- Package2 pkg = mPackageManager2.getPackagesByName(pkgName);
+ Package pkg = packageManager.getPackageByName(pkgName);
if (pkg == null) {
return "";
public void removeTargetPath(String targetPath) {
PathUtil.remove(targetPath);
}
+
+ /**
+ * save information of server.
+ * @param repository Base-repository of sdk. if repository is null, it do not save repository.
+ * @param type type of repository. if type is null, it do not save type.
+ * @param packageServer package server of sdk. if packageServer is null, it do not save packageServer.
+ * @param packageType set ServerType.snapshot or ServerType.package. if serverType is null, it do not save serverType.
+ */
+ public void saveConfiguration(String repository, String distribution, ServerType packageType, String snapshotPath) {
+ Config.getInstance().saveConfiguration(repository, distribution, packageType, snapshotPath);
+ }
}