| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| package org.openoffice.setup; |
| |
| import org.openoffice.setup.SetupData.PackageDescription; |
| import org.openoffice.setup.Util.Controller; |
| import org.openoffice.setup.Util.SystemManager; |
| import java.io.File; |
| import java.util.HashMap; |
| import java.util.Locale; |
| import java.util.Vector; |
| |
| public class InstallData |
| { |
| public static final String ACTION_TYPICAL = "ActionTypical"; |
| public static final String ACTION_CUSTOM = "ActionCustom"; |
| |
| private static InstallData instance = null; |
| |
| static private boolean isUserInstallation; /* root or user installation? */ |
| static private boolean isRootInstallation; /* root or user installation? */ |
| static private boolean isInstallationMode; /* installation or uninstallation? */ |
| static private boolean isUninstallationMode; /* installation or uninstallation? */ |
| static private boolean isCustomInstallation = false; /* custom or typical? */ |
| static private boolean isTypicalInstallation = true; /* custom or typical? */ |
| static private boolean isSolarisUserInstallation = false; |
| static private boolean isChangeInstallation = false; |
| static private boolean stillRunning = false; |
| static private boolean stillAnalyzing = true; |
| static private boolean databaseAnalyzed = false; /* the database was already analyzed? */ |
| static private boolean moduleSizeSet = false; /* the database was already analyzed? */ |
| static private boolean preInstallDone = false; /* preInstall script already executed? */ |
| static private boolean isAbortedInstallation = false; |
| static private boolean isErrorInstallation = false; |
| static private boolean logModuleStates = false; /* logging the current state of modules */ |
| static private boolean visibleModulesChecked = false; /* checking, if the user selected modules */ |
| static private boolean languageModulesChecked = false; /* checking, if the user selected language modules */ |
| static private boolean applicationModulesChecked = false; /* checking, if the user selected application modules */ |
| static private boolean isMaskedCompleteUninstallation = false; /* checking if all visible modules are uninstalled */ |
| static private boolean typicalSelectionStateSaved = false; |
| static private boolean customSelectionStateSaved = false; |
| static private boolean startSelectionStateSaved = false; |
| static private boolean olderVersionExists = false; |
| static private boolean sameVersionExists = false; |
| static private boolean newerVersionExists = false; |
| static private boolean majorUpgrade = false; |
| static private boolean isMultiLingual = false; |
| static private boolean dontUpdate = false; |
| static private boolean hideEula = false; |
| static private boolean databaseQueried = false; |
| static private boolean useRtl = false; |
| static private boolean installedProductMinorSet = false; |
| static private boolean isDebianSystem = false; |
| static private boolean useForceDebian = false; /* --force-debian */ |
| static private boolean debianInvestigated = false; |
| static private boolean isFirstPackage = false; |
| static private String installType; /* custom or typical installation */ |
| static private String osType; /* Linux, SunOS, ... */ |
| static private String installDir = null; |
| static private String defaultDir = "/opt"; |
| static private String installDefaultDir = null; |
| static private String productDir = null; |
| static private String packageFormat = null; |
| static private String architecture = null; |
| static private String packagePath = null; |
| static private String packageSubdir = "packages"; |
| static private String adminFileNameReloc = null; |
| static private String adminFileNameRelocNoDepends = null; |
| static private String adminFileNameNoReloc = null; |
| static private String adminFileNameNoRelocNoDepends = null; |
| static private String databasePath = null; |
| static private String getUidPath = null; |
| static private String installationPrivileges = null; |
| static private String storedInstallationPrivileges = null; /* privileges saved in file */ |
| static private String localTempPath = null; |
| static private String installDirName = "installdata"; |
| static private String uninstallDirName = "uninstalldata"; |
| static private int availableDiscSpace = 0; |
| static private int preselectedLanguages = 0; |
| static private int productMinor = 0; |
| static private int installedProductMinor = 0; |
| static private File jarFilePath = null; |
| static private File resourceRoot; |
| static private File infoRoot; |
| static private HashMap shellEnvironment = null; /* Solaris environment for user install */ |
| static private HashMap databaseMap = null; |
| static private PackageDescription updatePackage = null; |
| static private Vector removeFiles = new Vector(); /* Files to remove, if installation is aborted */ |
| static private Vector installPackages = new Vector(); |
| static private Vector oldPackages = new Vector(); |
| static private Vector systemLanguages = new Vector(); |
| |
| public static InstallData getInstance() |
| { |
| if (instance == null) { |
| instance = new InstallData(); |
| } |
| return instance; |
| } |
| |
| private InstallData() |
| { |
| installType = ACTION_TYPICAL; // default installation type |
| isUserInstallation = SystemManager.isUserInstallation(); |
| isRootInstallation = !isUserInstallation; |
| setInstallationPrivileges(isUserInstallation); |
| osType = SystemManager.getOSType(); |
| resourceRoot = SystemManager.getResourceRoot(); |
| setInstallationMode(); |
| setSolarisUserInstall(); |
| setHtmlFileExistence(); |
| setBidiSupport(); |
| } |
| |
| public void setInstallationType(String installationtype) { |
| installType = installationtype; |
| |
| if ( installType.equals(this.getCustomActionCommand())) { |
| isCustomInstallation = true; |
| isTypicalInstallation = false; |
| } |
| |
| if ( installType.equals(this.getTypicalActionCommand())) { |
| isCustomInstallation = false; |
| isTypicalInstallation = true; |
| } |
| } |
| |
| private void setInstallationMode() { |
| // Exists a directory "uninstalldata" below the resource root? |
| File uninstallDir = new File(resourceRoot, uninstallDirName); |
| File installDir = new File(resourceRoot, installDirName); |
| |
| if ( SystemManager.exists_directory(uninstallDir.getPath())) { |
| isInstallationMode = false; |
| isUninstallationMode = true; |
| infoRoot = uninstallDir; |
| System.err.println("Mode: uninstallation"); |
| } else if ( SystemManager.exists_directory(installDir.getPath())) { |
| isInstallationMode = true; |
| isUninstallationMode = false; |
| infoRoot = installDir; |
| System.err.println("Mode: installation"); |
| } else { |
| // isInstallationMode = null; |
| // isUninstallationMode = null; |
| infoRoot = null; |
| System.err.println("Error: Did not find info path"); |
| System.err.println("Error: No info about installation or uninstallation"); |
| System.exit(1); |
| } |
| } |
| |
| private void setSolarisUserInstall() { |
| if (( isUserInstallation ) && (osType.equalsIgnoreCase("SunOS"))) { |
| isSolarisUserInstallation = true; |
| if ( isInstallationMode ) { |
| Controller.checkForUidFile(this); |
| } |
| } |
| } |
| |
| private void setHtmlFileExistence() { |
| // After inforoot is determined, the existence of files in subdirectory "html" can be checked |
| File htmlDirectory = getInfoRoot("html"); |
| ResourceManager.checkFileExistence(htmlDirectory); |
| } |
| |
| private void setBidiSupport() { |
| Locale locale = Locale.getDefault(); |
| if (( locale.getLanguage().equals(new Locale("he", "", "").getLanguage()) ) |
| || ( locale.getLanguage().equals(new Locale("ar", "", "").getLanguage()) )) { |
| useRtl = true; |
| } |
| } |
| |
| private void setInstallationPrivileges(boolean isUserInstallation) { |
| if ( isUserInstallation ) { |
| installationPrivileges = "user"; |
| } else { |
| installationPrivileges = "root"; |
| } |
| } |
| |
| public String getInstallationType() { |
| return installType; |
| } |
| |
| public String getCustomActionCommand() { |
| return ACTION_CUSTOM; |
| } |
| |
| public String getTypicalActionCommand() { |
| return ACTION_TYPICAL; |
| } |
| |
| public String getInstallationPrivileges() { |
| return installationPrivileges; |
| } |
| |
| public String getOSType() { |
| return osType; |
| } |
| |
| public File getResourceRoot() { |
| return resourceRoot; |
| } |
| |
| public File getResourceRoot(String subDirectory) { |
| |
| File dir = getResourceRoot(); |
| |
| if (dir != null) { |
| dir = new File(dir, subDirectory); |
| if (!dir.exists()) { |
| dir = null; |
| } |
| } |
| |
| return dir; |
| } |
| |
| public File getInfoRoot() { |
| return infoRoot; |
| } |
| |
| public File getInfoRoot(String subDirectory) { |
| File dir = new File(infoRoot, subDirectory); |
| if (!dir.exists()) { |
| dir = null; |
| } |
| |
| return dir; |
| } |
| |
| public boolean isUserInstallation() { |
| return isUserInstallation; |
| } |
| |
| public boolean isRootInstallation() { |
| return isRootInstallation; |
| } |
| |
| public boolean isInstallationMode() { |
| return isInstallationMode; |
| } |
| |
| public boolean isUninstallationMode() { |
| return isUninstallationMode; |
| } |
| |
| public boolean isSolarisUserInstallation() { |
| return isSolarisUserInstallation; |
| } |
| |
| public boolean useRtl() { |
| return useRtl; |
| } |
| |
| public String getDefaultDir() { |
| return defaultDir; |
| } |
| |
| public void setDefaultDir(String dir) { |
| defaultDir = dir; |
| } |
| |
| public String getProductDir() { |
| return productDir; |
| } |
| |
| public void setProductDir(String dir) { |
| productDir = dir; |
| } |
| |
| public int getProductMinor() { |
| return productMinor; |
| } |
| |
| public void setProductMinor(int minor) { |
| productMinor = minor; |
| } |
| |
| public int getInstalledProductMinor() { |
| return installedProductMinor; |
| } |
| |
| public void setInstalledProductMinor(int minor) { |
| installedProductMinor = minor; |
| } |
| |
| public String getInstallDirName() { |
| return installDirName; |
| } |
| |
| public String getUninstallDirName() { |
| return uninstallDirName; |
| } |
| |
| public String getInstallDir() { |
| return installDir; |
| } |
| |
| public void setInstallDir(String dir) { |
| installDir = dir; |
| } |
| |
| public String getInstallDefaultDir() { |
| return installDefaultDir; |
| } |
| |
| public void setInstallDefaultDir(String dir) { |
| installDefaultDir = dir; |
| } |
| |
| public String getDatabasePath() { |
| return databasePath; |
| } |
| |
| public void setDatabasePath(String path) { |
| databasePath = path; |
| } |
| |
| public String getPackagePath() { |
| if ( packagePath == null ) { |
| packagePath = SystemManager.getPackagePath(packageSubdir); |
| } |
| return packagePath; |
| } |
| |
| public void setPackagePath(String path) { |
| packagePath = path; |
| } |
| |
| public String getPackageSubdir() { |
| return packageSubdir; |
| } |
| |
| public void setPackageSubdir(String dir) { |
| packageSubdir = dir; |
| } |
| |
| public String getPackageFormat() { |
| return packageFormat; |
| } |
| |
| public void setPackageFormat(String format) { |
| packageFormat = format; |
| } |
| |
| public String getArchitecture() { |
| return architecture; |
| } |
| |
| public void setArchitecture(String arch) { |
| architecture = arch; |
| } |
| |
| public String getLocalTempPath() { |
| return localTempPath; |
| } |
| |
| public void setLocalTempPath(String path) { |
| localTempPath = path; |
| } |
| |
| public int getAvailableDiscSpace() { |
| return availableDiscSpace; |
| } |
| |
| public void setAvailableDiscSpace(int space) { |
| availableDiscSpace = space; |
| } |
| |
| public int getPreselectedLanguages() { |
| return preselectedLanguages; |
| } |
| |
| public void setPreselectedLanguages(int count) { |
| preselectedLanguages = count; |
| } |
| |
| public String getAdminFileNameReloc() { |
| return adminFileNameReloc; |
| } |
| |
| public void setAdminFileNameReloc(String fileName) { |
| adminFileNameReloc = fileName; |
| } |
| |
| public String getAdminFileNameRelocNoDepends() { |
| return adminFileNameRelocNoDepends; |
| } |
| |
| public void setAdminFileNameRelocNoDepends(String fileName) { |
| adminFileNameRelocNoDepends = fileName; |
| } |
| |
| public String getAdminFileNameNoReloc() { |
| return adminFileNameNoReloc; |
| } |
| |
| public void setAdminFileNameNoReloc(String fileName) { |
| adminFileNameNoReloc = fileName; |
| } |
| |
| public String getAdminFileNameNoRelocNoDepends() { |
| return adminFileNameNoRelocNoDepends; |
| } |
| |
| public void setAdminFileNameNoRelocNoDepends(String fileName) { |
| adminFileNameNoRelocNoDepends = fileName; |
| } |
| |
| public String getGetUidPath() { |
| return getUidPath; |
| } |
| |
| public void setGetUidPath(String filePath) { |
| getUidPath = filePath; |
| } |
| |
| public String getStoredInstallationPrivileges() { |
| return storedInstallationPrivileges; |
| } |
| |
| public void setStoredInstallationPrivileges(String privileges) { |
| storedInstallationPrivileges = privileges; |
| } |
| |
| public void setStillRunning(boolean running) { |
| stillRunning = running; |
| } |
| |
| public boolean stillRunning() { |
| return stillRunning; |
| } |
| |
| public void setStillAnalyzing(boolean running) { |
| stillAnalyzing = running; |
| } |
| |
| public boolean stillAnalyzing() { |
| return stillAnalyzing; |
| } |
| |
| public void setDatabaseAnalyzed(boolean analyzed) { |
| databaseAnalyzed = analyzed; |
| } |
| |
| public boolean databaseAnalyzed() { |
| return databaseAnalyzed; |
| } |
| |
| public void setModuleSizeSet(boolean set) { |
| moduleSizeSet = set; |
| } |
| |
| public boolean moduleSizeSet() { |
| return moduleSizeSet; |
| } |
| |
| public void setPreInstallDone(boolean done) { |
| preInstallDone = done; |
| } |
| |
| public boolean preInstallDone() { |
| return preInstallDone; |
| } |
| |
| public boolean isChangeInstallation() { |
| return isChangeInstallation; |
| } |
| |
| public void setIsChangeInstallation(boolean changeInstallation) { |
| isChangeInstallation = changeInstallation; |
| } |
| |
| public boolean isTypicalInstallation() { |
| return isTypicalInstallation; |
| } |
| |
| public boolean isCustomInstallation() { |
| return isCustomInstallation; |
| } |
| |
| public boolean isAbortedInstallation() { |
| return isAbortedInstallation; |
| } |
| |
| public void setIsAbortedInstallation(boolean abortedInstallation) { |
| isAbortedInstallation = abortedInstallation; |
| } |
| |
| public boolean isErrorInstallation() { |
| return isErrorInstallation; |
| } |
| |
| public void setIsErrorInstallation(boolean errorInstallation) { |
| isErrorInstallation = errorInstallation; |
| } |
| |
| public boolean isMultiLingual() { |
| return isMultiLingual; |
| } |
| |
| public void setIsMultiLingual(boolean multiLingual) { |
| isMultiLingual = multiLingual; |
| } |
| |
| public boolean logModuleStates() { |
| return logModuleStates; |
| } |
| |
| public void setLogModuleStates(boolean log) { |
| logModuleStates = log; |
| } |
| |
| public boolean visibleModulesChecked() { |
| return visibleModulesChecked; |
| } |
| |
| public void setVisibleModulesChecked(boolean checked) { |
| visibleModulesChecked = checked; |
| } |
| |
| public boolean languageModulesChecked() { |
| return languageModulesChecked; |
| } |
| |
| public void setLanguageModulesChecked(boolean checked) { |
| languageModulesChecked = checked; |
| } |
| |
| public boolean applicationModulesChecked() { |
| return applicationModulesChecked; |
| } |
| |
| public void setApplicationModulesChecked(boolean checked) { |
| applicationModulesChecked = checked; |
| } |
| |
| public boolean isMaskedCompleteUninstallation() { |
| return isMaskedCompleteUninstallation; |
| } |
| |
| public void setMaskedCompleteUninstallation(boolean masked) { |
| isMaskedCompleteUninstallation = masked; |
| } |
| |
| public boolean typicalSelectionStateSaved() { |
| return typicalSelectionStateSaved; |
| } |
| |
| public void setTypicalSelectionStateSaved(boolean saved) { |
| typicalSelectionStateSaved = saved; |
| } |
| |
| public boolean customSelectionStateSaved() { |
| return customSelectionStateSaved; |
| } |
| |
| public void setCustomSelectionStateSaved(boolean saved) { |
| customSelectionStateSaved = saved; |
| } |
| |
| public boolean startSelectionStateSaved() { |
| return startSelectionStateSaved; |
| } |
| |
| public void setStartSelectionStateSaved(boolean saved) { |
| startSelectionStateSaved = saved; |
| } |
| |
| public boolean olderVersionExists() { |
| return olderVersionExists; |
| } |
| |
| public void setOlderVersionExists(boolean exists) { |
| olderVersionExists = exists; |
| } |
| |
| public boolean isMajorUpgrade() { |
| return majorUpgrade; |
| } |
| |
| public void setMajorUpgrade(boolean upgrade) { |
| majorUpgrade = upgrade; |
| } |
| |
| public boolean sameVersionExists() { |
| return sameVersionExists; |
| } |
| |
| public void setSameVersionExists(boolean exists) { |
| sameVersionExists = exists; |
| } |
| |
| public boolean newerVersionExists() { |
| return newerVersionExists; |
| } |
| |
| public void setNewerVersionExists(boolean exists) { |
| newerVersionExists = exists; |
| } |
| |
| public boolean dontUpdate() { |
| return dontUpdate; |
| } |
| |
| public void setDontUpdate(boolean value) { |
| dontUpdate = value; |
| } |
| |
| public boolean hideEula() { |
| return hideEula; |
| } |
| |
| public void setHideEula(boolean value) { |
| hideEula = value; |
| } |
| |
| public boolean installedProductMinorSet() { |
| return installedProductMinorSet; |
| } |
| |
| public void setInstalledProductMinorSet(boolean value) { |
| installedProductMinorSet = value; |
| } |
| |
| public boolean debianInvestigated() { |
| return debianInvestigated; |
| } |
| |
| public void setDebianInvestigated(boolean value) { |
| debianInvestigated = value; |
| } |
| |
| public boolean isDebianSystem() { |
| return isDebianSystem; |
| } |
| |
| public void setIsDebianSystem(boolean value) { |
| isDebianSystem = value; |
| } |
| |
| public boolean isFirstPackage() { |
| return isFirstPackage; |
| } |
| |
| public void setIsFirstPackage(boolean value) { |
| isFirstPackage = value; |
| } |
| |
| public boolean useForceDebian() { |
| return useForceDebian; |
| } |
| |
| public void setUseForceDebian(boolean value) { |
| useForceDebian = value; |
| } |
| |
| public boolean databaseQueried() { |
| return databaseQueried; |
| } |
| |
| public void setDatabaseQueried(boolean value) { |
| databaseQueried = value; |
| } |
| |
| public PackageDescription getUpdatePackage() { |
| return updatePackage; |
| } |
| |
| public void setUpdatePackage(PackageDescription onePackage) { |
| updatePackage = onePackage; |
| } |
| |
| public HashMap getShellEnvironment() { |
| return shellEnvironment; |
| } |
| |
| public HashMap getDatabaseMap() { |
| return databaseMap; |
| } |
| |
| public void setDatabaseMap(HashMap map) { |
| databaseMap = map; |
| } |
| |
| public Vector getRemoveFiles() { |
| return removeFiles; |
| } |
| |
| public Vector getInstallPackages() { |
| return installPackages; |
| } |
| |
| public void setInstallPackages(Vector packages) { |
| installPackages = packages; |
| } |
| |
| public Vector getOldPackages() { |
| return oldPackages; |
| } |
| |
| public void setOldPackages(Vector packages) { |
| oldPackages = packages; |
| } |
| |
| public Vector getSystemLanguages() { |
| return systemLanguages; |
| } |
| |
| public void setSystemLanguages(Vector languages) { |
| systemLanguages = languages; |
| } |
| |
| public void setShellEnvironment(HashMap environment) { |
| shellEnvironment = environment; |
| } |
| |
| public File getJarFilePath() { |
| if ( jarFilePath == null ) { |
| jarFilePath = SystemManager.getJarFilePath(); |
| } |
| return jarFilePath; |
| } |
| |
| } |