@Override public Match mapRow(ResultSet rs, int rowNum) throws SQLException { Match match = new Match(); match.setMatchId(rs.getInt("MATCH_ID")); match.setLeagueName(rs.getString("LEAGUE_NAME").trim()); match.setLeagueId(rs.getInt("LEAGUE_ID")); match.setHomeTeamName(rs.getString("HOME_TEAM_NAME").trim()); match.setAwayTeamName(rs.getString("AWAY_TEAM_NAME").trim()); match.setHomeScore(rs.getInt("HOME_SCORE")); match.setAwayScore(rs.getInt("AWAY_SCORE")); match.setHomeTeamId(rs.getInt("HOME_TEAM_ID")); match.setAwayTeamId(rs.getInt("AWAY_TEAM_ID")); match.setFeedTypeId(rs.getInt("FEED_TYPE_ID")); match.setMatchTime(rs.getString("MATCH_TIME").trim()); match.setRunningIndicator(rs.getInt("RUNNING_INDICATOR")); match.setTimeGameLive(rs.getString("TIME_GAME_LIVE").trim()); match.setKoAwayPrice(rs.getDouble("KICK_OFF_AWAY_PRICE")); match.setKoDrawPrice(rs.getDouble("KICK_OFF_DRAW_PRICE")); match.setKoHomePrice(rs.getDouble("KICK_OFF_HOME_PRICE")); match.setKoOuHfPrice(rs.getDouble("KICK_OFF_OU_HF_PRICE")); match.setTimeFirstGoal(rs.getInt("TIME_FIRST_GOAL")); match.setMatchDate(new DateTime(rs.getDate("MATCH_DATE"))); match.setBookieId(rs.getInt("BOOKIE_ID")); return match; }
private Match exists(Match match) { try { Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("matchId", match.getMatchId()); paramMap.put("bookieId", match.getBookieId()); paramMap.put("feedTypeId", match.getFeedTypeId()); return jdbcTemplate.queryForObject(READ_EXISTS_SQL, paramMap, matchRowMapper); } catch (EmptyResultDataAccessException e) { return null; } }
@Override public Object extractData(ResultSet rs) throws SQLException, DataAccessException { Map<String, Match> matches = new HashMap<String, Match>(); Match match = null; String key = null; while (rs.next()) { match = new Match(); match.setMatchId(rs.getInt("MATCH_ID")); match.setLeagueName(rs.getString("LEAGUE_NAME").trim()); match.setLeagueId(rs.getInt("LEAGUE_ID")); match.setHomeTeamName(rs.getString("HOME_TEAM_NAME").trim()); match.setAwayTeamName(rs.getString("AWAY_TEAM_NAME").trim()); match.setHomeScore(rs.getInt("HOME_SCORE")); match.setAwayScore(rs.getInt("AWAY_SCORE")); match.setHomeTeamId(rs.getInt("HOME_TEAM_ID")); match.setAwayTeamId(rs.getInt("AWAY_TEAM_ID")); match.setFeedTypeId(rs.getInt("FEED_TYPE_ID")); match.setMatchTime(rs.getString("MATCH_TIME").trim()); match.setRunningIndicator(rs.getInt("RUNNING_INDICATOR")); match.setTimeGameLive(rs.getString("TIME_GAME_LIVE").trim()); match.setKoAwayPrice(rs.getDouble("KICK_OFF_AWAY_PRICE")); match.setKoDrawPrice(rs.getDouble("KICK_OFF_DRAW_PRICE")); match.setKoHomePrice(rs.getDouble("KICK_OFF_HOME_PRICE")); match.setKoOuHfPrice(rs.getDouble("KICK_OFF_OU_HF_PRICE")); match.setTimeFirstGoal(rs.getInt("TIME_FIRST_GOAL")); match.setMatchDate(new DateTime(rs.getDate("MATCH_DATE"))); match.setBookieId(rs.getInt("BOOKIE_ID")); key = String.valueOf(match.getMatchId()) + "|" + rs.getString("NAME").trim(); matches.put(key, match); } return matches; }
@Override public void createMatch(Match match) { if (LOGGER.isDebugEnabled()) { LOGGER.debug(String.format("createMatch(match=%s)", match.toString())); } Match dbMatch = exists(match); if (dbMatch == null) { if (LOGGER.isInfoEnabled()) { LOGGER.info("Creating Match key - " + match.toString()); } try { /** Create match. */ Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("matchId", match.getMatchId()); paramMap.put("leagueName", match.getLeagueName()); paramMap.put("homeTeamName", match.getHomeTeamName()); paramMap.put("awayTeamName", match.getAwayTeamName()); paramMap.put("matchTime", match.getMatchTime()); paramMap.put("runningInd", match.getRunningIndicator()); paramMap.put("homeScore", match.getHomeScore()); paramMap.put("awayScore", match.getAwayScore()); paramMap.put("timeGameLive", match.getTimeGameLive()); paramMap.put("leagueId", match.getLeagueId()); paramMap.put("homeTeamId", match.getHomeTeamId()); paramMap.put("awayTeamId", match.getAwayTeamId()); paramMap.put("feedTypeId", match.getFeedTypeId()); paramMap.put("timeFirstGoal", match.getTimeFirstGoal()); paramMap.put("kickOffHomePrice", match.getKoHomePrice()); paramMap.put("kickOffAwayPrice", match.getKoAwayPrice()); paramMap.put("kickOffOuHfPrice", match.getKoOuHfPrice()); paramMap.put("kickOffDrawPrice", match.getKoDrawPrice()); paramMap.put("matchDate", new java.sql.Date(match.getMatchDate().getMillis())); paramMap.put("bookieId", match.getBookieId()); paramMap.put("ouHfHandicap", match.getOuHandicapValue()); jdbcTemplate.update(INSERT_SQL, paramMap); /** Create match minutes for each bookie with odds on the match. */ matchTimeDao.createMatchTime( match.getMatchId(), match.getFeedTypeId(), match.getBookieId()); } catch (Exception e) { LOGGER.info("Exception=" + e.getMessage()); } } else { /** Has match started? */ if (dbMatch.getRunningIndicator().intValue() == 0) { Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("matchId", match.getMatchId()); paramMap.put("feedTypeId", match.getFeedTypeId()); paramMap.put("bookieId", match.getBookieId()); if (hasPriceChanged(match.getKoHomePrice(), dbMatch.getKoHomePrice())) { if (LOGGER.isInfoEnabled()) { LOGGER.info( "Update Home Price " + dbMatch.getKoHomePrice() + " for Match - " + match.toString()); } paramMap.put("homePrice", match.getKoHomePrice()); jdbcTemplate.update(UPDATE_KO_HOME_PRICE_SQL, paramMap); } if (hasPriceChanged(match.getKoAwayPrice(), dbMatch.getKoAwayPrice())) { if (LOGGER.isInfoEnabled()) { LOGGER.info( "Update Away Price " + dbMatch.getKoAwayPrice() + " for Match - " + match.toString()); } paramMap.put("awayPrice", match.getKoAwayPrice()); jdbcTemplate.update(UPDATE_KO_AWAY_PRICE_SQL, paramMap); } if (hasPriceChanged(match.getKoDrawPrice(), dbMatch.getKoDrawPrice())) { if (LOGGER.isInfoEnabled()) { LOGGER.info( "Update Draw Price " + dbMatch.getKoDrawPrice() + " for Match - " + match.toString()); } paramMap.put("drawPrice", match.getKoDrawPrice()); jdbcTemplate.update(UPDATE_KO_DRAW_PRICE_SQL, paramMap); } if (hasPriceChanged(match.getKoOuHfPrice(), dbMatch.getKoOuHfPrice())) { if (LOGGER.isInfoEnabled()) { LOGGER.info( "Update OU HT 0.5 Price " + dbMatch.getKoOuHfPrice() + " for Match - " + match.toString()); } paramMap.put("ouHfPrice", match.getKoOuHfPrice()); jdbcTemplate.update(UPDATE_KO_UOHT_PRICE_SQL, paramMap); } } } }