Время, затраченное пользователями на задачу.

Скрипт используется в поле типа текст с включенной опцией HTML-вид. Скрипт возвращает таблицу с временем, которое потратил на задачу каждый пользователь.

package scripts.task_custom_field_value;

import com.trackstudio.exception.GranException;
import com.trackstudio.external.TaskUDFValueScript;
import com.trackstudio.secured.SecuredMessageBean;
import com.trackstudio.secured.SecuredTaskBean;
import java.util.HashMap;
import java.util.Map;

public class TextUdf implements TaskUDFValueScript{
    /* Метод, возвращающий таблицу на основе HashMap с данными о затраченном времени*/
    public String createtable(HashMap<String ,Long> map) {
        String table = "<table>";
        for(Map.Entry entry:map.entrySet()) {
            table = table + "<tr><td>" + entry.getKey().toString() + "</td><td>" + entry.getValue().toString() + "</td></tr>";
        }
        table = table + "</table>";
        return table;
    }
   
    public Object calculate(SecuredTaskBean task) throws GranException{

        HashMap<String, Long> hrs = new HashMap<String, Long>();
        if(task.getMessageCount()!=0)  {
            for(SecuredMessageBean message:task.getMessages()) {
                String username = message.getSubmitter().getName();
                if(!hrs.containsKey(username))  {
                    if(message.getHrs()==null)    hrs.put(username, 0l);
                    else hrs.put(username, message.getHrs()/3600);
                }
                else {
                    if(message.getHrs()!=null) {
                        Long value = hrs.get(username)/3600 + message.getHrs()/3600;
                        hrs.put(username, value);
                    }
                }
            }
            return createtable(hrs);  }
        else return null;
    }
}