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