package polly.rx.httpv2; import java.util.HashMap; import java.util.List; import java.util.Map; import polly.rx.MSG; import polly.rx.core.FleetDBManager; import polly.rx.entities.BattleReport; import polly.rx.entities.BattleReportShip; import polly.rx.entities.FleetScanShip; import de.skuzzle.polly.http.api.HttpEvent; import de.skuzzle.polly.sdk.httpv2.html.AbstractHTMLTableModel; public class BattleReportShipModel extends AbstractHTMLTableModel<BattleReportShip> { private final static String[] COLUMNS = MSG.reportShipModelColumns.split(","); //$NON-NLS-1$ private final static String REPORT_ID = "reportId"; //$NON-NLS-1$ protected final FleetDBManager fleetDb; protected final boolean attacker; public BattleReportShipModel(FleetDBManager fleetDb, boolean attacker) { this.fleetDb = fleetDb; this.attacker = attacker; 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 isSortable(int column) { return true; } @Override public boolean isFilterable(int column) { return true; } @Override public Object getCellValue(int column, BattleReportShip element) { switch (column) { case 0: { final FleetScanShip fss = this.fleetDb.fleetScanShipById(element.getRxId()); return new ShipId(element.getRxId(), fss != null); } case 1: { final FleetScanShip fss = this.fleetDb.fleetScanShipById(element.getRxId()); if (fss == null) { return MSG.reportShipModelUnknown; } else { return fss.getOwner(); } } case 2: return element.getShipType(); case 3: return element.getShipClass(); case 4: return element.getSimpleName(); case 5: return element.getCrewXp(); case 6: return element.getCapi(); case 7: return element.getCapiHp(); case 8: return element.getCapiXp(); case 9: return element.calculateKw(); case 10: return element.getMaxWend(); case 11: return element.getAttack(); case 12: return element.getShields(); case 13: return element.getShieldDamage(); case 14: return element.getPz(); case 15: return element.getPzDamage(); case 16: return element.getStructure(); case 17: return element.getStructureDamage(); default: return ""; //$NON-NLS-1$ } } @Override public Class<?> getColumnClass(int column) { switch (column) { case 0: return Object.class; case 3: case 5: case 7: case 8: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: return Integer.class; case 9: return Double.class; default: return super.getColumnClass(column); } } @Override public Map<String, String> getRequestParameters(HttpEvent e) { final Map<String, String> result = new HashMap<String, String>(); result.put(REPORT_ID, e.get(REPORT_ID)); return result; } @Override public List<BattleReportShip> getData(HttpEvent e) { final int reportId = Integer.parseInt(e.get(REPORT_ID)); final BattleReport br = this.fleetDb.getReportById(reportId); if (this.attacker) { return br.getAttackerShips(); } else { return br.getDefenderShips(); } } @Override public String getRefreshKey() { return REPORT_ID; } }