001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031 package org.openoffice.setup.Util;
032
033 import org.openoffice.setup.SetupData.PackageDescription;
034 import java.util.Enumeration;
035 import java.util.Vector;
036
037 public class PackageCollector {
038
039 private PackageCollector() {
040 }
041
042 static public void collectInstallPackages(PackageDescription packageData, Vector allPackages) {
043
044 if (( packageData.isLeaf() ) && ( packageData.getSelectionState() == packageData.INSTALL )) {
045 allPackages.add(packageData);
046
047 }
048
049
050 if (( ! packageData.isLeaf() ) &&
051 ( packageData.getPackageName() != null ) &&
052 ( ! packageData.getPackageName().equals("")) &&
053 (( packageData.getSelectionState() == packageData.INSTALL ) ||
054 ( packageData.getSelectionState() == packageData.INSTALL_SOME ))) {
055 allPackages.add(packageData);
056
057 }
058
059 for (Enumeration e = packageData.children(); e.hasMoreElements(); ) {
060 PackageDescription child = (PackageDescription) e.nextElement();
061 collectInstallPackages(child, allPackages);
062 }
063
064 }
065
066 static public void collectUninstallPackages(PackageDescription packageData, Vector allPackages) {
067 if (( packageData.isLeaf() ) && ( packageData.getSelectionState() == packageData.REMOVE )) {
068 allPackages.add(0, packageData);
069 }
070
071
072 if (( ! packageData.isLeaf() ) &&
073 ( packageData.getPackageName() != null ) &&
074 ( ! packageData.getPackageName().equals("")) &&
075 ( packageData.getSelectionState() == packageData.REMOVE )) {
076 allPackages.add(0, packageData);
077 }
078
079 for (Enumeration e = packageData.children(); e.hasMoreElements(); ) {
080 PackageDescription child = (PackageDescription) e.nextElement();
081 collectUninstallPackages(child, allPackages);
082 }
083 }
084
085 static public void sortPackages(Vector allPackages, Vector sortedPackages, String mode) {
086 for (int i = 0; i < allPackages.size(); i++) {
087 boolean integrated = false;
088 PackageDescription packageData = (PackageDescription) allPackages.get(i);
089
090 if ( i == 0 ) {
091 sortedPackages.add(packageData);
092 integrated = true;
093 } else {
094 int position = packageData.getOrder();
095 for (int j = 0; j < sortedPackages.size(); j++) {
096 PackageDescription sortedPackageData = (PackageDescription) sortedPackages.get(j);
097 int compare = sortedPackageData.getOrder();
098
099 if ( position < compare ) {
100 sortedPackages.add(j, packageData);
101 integrated = true;
102 break;
103 }
104 }
105
106
107 if ( ! integrated ) {
108 sortedPackages.add(packageData);
109 }
110 }
111 }
112
113
114 if ( mode.equalsIgnoreCase("uninstall")) {
115 int number = sortedPackages.size();
116 for (int i = 0; i < number; i++) {
117 if ( i > 0 ) {
118 PackageDescription sortPackageData = (PackageDescription) sortedPackages.remove(i);
119 sortedPackages.add(0,sortPackageData);
120 }
121 }
122 }
123 }
124
125 }