001    package jcolibri.method.maintenance;
002    
003    import java.util.Collection;
004    
005    import jcolibri.cbrcore.CBRCase;
006    import jcolibri.method.reuse.classification.KNNClassificationConfig;
007    
008    /**
009     * Abstract class for a solves function that will decide which cases 
010     * solve a query.
011     * 
012     * @author Lisa Cummins
013     * @author Derek Bridge
014     * 22/05/07
015     */
016    public abstract class SolvesFunction
017    {
018            protected Collection<CBRCase> solveQ;
019            
020            protected Collection<CBRCase> misclassifyQ;
021            
022            /**
023             * Sets the classes that both solve q or contribute to its 
024             * misclassification
025             * @param q the query
026             * @param cases from which to find the cases which solve
027             * and classify the query. These include the query itself. 
028             * @param knnConfig the similarity configuration
029             */
030            public abstract void setCasesThatSolveAndMisclassifyQ(CBRCase q, Collection<CBRCase> cases, KNNClassificationConfig knnConfig);
031    
032            /**
033             * Returns the cases that solved the last query for which cases
034             * were divided.
035             * @return the cases that solved the last query for which cases
036             * were divided.
037         */
038            public Collection<CBRCase> getCasesThatSolvedQuery()
039            {       return solveQ;
040            }
041            
042            /**
043             * Returns the cases that contributed to the misclassification
044             * of the last query for which cases were divided.
045             * were divided.
046             * @return the cases that contributed to the misclassification
047             * of the last query for which cases were divided.
048             * were divided.
049         */
050            public Collection<CBRCase> getCasesThatMisclassifiedQuery()
051            {       return misclassifyQ;
052            }
053    }