/*
 * Top10Value.java
 *
 * Created on 22. říjen 2000, 16:22
 * Documented 18. 7. 2001
 */

package timetable.solver.strategy;
import timetable.data.*;
import timetable.util.*;
/** Třída spravující n nejlepších umístění.
 *
 * @author Tomáš Müller
 * @version 1.0
 */
public class Top10Value extends timetable.solver.strategy.Top10 {

    /** Konstruktor. Počet umístění ve skupině bude 10. */
    public Top10Value() {
        super();
    }

    /** Konstruktor.
     * @param maximum počet umístění ve skupině
     */
    public Top10Value(int maximum) {
        super(maximum);
    }
    
    /** Přidání umístění do množiny n-nejlepších umístění
     * @param adept hodnota umístění - minimalizuje se
     * @param slot umístění - počáteční slot 
     * @param rg umístění - vybrané zdroje
     * @param ag umístění - množina konfliktních aktivit
     */
    public void add(int adept, int slot, ActivityResources rg, ActivityGroup ag) {
        Object [] a = { new Integer(slot), rg, ag };
        add(adept, a);
    }
    
    /** Vrátí umístění na dané pozici ve skupině (i-té nejlepší) - počáteční slot.
     * @param i index - pořadí umístění ve skupině (od 0 do maximum-1)
     * @return počáteční slot daného umístění
     */
    public int slot(int i) {
        return ((Integer)((Object [])(get(i)))[0]).intValue();
    }
    
    /** Vrátí umístění na dané pozici ve skupině (i-té nejlepší) - množina vybraných zdrojů.
     * @param i index - pořadí umístění ve skupině (od 0 do maximum-1)
     * @return vybrané zdroje 
     */
    public ActivityResources resources(int i) {
        return ((ActivityResources)((Object[])(get(i)))[1]);
    }
    
    /** Vrátí umístění na dané pozici ve skupině (i-té nejlepší) - konfliktní aktivity.
     * @param i index - pořadí umístění ve skupině (od 0 do maximum-1)
     * @return konfliktní aktivity
     */
    public ActivityGroup activities(int i) {
        return ((ActivityGroup)((Object[])(get(i)))[2]);
    }    

}
