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.Controller;
25 
26 import org.openoffice.setup.InstallData;
27 import org.openoffice.setup.Installer.Installer;
28 import org.openoffice.setup.Installer.InstallerFactory;
29 import org.openoffice.setup.PanelController;
30 import org.openoffice.setup.Panel.Prologue;
31 import org.openoffice.setup.SetupData.PackageDescription;
32 import org.openoffice.setup.SetupData.SetupDataProvider;
33 import org.openoffice.setup.Util.Controller;
34 import org.openoffice.setup.Util.Dumper;
35 import org.openoffice.setup.Util.ModuleCtrl;
36 import org.openoffice.setup.Util.SystemManager;
37 
38 public class PrologueCtrl extends PanelController {
39 
40     private String helpFile;
41 
PrologueCtrl()42     public PrologueCtrl() {
43         super("Prologue", new Prologue());
44         helpFile = "String_Helpfile_Prologue";
45     }
46 
47     // public void beforeShow() {
duringShow()48     public void duringShow() {
49         getSetupFrame().setButtonEnabled(false, getSetupFrame().BUTTON_PREVIOUS);
50 
51         Thread t = new Thread() {
52             public void run() {
53                 InstallData installData = InstallData.getInstance();
54                 if ( ! installData.preInstallDone() ) {
55                     getSetupFrame().setButtonEnabled(false, getSetupFrame().BUTTON_NEXT);
56 
57                     Controller.checkPackagePathExistence(installData);
58                     Controller.checkPackageFormat(installData);
59 
60                     if (( installData.getOSType().equalsIgnoreCase("SunOS") ) && ( installData.isMultiLingual() )) {
61                         Controller.collectSystemLanguages(installData);
62                     }
63 
64                     PackageDescription packageData = SetupDataProvider.getPackageDescription();
65                     Installer installer = InstallerFactory.getInstance();
66                     installer.preInstall(packageData);
67 
68                     installData.setPreInstallDone(true);
69 
70                     if ( SystemManager.logModuleStates() ) {
71                         installData.setLogModuleStates(true);
72                     }
73 
74                     if ( installData.logModuleStates() ) {
75                         Dumper.logModuleStates(packageData, "Prologue Dialog");
76                     }
77 
78                     if (( installData.getOSType().equalsIgnoreCase("SunOS") ) && ( installData.isMultiLingual() )) {
79                         ModuleCtrl.checkLanguagesPackages(packageData, installData);
80 
81                         // int count = installData.getPreselectedLanguages();
82                         // System.err.println("Number of preselected language packages: " + count);
83 
84                         if ( installData.getPreselectedLanguages() == 0 ) {
85                             // Something mysterious happened. Setting all languages again.
86                             ModuleCtrl.setLanguagesPackages(packageData);
87                         }
88 
89                         if ( installData.logModuleStates() ) {
90                             Dumper.logModuleStates(packageData, "Prologue Dialog Language Selection");
91                         }
92                     }
93 
94                     if ( ! installData.isMultiLingual() ) {
95                         ModuleCtrl.setHiddenLanguageModuleDefaultSettings(packageData);
96 
97                         if ( installData.logModuleStates() ) {
98                             Dumper.logModuleStates(packageData, "after setHiddenLanguageModuleDefaultSettings");
99                         }
100                     }
101 
102                     if (( installData.isRootInstallation() ) && ( installData.getOSType().equalsIgnoreCase("SunOS") )) {
103                         // Check, if root has write access in /usr and /etc .
104                         // In sparse zones with imported directories this is not always the case.
105                         if ( Controller.reducedRootWritePrivileges() ) {
106                             ModuleCtrl.setIgnoreNonRelocatablePackages(packageData);
107                         }
108 
109                         if ( installData.logModuleStates() ) {
110                             Dumper.logModuleStates(packageData, "after setIgnoreNonRelocatablePackages");
111                         }
112                     }
113 
114                     if ( installData.isRootInstallation() ) {
115 
116                         // Setting installation directory!
117                         String dir = "/";
118                         installData.setInstallDir(dir);
119                         installData.setInstallDefaultDir(installData.getDefaultDir());
120 
121                         Controller.checkForNewerVersion(installData);
122 
123                         // Check Write privileges in installation directory (installData.getInstallDefaultDir())
124                         // If the directory exists, is has to be tested, whether the user has write access
125                         dir = installData.getInstallDefaultDir();
126 
127                         if ( SystemManager.exists_directory(dir) ) {
128                             if ( ! Controller.createdSubDirectory(dir) ) {
129                                 System.err.println("ERROR: No write privileges inside directory: " + dir);
130                                 System.exit(1);
131                             }
132                         }
133 
134                         // If the directory does not exist, is has to be tested, whether the user can create it
135                         if ( ! SystemManager.exists_directory(dir)) {
136                             if ( ! Controller.createdDirectory(dir) ) {
137                                 System.err.println("ERROR: No privileges to create directory: " + dir);
138                                 System.exit(1);
139                             }
140                         }
141 
142                         // Setting macro
143                         SetupDataProvider.setNewMacro("DIR", dir); // important for string replacement
144 
145                         // Calculate available disc space
146                         int discSpace = SystemManager.calculateDiscSpace(dir);
147                         installData.setAvailableDiscSpace(discSpace);
148 
149                         if ( ! installData.databaseAnalyzed()) {
150                             ModuleCtrl.defaultDatabaseAnalysis(installData);
151                             installData.setDatabaseAnalyzed(true);
152                         }
153                     }
154 
155                     getSetupFrame().setButtonEnabled(true, getSetupFrame().BUTTON_NEXT);
156                 }
157             }
158         };
159         t.start();
160     }
161 
afterShow(boolean nextButtonPressed)162     public boolean afterShow(boolean nextButtonPressed) {
163         boolean repeatDialog = false;
164         getSetupFrame().setButtonEnabled(true, getSetupFrame().BUTTON_PREVIOUS);
165         return repeatDialog;
166     }
167 
getNext()168     public String getNext() {
169         InstallData data = InstallData.getInstance();
170 
171         if ( data.hideEula() ) {
172             if ( data.isRootInstallation() ) {
173                 if ( data.olderVersionExists() ) {
174                     return new String("InstallationImminent");
175                 } else if ( data.sameVersionExists() ) {
176                     return new String("ChooseComponents");
177                 } else {
178                     return new String("ChooseInstallationType");
179                 }
180             } else {
181                 return new String("ChooseDirectory");
182             }
183         } else {
184             return new String("AcceptLicense");
185         }
186     }
187 
getPrevious()188     public String getPrevious() {
189         return null;
190     }
191 
getHelpFileName()192     public final String getHelpFileName() {
193         return this.helpFile;
194     }
195 
196 }
197