Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | 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
	 * 
74
	 * @param feature
75
	 */
65 naveen 76
	public void setExpandedFeature(ExpandedFeature expandedFeature) {
70 naveen 77
		this.initialize();
63 naveen 78
 
65 naveen 79
		this.py.set("expFeature", expandedFeature);
63 naveen 80
	}
81
 
82
	/**
83
	 * 
84
	 * @param slideDefinition
85
	 */
86
	public void setSlideDefinition(SlideDefinition slideDefinition) {
70 naveen 87
		this.initialize();
63 naveen 88
 
89
		this.py.set("slideDef", slideDefinition);
90
	}
91
 
92
	/**
93
	 * 
94
	 * @param slide
95
	 */
65 naveen 96
	public void setExpandedSlide(ExpandedSlide expSlide) {
70 naveen 97
		this.initialize();
63 naveen 98
 
65 naveen 99
		this.py.set("expSlide", expSlide);
63 naveen 100
	}
101
 
102
	/**
103
	 * Executes IR Data rule from ExpandedFacetDefinition instance
104
	 */
82 naveen 105
	public void executeRule() {
81 naveen 106
		if(this.py == null || this.expandedFacetRuleDefinition == null) {
63 naveen 107
			throw new IllegalStateException(
108
					"Not initialized properly");
109
		}
110
 
111
		RuleDefinition irdataRuleDef = 
81 naveen 112
			this.expandedFacetRuleDefinition.getIRDataRuleDefinition();
63 naveen 113
 
114
		String pyScript = irdataRuleDef.getScript();
81 naveen 115
		String scriptFullPath = Utils.JYTHON_SRC_PATH + "irdatarules/" + 
116
			pyScript;
117
 
63 naveen 118
		Utils.info("irdataRuleDef.getID()=" + irdataRuleDef.getID());
119
		Utils.info("scriptFullPath=" + scriptFullPath);
120
 
121
		this.exec(scriptFullPath);
122
	}
123
 
124
	/**
58 naveen 125
	 * 
126
	 * @return
127
	 */
128
	@SuppressWarnings("unchecked")
129
	public List getValues() {
63 naveen 130
		if(this.py == null) {
131
			throw new IllegalStateException("Exec is not called yet");
132
		}
133
 
58 naveen 134
		PyObject values = this.py.get("values");
135
 
136
		return (PyList)values;
137
	}
138
}