Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
82 naveen 1
/**
2
 * 
3
 */
4
package in.shop2020.util;
5
 
1153 rajveer 6
 
82 naveen 7
import in.shop2020.metamodel.definitions.RuleDefinition;
8
import in.shop2020.metamodel.definitions.SlideDefinition;
9
import in.shop2020.metamodel.util.ExpandedFacetDefinition;
1314 rajveer 10
import in.shop2020.metamodel.util.ExpandedFacetSlideDefinition;
82 naveen 11
import in.shop2020.metamodel.util.ExpandedSlideDefinition;
12
 
13
import java.util.List;
14
 
15
import org.python.core.PyObject;
16
import org.python.core.PyString;
17
 
18
/**
19
 * Wrapper around Jython for Meta-data related to Information Retrieval data
20
 * 
21
 * @author naveen
22
 *
23
 */
24
public class IRMetaDataJythonWrapper extends JythonWrapper {
25
 
26
	/**
27
	 * Local instance of Facet Definition - Used to pick script to execute
28
	 */
29
	private ExpandedFacetDefinition expandedFacetDefinition = null;
30
 
31
	/**
32
	 * Resets current PythonInterpreter instance
33
	 */
34
	public void reset() {
35
		super.reset();
36
		this.expandedFacetDefinition = null;
37
	}
38
 
39
	/**
40
	 * 
41
	 * @param expandedFacetDefinition
42
	 */
43
	public void setExpandedFacetDefinition(
44
			ExpandedFacetDefinition expandedFacetDefinition) {
45
		this.initialize();
46
 
47
		this.expandedFacetDefinition = expandedFacetDefinition;
48
		this.py.set("expFacetDef", expandedFacetDefinition);
49
	}
50
 
51
	/**
52
	 * Executes IR Data rule from ExpandedFacetDefinition instance
53
	 * @throws Exception 
54
	 */
55
	public void executeRule() throws Exception {
56
		if(this.py == null || this.expandedFacetDefinition == null) {
57
			throw new IllegalStateException(
58
					"Not initialized properly");
59
		}
60
 
61
 
1314 rajveer 62
		List<ExpandedFacetSlideDefinition> expFacetSlideDefs = expandedFacetDefinition.getExpandedFacetSlideDefinitions();
63
		for(ExpandedFacetSlideDefinition expFacetSlideDef: expFacetSlideDefs){
82 naveen 64
 
1314 rajveer 65
			SlideDefinition slideDef = expFacetSlideDef.getSlideDefinition();
82 naveen 66
 
1314 rajveer 67
			ExpandedSlideDefinition expSlideDef = new ExpandedSlideDefinition(slideDef);
82 naveen 68
 
69
			this.py.set("expSlideDef", expSlideDef);
70
 
1314 rajveer 71
			RuleDefinition ruleDef =  expFacetSlideDef.getIrMetadataRuleDefinition();
82 naveen 72
 
73
			// Feature Labels
4057 rajveer 74
 
1314 rajveer 75
			System.out.println(ruleDef);
76
			String pyScript = ruleDef.getScript();
77
			String scriptFullPath = Utils.JYTHON_SRC_PATH + "irmetadatarules/" + pyScript;	
78
 
79
			Utils.info("ruleDef.getID()=" + ruleDef.getID());
80
			Utils.info("scriptFullPath=" + scriptFullPath);
81
 
82
			this.exec(scriptFullPath);
83
 
82 naveen 84
		}
1314 rajveer 85
	}
86
 
87
 
88
	/**
82 naveen 89
	 * 
90
	 * @return
91
	 */
92
	public String getXMLSnippet() {
93
		if(this.py == null) {
94
			throw new IllegalStateException("Exec is not called yet");
95
		}
96
 
97
		PyObject xmlsnippet = this.py.get("xmlsnippet");
98
 
99
		return ((PyString)xmlsnippet).toString();
100
	}
101
}