1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 package org.openoffice.setup; 25 26 import org.openoffice.setup.SetupData.PackageDescription; 27 import org.openoffice.setup.Util.Controller; 28 import org.openoffice.setup.Util.SystemManager; 29 import java.io.File; 30 import java.util.HashMap; 31 import java.util.Locale; 32 import java.util.Vector; 33 34 public class InstallData 35 { 36 public static final String ACTION_TYPICAL = "ActionTypical"; 37 public static final String ACTION_CUSTOM = "ActionCustom"; 38 39 private static InstallData instance = null; 40 41 static private boolean isUserInstallation; /* root or user installation? */ 42 static private boolean isRootInstallation; /* root or user installation? */ 43 static private boolean isInstallationMode; /* installation or uninstallation? */ 44 static private boolean isUninstallationMode; /* installation or uninstallation? */ 45 static private boolean isCustomInstallation = false; /* custom or typical? */ 46 static private boolean isTypicalInstallation = true; /* custom or typical? */ 47 static private boolean isSolarisUserInstallation = false; 48 static private boolean isChangeInstallation = false; 49 static private boolean stillRunning = false; 50 static private boolean stillAnalyzing = true; 51 static private boolean databaseAnalyzed = false; /* the database was already analyzed? */ 52 static private boolean moduleSizeSet = false; /* the database was already analyzed? */ 53 static private boolean preInstallDone = false; /* preInstall script already executed? */ 54 static private boolean isAbortedInstallation = false; 55 static private boolean isErrorInstallation = false; 56 static private boolean logModuleStates = false; /* logging the current state of modules */ 57 static private boolean visibleModulesChecked = false; /* checking, if the user selected modules */ 58 static private boolean languageModulesChecked = false; /* checking, if the user selected language modules */ 59 static private boolean applicationModulesChecked = false; /* checking, if the user selected application modules */ 60 static private boolean isMaskedCompleteUninstallation = false; /* checking if all visible modules are uninstalled */ 61 static private boolean typicalSelectionStateSaved = false; 62 static private boolean customSelectionStateSaved = false; 63 static private boolean startSelectionStateSaved = false; 64 static private boolean olderVersionExists = false; 65 static private boolean sameVersionExists = false; 66 static private boolean newerVersionExists = false; 67 static private boolean majorUpgrade = false; 68 static private boolean isMultiLingual = false; 69 static private boolean dontUpdate = false; 70 static private boolean hideEula = false; 71 static private boolean databaseQueried = false; 72 static private boolean useRtl = false; 73 static private boolean installedProductMinorSet = false; 74 static private boolean isDebianSystem = false; 75 static private boolean useForceDebian = false; /* --force-debian */ 76 static private boolean debianInvestigated = false; 77 static private boolean isFirstPackage = false; 78 static private String installType; /* custom or typical installation */ 79 static private String osType; /* Linux, SunOS, ... */ 80 static private String installDir = null; 81 static private String defaultDir = "/opt"; 82 static private String installDefaultDir = null; 83 static private String productDir = null; 84 static private String packageFormat = null; 85 static private String architecture = null; 86 static private String packagePath = null; 87 static private String packageSubdir = "packages"; 88 static private String adminFileNameReloc = null; 89 static private String adminFileNameRelocNoDepends = null; 90 static private String adminFileNameNoReloc = null; 91 static private String adminFileNameNoRelocNoDepends = null; 92 static private String databasePath = null; 93 static private String getUidPath = null; 94 static private String installationPrivileges = null; 95 static private String storedInstallationPrivileges = null; /* privileges saved in file */ 96 static private String localTempPath = null; 97 static private String installDirName = "installdata"; 98 static private String uninstallDirName = "uninstalldata"; 99 static private int availableDiscSpace = 0; 100 static private int preselectedLanguages = 0; 101 static private int productMinor = 0; 102 static private int installedProductMinor = 0; 103 static private File jarFilePath = null; 104 static private File resourceRoot; 105 static private File infoRoot; 106 static private HashMap shellEnvironment = null; /* Solaris environment for user install */ 107 static private HashMap databaseMap = null; 108 static private PackageDescription updatePackage = null; 109 static private Vector removeFiles = new Vector(); /* Files to remove, if installation is aborted */ 110 static private Vector installPackages = new Vector(); 111 static private Vector oldPackages = new Vector(); 112 static private Vector systemLanguages = new Vector(); 113 getInstance()114 public static InstallData getInstance() 115 { 116 if (instance == null) { 117 instance = new InstallData(); 118 } 119 return instance; 120 } 121 InstallData()122 private InstallData() 123 { 124 installType = ACTION_TYPICAL; // default installation type 125 isUserInstallation = SystemManager.isUserInstallation(); 126 isRootInstallation = !isUserInstallation; 127 setInstallationPrivileges(isUserInstallation); 128 osType = SystemManager.getOSType(); 129 resourceRoot = SystemManager.getResourceRoot(); 130 setInstallationMode(); 131 setSolarisUserInstall(); 132 setHtmlFileExistence(); 133 setBidiSupport(); 134 } 135 setInstallationType(String installationtype)136 public void setInstallationType(String installationtype) { 137 installType = installationtype; 138 139 if ( installType.equals(this.getCustomActionCommand())) { 140 isCustomInstallation = true; 141 isTypicalInstallation = false; 142 } 143 144 if ( installType.equals(this.getTypicalActionCommand())) { 145 isCustomInstallation = false; 146 isTypicalInstallation = true; 147 } 148 } 149 setInstallationMode()150 private void setInstallationMode() { 151 // Exists a directory "uninstalldata" below the resource root? 152 File uninstallDir = new File(resourceRoot, uninstallDirName); 153 File installDir = new File(resourceRoot, installDirName); 154 155 if ( SystemManager.exists_directory(uninstallDir.getPath())) { 156 isInstallationMode = false; 157 isUninstallationMode = true; 158 infoRoot = uninstallDir; 159 System.err.println("Mode: uninstallation"); 160 } else if ( SystemManager.exists_directory(installDir.getPath())) { 161 isInstallationMode = true; 162 isUninstallationMode = false; 163 infoRoot = installDir; 164 System.err.println("Mode: installation"); 165 } else { 166 // isInstallationMode = null; 167 // isUninstallationMode = null; 168 infoRoot = null; 169 System.err.println("Error: Did not find info path"); 170 System.err.println("Error: No info about installation or uninstallation"); 171 System.exit(1); 172 } 173 } 174 setSolarisUserInstall()175 private void setSolarisUserInstall() { 176 if (( isUserInstallation ) && (osType.equalsIgnoreCase("SunOS"))) { 177 isSolarisUserInstallation = true; 178 if ( isInstallationMode ) { 179 Controller.checkForUidFile(this); 180 } 181 } 182 } 183 setHtmlFileExistence()184 private void setHtmlFileExistence() { 185 // After inforoot is determined, the existence of files in subdirectory "html" can be checked 186 File htmlDirectory = getInfoRoot("html"); 187 ResourceManager.checkFileExistence(htmlDirectory); 188 } 189 setBidiSupport()190 private void setBidiSupport() { 191 Locale locale = Locale.getDefault(); 192 if (( locale.getLanguage().equals(new Locale("he", "", "").getLanguage()) ) 193 || ( locale.getLanguage().equals(new Locale("ar", "", "").getLanguage()) )) { 194 useRtl = true; 195 } 196 } 197 setInstallationPrivileges(boolean isUserInstallation)198 private void setInstallationPrivileges(boolean isUserInstallation) { 199 if ( isUserInstallation ) { 200 installationPrivileges = "user"; 201 } else { 202 installationPrivileges = "root"; 203 } 204 } 205 getInstallationType()206 public String getInstallationType() { 207 return installType; 208 } 209 getCustomActionCommand()210 public String getCustomActionCommand() { 211 return ACTION_CUSTOM; 212 } 213 getTypicalActionCommand()214 public String getTypicalActionCommand() { 215 return ACTION_TYPICAL; 216 } 217 getInstallationPrivileges()218 public String getInstallationPrivileges() { 219 return installationPrivileges; 220 } 221 getOSType()222 public String getOSType() { 223 return osType; 224 } 225 getResourceRoot()226 public File getResourceRoot() { 227 return resourceRoot; 228 } 229 getResourceRoot(String subDirectory)230 public File getResourceRoot(String subDirectory) { 231 232 File dir = getResourceRoot(); 233 234 if (dir != null) { 235 dir = new File(dir, subDirectory); 236 if (!dir.exists()) { 237 dir = null; 238 } 239 } 240 241 return dir; 242 } 243 getInfoRoot()244 public File getInfoRoot() { 245 return infoRoot; 246 } 247 getInfoRoot(String subDirectory)248 public File getInfoRoot(String subDirectory) { 249 File dir = new File(infoRoot, subDirectory); 250 if (!dir.exists()) { 251 dir = null; 252 } 253 254 return dir; 255 } 256 isUserInstallation()257 public boolean isUserInstallation() { 258 return isUserInstallation; 259 } 260 isRootInstallation()261 public boolean isRootInstallation() { 262 return isRootInstallation; 263 } 264 isInstallationMode()265 public boolean isInstallationMode() { 266 return isInstallationMode; 267 } 268 isUninstallationMode()269 public boolean isUninstallationMode() { 270 return isUninstallationMode; 271 } 272 isSolarisUserInstallation()273 public boolean isSolarisUserInstallation() { 274 return isSolarisUserInstallation; 275 } 276 useRtl()277 public boolean useRtl() { 278 return useRtl; 279 } 280 getDefaultDir()281 public String getDefaultDir() { 282 return defaultDir; 283 } 284 setDefaultDir(String dir)285 public void setDefaultDir(String dir) { 286 defaultDir = dir; 287 } 288 getProductDir()289 public String getProductDir() { 290 return productDir; 291 } 292 setProductDir(String dir)293 public void setProductDir(String dir) { 294 productDir = dir; 295 } 296 getProductMinor()297 public int getProductMinor() { 298 return productMinor; 299 } 300 setProductMinor(int minor)301 public void setProductMinor(int minor) { 302 productMinor = minor; 303 } 304 getInstalledProductMinor()305 public int getInstalledProductMinor() { 306 return installedProductMinor; 307 } 308 setInstalledProductMinor(int minor)309 public void setInstalledProductMinor(int minor) { 310 installedProductMinor = minor; 311 } 312 getInstallDirName()313 public String getInstallDirName() { 314 return installDirName; 315 } 316 getUninstallDirName()317 public String getUninstallDirName() { 318 return uninstallDirName; 319 } 320 getInstallDir()321 public String getInstallDir() { 322 return installDir; 323 } 324 setInstallDir(String dir)325 public void setInstallDir(String dir) { 326 installDir = dir; 327 } 328 getInstallDefaultDir()329 public String getInstallDefaultDir() { 330 return installDefaultDir; 331 } 332 setInstallDefaultDir(String dir)333 public void setInstallDefaultDir(String dir) { 334 installDefaultDir = dir; 335 } 336 getDatabasePath()337 public String getDatabasePath() { 338 return databasePath; 339 } 340 setDatabasePath(String path)341 public void setDatabasePath(String path) { 342 databasePath = path; 343 } 344 getPackagePath()345 public String getPackagePath() { 346 if ( packagePath == null ) { 347 packagePath = SystemManager.getPackagePath(packageSubdir); 348 } 349 return packagePath; 350 } 351 setPackagePath(String path)352 public void setPackagePath(String path) { 353 packagePath = path; 354 } 355 getPackageSubdir()356 public String getPackageSubdir() { 357 return packageSubdir; 358 } 359 setPackageSubdir(String dir)360 public void setPackageSubdir(String dir) { 361 packageSubdir = dir; 362 } 363 getPackageFormat()364 public String getPackageFormat() { 365 return packageFormat; 366 } 367 setPackageFormat(String format)368 public void setPackageFormat(String format) { 369 packageFormat = format; 370 } 371 getArchitecture()372 public String getArchitecture() { 373 return architecture; 374 } 375 setArchitecture(String arch)376 public void setArchitecture(String arch) { 377 architecture = arch; 378 } 379 getLocalTempPath()380 public String getLocalTempPath() { 381 return localTempPath; 382 } 383 setLocalTempPath(String path)384 public void setLocalTempPath(String path) { 385 localTempPath = path; 386 } 387 getAvailableDiscSpace()388 public int getAvailableDiscSpace() { 389 return availableDiscSpace; 390 } 391 setAvailableDiscSpace(int space)392 public void setAvailableDiscSpace(int space) { 393 availableDiscSpace = space; 394 } 395 getPreselectedLanguages()396 public int getPreselectedLanguages() { 397 return preselectedLanguages; 398 } 399 setPreselectedLanguages(int count)400 public void setPreselectedLanguages(int count) { 401 preselectedLanguages = count; 402 } 403 getAdminFileNameReloc()404 public String getAdminFileNameReloc() { 405 return adminFileNameReloc; 406 } 407 setAdminFileNameReloc(String fileName)408 public void setAdminFileNameReloc(String fileName) { 409 adminFileNameReloc = fileName; 410 } 411 getAdminFileNameRelocNoDepends()412 public String getAdminFileNameRelocNoDepends() { 413 return adminFileNameRelocNoDepends; 414 } 415 setAdminFileNameRelocNoDepends(String fileName)416 public void setAdminFileNameRelocNoDepends(String fileName) { 417 adminFileNameRelocNoDepends = fileName; 418 } 419 getAdminFileNameNoReloc()420 public String getAdminFileNameNoReloc() { 421 return adminFileNameNoReloc; 422 } 423 setAdminFileNameNoReloc(String fileName)424 public void setAdminFileNameNoReloc(String fileName) { 425 adminFileNameNoReloc = fileName; 426 } 427 getAdminFileNameNoRelocNoDepends()428 public String getAdminFileNameNoRelocNoDepends() { 429 return adminFileNameNoRelocNoDepends; 430 } 431 setAdminFileNameNoRelocNoDepends(String fileName)432 public void setAdminFileNameNoRelocNoDepends(String fileName) { 433 adminFileNameNoRelocNoDepends = fileName; 434 } 435 getGetUidPath()436 public String getGetUidPath() { 437 return getUidPath; 438 } 439 setGetUidPath(String filePath)440 public void setGetUidPath(String filePath) { 441 getUidPath = filePath; 442 } 443 getStoredInstallationPrivileges()444 public String getStoredInstallationPrivileges() { 445 return storedInstallationPrivileges; 446 } 447 setStoredInstallationPrivileges(String privileges)448 public void setStoredInstallationPrivileges(String privileges) { 449 storedInstallationPrivileges = privileges; 450 } 451 setStillRunning(boolean running)452 public void setStillRunning(boolean running) { 453 stillRunning = running; 454 } 455 stillRunning()456 public boolean stillRunning() { 457 return stillRunning; 458 } 459 setStillAnalyzing(boolean running)460 public void setStillAnalyzing(boolean running) { 461 stillAnalyzing = running; 462 } 463 stillAnalyzing()464 public boolean stillAnalyzing() { 465 return stillAnalyzing; 466 } 467 setDatabaseAnalyzed(boolean analyzed)468 public void setDatabaseAnalyzed(boolean analyzed) { 469 databaseAnalyzed = analyzed; 470 } 471 databaseAnalyzed()472 public boolean databaseAnalyzed() { 473 return databaseAnalyzed; 474 } 475 setModuleSizeSet(boolean set)476 public void setModuleSizeSet(boolean set) { 477 moduleSizeSet = set; 478 } 479 moduleSizeSet()480 public boolean moduleSizeSet() { 481 return moduleSizeSet; 482 } 483 setPreInstallDone(boolean done)484 public void setPreInstallDone(boolean done) { 485 preInstallDone = done; 486 } 487 preInstallDone()488 public boolean preInstallDone() { 489 return preInstallDone; 490 } 491 isChangeInstallation()492 public boolean isChangeInstallation() { 493 return isChangeInstallation; 494 } 495 setIsChangeInstallation(boolean changeInstallation)496 public void setIsChangeInstallation(boolean changeInstallation) { 497 isChangeInstallation = changeInstallation; 498 } 499 isTypicalInstallation()500 public boolean isTypicalInstallation() { 501 return isTypicalInstallation; 502 } 503 isCustomInstallation()504 public boolean isCustomInstallation() { 505 return isCustomInstallation; 506 } 507 isAbortedInstallation()508 public boolean isAbortedInstallation() { 509 return isAbortedInstallation; 510 } 511 setIsAbortedInstallation(boolean abortedInstallation)512 public void setIsAbortedInstallation(boolean abortedInstallation) { 513 isAbortedInstallation = abortedInstallation; 514 } 515 isErrorInstallation()516 public boolean isErrorInstallation() { 517 return isErrorInstallation; 518 } 519 setIsErrorInstallation(boolean errorInstallation)520 public void setIsErrorInstallation(boolean errorInstallation) { 521 isErrorInstallation = errorInstallation; 522 } 523 isMultiLingual()524 public boolean isMultiLingual() { 525 return isMultiLingual; 526 } 527 setIsMultiLingual(boolean multiLingual)528 public void setIsMultiLingual(boolean multiLingual) { 529 isMultiLingual = multiLingual; 530 } 531 logModuleStates()532 public boolean logModuleStates() { 533 return logModuleStates; 534 } 535 setLogModuleStates(boolean log)536 public void setLogModuleStates(boolean log) { 537 logModuleStates = log; 538 } 539 visibleModulesChecked()540 public boolean visibleModulesChecked() { 541 return visibleModulesChecked; 542 } 543 setVisibleModulesChecked(boolean checked)544 public void setVisibleModulesChecked(boolean checked) { 545 visibleModulesChecked = checked; 546 } 547 languageModulesChecked()548 public boolean languageModulesChecked() { 549 return languageModulesChecked; 550 } 551 setLanguageModulesChecked(boolean checked)552 public void setLanguageModulesChecked(boolean checked) { 553 languageModulesChecked = checked; 554 } 555 applicationModulesChecked()556 public boolean applicationModulesChecked() { 557 return applicationModulesChecked; 558 } 559 setApplicationModulesChecked(boolean checked)560 public void setApplicationModulesChecked(boolean checked) { 561 applicationModulesChecked = checked; 562 } 563 isMaskedCompleteUninstallation()564 public boolean isMaskedCompleteUninstallation() { 565 return isMaskedCompleteUninstallation; 566 } 567 setMaskedCompleteUninstallation(boolean masked)568 public void setMaskedCompleteUninstallation(boolean masked) { 569 isMaskedCompleteUninstallation = masked; 570 } 571 typicalSelectionStateSaved()572 public boolean typicalSelectionStateSaved() { 573 return typicalSelectionStateSaved; 574 } 575 setTypicalSelectionStateSaved(boolean saved)576 public void setTypicalSelectionStateSaved(boolean saved) { 577 typicalSelectionStateSaved = saved; 578 } 579 customSelectionStateSaved()580 public boolean customSelectionStateSaved() { 581 return customSelectionStateSaved; 582 } 583 setCustomSelectionStateSaved(boolean saved)584 public void setCustomSelectionStateSaved(boolean saved) { 585 customSelectionStateSaved = saved; 586 } 587 startSelectionStateSaved()588 public boolean startSelectionStateSaved() { 589 return startSelectionStateSaved; 590 } 591 setStartSelectionStateSaved(boolean saved)592 public void setStartSelectionStateSaved(boolean saved) { 593 startSelectionStateSaved = saved; 594 } 595 olderVersionExists()596 public boolean olderVersionExists() { 597 return olderVersionExists; 598 } 599 setOlderVersionExists(boolean exists)600 public void setOlderVersionExists(boolean exists) { 601 olderVersionExists = exists; 602 } 603 isMajorUpgrade()604 public boolean isMajorUpgrade() { 605 return majorUpgrade; 606 } 607 setMajorUpgrade(boolean upgrade)608 public void setMajorUpgrade(boolean upgrade) { 609 majorUpgrade = upgrade; 610 } 611 sameVersionExists()612 public boolean sameVersionExists() { 613 return sameVersionExists; 614 } 615 setSameVersionExists(boolean exists)616 public void setSameVersionExists(boolean exists) { 617 sameVersionExists = exists; 618 } 619 newerVersionExists()620 public boolean newerVersionExists() { 621 return newerVersionExists; 622 } 623 setNewerVersionExists(boolean exists)624 public void setNewerVersionExists(boolean exists) { 625 newerVersionExists = exists; 626 } 627 dontUpdate()628 public boolean dontUpdate() { 629 return dontUpdate; 630 } 631 setDontUpdate(boolean value)632 public void setDontUpdate(boolean value) { 633 dontUpdate = value; 634 } 635 hideEula()636 public boolean hideEula() { 637 return hideEula; 638 } 639 setHideEula(boolean value)640 public void setHideEula(boolean value) { 641 hideEula = value; 642 } 643 installedProductMinorSet()644 public boolean installedProductMinorSet() { 645 return installedProductMinorSet; 646 } 647 setInstalledProductMinorSet(boolean value)648 public void setInstalledProductMinorSet(boolean value) { 649 installedProductMinorSet = value; 650 } 651 debianInvestigated()652 public boolean debianInvestigated() { 653 return debianInvestigated; 654 } 655 setDebianInvestigated(boolean value)656 public void setDebianInvestigated(boolean value) { 657 debianInvestigated = value; 658 } 659 isDebianSystem()660 public boolean isDebianSystem() { 661 return isDebianSystem; 662 } 663 setIsDebianSystem(boolean value)664 public void setIsDebianSystem(boolean value) { 665 isDebianSystem = value; 666 } 667 isFirstPackage()668 public boolean isFirstPackage() { 669 return isFirstPackage; 670 } 671 setIsFirstPackage(boolean value)672 public void setIsFirstPackage(boolean value) { 673 isFirstPackage = value; 674 } 675 useForceDebian()676 public boolean useForceDebian() { 677 return useForceDebian; 678 } 679 setUseForceDebian(boolean value)680 public void setUseForceDebian(boolean value) { 681 useForceDebian = value; 682 } 683 databaseQueried()684 public boolean databaseQueried() { 685 return databaseQueried; 686 } 687 setDatabaseQueried(boolean value)688 public void setDatabaseQueried(boolean value) { 689 databaseQueried = value; 690 } 691 getUpdatePackage()692 public PackageDescription getUpdatePackage() { 693 return updatePackage; 694 } 695 setUpdatePackage(PackageDescription onePackage)696 public void setUpdatePackage(PackageDescription onePackage) { 697 updatePackage = onePackage; 698 } 699 getShellEnvironment()700 public HashMap getShellEnvironment() { 701 return shellEnvironment; 702 } 703 getDatabaseMap()704 public HashMap getDatabaseMap() { 705 return databaseMap; 706 } 707 setDatabaseMap(HashMap map)708 public void setDatabaseMap(HashMap map) { 709 databaseMap = map; 710 } 711 getRemoveFiles()712 public Vector getRemoveFiles() { 713 return removeFiles; 714 } 715 getInstallPackages()716 public Vector getInstallPackages() { 717 return installPackages; 718 } 719 setInstallPackages(Vector packages)720 public void setInstallPackages(Vector packages) { 721 installPackages = packages; 722 } 723 getOldPackages()724 public Vector getOldPackages() { 725 return oldPackages; 726 } 727 setOldPackages(Vector packages)728 public void setOldPackages(Vector packages) { 729 oldPackages = packages; 730 } 731 getSystemLanguages()732 public Vector getSystemLanguages() { 733 return systemLanguages; 734 } 735 setSystemLanguages(Vector languages)736 public void setSystemLanguages(Vector languages) { 737 systemLanguages = languages; 738 } 739 setShellEnvironment(HashMap environment)740 public void setShellEnvironment(HashMap environment) { 741 shellEnvironment = environment; 742 } 743 getJarFilePath()744 public File getJarFilePath() { 745 if ( jarFilePath == null ) { 746 jarFilePath = SystemManager.getJarFilePath(); 747 } 748 return jarFilePath; 749 } 750 751 } 752