Revision 37584 branches/v2_0_0_prep/extensions/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

View differences:

PackagesTableModel.java
44 44
import org.gvsig.installer.lib.api.creation.MakePluginPackageServiceException;
45 45
import org.gvsig.installer.lib.api.execution.InstallPackageService;
46 46
import org.gvsig.installer.swing.api.SwingInstallerManager;
47
import org.gvsig.installer.swing.impl.execution.panel.filters.NameAndDescriptionFilter;
47 48
import org.gvsig.installer.swing.impl.execution.panel.filters.PackageFilter;
48 49

  
49 50
public class PackagesTableModel extends AbstractTableModel {
50 51

  
51
    private static final long serialVersionUID = -454014676003979512L;
52
	private static final long serialVersionUID = -454014676003979512L;
52 53

  
53
    public enum PackageStatus {
54
        INSTALLED, NOT_INSTALLED, TO_REINSTALL, TO_INSTALL, INSTALLED_NOT_INSTALLABLE;
55
    }
54
	public enum PackageStatus {
55
		INSTALLED, NOT_INSTALLED, TO_REINSTALL, TO_INSTALL, INSTALLED_NOT_INSTALLABLE;
56
	}
56 57

  
57
    public enum PackageOfficialRecommended {
58
        OFFICIAL_NOT_RECOMMENDED, OFFICIAL_RECOMMENDED, NOT_OFFICIAL_RECOMMENDED, NOT_OFFICIAL_NOT_RECOMMENDED
59
    }
58
	public enum PackageOfficialRecommended {
59
		OFFICIAL_NOT_RECOMMENDED, OFFICIAL_RECOMMENDED, NOT_OFFICIAL_RECOMMENDED, NOT_OFFICIAL_NOT_RECOMMENDED
60
	}
60 61

  
61
    public enum PackageOsAndArchitecture {
62
        WINDOLS_32, WINDOLS_64, LINUX_32, LINUX_64, ALL, OTHER
63
    }
62
	public enum PackageOsAndArchitecture {
63
		WINDOLS_32, WINDOLS_64, LINUX_32, LINUX_64, ALL, OTHER
64
	}
64 65

  
65
    private TablePackageInfo[] installerInfos = null;
66
	private TablePackageInfo[] installerInfos = null;
66 67

  
67
    private final String[] columnNames;
68
	private final String[] columnNames;
68 69

  
69
    private InstallerManager installerManager =
70
        InstallerLocator.getInstallerManager();
71
    private InstallPackageService installerExecutionService;
70
	private InstallerManager installerManager = InstallerLocator
71
			.getInstallerManager();
72
	private InstallPackageService installerExecutionService;
72 73

  
73
    boolean isOfficial;
74
    private File pluginsFolder;
75
    private PackageFilter packageFilter = null;
74
	boolean isOfficial;
75
	private File pluginsFolder;
76
	private NameAndDescriptionFilter packageFastFilter = null;
77
	private PackageFilter packageFilter = null;
76 78

  
77
    public PackagesTableModel(SwingInstallerManager swingInstallerManager,
78
        InstallPackageService installerExecutionService, boolean isOfficial,
79
        File pluginsFolder) {
79
	public PackagesTableModel(SwingInstallerManager swingInstallerManager,
80
			InstallPackageService installerExecutionService,
81
			boolean isOfficial, File pluginsFolder) {
80 82

  
81
        this.installerExecutionService = installerExecutionService;
82
        this.isOfficial = isOfficial;
83
        this.pluginsFolder = pluginsFolder;
84
        Map<String, TablePackageInfo> infos = getDefaultPackages();
83
		this.installerExecutionService = installerExecutionService;
84
		this.isOfficial = isOfficial;
85
		this.pluginsFolder = pluginsFolder;
86
		Map<String, TablePackageInfo> infos = getDefaultPackages();
85 87

  
86
        installerInfos =
87
            infos.values().toArray(new TablePackageInfo[infos.size()]);
88
        sortInstallerInfos();
88
		installerInfos = infos.values().toArray(
89
				new TablePackageInfo[infos.size()]);
90
		sortInstallerInfos();
89 91

  
90
        columnNames =
91
            new String[] {
92
                "", // Check column
93
                "", "", swingInstallerManager.getText("name"),
94
                swingInstallerManager.getText("version"),
95
                swingInstallerManager.getText("type") };
92
		columnNames = new String[] {
93
				"", // Check column
94
				"", "", swingInstallerManager.getText("name"),
95
				swingInstallerManager.getText("version"),
96
				swingInstallerManager.getText("type") };
96 97

  
97
    }
98
	}
98 99

  
99
    private void sortInstallerInfos() {
100
        Arrays.sort(this.installerInfos, new Comparator<TablePackageInfo>() {
100
	private void sortInstallerInfos() {
101
		Arrays.sort(this.installerInfos, new Comparator<TablePackageInfo>() {
101 102

  
102
            public int compare(TablePackageInfo o1, TablePackageInfo o2) {
103
                return o1.getPackageInfo().getName().compareToIgnoreCase(
104
                    o2.getPackageInfo().getName());
105
            }
106
        });
107
    }
103
			public int compare(TablePackageInfo o1, TablePackageInfo o2) {
104
				return o1.getPackageInfo().getName().compareToIgnoreCase(
105
						o2.getPackageInfo().getName());
106
			}
107
		});
108
	}
108 109

  
109
    private Map<String, TablePackageInfo> getDefaultPackages() {
110
	private Map<String, TablePackageInfo> getDefaultPackages() {
110 111

  
111
        List<String> defaultIDs =
112
            installerExecutionService.getDefaultSelectedPackagesIDs();
112
		List<String> defaultIDs = installerExecutionService
113
				.getDefaultSelectedPackagesIDs();
113 114

  
114
        Map<String, TablePackageInfo> infos =
115
            new HashMap<String, TablePackageInfo>();
116
        // Add installable package infos
117
        for (int i = 0; i < installerExecutionService.getPackageCount(); i++) {
118
            PackageInfo installerInfo =
119
                installerExecutionService.getPackageInfo(i);
120
            if (installerInfo.isOfficial() == isOfficial) {
121
                TablePackageInfo info =
122
                    new TablePackageInfo(installerInfo, false, true);
123
                if (defaultIDs != null) {
115
		Map<String, TablePackageInfo> infos = new HashMap<String, TablePackageInfo>();
116
		// Add installable package infos
117
		for (int i = 0; i < installerExecutionService.getPackageCount(); i++) {
118
			PackageInfo installerInfo = installerExecutionService
119
					.getPackageInfo(i);
120
			if (installerInfo.isOfficial() == isOfficial) {
121
				TablePackageInfo info = new TablePackageInfo(installerInfo,
122
						false, true);
123
				if (defaultIDs != null) {
124 124

  
125
                    for (int j = 0; j < defaultIDs.size(); j++) {
126
                        if (info.getPackageInfo().matchID(defaultIDs.get(j))) {
127
                            if (info.getPackageInfo().getOperatingSystem()
128
                                .equals(installerManager.getOperatingSystem())
129
                                || info.getPackageInfo().getOperatingSystem()
130
                                    .equals("all")) {
131
                                info.setDefault(true);
132
                                break;
133
                            }
125
					for (int j = 0; j < defaultIDs.size(); j++) {
126
						if (info.getPackageInfo().matchID(defaultIDs.get(j))) {
127
							if (info.getPackageInfo().getOperatingSystem()
128
									.equals(
129
											installerManager
130
													.getOperatingSystem())
131
									|| info.getPackageInfo()
132
											.getOperatingSystem().equals("all")) {
133
								info.setDefault(true);
134
								break;
135
							}
134 136

  
135
                        }
136
                    }
137
						}
138
					}
137 139

  
138
                }
139
                infos.put(info.getID(), info);
140
            }
141
        }
142
        // Add already installed package infos
143
        try {
144
            PackageInfo[] installedPackages =
145
                installerManager.getInstalledPackages(pluginsFolder);
140
				}
141
				infos.put(info.getID(), info);
142
			}
143
		}
144
		// Add already installed package infos
145
		try {
146
			PackageInfo[] installedPackages = installerManager
147
					.getInstalledPackages(pluginsFolder);
146 148

  
147
            for (int i = 0; i < installedPackages.length; i++) {
148
                if (installedPackages[i].isOfficial() == isOfficial) {
149
                    TablePackageInfo info =
150
                        new TablePackageInfo(installedPackages[i], true, false);
151
                    TablePackageInfo x = infos.get(info.getID());
152
                    if (x == null) {
153
                        infos.put(info.getID(), info);
154
                    } else {
155
                        x.setInstalled(true);
156
                    }
157
                }
158
            }
159
        } catch (MakePluginPackageServiceException e) {
160
            throw new RuntimeException(e);
161
        }
149
			for (int i = 0; i < installedPackages.length; i++) {
150
				if (installedPackages[i].isOfficial() == isOfficial) {
151
					TablePackageInfo info = new TablePackageInfo(
152
							installedPackages[i], true, false);
153
					TablePackageInfo x = infos.get(info.getID());
154
					if (x == null) {
155
						infos.put(info.getID(), info);
156
					} else {
157
						x.setInstalled(true);
158
					}
159
				}
160
			}
161
		} catch (MakePluginPackageServiceException e) {
162
			throw new RuntimeException(e);
163
		}
162 164

  
163
        return infos;
164
    }
165
		return infos;
166
	}
165 167

  
166
    // get filtered packages
167
    private Map<String, TablePackageInfo> getFilteredPackages(
168
        Map<String, TablePackageInfo> packageInfos) {
168
	// get filtered packages
169
	private Map<String, TablePackageInfo> getFilteredPackages(
170
			Map<String, TablePackageInfo> packageInfos) {
169 171

  
170
        Map<String, TablePackageInfo> infos =
171
            new HashMap<String, TablePackageInfo>();
172
		Map<String, TablePackageInfo> infos = new HashMap<String, TablePackageInfo>();
172 173

  
173
        TablePackageInfo[] packs =
174
            packageInfos.values().toArray(new TablePackageInfo[infos.size()]);
174
		TablePackageInfo[] packs = packageInfos.values().toArray(
175
				new TablePackageInfo[infos.size()]);
175 176

  
176
        for (int i = 0; i < packs.length; i++) {
177
            PackageInfo installerInfo = packs[i].getPackageInfo();
177
		for (int i = 0; i < packs.length; i++) {
178
			PackageInfo installerInfo = packs[i].getPackageInfo();
178 179

  
179
            if (packageFilter.match(installerInfo)) {
180
                TablePackageInfo info = packs[i];
181
                infos.put(installerInfo.getID(), info);
182
            }
183
        }
184
        return infos;
185
    }
180
			if (packageFilter.match(installerInfo)) {
181
				TablePackageInfo info = packs[i];
182
				infos.put(installerInfo.getID(), info);
183
			}
184
		}
185
		return infos;
186
	}
186 187

  
187
    // selects default packages
188
    public void selectDefaultPackages() {
189
        for (int i = 0; i < installerInfos.length; i++) {
190
            if (installerInfos[i].isDefault()) {
191
                installerInfos[i].setSelected(true);
192
            } else {
193
                installerInfos[i].setSelected(false);
194
            }
195
        }
196
    }
188
	// get fast filtered packages (by name or description)
189
	private Map<String, TablePackageInfo> getFastFilteredPackages(
190
			Map<String, TablePackageInfo> packageInfos) {
197 191

  
198
    public void selectPackage(PackageInfo pkg) {
199
        for (int i = 0; i < installerInfos.length; i++) {
200
            if (pkg.equals(installerInfos[i].getPackageInfo())) {
201
                installerInfos[i].setSelected(true);
202
                return;
203
            }
204
        }
205
    }
192
		Map<String, TablePackageInfo> infos = new HashMap<String, TablePackageInfo>();
206 193

  
207
    public void updatePackages() {
194
		TablePackageInfo[] packs = packageInfos.values().toArray(
195
				new TablePackageInfo[infos.size()]);
208 196

  
209
        Map<String, TablePackageInfo> infos = getDefaultPackages();
197
		for (int i = 0; i < packs.length; i++) {
198
			PackageInfo installerInfo = packs[i].getPackageInfo();
210 199

  
211
        if (isFilterSet()) {
212
            infos = getFilteredPackages(infos);
213
        }
200
			if (packageFastFilter.match(installerInfo)) {
201
				TablePackageInfo info = packs[i];
202
				infos.put(installerInfo.getID(), info);
203
			}
204
		}
205
		return infos;
206
	}
214 207

  
215
        for (int i = 0; i < installerInfos.length; i++) {
216
            TablePackageInfo installerInfo =
217
                infos.get(installerInfos[i].getID());
218
            if (installerInfo != null) {
219
                installerInfo.setSelected(installerInfos[i].isSelected());
220
            }
221
        }
208
	public void updatePackages() {
222 209

  
223
        installerInfos =
224
            infos.values().toArray(new TablePackageInfo[infos.size()]);
225
        sortInstallerInfos();
210
		Map<String, TablePackageInfo> infos = getDefaultPackages();
226 211

  
227
        List<String> idList =
228
            installerExecutionService.getDefaultSelectedPackagesIDs();
212
		// check if there is a filter set (category, type, etc)
213
		if (isPackageFilterSet()) {
214
			infos = getFilteredPackages(infos);
215
		}
229 216

  
230
        if (idList != null) {
231
            for (int i = 0; i < installerInfos.length; i++) {
232
                for (int j = 0; j < idList.size(); j++) {
233
                    if (installerInfos[i].getPackageInfo().matchID(
234
                        idList.get(j))) {
235
                        if (installerInfos[i].getPackageInfo()
236
                            .getOperatingSystem().equals(
237
                                installerManager.getOperatingSystem())
238
                            || installerInfos[i].getPackageInfo()
239
                                .getOperatingSystem().equals("all")) {
240
                            installerInfos[i].setDefault(true);
241
                        }
242
                    }
243
                }
244
            }
245
        }
246
    }
217
		// check if there is any filter set (fastFilter)
218
		if (isFastFilterSet()) {
219
			infos = getFastFilteredPackages(infos);
220
		}
247 221

  
248
    public Class<?> getColumnClass(int columnIndex) {
249
        switch (columnIndex) {
250
        case 0:
251
            return PackageStatus.class;
252
        case 1:
253
            return PackageOfficialRecommended.class;
254
        case 2:
255
            return PackageOsAndArchitecture.class;
256
        default:
257
            return String.class;
258
        }
259
    }
222
		for (int i = 0; i < installerInfos.length; i++) {
223
			TablePackageInfo installerInfo = infos.get(installerInfos[i]
224
					.getID());
225
			if (installerInfo != null) {
226
				installerInfo.setSelected(installerInfos[i].isSelected());
227
			}
228
		}
260 229

  
261
    public int getColumnCount() {
262
        return columnNames.length;
263
    }
230
		installerInfos = infos.values().toArray(
231
				new TablePackageInfo[infos.size()]);
232
		sortInstallerInfos();
264 233

  
265
    public String getColumnName(int columnIndex) {
266
        return columnIndex >= columnNames.length ? ""
267
            : columnNames[columnIndex];
268
    }
234
		List<String> idList = installerExecutionService
235
				.getDefaultSelectedPackagesIDs();
269 236

  
270
    public int getRowCount() {
271
        return installerInfos.length;
272
    }
237
		if (idList != null) {
238
			for (int i = 0; i < installerInfos.length; i++) {
239
				for (int j = 0; j < idList.size(); j++) {
240
					if (installerInfos[i].getPackageInfo().matchID(
241
							idList.get(j))) {
242
						if (installerInfos[i].getPackageInfo()
243
								.getOperatingSystem().equals(
244
										installerManager.getOperatingSystem())
245
								|| installerInfos[i].getPackageInfo()
246
										.getOperatingSystem().equals("all")) {
247
							installerInfos[i].setDefault(true);
248
						}
249
					}
250
				}
251
			}
252
		}
253
	}
273 254

  
274
    public Object getValueAt(int rowIndex, int columnIndex) {
275
        TablePackageInfo tableInfo = installerInfos[rowIndex];
276
        PackageInfo installerInfo = tableInfo.getPackageInfo();
255
	// selects default packages
256
	public void selectDefaultPackages() {
257
		for (int i = 0; i < installerInfos.length; i++) {
258
			if (installerInfos[i].isDefault()) {
259
				installerInfos[i].setSelected(true);
260
			} else {
261
				installerInfos[i].setSelected(false);
262
			}
263
		}
264
	}
277 265

  
278
        switch (columnIndex) {
279
        case 0:
280
            PackageStatus installStatus = checkStatus(rowIndex);
281
            return installStatus;
282
        case 1:
283
            PackageOfficialRecommended officialRecommended =
284
                checkOfficialRecommended(rowIndex);
285
            return officialRecommended;
286
        case 2:
287
            PackageOsAndArchitecture packageSystem =
288
                checkPackageSystem(rowIndex);
289
            return packageSystem;
290
        case 3:
291
            return installerInfo.getName();
292
        case 4:
293
            return installerInfo.getVersion();
294
        case 5:
295
            return installerInfo.getType();
296
            // case 5:
297
            // if (installerInfo.getOperatingSystem().equals(
298
            // installerInfo.getArchitecture())) {
299
            // return "all";
300
            // } else {
301
            // return installerInfo.getOperatingSystem() + " "
302
            // + installerInfo.getArchitecture();
303
            // }
304
        default:
305
            return "";
266
	public void selectPackage(PackageInfo pkg) {
267
		for (int i = 0; i < installerInfos.length; i++) {
268
			if (pkg.equals(installerInfos[i].getPackageInfo())) {
269
				installerInfos[i].setSelected(true);
270
				return;
271
			}
272
		}
273
	}
306 274

  
307
        }
308
    }
275
	public Class<?> getColumnClass(int columnIndex) {
276
		switch (columnIndex) {
277
		case 0:
278
			return PackageStatus.class;
279
		case 1:
280
			return PackageOfficialRecommended.class;
281
		case 2:
282
			return PackageOsAndArchitecture.class;
283
		default:
284
			return String.class;
285
		}
286
	}
309 287

  
310
    /**
311
     * @param rowIndex
312
     * @return
313
     */
314
    private PackageOsAndArchitecture checkPackageSystem(int rowIndex) {
315
        TablePackageInfo tableInfo = installerInfos[rowIndex];
316
        PackageInfo installerInfo = tableInfo.getPackageInfo();
317
        PackageOsAndArchitecture oSArch;
288
	public int getColumnCount() {
289
		return columnNames.length;
290
	}
318 291

  
319
        if (installerInfo.getOperatingSystem().equals(
320
            installerInfo.getArchitecture())) {
321
            oSArch = PackageOsAndArchitecture.ALL;
322
        } else
323
            if ((installerInfo.getOperatingSystem().equals("lin"))) {
324
                if (installerInfo.getArchitecture().equals("x86")) {
325
                    oSArch = PackageOsAndArchitecture.LINUX_32;
326
                } else {
327
                    oSArch = PackageOsAndArchitecture.LINUX_64;
328
                }
329
            } else
330
                if ((installerInfo.getOperatingSystem().equals("win"))) {
331
                    if (installerInfo.getArchitecture().equals("x86")) {
332
                        oSArch = PackageOsAndArchitecture.WINDOLS_32;
333
                    } else {
334
                        oSArch = PackageOsAndArchitecture.WINDOLS_64;
335
                    }
336
                } else {
337
                    oSArch = PackageOsAndArchitecture.OTHER;
338
                }
339
        return oSArch;
340
    }
292
	public String getColumnName(int columnIndex) {
293
		return columnIndex >= columnNames.length ? ""
294
				: columnNames[columnIndex];
295
	}
341 296

  
342
    /**
343
     * @return
344
     */
345
    private PackageStatus checkStatus(int rowIndex) {
346
        TablePackageInfo tableInfo = installerInfos[rowIndex];
297
	public int getRowCount() {
298
		return installerInfos.length;
299
	}
347 300

  
348
        if (tableInfo.isInstalled()) {
349
            if (tableInfo.isInstallable()) {
350
                if (tableInfo.isSelected()) {
351
                    return PackageStatus.TO_REINSTALL;
352
                } else {
353
                    return PackageStatus.INSTALLED;
354
                }
355
            } else {
356
                return PackageStatus.INSTALLED_NOT_INSTALLABLE;
357
            }
301
	public Object getValueAt(int rowIndex, int columnIndex) {
302
		TablePackageInfo tableInfo = installerInfos[rowIndex];
303
		PackageInfo installerInfo = tableInfo.getPackageInfo();
358 304

  
359
        } else {
360
            if (tableInfo.isSelected()) {
361
                return PackageStatus.TO_INSTALL;
362
            } else {
363
                return PackageStatus.NOT_INSTALLED;
364
            }
365
        }
366
    }
305
		switch (columnIndex) {
306
		case 0:
307
			PackageStatus installStatus = checkStatus(rowIndex);
308
			return installStatus;
309
		case 1:
310
			PackageOfficialRecommended officialRecommended = checkOfficialRecommended(rowIndex);
311
			return officialRecommended;
312
		case 2:
313
			PackageOsAndArchitecture packageSystem = checkPackageSystem(rowIndex);
314
			return packageSystem;
315
		case 3:
316
			return installerInfo.getName();
317
		case 4:
318
			return installerInfo.getVersion();
319
		case 5:
320
			return installerInfo.getType();
321
			// case 5:
322
			// if (installerInfo.getOperatingSystem().equals(
323
			// installerInfo.getArchitecture())) {
324
			// return "all";
325
			// } else {
326
			// return installerInfo.getOperatingSystem() + " "
327
			// + installerInfo.getArchitecture();
328
			// }
329
		default:
330
			return "";
367 331

  
368
    private PackageOfficialRecommended checkOfficialRecommended(int rowIndex) {
369
        TablePackageInfo tableInfo = installerInfos[rowIndex];
370
        PackageInfo packageInfo = tableInfo.getPackageInfo();
332
		}
333
	}
371 334

  
372
        if (packageInfo.isOfficial()) {
373
            if (installerInfos[rowIndex].isDefault()) {
374
                return PackageOfficialRecommended.OFFICIAL_RECOMMENDED;
375
            } else {
376
                return PackageOfficialRecommended.OFFICIAL_NOT_RECOMMENDED;
377
            }
378
        } else {
379
            if (installerInfos[rowIndex].isDefault()) {
380
                return PackageOfficialRecommended.NOT_OFFICIAL_RECOMMENDED;
381
            } else {
382
                return PackageOfficialRecommended.NOT_OFFICIAL_NOT_RECOMMENDED;
383
            }
384
        }
385
    }
335
	/**
336
	 * @param rowIndex
337
	 * @return
338
	 */
339
	private PackageOsAndArchitecture checkPackageSystem(int rowIndex) {
340
		TablePackageInfo tableInfo = installerInfos[rowIndex];
341
		PackageInfo installerInfo = tableInfo.getPackageInfo();
342
		PackageOsAndArchitecture oSArch;
386 343

  
387
    public PackageInfo getPackageInfoAt(int rowIndex) {
388
        return installerInfos[rowIndex].getPackageInfo();
389
    }
344
		if (installerInfo.getOperatingSystem().equals(
345
				installerInfo.getArchitecture())) {
346
			oSArch = PackageOsAndArchitecture.ALL;
347
		} else if ((installerInfo.getOperatingSystem().equals("lin"))) {
348
			if (installerInfo.getArchitecture().equals("x86")) {
349
				oSArch = PackageOsAndArchitecture.LINUX_32;
350
			} else {
351
				oSArch = PackageOsAndArchitecture.LINUX_64;
352
			}
353
		} else if ((installerInfo.getOperatingSystem().equals("win"))) {
354
			if (installerInfo.getArchitecture().equals("x86")) {
355
				oSArch = PackageOsAndArchitecture.WINDOLS_32;
356
			} else {
357
				oSArch = PackageOsAndArchitecture.WINDOLS_64;
358
			}
359
		} else {
360
			oSArch = PackageOsAndArchitecture.OTHER;
361
		}
362
		return oSArch;
363
	}
390 364

  
391
    public String getDescriptionAt(int rowIndex) {
392
        return getPackageInfoAt(rowIndex).getDescription();
393
    }
365
	/**
366
	 * @return
367
	 */
368
	private PackageStatus checkStatus(int rowIndex) {
369
		TablePackageInfo tableInfo = installerInfos[rowIndex];
394 370

  
395
    public URL getSourcesAt(int rowIndex) {
396
        return getPackageInfoAt(rowIndex).getSourcesURL();
397
    }
371
		if (tableInfo.isInstalled()) {
372
			if (tableInfo.isInstallable()) {
373
				if (tableInfo.isSelected()) {
374
					return PackageStatus.TO_REINSTALL;
375
				} else {
376
					return PackageStatus.INSTALLED;
377
				}
378
			} else {
379
				return PackageStatus.INSTALLED_NOT_INSTALLABLE;
380
			}
398 381

  
399
    public String getOwnerAt(int rowIndex) {
400
        return getPackageInfoAt(rowIndex).getOwner();
401
    }
382
		} else {
383
			if (tableInfo.isSelected()) {
384
				return PackageStatus.TO_INSTALL;
385
			} else {
386
				return PackageStatus.NOT_INSTALLED;
387
			}
388
		}
389
	}
402 390

  
403
    public boolean isCellEditable(int rowIndex, int columnIndex) {
404
        return (columnIndex == 0) && installerInfos[rowIndex].isInstallable();
405
    }
391
	private PackageOfficialRecommended checkOfficialRecommended(int rowIndex) {
392
		TablePackageInfo tableInfo = installerInfos[rowIndex];
393
		PackageInfo packageInfo = tableInfo.getPackageInfo();
406 394

  
407
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
395
		if (packageInfo.isOfficial()) {
396
			if (installerInfos[rowIndex].isDefault()) {
397
				return PackageOfficialRecommended.OFFICIAL_RECOMMENDED;
398
			} else {
399
				return PackageOfficialRecommended.OFFICIAL_NOT_RECOMMENDED;
400
			}
401
		} else {
402
			if (installerInfos[rowIndex].isDefault()) {
403
				return PackageOfficialRecommended.NOT_OFFICIAL_RECOMMENDED;
404
			} else {
405
				return PackageOfficialRecommended.NOT_OFFICIAL_NOT_RECOMMENDED;
406
			}
407
		}
408
	}
408 409

  
409
        if (columnIndex == 0) {
410
            PackageStatus status = (PackageStatus) aValue;
411
            TablePackageInfo tableInfo = installerInfos[rowIndex];
412
            switch (status) {
413
            case INSTALLED:
414
            case NOT_INSTALLED:
415
                tableInfo.setSelected(false);
416
                break;
410
	public PackageInfo getPackageInfoAt(int rowIndex) {
411
		return installerInfos[rowIndex].getPackageInfo();
412
	}
417 413

  
418
            case TO_REINSTALL:
419
            case TO_INSTALL:
420
                tableInfo.setSelected(true);
421
                break;
422
            }
423
        }
424
    }
414
	public String getDescriptionAt(int rowIndex) {
415
		return getPackageInfoAt(rowIndex).getDescription();
416
	}
425 417

  
426
    public List<PackageInfo> getPackagesToInstall() {
427
        List<PackageInfo> packageInfosToInstall = new ArrayList<PackageInfo>();
428
        for (int i = 0; i < installerInfos.length; i++) {
429
            TablePackageInfo tableInfo = installerInfos[i];
430
            if (tableInfo.isSelected()) {
431
                packageInfosToInstall.add(tableInfo.getPackageInfo());
432
            }
433
        }
434
        return packageInfosToInstall;
435
    }
418
	public URL getSourcesAt(int rowIndex) {
419
		return getPackageInfoAt(rowIndex).getSourcesURL();
420
	}
436 421

  
437
    public boolean hasAnyPackageSelected() {
438
        for (int i = 0; i < installerInfos.length; i++) {
439
            if (installerInfos[i].isSelected) {
440
                return true;
441
            }
442
        }
443
        return false;
444
    }
422
	public String getOwnerAt(int rowIndex) {
423
		return getPackageInfoAt(rowIndex).getOwner();
424
	}
445 425

  
446
    public static final class TablePackageInfo {
426
	public boolean isCellEditable(int rowIndex, int columnIndex) {
427
		return (columnIndex == 0) && installerInfos[rowIndex].isInstallable();
428
	}
447 429

  
448
        private final PackageInfo packageInfo;
449
        private boolean isInstalled;
450
        private final boolean isInstallable;
451
        private boolean isSelected;
452
        private boolean isDefault;
430
	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
453 431

  
454
        public TablePackageInfo(PackageInfo packageInfo, boolean isInstalled,
455
            boolean isInstallable) {
456
            this(packageInfo, isInstalled, isInstallable, false, false);
457
        }
432
		if (columnIndex == 0) {
433
			PackageStatus status = (PackageStatus) aValue;
434
			TablePackageInfo tableInfo = installerInfos[rowIndex];
435
			switch (status) {
436
			case INSTALLED:
437
			case NOT_INSTALLED:
438
				tableInfo.setSelected(false);
439
				break;
458 440

  
459
        public void setInstalled(boolean installed) {
460
            this.isInstalled = installed;
461
        }
441
			case TO_REINSTALL:
442
			case TO_INSTALL:
443
				tableInfo.setSelected(true);
444
				break;
445
			}
446
		}
447
	}
462 448

  
463
        public TablePackageInfo(PackageInfo packageInfo, boolean isInstalled,
464
            boolean isInstallable, boolean isSelected, boolean isDefault) {
465
            this.packageInfo = packageInfo;
466
            this.isInstalled = isInstalled;
467
            this.isInstallable = isInstallable;
468
            this.isSelected = isSelected;
469
            this.isDefault = isDefault;
470
        }
449
	public List<PackageInfo> getPackagesToInstall() {
450
		List<PackageInfo> packageInfosToInstall = new ArrayList<PackageInfo>();
451
		for (int i = 0; i < installerInfos.length; i++) {
452
			TablePackageInfo tableInfo = installerInfos[i];
453
			if (tableInfo.isSelected()) {
454
				packageInfosToInstall.add(tableInfo.getPackageInfo());
455
			}
456
		}
457
		return packageInfosToInstall;
458
	}
471 459

  
472
        public String getID() {
473
            PackageInfo pkg = this.getPackageInfo();
474
            return pkg.getID();
475
        }
460
	public boolean hasAnyPackageSelected() {
461
		for (int i = 0; i < installerInfos.length; i++) {
462
			if (installerInfos[i].isSelected) {
463
				return true;
464
			}
465
		}
466
		return false;
467
	}
476 468

  
477
        public PackageInfo getPackageInfo() {
478
            return packageInfo;
479
        }
469
	public static final class TablePackageInfo {
480 470

  
481
        public boolean isInstalled() {
482
            return isInstalled;
483
        }
471
		private final PackageInfo packageInfo;
472
		private boolean isInstalled;
473
		private final boolean isInstallable;
474
		private boolean isSelected;
475
		private boolean isDefault;
484 476

  
485
        public boolean isInstallable() {
486
            return isInstallable;
487
        }
477
		public TablePackageInfo(PackageInfo packageInfo, boolean isInstalled,
478
				boolean isInstallable) {
479
			this(packageInfo, isInstalled, isInstallable, false, false);
480
		}
488 481

  
489
        public boolean isSelected() {
490
            return isSelected;
491
        }
482
		public void setInstalled(boolean installed) {
483
			this.isInstalled = installed;
484
		}
492 485

  
493
        public void setSelected(boolean isSelected) {
494
            this.isSelected = isSelected;
495
        }
486
		public TablePackageInfo(PackageInfo packageInfo, boolean isInstalled,
487
				boolean isInstallable, boolean isSelected, boolean isDefault) {
488
			this.packageInfo = packageInfo;
489
			this.isInstalled = isInstalled;
490
			this.isInstallable = isInstallable;
491
			this.isSelected = isSelected;
492
			this.isDefault = isDefault;
493
		}
496 494

  
497
        public void setDefault(boolean isDefault) {
498
            this.isDefault = isDefault;
499
        }
495
		public String getID() {
496
			PackageInfo pkg = this.getPackageInfo();
497
			return pkg.getID();
498
		}
500 499

  
501
        public boolean isDefault() {
502
            return isDefault;
503
        }
500
		public PackageInfo getPackageInfo() {
501
			return packageInfo;
502
		}
504 503

  
505
    }
504
		public boolean isInstalled() {
505
			return isInstalled;
506
		}
506 507

  
507
    /**
508
     * Returns the TablePackageInfo located in the given row.
509
     * 
510
     * @param row
511
     *            the TablePackageInfo located in the given row
512
     */
513
    public TablePackageInfo getPackageInfo(int row) {
514
        return installerInfos[row];
515
    }
508
		public boolean isInstallable() {
509
			return isInstallable;
510
		}
516 511

  
517
    public void setFilter(PackageFilter filter) {
518
        this.packageFilter = filter;
519
    }
512
		public boolean isSelected() {
513
			return isSelected;
514
		}
520 515

  
521
    public Boolean isFilterSet() {
522
        return this.packageFilter != null;
523
    }
516
		public void setSelected(boolean isSelected) {
517
			this.isSelected = isSelected;
518
		}
524 519

  
525
    public PackageFilter getFilter() {
526
        return this.packageFilter;
527
    }
520
		public void setDefault(boolean isDefault) {
521
			this.isDefault = isDefault;
522
		}
528 523

  
529
    public InstallPackageService getInstallPackageService() {
530
        return this.installerExecutionService;
531
    }
524
		public boolean isDefault() {
525
			return isDefault;
526
		}
532 527

  
528
	}
529

  
530
	/**
531
	 * Returns the TablePackageInfo located in the given row.
532
	 * 
533
	 * @param row
534
	 *            the TablePackageInfo located in the given row
535
	 */
536
	public TablePackageInfo getPackageInfo(int row) {
537
		return installerInfos[row];
538
	}
539

  
540
	public void setFilter(PackageFilter filter) {
541
		this.packageFilter = filter;
542
	}
543

  
544
	public void setFilter(NameAndDescriptionFilter filter) {
545
		this.packageFastFilter = filter;
546
	}
547

  
548
	private Boolean isFastFilterSet() {
549
		return this.packageFastFilter != null;
550
	}
551

  
552
	private Boolean isPackageFilterSet() {
553
		return this.packageFilter != null;
554
	}
555

  
556
	public PackageFilter getFilter() {
557
		return this.packageFastFilter;
558
	}
559

  
560
	public InstallPackageService getInstallPackageService() {
561
		return this.installerExecutionService;
562
	}
533 563
}

Also available in: Unified diff