Subversion Repositories SmartDukaan

Rev

Rev 451 | Go to most recent revision | 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.FeatureDefinition;
7
import in.shop2020.metamodel.definitions.RuleDefinition;
8
import in.shop2020.metamodel.definitions.SlideDefinition;
64 naveen 9
import in.shop2020.metamodel.util.ExpandedEntity;
81 naveen 10
import in.shop2020.metamodel.util.ExpandedFacetRuleDefinition;
65 naveen 11
import in.shop2020.metamodel.util.ExpandedFeature;
12
import in.shop2020.metamodel.util.ExpandedSlide;
63 naveen 13
 
58 naveen 14
import java.util.List;
15
 
16
import org.python.core.PyList;
17
import org.python.core.PyObject;
18
 
19
/**
70 naveen 20
 * Wrapper around Jython for Information Retrieval Python scripts
21
 * 
58 naveen 22
 * @author naveen
23
 *
24
 */
81 naveen 25
public class IRDataJythonWrapper extends JythonWrapper {
58 naveen 26
 
27
	/**
81 naveen 28
	 * Local instance of Facet Rule Definition - Used to pick script to execute
58 naveen 29
	 */
81 naveen 30
	private ExpandedFacetRuleDefinition expandedFacetRuleDefinition = null;
58 naveen 31
 
32
	/**
63 naveen 33
	 * Resets current PythonInterpreter instance
34
	 */
70 naveen 35
	public void reset() {
36
		super.reset();
81 naveen 37
		this.expandedFacetRuleDefinition = null;
63 naveen 38
	}
39
 
40
	/**
41
	 * 
82 naveen 42
	 * @param expandedFacetRuleDefinition
63 naveen 43
	 */
82 naveen 44
	public void setExpandedFacetRuleDefinition(
81 naveen 45
			ExpandedFacetRuleDefinition expandedFacetRuleDefinition) {
70 naveen 46
		this.initialize();
63 naveen 47
 
81 naveen 48
		this.expandedFacetRuleDefinition = expandedFacetRuleDefinition;
49
		this.py.set("expFacetRuleDef", expandedFacetRuleDefinition);
63 naveen 50
	}
51
 
52
	/**
53
	 * 
54
	 * @param entity
55
	 */
64 naveen 56
	public void setExpandedEntity(ExpandedEntity expEntity) {
70 naveen 57
		this.initialize();
63 naveen 58
 
64 naveen 59
		this.py.set("expEntity", expEntity);
63 naveen 60
	}
61
 
62
	/**
63
	 * 
64
	 * @param featureDefinition
65
	 */
66
	public void setFeatureDefinition(FeatureDefinition featureDefinition) {
70 naveen 67
		this.initialize();
63 naveen 68
 
69
		this.py.set("featureDef", featureDefinition);
70
	}
71
 
72
	/**
73
	 * 
451 rajveer 74
	 * @param itemPrice
75
	 */
76
	public void setEntityPrice(double itemPrice) {
77
		this.initialize();
78
 
79
		this.py.set("itemPrice", itemPrice);
80
	}
81
 
82
	/**
83
	 * 
63 naveen 84
	 * @param feature
85
	 */
65 naveen 86
	public void setExpandedFeature(ExpandedFeature expandedFeature) {
70 naveen 87
		this.initialize();
63 naveen 88
 
65 naveen 89
		this.py.set("expFeature", expandedFeature);
63 naveen 90
	}
91
 
92
	/**
93
	 * 
94
	 * @param slideDefinition
95
	 */
96
	public void setSlideDefinition(SlideDefinition slideDefinition) {
70 naveen 97
		this.initialize();
63 naveen 98
 
99
		this.py.set("slideDef", slideDefinition);
100
	}
101
 
102
	/**
103
	 * 
104
	 * @param slide
105
	 */
65 naveen 106
	public void setExpandedSlide(ExpandedSlide expSlide) {
70 naveen 107
		this.initialize();
63 naveen 108
 
65 naveen 109
		this.py.set("expSlide", expSlide);
63 naveen 110
	}
111
 
112
	/**
113
	 * Executes IR Data rule from ExpandedFacetDefinition instance
114
	 */
82 naveen 115
	public void executeRule() {
81 naveen 116
		if(this.py == null || this.expandedFacetRuleDefinition == null) {
63 naveen 117
			throw new IllegalStateException(
118
					"Not initialized properly");
119
		}
120
 
121
		RuleDefinition irdataRuleDef = 
81 naveen 122
			this.expandedFacetRuleDefinition.getIRDataRuleDefinition();
63 naveen 123
 
124
		String pyScript = irdataRuleDef.getScript();
81 naveen 125
		String scriptFullPath = Utils.JYTHON_SRC_PATH + "irdatarules/" + 
126
			pyScript;
127
 
63 naveen 128
		Utils.info("irdataRuleDef.getID()=" + irdataRuleDef.getID());
129
		Utils.info("scriptFullPath=" + scriptFullPath);
130
 
131
		this.exec(scriptFullPath);
132
	}
133
 
134
	/**
58 naveen 135
	 * 
136
	 * @return
137
	 */
138
	@SuppressWarnings("unchecked")
139
	public List getValues() {
63 naveen 140
		if(this.py == null) {
141
			throw new IllegalStateException("Exec is not called yet");
142
		}
143
 
58 naveen 144
		PyObject values = this.py.get("values");
145
 
146
		return (PyList)values;
147
	}
148
}