001    /**
002     * CBRCase.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     * 05/01/2007
008     */
009    
010    package jcolibri.cbrcore;
011    
012    /**
013     * Interface that represents any Case structure of jCOLIBRI. It is composed by several CaseComponents:
014     * <ul>
015     * <li>A description (inherited from CBRQuery).
016     * <li>A solution.
017     * <li>A justification of a Solution.
018     * <li>A result.
019     * </ul>
020     * <p>These components of a case where decided after a revision of the following books:
021     * <ul>
022     * <li>I. Watson. Applying case-based reasoning: techniques for enterprise systems. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1998.
023     * <li>K.-D. Althoff, E. Auriol, R. Barletta, and M. Manago. A Review of Industrial Case-Based Reasoning Tools. AI Intelligence, Oxford, 1995.
024     * </ul>
025     * 
026     * @see jcolibri.cbrcore.CaseComponent
027     */
028    public class CBRCase extends CBRQuery  {
029    
030            CaseComponent solution;
031            CaseComponent justificationOfSolution;
032            CaseComponent result;
033            
034            /**
035             * Returns the justificationOfSolution.
036             */
037            public CaseComponent getJustificationOfSolution() {
038                    return justificationOfSolution;
039            }
040            /**
041             * Sets the Justification of Solution component.
042             * @param justificationOfSolution The justificationOfSolution to set.
043             */
044            public void setJustificationOfSolution(CaseComponent justificationOfSolution) {
045                    this.justificationOfSolution = justificationOfSolution;
046            }
047            /**
048             * Returns the result.
049             */
050            public CaseComponent getResult() {
051                    return result;
052            }
053            /**
054             * Sets the Result component
055             */
056            public void setResult(CaseComponent result) {
057                    this.result = result;
058            }
059            /**
060             * Returns the solution.
061             */
062            public CaseComponent getSolution() {
063                    return solution;
064            }
065            /**
066             * Sets the solution component
067             */
068            public void setSolution(CaseComponent solution) {
069                    this.solution = solution;
070            }
071            
072            
073            public String toString()
074            {
075                    return super.toString()+"[Solution: "+solution+"][Sol.Just.: "+justificationOfSolution+"][Result: "+result+"]";
076            }
077    
078    }