001    /**
002     * LinealCaseBase.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     * 28/11/2006
008     */
009    package jcolibri.casebase;
010    
011    import java.util.Collection;
012    
013    import jcolibri.cbrcore.CBRCase;
014    import jcolibri.cbrcore.CBRCaseBase;
015    import jcolibri.cbrcore.CaseBaseFilter;
016    import jcolibri.cbrcore.Connector;
017    
018    /**
019     * Basic Linal Case Base that stores cases into a List.
020     * This class does not includes any kind of caching mechanism. 
021     * That way, if you call to learn() or forget() cases are automatically stored/removed to/from the persistence media. 
022     * This will be a performance problem if you plan to learn/forget in multiple steps. This case base is unrecommended for evaluation.
023     * <p>
024     * Depending on your requirements the CachedLinealCaseBase could be more suitable.
025     * 
026     * @author Juan A. Recio-García
027     * @see jcolibri.casebase.CachedLinealCaseBase
028     *
029     */
030    public class LinealCaseBase implements CBRCaseBase {
031    
032            private jcolibri.cbrcore.Connector connector;
033            private java.util.Collection<CBRCase> cases;
034    
035            public void init(Connector connector) {
036                    this.connector = connector;
037                    cases = this.connector.retrieveAllCases();      
038            }
039            
040            /* (non-Javadoc)
041             * @see jcolibri.cbrcore.CBRCaseBase#deInit()
042             */
043            public void close() {
044                    this.connector.close();
045    
046            }
047    
048            /* (non-Javadoc)
049             * @see jcolibri.cbrcore.CBRCaseBase#forgetCases(java.util.Collection)
050             */
051            public void forgetCases(Collection<CBRCase> cases) {
052                    // TODO Auto-generated method stub
053    
054            }
055    
056            /* (non-Javadoc)
057             * @see jcolibri.cbrcore.CBRCaseBase#getCases()
058             */
059            public Collection<CBRCase> getCases() {
060                    return cases;
061            }
062    
063            /* (non-Javadoc)
064             * @see jcolibri.cbrcore.CBRCaseBase#getCases(jcolibri.cbrcore.CaseBaseFilter)
065             */
066            public Collection<CBRCase> getCases(CaseBaseFilter filter) {
067                    // TODO Auto-generated method stub
068                    return null;
069            }
070    
071    
072            /* (non-Javadoc)
073             * @see jcolibri.cbrcore.CBRCaseBase#learnCases(java.util.Collection)
074             */
075            public void learnCases(Collection<CBRCase> cases) {
076                    connector.storeCases(cases);
077                    this.cases.addAll(cases);
078    
079            }
080    
081    
082    }