Список похожих задач

Скрипт возвращает список похожих задач. Будет полезен при общении с пользователями через TrackStudio.

package scripts.task_custom_field_value;

import com.trackstudio.app.adapter.AdapterManager;
import com.trackstudio.exception.GranException;
import com.trackstudio.external.TaskUDFValueScript;
import com.trackstudio.secured.SecuredSearchTaskItem;
import com.trackstudio.secured.SecuredTaskBean;

import java.util.*;

/**
 *  Возвращает список похожих задач
 */
public class AutoSimilarTasks implements TaskUDFValueScript {
    public static int LIMIT=25;

    public Object calculate(SecuredTaskBean securedTaskBean) throws GranException {
        HashMap<SecuredTaskBean, Float> tasks =           AdapterManager.getInstance().getSecuredTaskAdapterManager().findSimilar(securedTaskBean.getSecure(), securedTaskBean.getId());
        ArrayList<SecuredSearchTaskItem> results = new ArrayList<SecuredSearchTaskItem>();
        for (Map.Entry e : tasks.entrySet()) {
            Float ratio = (Float) e.getValue();
            SecuredSearchTaskItem sstask = new SecuredSearchTaskItem(0, ratio, (SecuredTaskBean) e.getKey(), "", "");
            results.add(sstask);
        }
        Collections.sort(results);
        List<String> taskIds = new ArrayList<String>();

        for (int i=0; i<LIMIT && i<results.size(); i++){
            taskIds.add('#'+results.get(i).getTask().getNumber());
        }
       
        return taskIds;
    }
}