emailer/src/main/scala/cz/xelfi/quoridor/emailer/Notify.scala
author Jaroslav Tulach <jtulach@netbeans.org>
Sun, 25 Apr 2010 22:46:08 +0200
changeset 240 29287b0a1a0b
parent 229 a11db9324580
child 242 ba048fb6c925
permissions -rw-r--r--
Adding description of individual lonely games. More verbose subject added too.
jtulach@228
     1
/*
jtulach@228
     2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
jtulach@228
     3
 *
jtulach@228
     4
 * The contents of this file are subject to the terms of either the GNU
jtulach@228
     5
 * General Public License Version 2 only ("GPL") or the Common
jtulach@228
     6
 * Development and Distribution License("CDDL") (collectively, the
jtulach@228
     7
 * "License"). You may not use this file except in compliance with the
jtulach@228
     8
 * License. You can obtain a copy of the License at
jtulach@228
     9
 * http://www.netbeans.org/cddl-gplv2.html
jtulach@228
    10
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
jtulach@228
    11
 * specific language governing permissions and limitations under the
jtulach@228
    12
 * License.  When distributing the software, include this License Header
jtulach@228
    13
 * Notice in each file and include the License file at
jtulach@228
    14
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
jtulach@228
    15
 * particular file as subject to the "Classpath" exception as provided
jtulach@228
    16
 * by Sun in the GPL Version 2 section of the License file that
jtulach@228
    17
 * accompanied this code. If applicable, add the following below the
jtulach@228
    18
 * License Header, with the fields enclosed by brackets [] replaced by
jtulach@228
    19
 * your own identifying information:
jtulach@228
    20
 * "Portions Copyrighted [year] [name of copyright owner]"
jtulach@228
    21
 *
jtulach@228
    22
 * Contributor(s):
jtulach@228
    23
 *
jtulach@228
    24
 * Portions Copyrighted 2009 Jaroslav Tulach
jtulach@228
    25
 */
jtulach@228
    26
jtulach@228
    27
package cz.xelfi.quoridor.emailer
jtulach@228
    28
jtulach@228
    29
import java.net.URL
jtulach@240
    30
import java.util.ResourceBundle
jtulach@240
    31
import java.text.MessageFormat
jtulach@228
    32
import scala.collection.Map
jtulach@228
    33
import scala.collection.mutable.HashMap
jtulach@228
    34
jtulach@228
    35
abstract class Notify {
jtulach@240
    36
  protected def allPlayers(): Map[String,List[Info]]
jtulach@240
    37
  protected def emails(ids : Collection[String]): Map[String,String]
jtulach@228
    38
  protected def sendEmail(address : String, subject : String, text : String) : Unit
jtulach@228
    39
jtulach@240
    40
  case class Info(lastMove : Long, gameId : String) {
jtulach@240
    41
  }
jtulach@240
    42
jtulach@228
    43
  def process() {
jtulach@228
    44
    val ret = allPlayers()
jtulach@240
    45
    val name2Address = emails(ret.keySet)
jtulach@228
    46
jtulach@240
    47
    for (val player <- ret.keySet) {
jtulach@240
    48
        val address = name2Address.getOrElse(player, null)
jtulach@228
    49
jtulach@240
    50
        val rb = ResourceBundle.getBundle("cz.xelfi.quoridor.emailer.Bundle")
jtulach@240
    51
        val sb = new StringBuilder
jtulach@240
    52
        sb.append(rb.getString("MSG_HEADER"))
jtulach@240
    53
        var subject = rb.getString("MSG_SUBJECT")
jtulach@240
    54
        val mf = new MessageFormat(rb.getString("MSG_GAME"))
jtulach@240
    55
        for (val info <- ret(player)) {
jtulach@240
    56
          val delay : Long = (System.currentTimeMillis - info.lastMove) / (3600 * 1000 * 24)
jtulach@240
    57
          if (delay > 14) {
jtulach@240
    58
            subject = rb.getString("MSG_SUBJECT_WARN")
jtulach@240
    59
          }
jtulach@240
    60
          val arr = new Array[Object](2);
jtulach@240
    61
          arr(0) = "http://quoridor.xelfi.cz/games/" + info.gameId
jtulach@240
    62
          arr(1) = java.lang.Long.valueOf(delay)
jtulach@240
    63
          sb.append(mf.format(arr))
jtulach@240
    64
        }
jtulach@240
    65
        if (address != null) {
jtulach@240
    66
          sendEmail(
jtulach@240
    67
              "quoridor@xelfi.cz",
jtulach@240
    68
              subject,
jtulach@240
    69
              sb.toString
jtulach@240
    70
          )
jtulach@240
    71
        }
jtulach@228
    72
    }
jtulach@228
    73
  }
jtulach@228
    74
}