summaryrefslogtreecommitdiff
path: root/javainstaller2
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2008-02-05 12:38:03 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2008-02-05 12:38:03 +0000
commitb61f10b60f35ae1cc201628302dcc642b9cb6570 (patch)
treee35bcadb3760e4c684774d17f34599441b9a5726 /javainstaller2
parente000c184a4932edc05d25f5789a6ca4ed4042556 (diff)
INTEGRATION: CWS native127 (1.4.6); FILE MERGED
2008/01/28 16:00:44 is 1.4.6.4: #i85281# improve performance 2008/01/25 16:23:57 is 1.4.6.3: #i85474# not all language modules deselectable 2008/01/25 11:29:29 is 1.4.6.2: #i85474# not all language modules deselectable 2008/01/25 09:56:19 is 1.4.6.1: #i85474# one and only language not selectable
Diffstat (limited to 'javainstaller2')
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Util/ModuleCtrl.java230
1 files changed, 219 insertions, 11 deletions
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/ModuleCtrl.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/ModuleCtrl.java
index 8c5c40d97a3b..4818208967e7 100755
--- a/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/ModuleCtrl.java
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/ModuleCtrl.java
@@ -4,9 +4,9 @@
*
* $RCSfile: ModuleCtrl.java,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: obo $ $Date: 2008-01-07 12:33:51 $
+ * last change: $Author: ihi $ $Date: 2008-02-05 13:38:03 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -339,13 +339,21 @@ public class ModuleCtrl {
}
else {
if ( isInstalled ) {
- boolean installedPackageIsOlder = installer.isInstalledPackageOlder(packageData, installData);
- if ( ! installedPackageIsOlder ) {
- // The package is already installed in the same or in a newer version
- packageData.setSelectionState(PackageDescription.IGNORE);
- } else {
- // This is also something like migrating feature states
- packageData.setSelectionState(PackageDescription.INSTALL);
+ if ( packageData.isJavaPackage() ) { // only selected checks, because of performance reasons
+ boolean installedPackageIsOlder = installer.isInstalledPackageOlder(packageData, installData);
+ if ( ! installedPackageIsOlder ) {
+ // The package is already installed in the same or in a newer version
+ packageData.setSelectionState(PackageDescription.IGNORE);
+ } else {
+ // This is also something like migrating feature states
+ packageData.setSelectionState(PackageDescription.INSTALL);
+ }
+ } else { // no version check done -> so what is a good setting for already installed packages?
+ if ( installData.olderVersionExists() ) { // should never be the case in this function
+ packageData.setSelectionState(PackageDescription.INSTALL);
+ } else {
+ packageData.setSelectionState(PackageDescription.IGNORE);
+ }
}
}
else {
@@ -353,8 +361,10 @@ public class ModuleCtrl {
// This can be deinstalled by hand for example.
boolean isRequiredCoreModule = checkRequiredCoreModule(packageData);
if ( isRequiredCoreModule ) {
- packageData.setSelectionState(PackageDescription.INSTALL);
- LogManager.addLogfileComment("<b>Adding required package:</b> " + packageData.getPackageName() + "</br>");
+ if ( packageData.getSelectionState() != PackageDescription.INSTALL ) {
+ packageData.setSelectionState(PackageDescription.INSTALL);
+ LogManager.addLogfileComment("<b>Adding required package:</b> " + packageData.getPackageName() + "</br>");
+ }
// This package has to exist!
if ( ! packageExists(packageData, installData) ) {
@@ -404,6 +414,23 @@ public class ModuleCtrl {
}
}
+ static public void setHiddenLanguageModuleDefaultSettings(PackageDescription packageData) {
+
+ // This function is needed during installation for the language modules,
+ // if there is only one language in the installation set. In this case the language
+ // modules are hidden (no selection possible) and therefore get no value in
+ // setDefaultModuleSettings(). This default value is set now.
+
+ if ( packageData.showMultiLingualOnly() ) {
+ packageData.setSelectionState(PackageDescription.INSTALL);
+ }
+
+ for (Enumeration e = packageData.children(); e.hasMoreElements(); ) {
+ PackageDescription child = (PackageDescription) e.nextElement();
+ setHiddenLanguageModuleDefaultSettings(child);
+ }
+ }
+
static private boolean packageExists(PackageDescription packageData, InstallData installData) {
boolean fileExists = false;
String packagePath = installData.getPackagePath();
@@ -465,6 +492,42 @@ public class ModuleCtrl {
}
}
+ static public void checkApplicationSelection(PackageDescription packageData, InstallData data) {
+ boolean setToTrue = false;
+
+ if (( packageData.isApplicationPackage() ) &&
+ ( ! packageData.isHidden() ) &&
+ ( packageData.getSelectionState() == packageData.INSTALL )) {
+ setToTrue = true;
+ data.setApplicationModulesChecked(true);
+ }
+
+ if ( ! setToTrue ) {
+ for (Enumeration e = packageData.children(); e.hasMoreElements(); ) {
+ PackageDescription child = (PackageDescription) e.nextElement();
+ checkApplicationSelection(child, data);
+ }
+ }
+ }
+
+ static public void checkLanguageSelection(PackageDescription packageData, InstallData data) {
+ boolean setToTrue = false;
+
+ if (( packageData.showMultiLingualOnly() ) &&
+ ( ! packageData.isHidden() ) &&
+ ( packageData.getSelectionState() == packageData.INSTALL )) {
+ setToTrue = true;
+ data.setLanguageModulesChecked(true);
+ }
+
+ if ( ! setToTrue ) {
+ for (Enumeration e = packageData.children(); e.hasMoreElements(); ) {
+ PackageDescription child = (PackageDescription) e.nextElement();
+ checkLanguageSelection(child, data);
+ }
+ }
+ }
+
static public void checkVisibleModulesUninstall(PackageDescription packageData, InstallData data) {
boolean setToTrue = false;
@@ -484,6 +547,50 @@ public class ModuleCtrl {
}
}
+ static public void checkApplicationModulesUninstall(PackageDescription packageData, InstallData data) {
+ boolean setToTrue = false;
+
+ // At least one language module should not be uninstalled. Then this function returns true.
+ // An exeption is the complete uninstallation or the masked complete uninstallation.
+
+ if (( packageData.isApplicationPackage() ) &&
+ ( ! packageData.isHidden() ) &&
+ ( packageData.getSelectionState() != packageData.IGNORE ) &&
+ ( packageData.getSelectionState() != packageData.REMOVE )) {
+ setToTrue = true;
+ data.setApplicationModulesChecked(true);
+ }
+
+ if ( ! setToTrue ) {
+ for (Enumeration e = packageData.children(); e.hasMoreElements(); ) {
+ PackageDescription child = (PackageDescription) e.nextElement();
+ checkApplicationModulesUninstall(child, data);
+ }
+ }
+ }
+
+ static public void checkLanguageModulesUninstall(PackageDescription packageData, InstallData data) {
+ boolean setToTrue = false;
+
+ // At least one language module should not be uninstalled. Then this function returns true.
+ // An exeption is the complete uninstallation or the masked complete uninstallation.
+
+ if (( packageData.showMultiLingualOnly() ) &&
+ ( ! packageData.isHidden() ) &&
+ ( packageData.getSelectionState() != packageData.IGNORE ) &&
+ ( packageData.getSelectionState() != packageData.REMOVE )) {
+ setToTrue = true;
+ data.setLanguageModulesChecked(true);
+ }
+
+ if ( ! setToTrue ) {
+ for (Enumeration e = packageData.children(); e.hasMoreElements(); ) {
+ PackageDescription child = (PackageDescription) e.nextElement();
+ checkLanguageModulesUninstall(child, data);
+ }
+ }
+ }
+
static public void checkMaskedCompleteUninstallation(PackageDescription packageData, InstallData data) {
boolean setToFalse = false;
@@ -616,4 +723,105 @@ public class ModuleCtrl {
}
}
+ static public void defaultDatabaseAnalysis(InstallData data) {
+
+ PackageDescription packageData = SetupDataProvider.getPackageDescription();
+ Installer installer = InstallerFactory.getInstance();
+
+ // restore default settings
+ if ( data.startSelectionStateSaved() ) {
+ // System.err.println("Restoring start selection states");
+ ModuleCtrl.restoreStartSelectionStates(packageData);
+ } else {
+ ModuleCtrl.saveStartSelectionStates(packageData);
+ data.setStartSelectionStateSaved(true);
+ }
+
+ // Special ToDos, if this is an update installation of an older product.
+ // In this case, "chooseInstallationType" and "chooseComponents" are not called.
+ // Is it necessary to call "analyzeDatabase" ?
+ if ( data.olderVersionExists() ) {
+ // Calculation of size is not necessary, because only
+ // already installed packages will be updated.
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "ChooseDirectory: Before setUpdateOlderProductSettings");
+ }
+
+ // Updating only those packages that are installed.
+ System.err.println("setUpdateOlderProductSettings: Start");
+ ModuleCtrl.setUpdateOlderProductSettings(packageData, data, installer);
+ System.err.println("setUpdateOlderProductSettings: End");
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "ChooseDirectory: After setUpdateOlderProductSettings");
+ }
+
+ // Checking, if all packages are available
+ ModuleCtrl.disableNonExistingPackages(packageData, data);
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "ChooseDirectory: After disableNonExistingPackages");
+ }
+
+ // disable packages, that are not valid in user installation
+ if ( data.isUserInstallation() ) {
+ ModuleCtrl.setShowInUserInstallFlags(packageData);
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "ChooseDirectory: After setShowInUserInstallFlags");
+ }
+ }
+
+ // Collecting packages to install
+ // This has to be done here, because "ChooseInstallationType" and "ChooseComponents"
+ // are not called.
+ Vector installPackages = new Vector();
+ PackageCollector.collectInstallPackages(packageData, installPackages);
+ data.setInstallPackages(installPackages);
+
+ } else { // same version exists or no version exists
+
+ // database changed -> ignore saved states
+ data.setTypicalSelectionStateSaved(false);
+ data.setCustomSelectionStateSaved(false);
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "analyzeDatabase: Start");
+ }
+
+ // searching in the database for already installed packages
+ LogManager.setCommandsHeaderLine("Analyzing system database");
+ ModuleCtrl.setDatabaseSettings(packageData, data, installer);
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "analyzeDatabase: After setDatabaseSettings");
+ }
+
+ // ModuleCtrl.analyzeDatabase();
+ ModuleCtrl.disableNonExistingPackages(packageData, data);
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "ChooseDirectory: After disableNonExistingPackages");
+ }
+
+ // disable packages, that are not valid in user installation
+ if ( data.isUserInstallation() ) {
+ ModuleCtrl.setShowInUserInstallFlags(packageData);
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "ChooseDirectory: After setShowInUserInstallFlags");
+ }
+ }
+
+ // Problem: If all submodules have flag IGNORE, the parent can also get IGNORE
+ // That is interesting for language packs with three submodules.
+ ModuleCtrl.setParentDefaultModuleSettings(packageData);
+
+ if ( data.logModuleStates() ) {
+ Dumper.logModuleStates(packageData, "ChooseDirectory: After setParentDefaultModuleSettings");
+ }
+ }
+ }
+
}