Revision 40937

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/execution/panel/model/PackagesTableModel.java
50 50
import org.gvsig.installer.swing.impl.execution.panel.filters.NameDescriptionOrCodeFilter;
51 51
import org.gvsig.installer.swing.impl.execution.panel.filters.PackageFilter;
52 52
import org.gvsig.tools.packageutils.PackageManager;
53
import org.slf4j.Logger;
54
import org.slf4j.LoggerFactory;
53 55

  
54 56
public class PackagesTableModel extends AbstractTableModel {
55 57

  
56 58
	private static final long serialVersionUID = -454014676003979512L;
59
	private Logger logger = LoggerFactory.getLogger(PackagesTableModel.class);
57 60

  
58 61
	public enum PackageStatus {
59 62
		INSTALLED, NOT_INSTALLED, TO_REINSTALL, TO_INSTALL, INSTALLED_NOT_INSTALLABLE, BROKEN, INSTALLATION_NOT_AVAILABLE;
......
112 115
		Arrays.sort(currentlyVisiblePackages, new Comparator<TablePackageInfo>() {
113 116

  
114 117
			public int compare(TablePackageInfo o1, TablePackageInfo o2) {
115
				return o1.getPackageInfo().getName().compareToIgnoreCase(
116
						o2.getPackageInfo().getName());
118
				PackageInfo p1 = o1.getPackageInfo();
119
				PackageInfo p2 = o2.getPackageInfo();
120
				String s1 = p1.getName() + "/" + p1.getVersion().fullFormat() + "/" + p1.getOperatingSystem() + "/" + p1.getArchitecture();
121
				String s2 = p2.getName() + "/" + p2.getVersion().fullFormat() + "/" + p2.getOperatingSystem() + "/" + p2.getArchitecture();
122
				return s1.compareToIgnoreCase(s2);
117 123
			}
118 124
		});
119 125
	}
120 126

  
127
	private boolean canSetAsDefault(List<String> defaultIDs, PackageInfo pkg) {
128
    	String system_os = installerManager.getOperatingSystem();
129
    	String pkg_os = pkg.getOperatingSystem(); 
130
    	String pkg_arch = pkg.getArchitecture();
131
        if (defaultIDs != null) {
132
            for (int j = 0; j < defaultIDs.size(); j++) {
133
            	String code = defaultIDs.get(j);
134
                if (pkg.matchID(code)) {
135
                    if (pkg_os.equals(system_os) || pkg_os.equals(PackageManager.OS.ALL)) {
136
                    	// De momento solo marcamos paquetes de arquitectura x86, 32bits
137
                		if( PackageManager.ARCH.ALL.equalsIgnoreCase(pkg_arch) ) {
138
                			return true;
139
                		} else if( PackageManager.ARCH.X86.equalsIgnoreCase(pkg_arch) ) {
140
                			return true;
141
                		}
142
                    }
143
                }
144
            }
145
        }
146
        logger.info("package '"+pkg.getCode()+"/"+pkg_os+"/"+pkg_arch+"' don't install as default.");
147
		return false;
148
	}
149
	
121 150
    private Map<String, TablePackageInfo> getDefaultPackages() {
122 151

  
123 152
        if (allPackages == null) {
124

  
125 153
            List<String> defaultIDs =
126 154
                installerExecutionService.getDefaultSelectedPackagesIDs();
127

  
128 155
            allPackages =
129 156
                new HashMap<String, PackagesTableModel.TablePackageInfo>();
130

  
131 157
            // Add installable package infos
132 158
            for (int i = 0; i < installerExecutionService.getPackageCount(); i++) {
133 159
                PackageInfo installerInfo =
134 160
                    installerExecutionService.getPackageInfo(i);
135 161
                TablePackageInfo info =
136 162
                    new TablePackageInfo(installerInfo, false, true);
137
                if (defaultIDs != null) {
138
                    for (int j = 0; j < defaultIDs.size(); j++) {
139
                    	PackageInfo pkg = info.getPackageInfo();
140
                        if (pkg.matchID(defaultIDs.get(j))) {
141
                            if (pkg.getOperatingSystem().equals(installerManager.getOperatingSystem())
142
                                || pkg.getOperatingSystem().equals("all")) {
143
                            	// De momento solo marcamos paquetes de arquitectura x86, 32bits
144
                        		if( PackageManager.ARCH.X86.equalsIgnoreCase(pkg.getArchitecture()) ) {
145
                            		info.setDefault(true);
146
                            		break;
147
                        		}
148
                            }
149

  
150
                        }
151
                    }
152
                }
163
            	PackageInfo pkg = info.getPackageInfo();
164
            	if( canSetAsDefault(defaultIDs, pkg) ) {
165
            		info.setDefault(true);
166
            	}
153 167
                allPackages.put(info.getID(), info);
154 168
            }
155 169
            // Add already installed package infos

Also available in: Unified diff