001    /**
002     * SelectCases.java
003     * jCOLIBRI2 framework. 
004     * @author Juan A. Recio-García.
005     * GAIA - Group for Artificial Intelligence Applications
006     * http://gaia.fdi.ucm.es
007     * 24/11/2007
008     */
009    package jcolibri.method.retrieve.selection;
010    
011    import java.util.ArrayList;
012    import java.util.Collection;
013    import java.util.Iterator;
014    
015    import jcolibri.cbrcore.CBRCase;
016    import jcolibri.method.retrieve.RetrievalResult;
017    
018    /**
019     * Class that stores the selectAll and selectTopK methods.
020     * 
021     * @author Juan A. Recio-Garcia
022     * @author Developed at University College Cork (Ireland) in collaboration with Derek Bridge.
023     * @version 1.0
024     */
025    public class SelectCases
026    {    
027        /**
028         * Selects all cases
029         * @param cases to select
030         * @return all cases
031         */
032        public static Collection<CBRCase> selectAll(Collection<RetrievalResult> cases)
033        {
034            Collection<CBRCase> res = new ArrayList<CBRCase>();
035            for(RetrievalResult rr: cases)
036                    res.add(rr.get_case());
037            return res;
038        }
039        
040        /**
041         * Selects top K cases
042         * @param cases to select
043         * @param k is the number of csaes to select
044         * @return top k cases
045         */
046        public static Collection<CBRCase> selectTopK(Collection<RetrievalResult> cases, int k)
047        {
048            ArrayList<CBRCase> res = new ArrayList<CBRCase>();
049            Iterator<RetrievalResult> cIter  =cases.iterator(); 
050            for(int c=0; c<k && c<cases.size(); c++)
051                res.add(cIter.next().get_case());
052            return res;    
053        }
054        
055        /**
056         * Selects all cases but returns them into RetrievalResult objects
057         * @param cases to select
058         * @return all cases into RetrievalResult objects
059         */
060        public static Collection<RetrievalResult> selectAllRR(Collection<RetrievalResult> cases)
061        {
062            return cases;
063        }
064        
065        /**
066         * Selects top k cases but returns them into RetrievalResult objects
067         * @param cases to select
068         * @return top k cases into RetrievalResult objects
069         */
070        public static Collection<RetrievalResult> selectTopKRR(Collection<RetrievalResult> cases, int k)
071        {
072            ArrayList<RetrievalResult> res = new ArrayList<RetrievalResult>();
073            Iterator<RetrievalResult> cIter  =cases.iterator(); 
074            for(int c=0; c<k && c<cases.size(); c++)
075                res.add(cIter.next());
076            return res;    
077        }
078    }