xref: /AOO41X/main/javainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/PackageDescription.java (revision 67e470dafe1997e73f56ff7ff4878983707e3e07)
1*9a1eeea9SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*9a1eeea9SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*9a1eeea9SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*9a1eeea9SAndrew Rist  * distributed with this work for additional information
6*9a1eeea9SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*9a1eeea9SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*9a1eeea9SAndrew Rist  * "License"); you may not use this file except in compliance
9*9a1eeea9SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*9a1eeea9SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*9a1eeea9SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*9a1eeea9SAndrew Rist  * software distributed under the License is distributed on an
15*9a1eeea9SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*9a1eeea9SAndrew Rist  * KIND, either express or implied.  See the License for the
17*9a1eeea9SAndrew Rist  * specific language governing permissions and limitations
18*9a1eeea9SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*9a1eeea9SAndrew Rist  *************************************************************/
21*9a1eeea9SAndrew Rist 
22*9a1eeea9SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir package org.openoffice.setup.SetupData;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir import org.openoffice.setup.Util.Parser;
27cdf0e10cSrcweir import java.io.Reader;
28cdf0e10cSrcweir import java.io.StringReader;
29cdf0e10cSrcweir import java.util.Collections;
30cdf0e10cSrcweir import java.util.Comparator;
31cdf0e10cSrcweir import java.util.Enumeration;
32cdf0e10cSrcweir import java.util.Locale;
33cdf0e10cSrcweir import java.util.Vector;
34cdf0e10cSrcweir import javax.swing.tree.TreeNode;
35cdf0e10cSrcweir 
36cdf0e10cSrcweir /**
37cdf0e10cSrcweir  *
38cdf0e10cSrcweir  * @author Ingo Schmidt
39cdf0e10cSrcweir  */
40cdf0e10cSrcweir public class PackageDescription implements TreeNode {
41cdf0e10cSrcweir 
42cdf0e10cSrcweir     public final static int NOTA_UNIT= 0;
43cdf0e10cSrcweir     public final static int RPM_UNIT = 1;
44cdf0e10cSrcweir     public final static int PKG_UNIT = 2;
45cdf0e10cSrcweir     /* public final static int MSI_UNIT = 3;
46cdf0e10cSrcweir      * public final static int TAR_UNIT = 4;
47cdf0e10cSrcweir      * public final static int TGZ_UNIT = 5;
48cdf0e10cSrcweir      */
49cdf0e10cSrcweir 
50cdf0e10cSrcweir     public final static int DONT_INSTALL      = 0;
51cdf0e10cSrcweir     public final static int INSTALL           = 1;
52cdf0e10cSrcweir     public final static int INSTALL_SOME      = 2;
53cdf0e10cSrcweir     public final static int REMOVE            = 3;
54cdf0e10cSrcweir     public final static int DONT_REMOVE       = 4;
55cdf0e10cSrcweir     public final static int REMOVE_SOME       = 5;
56cdf0e10cSrcweir     public final static int IGNORE            = 6;
57cdf0e10cSrcweir     public final static int DONT_KNOW         = 7;
58cdf0e10cSrcweir 
59cdf0e10cSrcweir     /* hierarchy information */
60cdf0e10cSrcweir     private Vector children           = null;
61cdf0e10cSrcweir     private PackageDescription parent = null;
62cdf0e10cSrcweir 
63cdf0e10cSrcweir     /* did the user select this package */
64cdf0e10cSrcweir     private int     usrSelectionState = DONT_KNOW;
65cdf0e10cSrcweir 
66cdf0e10cSrcweir     /* display information */
67cdf0e10cSrcweir     private String  dpyName            = "";
68cdf0e10cSrcweir     private String  dpyDescription     = "";
69cdf0e10cSrcweir     private String  checkSolaris       = "";
70cdf0e10cSrcweir     private int     instSize    = 0;
71cdf0e10cSrcweir     private int     dpySortKey  = 0;
72cdf0e10cSrcweir     private boolean isDefault   = true;
73cdf0e10cSrcweir     private boolean isHidden    = false;
74cdf0e10cSrcweir     private boolean showInUserInstall = true;
75cdf0e10cSrcweir     private boolean showInUserInstallOnly = false;
76cdf0e10cSrcweir     private boolean isOptional  = true;
77cdf0e10cSrcweir     private boolean dontUninstall = false;
78cdf0e10cSrcweir     private boolean allChildrenHidden = false;
79cdf0e10cSrcweir 
80cdf0e10cSrcweir     /* package information */
81cdf0e10cSrcweir     private String  pkgMD5Sum   = "";
82cdf0e10cSrcweir     private String  pkgFileName = "";
83cdf0e10cSrcweir     private String  pkgFullName = null;
84cdf0e10cSrcweir     private String  pkgVersion = null;
85cdf0e10cSrcweir     private String  pkgRelease = null;
86cdf0e10cSrcweir     private String  pkgRealName = null;
87cdf0e10cSrcweir     private String  pkgSubdir = null;
88cdf0e10cSrcweir     private String  pkgLanguage = null;
89cdf0e10cSrcweir     private int     pkgSize     = 0;
90cdf0e10cSrcweir     private int     pkgOrder    = 0;
91cdf0e10cSrcweir     private int     pkgType     = NOTA_UNIT;
92cdf0e10cSrcweir     private boolean pkgExists = true;  // must be default, especially for uninstallation
93cdf0e10cSrcweir     private boolean isRelocatable = true;
94cdf0e10cSrcweir     private boolean isUpdatePackage = false;
95cdf0e10cSrcweir     private boolean showMultiLingualOnly = false;
96cdf0e10cSrcweir     private boolean isApplicationPackage = false;
97cdf0e10cSrcweir     private boolean isJavaPackage = false;
98cdf0e10cSrcweir     private boolean installCanFail = false;
99cdf0e10cSrcweir     private boolean uninstallCanFail = false;
100cdf0e10cSrcweir     private boolean forceIntoUpdate = false;
101cdf0e10cSrcweir     private boolean useForce = false;
102cdf0e10cSrcweir     private boolean isNewInstalled = false;
103cdf0e10cSrcweir     private boolean wasAlreadyInstalled = false;
104cdf0e10cSrcweir     private boolean ignoreDependsForUninstall = false;
105cdf0e10cSrcweir 
106cdf0e10cSrcweir     /* Saving the default selection state. This is necessary, if the user chooses
107cdf0e10cSrcweir      * the custom installation type, makes changes, and then changes into
108cdf0e10cSrcweir      * the typical installation set. Then all user settings have to be removed again.
109cdf0e10cSrcweir      * On the other hand, if the user then changes to the custom installation type
110cdf0e10cSrcweir      * again, he probably wants to see the settings he has done before.
111cdf0e10cSrcweir      */
112cdf0e10cSrcweir 
113cdf0e10cSrcweir     private int     typicalSelectionState = DONT_KNOW;  // Saving settings for typical installation
114cdf0e10cSrcweir     private int     customSelectionState = DONT_KNOW;   // Saving settings for custom installation
115cdf0e10cSrcweir     private int     startSelectionState = DONT_KNOW;    // Saving settings at start of installation
116cdf0e10cSrcweir 
PackageDescription()117cdf0e10cSrcweir     public PackageDescription() {}
118cdf0e10cSrcweir 
119cdf0e10cSrcweir     /**
120cdf0e10cSrcweir      * construct only with package information to wrap
121cdf0e10cSrcweir      */
PackageDescription(XMLPackageDescription p)122cdf0e10cSrcweir     protected PackageDescription(XMLPackageDescription p) {
123cdf0e10cSrcweir         this(p, (PackageDescription)null);
124cdf0e10cSrcweir     }
125cdf0e10cSrcweir 
PackageDescription(XMLPackageDescription descriptionData, PackageDescription parent)126cdf0e10cSrcweir     private PackageDescription(XMLPackageDescription descriptionData, PackageDescription parent) {
127cdf0e10cSrcweir 
128cdf0e10cSrcweir         this.parent = parent;
129cdf0e10cSrcweir         children = new Vector();
130cdf0e10cSrcweir         parse(descriptionData);
131cdf0e10cSrcweir 
132cdf0e10cSrcweir         /* sort according to display sort key */
133cdf0e10cSrcweir         Collections.sort(children, new PackageComparator());
134cdf0e10cSrcweir      }
135cdf0e10cSrcweir 
136cdf0e10cSrcweir     /**
137cdf0e10cSrcweir      * retrieve information about the package properties
138cdf0e10cSrcweir      */
139cdf0e10cSrcweir 
getName()140cdf0e10cSrcweir     public String getName() {
141cdf0e10cSrcweir         return dpyName;
142cdf0e10cSrcweir     }
143cdf0e10cSrcweir 
setName(String name)144cdf0e10cSrcweir     public void setName(String name) {
145cdf0e10cSrcweir         dpyName = name;
146cdf0e10cSrcweir     }
147cdf0e10cSrcweir 
getDescription()148cdf0e10cSrcweir     public String getDescription() {
149cdf0e10cSrcweir         return dpyDescription;
150cdf0e10cSrcweir     }
151cdf0e10cSrcweir 
getCheckSolaris()152cdf0e10cSrcweir     public String getCheckSolaris() {
153cdf0e10cSrcweir         return checkSolaris;
154cdf0e10cSrcweir     }
155cdf0e10cSrcweir 
getSize()156cdf0e10cSrcweir     public int getSize() {
157cdf0e10cSrcweir         return pkgSize;
158cdf0e10cSrcweir     }
159cdf0e10cSrcweir 
setSize(int size)160cdf0e10cSrcweir     public void setSize(int size) {
161cdf0e10cSrcweir         pkgSize = size;
162cdf0e10cSrcweir     }
163cdf0e10cSrcweir 
getOrder()164cdf0e10cSrcweir     public int getOrder() {
165cdf0e10cSrcweir         return pkgOrder;
166cdf0e10cSrcweir     }
167cdf0e10cSrcweir 
setOrder(int order)168cdf0e10cSrcweir     public void setOrder(int order) {
169cdf0e10cSrcweir         pkgOrder = order;
170cdf0e10cSrcweir     }
171cdf0e10cSrcweir 
172cdf0e10cSrcweir     // public int getAccumulatedSize() {
173cdf0e10cSrcweir     //     int size = getSize();
174cdf0e10cSrcweir     //
175cdf0e10cSrcweir     //     for (Enumeration e = this.children(); e.hasMoreElements(); ) {
176cdf0e10cSrcweir     //         // Should only be accumulated for selected modules
177cdf0e10cSrcweir     //         PackageDescription data = (PackageDescription) e.nextElement();
178cdf0e10cSrcweir     //         size += data.getSize();
179cdf0e10cSrcweir     //     }
180cdf0e10cSrcweir     //
181cdf0e10cSrcweir     //     return size;
182cdf0e10cSrcweir     // }
183cdf0e10cSrcweir 
isOptional()184cdf0e10cSrcweir     public boolean isOptional() {
185cdf0e10cSrcweir         return isOptional;
186cdf0e10cSrcweir     }
187cdf0e10cSrcweir 
isHidden()188cdf0e10cSrcweir     public boolean isHidden() {
189cdf0e10cSrcweir         return isHidden;
190cdf0e10cSrcweir     }
191cdf0e10cSrcweir 
showInUserInstall()192cdf0e10cSrcweir     public boolean showInUserInstall() {
193cdf0e10cSrcweir         return showInUserInstall;
194cdf0e10cSrcweir     }
195cdf0e10cSrcweir 
showInUserInstallOnly()196cdf0e10cSrcweir     public boolean showInUserInstallOnly() {
197cdf0e10cSrcweir         return showInUserInstallOnly;
198cdf0e10cSrcweir     }
199cdf0e10cSrcweir 
dontUninstall()200cdf0e10cSrcweir     public boolean dontUninstall() {
201cdf0e10cSrcweir         return dontUninstall;
202cdf0e10cSrcweir     }
203cdf0e10cSrcweir 
isUpdatePackage()204cdf0e10cSrcweir     public boolean isUpdatePackage() {
205cdf0e10cSrcweir         return isUpdatePackage;
206cdf0e10cSrcweir     }
207cdf0e10cSrcweir 
showMultiLingualOnly()208cdf0e10cSrcweir     public boolean showMultiLingualOnly() {
209cdf0e10cSrcweir         return showMultiLingualOnly;
210cdf0e10cSrcweir     }
211cdf0e10cSrcweir 
isApplicationPackage()212cdf0e10cSrcweir     public boolean isApplicationPackage() {
213cdf0e10cSrcweir         return isApplicationPackage;
214cdf0e10cSrcweir     }
215cdf0e10cSrcweir 
isJavaPackage()216cdf0e10cSrcweir     public boolean isJavaPackage() {
217cdf0e10cSrcweir         return isJavaPackage;
218cdf0e10cSrcweir     }
219cdf0e10cSrcweir 
installCanFail()220cdf0e10cSrcweir     public boolean installCanFail() {
221cdf0e10cSrcweir         return installCanFail;
222cdf0e10cSrcweir     }
223cdf0e10cSrcweir 
uninstallCanFail()224cdf0e10cSrcweir     public boolean uninstallCanFail() {
225cdf0e10cSrcweir         return uninstallCanFail;
226cdf0e10cSrcweir     }
227cdf0e10cSrcweir 
setUninstallCanFail(boolean canFail)228cdf0e10cSrcweir     public void setUninstallCanFail(boolean canFail) {
229cdf0e10cSrcweir         uninstallCanFail = canFail;
230cdf0e10cSrcweir     }
231cdf0e10cSrcweir 
forceIntoUpdate()232cdf0e10cSrcweir     public boolean forceIntoUpdate() {
233cdf0e10cSrcweir         return forceIntoUpdate;
234cdf0e10cSrcweir     }
235cdf0e10cSrcweir 
useForce()236cdf0e10cSrcweir     public boolean useForce() {
237cdf0e10cSrcweir         return useForce;
238cdf0e10cSrcweir     }
239cdf0e10cSrcweir 
setIsNewInstalled(boolean installed)240cdf0e10cSrcweir     public void setIsNewInstalled(boolean installed) {
241cdf0e10cSrcweir         isNewInstalled = installed;
242cdf0e10cSrcweir     }
243cdf0e10cSrcweir 
isNewInstalled()244cdf0e10cSrcweir     public boolean isNewInstalled() {
245cdf0e10cSrcweir         return isNewInstalled;
246cdf0e10cSrcweir     }
247cdf0e10cSrcweir 
setWasAlreadyInstalled(boolean installed)248cdf0e10cSrcweir     public void setWasAlreadyInstalled(boolean installed) {
249cdf0e10cSrcweir         wasAlreadyInstalled = installed;
250cdf0e10cSrcweir     }
251cdf0e10cSrcweir 
wasAlreadyInstalled()252cdf0e10cSrcweir     public boolean wasAlreadyInstalled() {
253cdf0e10cSrcweir         return wasAlreadyInstalled;
254cdf0e10cSrcweir     }
255cdf0e10cSrcweir 
setIgnoreDependsForUninstall(boolean ignore)256cdf0e10cSrcweir     public void setIgnoreDependsForUninstall(boolean ignore) {
257cdf0e10cSrcweir         ignoreDependsForUninstall = ignore;
258cdf0e10cSrcweir     }
259cdf0e10cSrcweir 
ignoreDependsForUninstall()260cdf0e10cSrcweir     public boolean ignoreDependsForUninstall() {
261cdf0e10cSrcweir         return ignoreDependsForUninstall;
262cdf0e10cSrcweir     }
263cdf0e10cSrcweir 
isDefault()264cdf0e10cSrcweir     public boolean isDefault() {
265cdf0e10cSrcweir         return isDefault;
266cdf0e10cSrcweir     }
267cdf0e10cSrcweir 
getMD5()268cdf0e10cSrcweir     public String getMD5() {
269cdf0e10cSrcweir         return pkgMD5Sum;
270cdf0e10cSrcweir     }
271cdf0e10cSrcweir 
isRelocatable()272cdf0e10cSrcweir     public boolean isRelocatable() {
273cdf0e10cSrcweir         return isRelocatable;
274cdf0e10cSrcweir     }
275cdf0e10cSrcweir 
setIsRelocatable(boolean relocatable)276cdf0e10cSrcweir     public void setIsRelocatable(boolean relocatable) {
277cdf0e10cSrcweir         isRelocatable = relocatable;
278cdf0e10cSrcweir     }
279cdf0e10cSrcweir 
getPackageName()280cdf0e10cSrcweir     public String getPackageName() {
281cdf0e10cSrcweir         return pkgFileName;
282cdf0e10cSrcweir     }
283cdf0e10cSrcweir 
setPackageName(String name)284cdf0e10cSrcweir     public void setPackageName(String name) {
285cdf0e10cSrcweir         pkgFileName = name;
286cdf0e10cSrcweir     }
287cdf0e10cSrcweir 
288cdf0e10cSrcweir 
getFullPackageName()289cdf0e10cSrcweir     public String getFullPackageName() {
290cdf0e10cSrcweir         return pkgFullName;
291cdf0e10cSrcweir     }
292cdf0e10cSrcweir 
setFullPackageName(String fullPackageName)293cdf0e10cSrcweir     public void setFullPackageName(String fullPackageName) {
294cdf0e10cSrcweir         pkgFullName = fullPackageName;
295cdf0e10cSrcweir     }
296cdf0e10cSrcweir 
getSelectionState()297cdf0e10cSrcweir     public int getSelectionState() {
298cdf0e10cSrcweir         return usrSelectionState;
299cdf0e10cSrcweir     }
300cdf0e10cSrcweir 
setSelectionState(int state)301cdf0e10cSrcweir     public void setSelectionState(int state) {
302cdf0e10cSrcweir         usrSelectionState = state;
303cdf0e10cSrcweir     }
304cdf0e10cSrcweir 
getCustomSelectionState()305cdf0e10cSrcweir     public int getCustomSelectionState() {
306cdf0e10cSrcweir         return customSelectionState;
307cdf0e10cSrcweir     }
308cdf0e10cSrcweir 
setCustomSelectionState(int state)309cdf0e10cSrcweir     public void setCustomSelectionState(int state) {
310cdf0e10cSrcweir         customSelectionState = state;
311cdf0e10cSrcweir     }
312cdf0e10cSrcweir 
getTypicalSelectionState()313cdf0e10cSrcweir      public int getTypicalSelectionState() {
314cdf0e10cSrcweir         return typicalSelectionState;
315cdf0e10cSrcweir     }
316cdf0e10cSrcweir 
setTypicalSelectionState(int state)317cdf0e10cSrcweir     public void setTypicalSelectionState(int state) {
318cdf0e10cSrcweir         typicalSelectionState = state;
319cdf0e10cSrcweir     }
320cdf0e10cSrcweir 
getStartSelectionState()321cdf0e10cSrcweir     public int getStartSelectionState() {
322cdf0e10cSrcweir         return startSelectionState;
323cdf0e10cSrcweir     }
324cdf0e10cSrcweir 
setStartSelectionState(int state)325cdf0e10cSrcweir     public void setStartSelectionState(int state) {
326cdf0e10cSrcweir         startSelectionState = state;
327cdf0e10cSrcweir     }
328cdf0e10cSrcweir 
isAllChildrenHidden()329cdf0e10cSrcweir     public boolean isAllChildrenHidden() {
330cdf0e10cSrcweir         return allChildrenHidden;
331cdf0e10cSrcweir     }
332cdf0e10cSrcweir 
setAllChildrenHidden(boolean hidden)333cdf0e10cSrcweir     public void setAllChildrenHidden(boolean hidden) {
334cdf0e10cSrcweir         allChildrenHidden = hidden;
335cdf0e10cSrcweir     }
336cdf0e10cSrcweir 
setIsHidden(boolean hidden)337cdf0e10cSrcweir     public void setIsHidden(boolean hidden) {
338cdf0e10cSrcweir         isHidden = hidden;
339cdf0e10cSrcweir     }
340cdf0e10cSrcweir 
pkgExists()341cdf0e10cSrcweir     public boolean pkgExists() {
342cdf0e10cSrcweir         return pkgExists;
343cdf0e10cSrcweir     }
344cdf0e10cSrcweir 
setPkgExists(boolean exists)345cdf0e10cSrcweir     public void setPkgExists(boolean exists) {
346cdf0e10cSrcweir         pkgExists = exists;
347cdf0e10cSrcweir     }
348cdf0e10cSrcweir 
getPkgVersion()349cdf0e10cSrcweir     public String getPkgVersion() {
350cdf0e10cSrcweir         return pkgVersion;
351cdf0e10cSrcweir     }
352cdf0e10cSrcweir 
setPkgVersion(String version)353cdf0e10cSrcweir     public void setPkgVersion(String version) {
354cdf0e10cSrcweir         pkgVersion = version;
355cdf0e10cSrcweir     }
356cdf0e10cSrcweir 
getPkgRelease()357cdf0e10cSrcweir     public String getPkgRelease() {
358cdf0e10cSrcweir         return pkgRelease;
359cdf0e10cSrcweir     }
360cdf0e10cSrcweir 
setPkgRelease(String release)361cdf0e10cSrcweir     public void setPkgRelease(String release) {
362cdf0e10cSrcweir         pkgRelease = release;
363cdf0e10cSrcweir     }
364cdf0e10cSrcweir 
getPkgRealName()365cdf0e10cSrcweir     public String getPkgRealName() {
366cdf0e10cSrcweir         return pkgRealName;
367cdf0e10cSrcweir     }
368cdf0e10cSrcweir 
setPkgRealName(String realName)369cdf0e10cSrcweir     public void setPkgRealName(String realName) {
370cdf0e10cSrcweir         pkgRealName = realName;
371cdf0e10cSrcweir     }
372cdf0e10cSrcweir 
getPkgSubdir()373cdf0e10cSrcweir     public String getPkgSubdir() {
374cdf0e10cSrcweir         return pkgSubdir;
375cdf0e10cSrcweir     }
376cdf0e10cSrcweir 
setPkgSubdir(String subdir)377cdf0e10cSrcweir     public void setPkgSubdir(String subdir) {
378cdf0e10cSrcweir         pkgSubdir = subdir;
379cdf0e10cSrcweir     }
380cdf0e10cSrcweir 
getPkgLanguage()381cdf0e10cSrcweir     public String getPkgLanguage() {
382cdf0e10cSrcweir         return pkgLanguage;
383cdf0e10cSrcweir     }
384cdf0e10cSrcweir 
setPkgLanguage(String language)385cdf0e10cSrcweir     public void setPkgLanguage(String language) {
386cdf0e10cSrcweir         pkgLanguage = language;
387cdf0e10cSrcweir     }
388cdf0e10cSrcweir 
389cdf0e10cSrcweir     /**
390cdf0e10cSrcweir      * extract the name and the description according to the locale
391cdf0e10cSrcweir      */
getLocalizedValue(XMLPackageDescription packageData, String section, Locale l)392cdf0e10cSrcweir     private String getLocalizedValue(XMLPackageDescription packageData, String section, Locale l) {
393cdf0e10cSrcweir         String localizedValue = "";
394cdf0e10cSrcweir 
395cdf0e10cSrcweir         String countryString  = l.getCountry();
396cdf0e10cSrcweir         String languageString = l.getLanguage();
397cdf0e10cSrcweir         String localeString   = languageString + "_" + countryString;
398cdf0e10cSrcweir 
399cdf0e10cSrcweir         XMLPackageDescription subPackage = packageData.getElement(section, "lang", localeString);
400cdf0e10cSrcweir         if (subPackage == null) {
401cdf0e10cSrcweir             subPackage = packageData.getElement(section, "lang", languageString);
402cdf0e10cSrcweir             if (subPackage == null) {
403cdf0e10cSrcweir                 subPackage = packageData.getElement(section, "lang", "en_US");
404cdf0e10cSrcweir             }
405cdf0e10cSrcweir         }
406cdf0e10cSrcweir         if (subPackage != null) {
407cdf0e10cSrcweir             localizedValue = subPackage.getValue();
408cdf0e10cSrcweir         }
409cdf0e10cSrcweir 
410cdf0e10cSrcweir         return localizedValue;
411cdf0e10cSrcweir     }
412cdf0e10cSrcweir 
413cdf0e10cSrcweir     /**
414cdf0e10cSrcweir      * parse the wrapped package description
415cdf0e10cSrcweir      */
416cdf0e10cSrcweir 
parse(XMLPackageDescription data)417cdf0e10cSrcweir     private void parse(XMLPackageDescription data) {
418cdf0e10cSrcweir 
419cdf0e10cSrcweir         XMLPackageDescription section;
420cdf0e10cSrcweir         XMLPackageDescription subSection;
421cdf0e10cSrcweir 
422cdf0e10cSrcweir         /* information about how to display the node */
423cdf0e10cSrcweir         section = data.getElement("display");
424cdf0e10cSrcweir         if (section != null) {
425cdf0e10cSrcweir             /* display types: hidden, visible */
426cdf0e10cSrcweir             String displayType = section.getAttribute("type");
427cdf0e10cSrcweir             if (displayType != null) {
428cdf0e10cSrcweir                 isHidden = displayType.equals("hidden");
429cdf0e10cSrcweir             }
430cdf0e10cSrcweir 
431cdf0e10cSrcweir             /* name and description according to the current locale */
432cdf0e10cSrcweir             Locale locale = Locale.getDefault();
433cdf0e10cSrcweir             dpyName        = getLocalizedValue(section, "name",        locale);
434cdf0e10cSrcweir             dpyDescription = getLocalizedValue(section, "description", locale);
435cdf0e10cSrcweir 
436cdf0e10cSrcweir             subSection = section.getElement("sortkey");
437cdf0e10cSrcweir             if (subSection != null) {
438cdf0e10cSrcweir                 String sort = subSection.getValue();
439cdf0e10cSrcweir                 dpySortKey = Integer.parseInt(sort);
440cdf0e10cSrcweir             }
441cdf0e10cSrcweir 
442cdf0e10cSrcweir             subSection = section.getElement("default");
443cdf0e10cSrcweir             if (subSection != null) {
444cdf0e10cSrcweir                 String defaultValue = subSection.getValue();
445cdf0e10cSrcweir                 isDefault = Parser.parseBoolean(defaultValue);
446cdf0e10cSrcweir                 // isDefault = Boolean.parseBoolean(defaultValue);
447cdf0e10cSrcweir             }
448cdf0e10cSrcweir 
449cdf0e10cSrcweir             subSection = section.getElement("showinuserinstall");
450cdf0e10cSrcweir             if (subSection != null) {
451cdf0e10cSrcweir                 String showInUserInstallValue = subSection.getValue();
452cdf0e10cSrcweir                 showInUserInstall = Parser.parseBoolean(showInUserInstallValue);
453cdf0e10cSrcweir                 // showInUserInstall = Boolean.parseBoolean(showInUserInstallValue);
454cdf0e10cSrcweir             }
455cdf0e10cSrcweir 
456cdf0e10cSrcweir             subSection = section.getElement("showinuserinstallonly");
457cdf0e10cSrcweir             if (subSection != null) {
458cdf0e10cSrcweir                 String showInUserInstallValueOnly = subSection.getValue();
459cdf0e10cSrcweir                 showInUserInstallOnly = Parser.parseBoolean(showInUserInstallValueOnly);
460cdf0e10cSrcweir             }
461cdf0e10cSrcweir 
462cdf0e10cSrcweir             subSection = section.getElement("dontuninstall");
463cdf0e10cSrcweir             if (subSection != null) {
464cdf0e10cSrcweir                 String dontUninstallValue = subSection.getValue();
465cdf0e10cSrcweir                 dontUninstall = Parser.parseBoolean(dontUninstallValue);
466cdf0e10cSrcweir                 // dontUninstall = Boolean.parseBoolean(dontUninstallValue);
467cdf0e10cSrcweir             }
468cdf0e10cSrcweir 
469cdf0e10cSrcweir             subSection = section.getElement("checksolaris");
470cdf0e10cSrcweir             if (subSection != null) {
471cdf0e10cSrcweir                 checkSolaris = subSection.getValue();
472cdf0e10cSrcweir             }
473cdf0e10cSrcweir 
474cdf0e10cSrcweir             subSection = section.getElement("isupdatepackage");
475cdf0e10cSrcweir             if (subSection != null) {
476cdf0e10cSrcweir                 String isUpdatePackageValue = subSection.getValue();
477cdf0e10cSrcweir                 isUpdatePackage = Parser.parseBoolean(isUpdatePackageValue);
478cdf0e10cSrcweir                 // isUpdatePackage = Boolean.parseBoolean(isUpdatePackageValue);
479cdf0e10cSrcweir             }
480cdf0e10cSrcweir 
481cdf0e10cSrcweir             subSection = section.getElement("showmultilingualonly");
482cdf0e10cSrcweir             if (subSection != null) {
483cdf0e10cSrcweir                 String showMultiLingualOnlyValue = subSection.getValue();
484cdf0e10cSrcweir                 showMultiLingualOnly = Parser.parseBoolean(showMultiLingualOnlyValue);
485cdf0e10cSrcweir             }
486cdf0e10cSrcweir 
487cdf0e10cSrcweir             subSection = section.getElement("applicationmodule");
488cdf0e10cSrcweir             if (subSection != null) {
489cdf0e10cSrcweir                 String isApplicationPackageValue = subSection.getValue();
490cdf0e10cSrcweir                 isApplicationPackage = Parser.parseBoolean(isApplicationPackageValue);
491cdf0e10cSrcweir             }
492cdf0e10cSrcweir 
493cdf0e10cSrcweir             subSection = section.getElement("isjavapackage");
494cdf0e10cSrcweir             if (subSection != null) {
495cdf0e10cSrcweir                 String isJavaPackageValue = subSection.getValue();
496cdf0e10cSrcweir                 isJavaPackage = Parser.parseBoolean(isJavaPackageValue);
497cdf0e10cSrcweir                 // isJavaPackage = Boolean.parseBoolean(isJavaPackageValue);
498cdf0e10cSrcweir             }
499cdf0e10cSrcweir 
500cdf0e10cSrcweir             subSection = section.getElement("installcanfail");
501cdf0e10cSrcweir             if (subSection != null) {
502cdf0e10cSrcweir                 String installCanFailValue = subSection.getValue();
503cdf0e10cSrcweir                 installCanFail = Parser.parseBoolean(installCanFailValue);
504cdf0e10cSrcweir             }
505cdf0e10cSrcweir 
506cdf0e10cSrcweir             subSection = section.getElement("forceintoupdate");
507cdf0e10cSrcweir             if (subSection != null) {
508cdf0e10cSrcweir                 String forceIntoUpdateValue = subSection.getValue();
509cdf0e10cSrcweir                 forceIntoUpdate = Parser.parseBoolean(forceIntoUpdateValue);
510cdf0e10cSrcweir             }
511cdf0e10cSrcweir 
512cdf0e10cSrcweir             subSection = section.getElement("useforce");
513cdf0e10cSrcweir             if (subSection != null) {
514cdf0e10cSrcweir                 String useForceValue = subSection.getValue();
515cdf0e10cSrcweir                 useForce = Parser.parseBoolean(useForceValue);
516cdf0e10cSrcweir             }
517cdf0e10cSrcweir 
518cdf0e10cSrcweir         }
519cdf0e10cSrcweir 
520cdf0e10cSrcweir         /* query information about the physical (rpm/pkg/msi...) package itself */
521cdf0e10cSrcweir         section = data.getElement("installunit");
522cdf0e10cSrcweir         if (section != null) {
523cdf0e10cSrcweir             String pkgTypeName = section.getAttribute("type");
524cdf0e10cSrcweir             if (pkgTypeName != null) {
525cdf0e10cSrcweir                 if (pkgTypeName.equals("rpm")) {
526cdf0e10cSrcweir                     pkgType = RPM_UNIT;
527cdf0e10cSrcweir                 } else if (pkgTypeName.equals("pkg")) {
528cdf0e10cSrcweir                     pkgType = PKG_UNIT;
529cdf0e10cSrcweir                 }
530cdf0e10cSrcweir             }
531cdf0e10cSrcweir 
532cdf0e10cSrcweir             subSection = section.getElement("size");
533cdf0e10cSrcweir             if (subSection != null) {
534cdf0e10cSrcweir                 String sz = subSection.getValue();
535cdf0e10cSrcweir                 pkgSize = Integer.parseInt(sz);
536cdf0e10cSrcweir             }
537cdf0e10cSrcweir             subSection = section.getElement("installorder");
538cdf0e10cSrcweir             if (subSection != null) {
539cdf0e10cSrcweir                 String order = subSection.getValue();
540cdf0e10cSrcweir                 pkgOrder = Integer.parseInt(order);
541cdf0e10cSrcweir             } else {
542cdf0e10cSrcweir             	// Setting the default for packages without order
543cdf0e10cSrcweir                 pkgOrder = 1000;
544cdf0e10cSrcweir             }
545cdf0e10cSrcweir             subSection = section.getElement("md5");
546cdf0e10cSrcweir             if (subSection != null) {
547cdf0e10cSrcweir                 pkgMD5Sum = subSection.getValue();
548cdf0e10cSrcweir             }
549cdf0e10cSrcweir             subSection = section.getElement("name");
550cdf0e10cSrcweir             if (subSection != null) {
551cdf0e10cSrcweir                 pkgFileName = subSection.getValue();
552cdf0e10cSrcweir             }
553cdf0e10cSrcweir             subSection = section.getElement("fullpkgname");
554cdf0e10cSrcweir             if (subSection != null) {
555cdf0e10cSrcweir                 pkgFullName = subSection.getValue();
556cdf0e10cSrcweir             }
557cdf0e10cSrcweir             subSection = section.getElement("pkgversion");
558cdf0e10cSrcweir             if (subSection != null) {
559cdf0e10cSrcweir                 pkgVersion = subSection.getValue();
560cdf0e10cSrcweir             }
561cdf0e10cSrcweir             subSection = section.getElement("subdir");
562cdf0e10cSrcweir             if (subSection != null) {
563cdf0e10cSrcweir                 pkgSubdir = subSection.getValue();
564cdf0e10cSrcweir             }
565cdf0e10cSrcweir             subSection = section.getElement("relocatable");
566cdf0e10cSrcweir             if (subSection != null) {
567cdf0e10cSrcweir                 String relocatableValue = subSection.getValue();
568cdf0e10cSrcweir                 isRelocatable = Parser.parseBoolean(relocatableValue);
569cdf0e10cSrcweir                 // isRelocatable = Boolean.parseBoolean(relocatableValue);
570cdf0e10cSrcweir             }
571cdf0e10cSrcweir             subSection = section.getElement("solarislanguage");
572cdf0e10cSrcweir             if (subSection != null) {
573cdf0e10cSrcweir                 pkgLanguage = subSection.getValue();
574cdf0e10cSrcweir             }
575cdf0e10cSrcweir 
576cdf0e10cSrcweir         }
577cdf0e10cSrcweir 
578cdf0e10cSrcweir         /* line up the subpackages */
579cdf0e10cSrcweir         for (Enumeration enumPackages = data.elements(); enumPackages.hasMoreElements(); ) {
580cdf0e10cSrcweir             XMLPackageDescription p = (XMLPackageDescription) enumPackages.nextElement();
581cdf0e10cSrcweir             if (p.getKey().equals("package")) {
582cdf0e10cSrcweir                 children.add(new PackageDescription(p, this));
583cdf0e10cSrcweir             }
584cdf0e10cSrcweir         }
585cdf0e10cSrcweir     }
586cdf0e10cSrcweir 
587cdf0e10cSrcweir     /**
588cdf0e10cSrcweir      * sort according to the display sortkey
589cdf0e10cSrcweir      */
590cdf0e10cSrcweir 
591cdf0e10cSrcweir     private class PackageComparator implements Comparator {
compare(Object w1, Object w2)592cdf0e10cSrcweir         public int compare(Object w1, Object w2) {
593cdf0e10cSrcweir             return ((PackageDescription) w1).dpySortKey - ((PackageDescription) w2).dpySortKey;
594cdf0e10cSrcweir         }
595cdf0e10cSrcweir     }
596cdf0e10cSrcweir 
597cdf0e10cSrcweir     /**
598cdf0e10cSrcweir      * implement a TreeNode interface for convenient travelling through the data
599cdf0e10cSrcweir      */
600cdf0e10cSrcweir 
601cdf0e10cSrcweir     private class PackageEnumeration implements Enumeration {
602cdf0e10cSrcweir 
603cdf0e10cSrcweir         Enumeration e;
604cdf0e10cSrcweir 
PackageEnumeration()605cdf0e10cSrcweir         protected PackageEnumeration() {
606cdf0e10cSrcweir             e = children.elements();
607cdf0e10cSrcweir         }
hasMoreElements()608cdf0e10cSrcweir         public boolean hasMoreElements() {
609cdf0e10cSrcweir             return e.hasMoreElements();
610cdf0e10cSrcweir         }
nextElement()611cdf0e10cSrcweir         public Object nextElement() {
612cdf0e10cSrcweir             return e.nextElement();
613cdf0e10cSrcweir         }
614cdf0e10cSrcweir     }
615cdf0e10cSrcweir 
616cdf0e10cSrcweir     /**
617cdf0e10cSrcweir      * TreeNode interface
618cdf0e10cSrcweir      */
children()619cdf0e10cSrcweir     public Enumeration children() {
620cdf0e10cSrcweir         return new PackageEnumeration();
621cdf0e10cSrcweir     }
622cdf0e10cSrcweir 
getAllowsChildren()623cdf0e10cSrcweir     public boolean getAllowsChildren() {
624cdf0e10cSrcweir         return true;
625cdf0e10cSrcweir     }
626cdf0e10cSrcweir 
627cdf0e10cSrcweir //    public PackageDescription getChildAt(int childIndex) {
628cdf0e10cSrcweir //        return (PackageDescription) children.elementAt(childIndex);
629cdf0e10cSrcweir //    }
630cdf0e10cSrcweir 
getChildAt(int childIndex)631cdf0e10cSrcweir     public TreeNode getChildAt(int childIndex) {
632cdf0e10cSrcweir         return (TreeNode)children.elementAt(childIndex);
633cdf0e10cSrcweir     }
634cdf0e10cSrcweir 
getChildCount()635cdf0e10cSrcweir     public int getChildCount() {
636cdf0e10cSrcweir         return children.size();
637cdf0e10cSrcweir     }
638cdf0e10cSrcweir 
getIndex(TreeNode node)639cdf0e10cSrcweir     public int getIndex(TreeNode node) {
640cdf0e10cSrcweir         return children.indexOf(node);
641cdf0e10cSrcweir     }
642cdf0e10cSrcweir 
643cdf0e10cSrcweir //    public PackageDescription getParent() {
644cdf0e10cSrcweir //        return parent;
645cdf0e10cSrcweir //    }
646cdf0e10cSrcweir 
getParent()647cdf0e10cSrcweir     public TreeNode getParent() {
648cdf0e10cSrcweir         return (TreeNode)parent;
649cdf0e10cSrcweir     }
650cdf0e10cSrcweir 
isLeaf()651cdf0e10cSrcweir     public boolean isLeaf() {
652cdf0e10cSrcweir         return children.size() == 0;
653cdf0e10cSrcweir     }
654cdf0e10cSrcweir 
655cdf0e10cSrcweir }
656