Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package skillz.admin
- import org.joda.time.DateTime
- import org.joda.time.Hours
- import org.joda.time.Interval
- import org.joda.time.format.DateTimeFormat
- import org.springframework.transaction.annotation.Transactional
- import skillz.Game
- import skillz.utils.TimeUtils
- @Transactional
- class GameMetricsJob {
- private static final String BOOTSTRAP_DATE_STRING = '05/05/2013'
- private static final String BOOTSTRAP_DATE_PATTERN = 'MM/dd/yyyy'
- private static final DateTime BOOTSTRAP_DATE
- static {
- def f = DateTimeFormat.forPattern(BOOTSTRAP_DATE_PATTERN)
- BOOTSTRAP_DATE = f.parseDateTime(BOOTSTRAP_DATE_STRING)
- }
- def createGameMetricsService
- static triggers = {
- simple repeatInterval: 5000l * 600 // execute job once in 5 seconds
- }
- def execute() {
- log.info('executing GameMetricsJob')
- def games = Game.list() + [ id: 'skillz' ]
- def lastMetric = GameMetrics.first()
- def startDate
- if (!lastMetric) {
- // bootstrap start date
- startDate = BOOTSTRAP_DATE
- } else {
- startDate = new DateTime(lastMetric.dateCreated)
- }
- // TEST code
- def f = DateTimeFormat.forPattern(BOOTSTRAP_DATE_PATTERN)
- def end = f.parseDateTime('05/06/2013')
- def intervals = TimeUtils.generateIntervals(Hours.ONE, startDate, end)
- GameMetrics.withTransaction {
- intervals.each { Interval interval ->
- games.each { game ->
- def m = createGameMetricsService.create(
- game.id.toString(), 'hourly', interval.start.toDate())
- m.save()
- }
- }
- }
- log.info('finished GameMetricsJob')
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment