package polly.rx.httpv2; import java.util.Date; import java.util.List; import polly.rx.MSG; import polly.rx.core.FleetDBManager; import polly.rx.entities.BattleReport; import de.skuzzle.polly.http.api.HttpEvent; import de.skuzzle.polly.sdk.httpv2.html.AbstractHTMLTableModel; import de.skuzzle.polly.sdk.httpv2.html.HTMLElement; import de.skuzzle.polly.sdk.httpv2.html.HTMLElementGroup; import de.skuzzle.polly.sdk.util.DirectedComparator.SortOrder; public class BattleReportModel extends AbstractHTMLTableModel<BattleReport> { private static final String REPORT_DETAILS_PNG = "/polly/rx/httpv2/view/report.png"; //$NON-NLS-1$ private final static String DELETE_REPORT_PNG = "/polly/rx/httpv2/view/report_delete.png"; //$NON-NLS-1$ private final static String[] COLUMNS = MSG.reportModelColumns.split(","); //$NON-NLS-1$ protected final FleetDBManager fleetDb; public BattleReportModel(FleetDBManager fleetDb) { this.fleetDb = fleetDb; this.requirePermission(FleetDBManager.VIEW_BATTLE_REPORT_PERMISSION); } @Override public String getHeader(int column) { return COLUMNS[column]; } @Override public int getColumnCount() { return COLUMNS.length; } @Override public boolean isFilterable(int column) { return column < 12; } @Override public boolean isSortable(int column) { return column < 12; } @Override public Object getCellValue(int column, BattleReport element) { switch (column) { case 0: return String.format("%s %d,%d", element.getQuadrant(), element.getX(), //$NON-NLS-1$ element.getY()); case 1: return element.getAttackerVenadName(); case 2: return element.getAttackerClan(); case 3: return element.getAttackerKw() / element.getAttackerBonus(); case 4: return element.getAttackerXpMod(); case 5: return element.getDefenderVenadName(); case 6: return element.getDefenderClan(); case 7: return element.getDefenderKw() / element.getDefenderBonus(); case 8: return element.getDefenderXpMod(); case 9: return element.getTactic(); case 10: return element.hasArtifact(); case 11: return element.getDate(); case 12: final HTMLElementGroup result = new HTMLElementGroup(); final HTMLElement detailLink = new HTMLElement("a") //$NON-NLS-1$ .href(RXController.PAGE_REPORT_DETAILS + "?reportId=" + element.getId()) //$NON-NLS-1$ .title(MSG.reportModelDetailTitle); final HTMLElement deleteLink = new HTMLElement("a") //$NON-NLS-1$ .href("#").title(MSG.reportModelDeleteTitle) //$NON-NLS-1$ .attr("onclick", "deleteReport(" + element.getId() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ detailLink.content( new HTMLElement("img") //$NON-NLS-1$ .src(REPORT_DETAILS_PNG) .attr("width", "20").attr("height", "20")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ deleteLink.content( new HTMLElement("img").src(DELETE_REPORT_PNG) //$NON-NLS-1$ .attr("width", "20").attr("height", "20") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ ); return result.add(detailLink).add(deleteLink); default: return ""; //$NON-NLS-1$ } } @Override public Class<?> getColumnClass(int column) { switch (column) { case 0: case 1: case 2: case 5: case 6: case 9: return String.class; case 3: case 4: case 7: case 8: return Double.class; case 10: return Boolean.class; case 11: return Date.class; default: return Object.class; } } @Override public int getDefaultSortColumn() { return 11; } @Override public SortOrder getDefaultSortOrder() { return SortOrder.DESCENDING; } @Override public List<BattleReport> getData(HttpEvent e) { return this.fleetDb.getAllReports(); } }