Search in sources :

Example 6 with CombatStats

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() });
}
Also used : CharacterDiscipline(com.ixale.starparse.domain.CharacterDiscipline) AbsorptionStats(com.ixale.starparse.domain.stats.AbsorptionStats) DamageDealtStats(com.ixale.starparse.domain.stats.DamageDealtStats) DataAccessException(org.springframework.dao.DataAccessException) CombatChallenge(com.ixale.starparse.domain.CombatChallenge) CombatMitigationStats(com.ixale.starparse.domain.stats.CombatMitigationStats) CombatTickStats(com.ixale.starparse.domain.stats.CombatTickStats) HealingDoneStats(com.ixale.starparse.domain.stats.HealingDoneStats) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) SimpleDateFormat(java.text.SimpleDateFormat) HashMap(java.util.HashMap) CombatDao(com.ixale.starparse.service.dao.CombatDao) ArrayList(java.util.ArrayList) Effect(com.ixale.starparse.domain.Effect) SQLException(java.sql.SQLException) Calendar(java.util.Calendar) EntityGuid(com.ixale.starparse.domain.EntityGuid) CombatStats(com.ixale.starparse.domain.stats.CombatStats) ResultSet(java.sql.ResultSet) Map(java.util.Map) Event(com.ixale.starparse.domain.Event) Helpers(com.ixale.starparse.parser.Helpers) Repository(org.springframework.stereotype.Repository) TimeUtils(com.ixale.starparse.time.TimeUtils) EmptyResultDataAccessException(org.springframework.dao.EmptyResultDataAccessException) Logger(org.slf4j.Logger) Combat(com.ixale.starparse.domain.Combat) Timestamp(java.sql.Timestamp) Set(java.util.Set) DamageTakenStats(com.ixale.starparse.domain.stats.DamageTakenStats) HealingTakenStats(com.ixale.starparse.domain.stats.HealingTakenStats) List(java.util.List) CombatSelection(com.ixale.starparse.domain.CombatSelection) ChallengeStats(com.ixale.starparse.domain.stats.ChallengeStats) RowMapper(org.springframework.jdbc.core.RowMapper) Actor(com.ixale.starparse.domain.Actor) Collections(java.util.Collections) CombatSelection(com.ixale.starparse.domain.CombatSelection) CombatStats(com.ixale.starparse.domain.stats.CombatStats) CharacterDiscipline(com.ixale.starparse.domain.CharacterDiscipline) Actor(com.ixale.starparse.domain.Actor) Timestamp(java.sql.Timestamp) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

CombatStats (com.ixale.starparse.domain.stats.CombatStats)6 Combat (com.ixale.starparse.domain.Combat)3 CombatSelection (com.ixale.starparse.domain.CombatSelection)3 SQLException (java.sql.SQLException)3 HashMap (java.util.HashMap)3 DataAccessException (org.springframework.dao.DataAccessException)3 EmptyResultDataAccessException (org.springframework.dao.EmptyResultDataAccessException)3 CombatChallenge (com.ixale.starparse.domain.CombatChallenge)2 Effect (com.ixale.starparse.domain.Effect)2 ChallengeStats (com.ixale.starparse.domain.stats.ChallengeStats)2 DamageDealtStats (com.ixale.starparse.domain.stats.DamageDealtStats)2 ResultSet (java.sql.ResultSet)2 SimpleDateFormat (java.text.SimpleDateFormat)2 ArrayList (java.util.ArrayList)2 Actor (com.ixale.starparse.domain.Actor)1 CharacterDiscipline (com.ixale.starparse.domain.CharacterDiscipline)1 EntityGuid (com.ixale.starparse.domain.EntityGuid)1 Event (com.ixale.starparse.domain.Event)1 AbsorptionStats (com.ixale.starparse.domain.stats.AbsorptionStats)1 CombatEventStats (com.ixale.starparse.domain.stats.CombatEventStats)1