summaryrefslogtreecommitdiff
path: root/javainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/PackageDescription.java
diff options
context:
space:
mode:
Diffstat (limited to 'javainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/PackageDescription.java')
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/PackageDescription.java659
1 files changed, 659 insertions, 0 deletions
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/PackageDescription.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/PackageDescription.java
new file mode 100755
index 000000000000..4ed331bff2d7
--- /dev/null
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/SetupData/PackageDescription.java
@@ -0,0 +1,659 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.setup.SetupData;
+
+import org.openoffice.setup.Util.Parser;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.Vector;
+import javax.swing.tree.TreeNode;
+
+/**
+ *
+ * @author Ingo Schmidt
+ */
+public class PackageDescription implements TreeNode {
+
+ public final static int NOTA_UNIT= 0;
+ public final static int RPM_UNIT = 1;
+ public final static int PKG_UNIT = 2;
+ /* public final static int MSI_UNIT = 3;
+ * public final static int TAR_UNIT = 4;
+ * public final static int TGZ_UNIT = 5;
+ */
+
+ public final static int DONT_INSTALL = 0;
+ public final static int INSTALL = 1;
+ public final static int INSTALL_SOME = 2;
+ public final static int REMOVE = 3;
+ public final static int DONT_REMOVE = 4;
+ public final static int REMOVE_SOME = 5;
+ public final static int IGNORE = 6;
+ public final static int DONT_KNOW = 7;
+
+ /* hierarchy information */
+ private Vector children = null;
+ private PackageDescription parent = null;
+
+ /* did the user select this package */
+ private int usrSelectionState = DONT_KNOW;
+
+ /* display information */
+ private String dpyName = "";
+ private String dpyDescription = "";
+ private String checkSolaris = "";
+ private int instSize = 0;
+ private int dpySortKey = 0;
+ private boolean isDefault = true;
+ private boolean isHidden = false;
+ private boolean showInUserInstall = true;
+ private boolean showInUserInstallOnly = false;
+ private boolean isOptional = true;
+ private boolean dontUninstall = false;
+ private boolean allChildrenHidden = false;
+
+ /* package information */
+ private String pkgMD5Sum = "";
+ private String pkgFileName = "";
+ private String pkgFullName = null;
+ private String pkgVersion = null;
+ private String pkgRelease = null;
+ private String pkgRealName = null;
+ private String pkgSubdir = null;
+ private String pkgLanguage = null;
+ private int pkgSize = 0;
+ private int pkgOrder = 0;
+ private int pkgType = NOTA_UNIT;
+ private boolean pkgExists = true; // must be default, especially for uninstallation
+ private boolean isRelocatable = true;
+ private boolean isUpdatePackage = false;
+ private boolean showMultiLingualOnly = false;
+ private boolean isApplicationPackage = false;
+ private boolean isJavaPackage = false;
+ private boolean installCanFail = false;
+ private boolean uninstallCanFail = false;
+ private boolean forceIntoUpdate = false;
+ private boolean useForce = false;
+ private boolean isNewInstalled = false;
+ private boolean wasAlreadyInstalled = false;
+ private boolean ignoreDependsForUninstall = false;
+
+ /* Saving the default selection state. This is necessary, if the user chooses
+ * the custom installation type, makes changes, and then changes into
+ * the typical installation set. Then all user settings have to be removed again.
+ * On the other hand, if the user then changes to the custom installation type
+ * again, he probably wants to see the settings he has done before.
+ */
+
+ private int typicalSelectionState = DONT_KNOW; // Saving settings for typical installation
+ private int customSelectionState = DONT_KNOW; // Saving settings for custom installation
+ private int startSelectionState = DONT_KNOW; // Saving settings at start of installation
+
+ public PackageDescription() {}
+
+ /**
+ * construct only with package information to wrap
+ */
+ protected PackageDescription(XMLPackageDescription p) {
+ this(p, (PackageDescription)null);
+ }
+
+ private PackageDescription(XMLPackageDescription descriptionData, PackageDescription parent) {
+
+ this.parent = parent;
+ children = new Vector();
+ parse(descriptionData);
+
+ /* sort according to display sort key */
+ Collections.sort(children, new PackageComparator());
+ }
+
+ /**
+ * retrieve information about the package properties
+ */
+
+ public String getName() {
+ return dpyName;
+ }
+
+ public void setName(String name) {
+ dpyName = name;
+ }
+
+ public String getDescription() {
+ return dpyDescription;
+ }
+
+ public String getCheckSolaris() {
+ return checkSolaris;
+ }
+
+ public int getSize() {
+ return pkgSize;
+ }
+
+ public void setSize(int size) {
+ pkgSize = size;
+ }
+
+ public int getOrder() {
+ return pkgOrder;
+ }
+
+ public void setOrder(int order) {
+ pkgOrder = order;
+ }
+
+ // public int getAccumulatedSize() {
+ // int size = getSize();
+ //
+ // for (Enumeration e = this.children(); e.hasMoreElements(); ) {
+ // // Should only be accumulated for selected modules
+ // PackageDescription data = (PackageDescription) e.nextElement();
+ // size += data.getSize();
+ // }
+ //
+ // return size;
+ // }
+
+ public boolean isOptional() {
+ return isOptional;
+ }
+
+ public boolean isHidden() {
+ return isHidden;
+ }
+
+ public boolean showInUserInstall() {
+ return showInUserInstall;
+ }
+
+ public boolean showInUserInstallOnly() {
+ return showInUserInstallOnly;
+ }
+
+ public boolean dontUninstall() {
+ return dontUninstall;
+ }
+
+ public boolean isUpdatePackage() {
+ return isUpdatePackage;
+ }
+
+ public boolean showMultiLingualOnly() {
+ return showMultiLingualOnly;
+ }
+
+ public boolean isApplicationPackage() {
+ return isApplicationPackage;
+ }
+
+ public boolean isJavaPackage() {
+ return isJavaPackage;
+ }
+
+ public boolean installCanFail() {
+ return installCanFail;
+ }
+
+ public boolean uninstallCanFail() {
+ return uninstallCanFail;
+ }
+
+ public void setUninstallCanFail(boolean canFail) {
+ uninstallCanFail = canFail;
+ }
+
+ public boolean forceIntoUpdate() {
+ return forceIntoUpdate;
+ }
+
+ public boolean useForce() {
+ return useForce;
+ }
+
+ public void setIsNewInstalled(boolean installed) {
+ isNewInstalled = installed;
+ }
+
+ public boolean isNewInstalled() {
+ return isNewInstalled;
+ }
+
+ public void setWasAlreadyInstalled(boolean installed) {
+ wasAlreadyInstalled = installed;
+ }
+
+ public boolean wasAlreadyInstalled() {
+ return wasAlreadyInstalled;
+ }
+
+ public void setIgnoreDependsForUninstall(boolean ignore) {
+ ignoreDependsForUninstall = ignore;
+ }
+
+ public boolean ignoreDependsForUninstall() {
+ return ignoreDependsForUninstall;
+ }
+
+ public boolean isDefault() {
+ return isDefault;
+ }
+
+ public String getMD5() {
+ return pkgMD5Sum;
+ }
+
+ public boolean isRelocatable() {
+ return isRelocatable;
+ }
+
+ public void setIsRelocatable(boolean relocatable) {
+ isRelocatable = relocatable;
+ }
+
+ public String getPackageName() {
+ return pkgFileName;
+ }
+
+ public void setPackageName(String name) {
+ pkgFileName = name;
+ }
+
+
+ public String getFullPackageName() {
+ return pkgFullName;
+ }
+
+ public void setFullPackageName(String fullPackageName) {
+ pkgFullName = fullPackageName;
+ }
+
+ public int getSelectionState() {
+ return usrSelectionState;
+ }
+
+ public void setSelectionState(int state) {
+ usrSelectionState = state;
+ }
+
+ public int getCustomSelectionState() {
+ return customSelectionState;
+ }
+
+ public void setCustomSelectionState(int state) {
+ customSelectionState = state;
+ }
+
+ public int getTypicalSelectionState() {
+ return typicalSelectionState;
+ }
+
+ public void setTypicalSelectionState(int state) {
+ typicalSelectionState = state;
+ }
+
+ public int getStartSelectionState() {
+ return startSelectionState;
+ }
+
+ public void setStartSelectionState(int state) {
+ startSelectionState = state;
+ }
+
+ public boolean isAllChildrenHidden() {
+ return allChildrenHidden;
+ }
+
+ public void setAllChildrenHidden(boolean hidden) {
+ allChildrenHidden = hidden;
+ }
+
+ public void setIsHidden(boolean hidden) {
+ isHidden = hidden;
+ }
+
+ public boolean pkgExists() {
+ return pkgExists;
+ }
+
+ public void setPkgExists(boolean exists) {
+ pkgExists = exists;
+ }
+
+ public String getPkgVersion() {
+ return pkgVersion;
+ }
+
+ public void setPkgVersion(String version) {
+ pkgVersion = version;
+ }
+
+ public String getPkgRelease() {
+ return pkgRelease;
+ }
+
+ public void setPkgRelease(String release) {
+ pkgRelease = release;
+ }
+
+ public String getPkgRealName() {
+ return pkgRealName;
+ }
+
+ public void setPkgRealName(String realName) {
+ pkgRealName = realName;
+ }
+
+ public String getPkgSubdir() {
+ return pkgSubdir;
+ }
+
+ public void setPkgSubdir(String subdir) {
+ pkgSubdir = subdir;
+ }
+
+ public String getPkgLanguage() {
+ return pkgLanguage;
+ }
+
+ public void setPkgLanguage(String language) {
+ pkgLanguage = language;
+ }
+
+ /**
+ * extract the name and the description according to the locale
+ */
+ private String getLocalizedValue(XMLPackageDescription packageData, String section, Locale l) {
+ String localizedValue = "";
+
+ String countryString = l.getCountry();
+ String languageString = l.getLanguage();
+ String localeString = languageString + "_" + countryString;
+
+ XMLPackageDescription subPackage = packageData.getElement(section, "lang", localeString);
+ if (subPackage == null) {
+ subPackage = packageData.getElement(section, "lang", languageString);
+ if (subPackage == null) {
+ subPackage = packageData.getElement(section, "lang", "en_US");
+ }
+ }
+ if (subPackage != null) {
+ localizedValue = subPackage.getValue();
+ }
+
+ return localizedValue;
+ }
+
+ /**
+ * parse the wrapped package description
+ */
+
+ private void parse(XMLPackageDescription data) {
+
+ XMLPackageDescription section;
+ XMLPackageDescription subSection;
+
+ /* information about how to display the node */
+ section = data.getElement("display");
+ if (section != null) {
+ /* display types: hidden, visible */
+ String displayType = section.getAttribute("type");
+ if (displayType != null) {
+ isHidden = displayType.equals("hidden");
+ }
+
+ /* name and description according to the current locale */
+ Locale locale = Locale.getDefault();
+ dpyName = getLocalizedValue(section, "name", locale);
+ dpyDescription = getLocalizedValue(section, "description", locale);
+
+ subSection = section.getElement("sortkey");
+ if (subSection != null) {
+ String sort = subSection.getValue();
+ dpySortKey = Integer.parseInt(sort);
+ }
+
+ subSection = section.getElement("default");
+ if (subSection != null) {
+ String defaultValue = subSection.getValue();
+ isDefault = Parser.parseBoolean(defaultValue);
+ // isDefault = Boolean.parseBoolean(defaultValue);
+ }
+
+ subSection = section.getElement("showinuserinstall");
+ if (subSection != null) {
+ String showInUserInstallValue = subSection.getValue();
+ showInUserInstall = Parser.parseBoolean(showInUserInstallValue);
+ // showInUserInstall = Boolean.parseBoolean(showInUserInstallValue);
+ }
+
+ subSection = section.getElement("showinuserinstallonly");
+ if (subSection != null) {
+ String showInUserInstallValueOnly = subSection.getValue();
+ showInUserInstallOnly = Parser.parseBoolean(showInUserInstallValueOnly);
+ }
+
+ subSection = section.getElement("dontuninstall");
+ if (subSection != null) {
+ String dontUninstallValue = subSection.getValue();
+ dontUninstall = Parser.parseBoolean(dontUninstallValue);
+ // dontUninstall = Boolean.parseBoolean(dontUninstallValue);
+ }
+
+ subSection = section.getElement("checksolaris");
+ if (subSection != null) {
+ checkSolaris = subSection.getValue();
+ }
+
+ subSection = section.getElement("isupdatepackage");
+ if (subSection != null) {
+ String isUpdatePackageValue = subSection.getValue();
+ isUpdatePackage = Parser.parseBoolean(isUpdatePackageValue);
+ // isUpdatePackage = Boolean.parseBoolean(isUpdatePackageValue);
+ }
+
+ subSection = section.getElement("showmultilingualonly");
+ if (subSection != null) {
+ String showMultiLingualOnlyValue = subSection.getValue();
+ showMultiLingualOnly = Parser.parseBoolean(showMultiLingualOnlyValue);
+ }
+
+ subSection = section.getElement("applicationmodule");
+ if (subSection != null) {
+ String isApplicationPackageValue = subSection.getValue();
+ isApplicationPackage = Parser.parseBoolean(isApplicationPackageValue);
+ }
+
+ subSection = section.getElement("isjavapackage");
+ if (subSection != null) {
+ String isJavaPackageValue = subSection.getValue();
+ isJavaPackage = Parser.parseBoolean(isJavaPackageValue);
+ // isJavaPackage = Boolean.parseBoolean(isJavaPackageValue);
+ }
+
+ subSection = section.getElement("installcanfail");
+ if (subSection != null) {
+ String installCanFailValue = subSection.getValue();
+ installCanFail = Parser.parseBoolean(installCanFailValue);
+ }
+
+ subSection = section.getElement("forceintoupdate");
+ if (subSection != null) {
+ String forceIntoUpdateValue = subSection.getValue();
+ forceIntoUpdate = Parser.parseBoolean(forceIntoUpdateValue);
+ }
+
+ subSection = section.getElement("useforce");
+ if (subSection != null) {
+ String useForceValue = subSection.getValue();
+ useForce = Parser.parseBoolean(useForceValue);
+ }
+
+ }
+
+ /* query information about the physical (rpm/pkg/msi...) package itself */
+ section = data.getElement("installunit");
+ if (section != null) {
+ String pkgTypeName = section.getAttribute("type");
+ if (pkgTypeName != null) {
+ if (pkgTypeName.equals("rpm")) {
+ pkgType = RPM_UNIT;
+ } else if (pkgTypeName.equals("pkg")) {
+ pkgType = PKG_UNIT;
+ }
+ }
+
+ subSection = section.getElement("size");
+ if (subSection != null) {
+ String sz = subSection.getValue();
+ pkgSize = Integer.parseInt(sz);
+ }
+ subSection = section.getElement("installorder");
+ if (subSection != null) {
+ String order = subSection.getValue();
+ pkgOrder = Integer.parseInt(order);
+ } else {
+ // Setting the default for packages without order
+ pkgOrder = 1000;
+ }
+ subSection = section.getElement("md5");
+ if (subSection != null) {
+ pkgMD5Sum = subSection.getValue();
+ }
+ subSection = section.getElement("name");
+ if (subSection != null) {
+ pkgFileName = subSection.getValue();
+ }
+ subSection = section.getElement("fullpkgname");
+ if (subSection != null) {
+ pkgFullName = subSection.getValue();
+ }
+ subSection = section.getElement("pkgversion");
+ if (subSection != null) {
+ pkgVersion = subSection.getValue();
+ }
+ subSection = section.getElement("subdir");
+ if (subSection != null) {
+ pkgSubdir = subSection.getValue();
+ }
+ subSection = section.getElement("relocatable");
+ if (subSection != null) {
+ String relocatableValue = subSection.getValue();
+ isRelocatable = Parser.parseBoolean(relocatableValue);
+ // isRelocatable = Boolean.parseBoolean(relocatableValue);
+ }
+ subSection = section.getElement("solarislanguage");
+ if (subSection != null) {
+ pkgLanguage = subSection.getValue();
+ }
+
+ }
+
+ /* line up the subpackages */
+ for (Enumeration enumPackages = data.elements(); enumPackages.hasMoreElements(); ) {
+ XMLPackageDescription p = (XMLPackageDescription) enumPackages.nextElement();
+ if (p.getKey().equals("package")) {
+ children.add(new PackageDescription(p, this));
+ }
+ }
+ }
+
+ /**
+ * sort according to the display sortkey
+ */
+
+ private class PackageComparator implements Comparator {
+ public int compare(Object w1, Object w2) {
+ return ((PackageDescription) w1).dpySortKey - ((PackageDescription) w2).dpySortKey;
+ }
+ }
+
+ /**
+ * implement a TreeNode interface for convenient travelling through the data
+ */
+
+ private class PackageEnumeration implements Enumeration {
+
+ Enumeration e;
+
+ protected PackageEnumeration() {
+ e = children.elements();
+ }
+ public boolean hasMoreElements() {
+ return e.hasMoreElements();
+ }
+ public Object nextElement() {
+ return e.nextElement();
+ }
+ }
+
+ /**
+ * TreeNode interface
+ */
+ public Enumeration children() {
+ return new PackageEnumeration();
+ }
+
+ public boolean getAllowsChildren() {
+ return true;
+ }
+
+// public PackageDescription getChildAt(int childIndex) {
+// return (PackageDescription) children.elementAt(childIndex);
+// }
+
+ public TreeNode getChildAt(int childIndex) {
+ return (TreeNode)children.elementAt(childIndex);
+ }
+
+ public int getChildCount() {
+ return children.size();
+ }
+
+ public int getIndex(TreeNode node) {
+ return children.indexOf(node);
+ }
+
+// public PackageDescription getParent() {
+// return parent;
+// }
+
+ public TreeNode getParent() {
+ return (TreeNode)parent;
+ }
+
+ public boolean isLeaf() {
+ return children.size() == 0;
+ }
+
+}