001 /** 002 * CriticalUserChoice.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 * 31/10/2007 008 */ 009 package jcolibri.extensions.recommendation.navigationByProposing; 010 011 import java.util.ArrayList; 012 import java.util.Collection; 013 014 import jcolibri.cbrcore.CBRCase; 015 import jcolibri.extensions.recommendation.casesDisplay.UserChoice; 016 import jcolibri.method.retrieve.FilterBasedRetrieval.FilterConfig; 017 018 /** 019 * Extends the UserChoice object to store critiques (CritiqueOptions) about the 020 * selected case (that in the next converstaion cycle is the query). 021 * 022 * @author Juan A. Recio-Garcia 023 * @author Developed at University College Cork (Ireland) in collaboration with Derek Bridge. 024 * @version 1.0 025 * @see jcolibri.extensions.recommendation.navigationByProposing.CriticalUserChoice 026 */ 027 public class CriticalUserChoice extends UserChoice 028 { 029 030 private Collection<CritiqueOption> critiques = null; 031 032 public CriticalUserChoice() 033 { 034 super(UserChoice.REFINE_QUERY, null); 035 critiques = new ArrayList<CritiqueOption>(); 036 } 037 038 /** 039 * Creates an object with the user choice, critiques 040 * @param choice contains a value from UserChoice: QUIT, BUY or REFINE_QUERY. 041 * If the value is REFINE_QUERY, the critiquedCase parameter contains the new query 042 * to edit. 043 * @param critiques to the new query 044 * @param critiquedCase is the new query/case thas was critiqued. This parameter is only 045 * used if the "choice" parameter contains REFINE_QUERY. 046 */ 047 public CriticalUserChoice(int choice, Collection<CritiqueOption> critiques, CBRCase critiquedCase) 048 { 049 super(choice, critiquedCase); 050 this.critiques = critiques; 051 } 052 053 /** 054 * Returns the critiques 055 */ 056 public Collection<CritiqueOption> getCritiques() 057 { 058 return this.critiques; 059 } 060 061 /** 062 * Gets the FilterConfig object used by the FilterBasedRetrieval method that 063 * is obtained from the critiques. 064 */ 065 public FilterConfig getFilterConfig() 066 { 067 FilterConfig fc = new FilterConfig(); 068 for(CritiqueOption critique: critiques) 069 fc.addPredicate(critique.getAttribute(), critique.getPredicate()); 070 return fc; 071 } 072 073 }