Subversion Repositories SmartDukaan

Rev

Rev 1061 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
58 naveen 1
/**
2
 * 
3
 */
4
package in.shop2020.util;
5
 
63 naveen 6
import in.shop2020.metamodel.definitions.RuleDefinition;
7
import in.shop2020.metamodel.definitions.SlideDefinition;
1314 rajveer 8
import in.shop2020.metamodel.util.ExpandedFacetSlideDefinition;
65 naveen 9
import in.shop2020.metamodel.util.ExpandedSlide;
63 naveen 10
 
58 naveen 11
import java.util.List;
12
 
13
import org.python.core.PyList;
14
import org.python.core.PyObject;
15
 
16
/**
70 naveen 17
 * Wrapper around Jython for Information Retrieval Python scripts
18
 * 
58 naveen 19
 * @author naveen
20
 *
21
 */
81 naveen 22
public class IRDataJythonWrapper extends JythonWrapper {
58 naveen 23
 
24
	/**
81 naveen 25
	 * Local instance of Facet Rule Definition - Used to pick script to execute
58 naveen 26
	 */
1314 rajveer 27
	private ExpandedFacetSlideDefinition expandedFacetSlideDefinition = null;
58 naveen 28
 
29
	/**
63 naveen 30
	 * Resets current PythonInterpreter instance
31
	 */
70 naveen 32
	public void reset() {
33
		super.reset();
1314 rajveer 34
		this.expandedFacetSlideDefinition = null;
63 naveen 35
	}
36
 
37
	/**
38
	 * 
1314 rajveer 39
	 * @param expandedFacetSlideDefinition
63 naveen 40
	 */
1314 rajveer 41
	public void setExpandedFacetSlideDefinition(
42
			ExpandedFacetSlideDefinition expandedFacetSlideDefinition) {
70 naveen 43
		this.initialize();
63 naveen 44
 
1314 rajveer 45
		this.expandedFacetSlideDefinition = expandedFacetSlideDefinition;
46
		this.py.set("expFacetRuleDef", expandedFacetSlideDefinition);
63 naveen 47
	}
48
 
49
 
50
	/**
51
	 * 
451 rajveer 52
	 * @param itemPrice
53
	 */
54
	public void setEntityPrice(double itemPrice) {
55
		this.initialize();
56
 
57
		this.py.set("itemPrice", itemPrice);
58
	}
59
 
63 naveen 60
 
1314 rajveer 61
 
63 naveen 62
	/**
63
	 * 
64
	 * @param slideDefinition
65
	 */
66
	public void setSlideDefinition(SlideDefinition slideDefinition) {
70 naveen 67
		this.initialize();
63 naveen 68
 
69
		this.py.set("slideDef", slideDefinition);
70
	}
71
 
72
	/**
73
	 * 
74
	 * @param slide
75
	 */
65 naveen 76
	public void setExpandedSlide(ExpandedSlide expSlide) {
70 naveen 77
		this.initialize();
63 naveen 78
 
65 naveen 79
		this.py.set("expSlide", expSlide);
63 naveen 80
	}
81
 
82
	/**
1314 rajveer 83
	 * Executes IR Data rule from ExpandedFacetSlideDefinition instance
63 naveen 84
	 */
82 naveen 85
	public void executeRule() {
1314 rajveer 86
		if(this.py == null || this.expandedFacetSlideDefinition == null) {
63 naveen 87
			throw new IllegalStateException(
88
					"Not initialized properly");
89
		}
90
 
1314 rajveer 91
		RuleDefinition irdataRuleDef = this.expandedFacetSlideDefinition.getIrDataRuleDefinition();
63 naveen 92
 
93
		String pyScript = irdataRuleDef.getScript();
81 naveen 94
		String scriptFullPath = Utils.JYTHON_SRC_PATH + "irdatarules/" + 
95
			pyScript;
96
 
63 naveen 97
		Utils.info("irdataRuleDef.getID()=" + irdataRuleDef.getID());
98
		Utils.info("scriptFullPath=" + scriptFullPath);
99
 
100
		this.exec(scriptFullPath);
101
	}
102
 
103
	/**
58 naveen 104
	 * 
105
	 * @return
106
	 */
107
	@SuppressWarnings("unchecked")
108
	public List getValues() {
63 naveen 109
		if(this.py == null) {
110
			throw new IllegalStateException("Exec is not called yet");
111
		}
112
 
58 naveen 113
		PyObject values = this.py.get("values");
114
 
115
		return (PyList)values;
116
	}
117
}