Rev 1153 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/****/package in.shop2020.util;import in.shop2020.metamodel.definitions.RuleDefinition;import in.shop2020.metamodel.definitions.SlideDefinition;import in.shop2020.metamodel.util.ExpandedFacetDefinition;import in.shop2020.metamodel.util.ExpandedFacetSlideDefinition;import in.shop2020.metamodel.util.ExpandedSlideDefinition;import java.util.ArrayList;import java.util.List;import org.python.core.PyObject;import org.python.core.PyString;/*** Wrapper around Jython for Meta-data related to Information Retrieval data** @author naveen**/public class IRMetaDataJythonWrapper extends JythonWrapper {/*** Local instance of Facet Definition - Used to pick script to execute*/private ExpandedFacetDefinition expandedFacetDefinition = null;/*** Set of possible values collected while irdata*/private List<String> possibleValues = new ArrayList<String>();/*** Resets current PythonInterpreter instance*/public void reset() {super.reset();this.expandedFacetDefinition = null;}/**** @param expandedFacetDefinition*/public void setExpandedFacetDefinition(ExpandedFacetDefinition expandedFacetDefinition) {this.initialize();this.expandedFacetDefinition = expandedFacetDefinition;this.py.set("expFacetDef", expandedFacetDefinition);}/*** Executes IR Data rule from ExpandedFacetDefinition instance* @throws Exception*/public void executeRule() throws Exception {if(this.py == null || this.expandedFacetDefinition == null) {throw new IllegalStateException("Not initialized properly");}List<ExpandedFacetSlideDefinition> expFacetSlideDefs = expandedFacetDefinition.getExpandedFacetSlideDefinitions();for(ExpandedFacetSlideDefinition expFacetSlideDef: expFacetSlideDefs){SlideDefinition slideDef = expFacetSlideDef.getSlideDefinition();ExpandedSlideDefinition expSlideDef = new ExpandedSlideDefinition(slideDef);this.py.set("expSlideDef", expSlideDef);RuleDefinition ruleDef = expFacetSlideDef.getIrMetadataRuleDefinition();// Feature Labels//Utils.info("possibleValues=" + possibleValues);this.py.set("possibleValues", possibleValues);System.out.println(ruleDef);String pyScript = ruleDef.getScript();String scriptFullPath = Utils.JYTHON_SRC_PATH + "irmetadatarules/" + pyScript;Utils.info("ruleDef.getID()=" + ruleDef.getID());Utils.info("scriptFullPath=" + scriptFullPath);this.exec(scriptFullPath);}}// // expFeatureDef// if(featureDef != null) {// ExpandedFeatureDefinition expFeatureDef =// new ExpandedFeatureDefinition(featureDef);//// this.py.set("expFeatureDef", expFeatureDef);//// ExpandedBulletDefinition expBulletDef =// expFeatureDef.getExpandedBulletDefinition();//// // Fixed// if (expBulletDef.isEnumerated()) {// EnumDefinition enumDef =// (EnumDefinition) expBulletDef.getDatatypeDefinition();//// List<EnumValue> enumValues = enumDef.getEnumValues();//// for(EnumValue enumValue : enumValues) {// possibleValues.add(enumValue.getValue());// }//// //Utils.info("possibleValues=" + possibleValues);// this.py.set("possibleValues", possibleValues);// }//// // Get values collected across entities// else {//// long facetDefinitionID = this.expandedFacetDefinition.getID();////// possibleValues = CreationUtils.getFacetValues(facetDefinitionID);//// //Utils.info("possibleValues=" + possibleValues);// this.py.set("possibleValues", possibleValues);// }// }//// // expSlideDef// else if(slideDef != null) {// ExpandedSlideDefinition expSlideDef =// new ExpandedSlideDefinition(slideDef);//// this.py.set("expSlideDef", expSlideDef);//// List<ExpandedSlideFeatureDefinition> expSlideFeatureDefs =// expSlideDef.getExpandedSlideFeatureDefinitions();//// for(ExpandedSlideFeatureDefinition expSlideFeatureDef :// expSlideFeatureDefs) {//// ExpandedFeatureDefinition expFeatureDef =// expSlideFeatureDef.getExpandedFeatureDefinition();//// possibleValues.add(expFeatureDef.getLabel());// }//// // Feature Labels// //Utils.info("possibleValues=" + possibleValues);// this.py.set("possibleValues", possibleValues);// }/*** Set the possible values set*/public void setPossibleValues(List<String> possibleValues){this.possibleValues = possibleValues;}/**** @return*/public String getXMLSnippet() {if(this.py == null) {throw new IllegalStateException("Exec is not called yet");}PyObject xmlsnippet = this.py.get("xmlsnippet");return ((PyString)xmlsnippet).toString();}}