use of com.ixale.starparse.domain.stats.CombatStats in project StarParse by Ixale.
the class CombatDaoImpl method storeCombat.
private void storeCombat(final Combat c, boolean create, boolean close) throws Exception {
// resolve name
final String combatName = close ? getJdbcTemplate().query(SQL_GET_NAME, new Object[] { c.getEventIdFrom(), c.getEventIdTo() != null ? c.getEventIdTo() : Integer.MAX_VALUE }, rs -> rs.next() ? rs.getString("combat_name") : null) : null;
final Timestamp fromTs = new Timestamp(c.getTimeFrom());
Integer selfTick = null;
for (final Map.Entry<Actor, CharacterDiscipline> entry : context.getCombatInfo().get(c.getCombatId()).getCombatPlayers().entrySet()) {
// gather statistics
final CombatStats stats = getCombatStats(c, new CombatSelection(c.getEventIdFrom(), c.getEventIdTo(), null, null), entry.getKey().getName());
// insert or update (same structure)
final Timestamp toTs = new Timestamp(c.getTimeTo() != null ? c.getTimeTo() : c.getTimeFrom() + stats.getTick());
if (selfTick == null) {
// take first encountered (== this player)
selfTick = stats.getTick();
}
getJdbcTemplate().update(create ? SQL_INSERT_STATS : SQL_UPDATE_STATS, new Object[] { c.getEventIdFrom(), c.getEventIdTo(), fromTs, toTs, stats.getActions(), stats.getApm(), stats.getDamage(), stats.getDps(), stats.getHeal(), stats.getHps(), stats.getEffectiveHeal(), stats.getEhps(), stats.getEhpsPercent(), stats.getDamageTaken(), stats.getDtps(), stats.getAbsorbed(), stats.getAps(), stats.getHealTaken(), stats.getHpsTaken(), stats.getEhpsTaken(), stats.getEffectiveHealTakenTotal(), stats.getThreat(), stats.getThreatPositive(), stats.getTps(), entry.getValue() != null ? entry.getValue().name() : null, c.getCombatId(), entry.getKey().getName() });
}
getJdbcTemplate().update(create ? SQL_INSERT : SQL_UPDATE, new Object[] { c.getLogId(), c.getEventIdFrom(), c.getEventIdTo(), fromTs, new Timestamp(c.getTimeTo() != null ? c.getTimeTo() : c.getTimeFrom() + (selfTick == null ? 1000 : selfTick)), c.getBoss() != null ? c.getBoss().getRaid().getName() : null, c.getBoss() != null ? c.getBoss().toString() : null, combatName, c.isPvp() != null ? c.isPvp() : null, !close, c.getCombatId() });
}
Aggregations