Subversion Repositories SmartDukaan

Rev

Rev 1314 | 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.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;
        
        /**
         * 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

                        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);

                }
        }
        
        
        /**
         * 
         * @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();
        }
}