Subversion Repositories SmartDukaan

Rev

Rev 1153 | Go to most recent revision | 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.ArrayList;
14
import java.util.List;
15
 
16
import org.python.core.PyObject;
17
import org.python.core.PyString;
18
 
19
/**
20
 * Wrapper around Jython for Meta-data related to Information Retrieval data
21
 * 
22
 * @author naveen
23
 *
24
 */
25
public class IRMetaDataJythonWrapper extends JythonWrapper {
26
 
27
	/**
28
	 * Local instance of Facet Definition - Used to pick script to execute
29
	 */
30
	private ExpandedFacetDefinition expandedFacetDefinition = null;
31
 
32
	/**
1314 rajveer 33
	 * Set of possible values collected while irdata 
34
	 */
35
	private List<String> possibleValues = new ArrayList<String>();
36
 
37
	/**
82 naveen 38
	 * Resets current PythonInterpreter instance
39
	 */
40
	public void reset() {
41
		super.reset();
42
		this.expandedFacetDefinition = null;
43
	}
44
 
45
	/**
46
	 * 
47
	 * @param expandedFacetDefinition
48
	 */
49
	public void setExpandedFacetDefinition(
50
			ExpandedFacetDefinition expandedFacetDefinition) {
51
		this.initialize();
52
 
53
		this.expandedFacetDefinition = expandedFacetDefinition;
54
		this.py.set("expFacetDef", expandedFacetDefinition);
55
	}
56
 
57
	/**
58
	 * Executes IR Data rule from ExpandedFacetDefinition instance
59
	 * @throws Exception 
60
	 */
61
	public void executeRule() throws Exception {
62
		if(this.py == null || this.expandedFacetDefinition == null) {
63
			throw new IllegalStateException(
64
					"Not initialized properly");
65
		}
66
 
67
 
1314 rajveer 68
		List<ExpandedFacetSlideDefinition> expFacetSlideDefs = expandedFacetDefinition.getExpandedFacetSlideDefinitions();
69
		for(ExpandedFacetSlideDefinition expFacetSlideDef: expFacetSlideDefs){
82 naveen 70
 
1314 rajveer 71
			SlideDefinition slideDef = expFacetSlideDef.getSlideDefinition();
82 naveen 72
 
1314 rajveer 73
			ExpandedSlideDefinition expSlideDef = new ExpandedSlideDefinition(slideDef);
82 naveen 74
 
75
			this.py.set("expSlideDef", expSlideDef);
76
 
1314 rajveer 77
			RuleDefinition ruleDef =  expFacetSlideDef.getIrMetadataRuleDefinition();
82 naveen 78
 
79
			// Feature Labels
1104 rajveer 80
			//Utils.info("possibleValues=" + possibleValues);
82 naveen 81
			this.py.set("possibleValues", possibleValues);
1314 rajveer 82
			System.out.println(ruleDef);
83
			String pyScript = ruleDef.getScript();
84
			String scriptFullPath = Utils.JYTHON_SRC_PATH + "irmetadatarules/" + pyScript;	
85
 
86
			Utils.info("ruleDef.getID()=" + ruleDef.getID());
87
			Utils.info("scriptFullPath=" + scriptFullPath);
88
 
89
			this.exec(scriptFullPath);
90
 
82 naveen 91
		}
1314 rajveer 92
	}
93
 
94
//		// expFeatureDef
95
//		if(featureDef != null) {
96
//			ExpandedFeatureDefinition expFeatureDef = 
97
//				new ExpandedFeatureDefinition(featureDef);
98
//			
99
//			this.py.set("expFeatureDef", expFeatureDef);
100
//			
101
//			ExpandedBulletDefinition expBulletDef = 
102
//				expFeatureDef.getExpandedBulletDefinition();
103
//			
104
//			// Fixed
105
//			if (expBulletDef.isEnumerated()) {
106
//				EnumDefinition enumDef = 
107
//					(EnumDefinition) expBulletDef.getDatatypeDefinition();
108
//				
109
//				List<EnumValue> enumValues = enumDef.getEnumValues();
110
//				
111
//				for(EnumValue enumValue : enumValues) {
112
//					possibleValues.add(enumValue.getValue());
113
//				}
114
//
115
//				//Utils.info("possibleValues=" + possibleValues);
116
//				this.py.set("possibleValues", possibleValues);
117
//			} 
118
//			
119
//			// Get values collected across entities
120
//			else {
121
//				
122
//				long facetDefinitionID = this.expandedFacetDefinition.getID();
123
//				
124
//				
125
//				possibleValues = CreationUtils.getFacetValues(facetDefinitionID);
126
//				
127
//				//Utils.info("possibleValues=" + possibleValues);
128
//				this.py.set("possibleValues", possibleValues);
129
//			}
130
//		}
131
//
132
//		// expSlideDef
133
//		else if(slideDef != null) {
134
//			ExpandedSlideDefinition expSlideDef = 
135
//				new ExpandedSlideDefinition(slideDef);
136
//			
137
//			this.py.set("expSlideDef", expSlideDef);
138
//			
139
//			List<ExpandedSlideFeatureDefinition> expSlideFeatureDefs = 
140
//				expSlideDef.getExpandedSlideFeatureDefinitions();
141
//			
142
//			for(ExpandedSlideFeatureDefinition expSlideFeatureDef : 
143
//					expSlideFeatureDefs) {
144
//				
145
//				ExpandedFeatureDefinition expFeatureDef = 
146
//					expSlideFeatureDef.getExpandedFeatureDefinition();
147
//				
148
//				possibleValues.add(expFeatureDef.getLabel());
149
//			}
150
//			
151
//			// Feature Labels
152
//			//Utils.info("possibleValues=" + possibleValues);
153
//			this.py.set("possibleValues", possibleValues);
154
//		}
82 naveen 155
 
1314 rajveer 156
 
157
 
158
	/**
159
	 * Set the possible values set
160
	 */
161
	public void setPossibleValues(List<String> possibleValues){
162
		this.possibleValues = possibleValues;
82 naveen 163
	}
164
 
165
	/**
166
	 * 
167
	 * @return
168
	 */
169
	public String getXMLSnippet() {
170
		if(this.py == null) {
171
			throw new IllegalStateException("Exec is not called yet");
172
		}
173
 
174
		PyObject xmlsnippet = this.py.get("xmlsnippet");
175
 
176
		return ((PyString)xmlsnippet).toString();
177
	}
178
}