Subversion Repositories SmartDukaan

Rev

Rev 323 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/**
 * 
 */
package in.shop2020.metamodel.util;

import in.shop2020.metamodel.definitions.Catalog;
import in.shop2020.metamodel.definitions.DefinitionsContainer;
import in.shop2020.metamodel.definitions.FacetDefinition;
import in.shop2020.metamodel.definitions.FeatureDefinition;
import in.shop2020.metamodel.definitions.RuleDefinition;
import in.shop2020.metamodel.definitions.SlideDefinition;

/**
 * Utility class to support FacetDefinition class. All references are expanded 
 * into respective detail objects
 * 
 * @author naveen
 *
 */
public class ExpandedFacetDefinition extends FacetDefinition {
        
        /**
         * Expanded feature definition ID
         */
        private FeatureDefinition featureDefinition;
        
        /**
         * Expanded slide definition ID 
         */
        private SlideDefinition slideDefinition;

        /**
         * Expanded IR Meta Data Rule ID
         */
        private RuleDefinition irmetadataRuleDefinition;
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        /**
         * Constructs Expanded version from FacetDefintion instance
         * 
         * @param facetDefinition
         * @throws Exception 
         */
        public ExpandedFacetDefinition(FacetDefinition facetDefinition) 
                throws Exception {
                super(facetDefinition.getID(), facetDefinition.getTarget());
                
                // Copy other properties
                this.setFeatureDefinitionID(facetDefinition.getFeatureDefinitionID());
                this.setSlideDefinitionID(facetDefinition.getSlideDefinitionID());
                this.setIrMetaDataRuleID(facetDefinition.getIrMetaDataRuleID());
                this.setDescription(facetDefinition.getDescription());
                
                // Add expanded objects
                DefinitionsContainer defs = 
                        Catalog.getInstance().getDefinitionsContainer();
                
                // FeatureDefinition
                if(facetDefinition.getFeatureDefinitionID() != 0L) {
                        FeatureDefinition featureDefintion = defs.getFeatureDefinition(
                                        facetDefinition.getFeatureDefinitionID());
                        
                        this.setFeatureDefinition(featureDefintion);
                }
                
                // SlideDefinition
                if(facetDefinition.getSlideDefinitionID() != 0L) {
                        SlideDefinition slideDefinition = 
                                defs.getSlideDefinition(facetDefinition.getSlideDefinitionID());
                        
                        this.setSlideDefinition(slideDefinition);
                }
                
                // IrMetaDataRuleID
                RuleDefinition irMetaDataRuleDef = defs.getIrMetaDataRuleDefinition(
                                facetDefinition.getIrMetaDataRuleID());
                
                this.setIrMetadataRuleDefinition(irMetaDataRuleDef);
        }

        /**
         * @param featureDefinition the featureDefinition to set
         */
        public void setFeatureDefinition(FeatureDefinition featureDefinition) {
                this.featureDefinition = featureDefinition;
        }

        /**
         * @return the featureDefinition
         */
        public FeatureDefinition getFeatureDefinition() {
                return featureDefinition;
        }

        /**
         * @param slideDefinition the slideDefinition to set
         */
        public void setSlideDefinition(SlideDefinition slideDefinition) {
                this.slideDefinition = slideDefinition;
        }

        /**
         * @return the slideDefinition
         */
        public SlideDefinition getSlideDefinition() {
                return slideDefinition;
        }

        /**
         * @param irmetadataRuleDefinition the irmetadataRuleDefinition to set
         */
        public void setIrMetadataRuleDefinition(RuleDefinition irmetadataRuleDefinition) {
                this.irmetadataRuleDefinition = irmetadataRuleDefinition;
        }

        /**
         * @return the irmetadataRuleDefinition
         */
        public RuleDefinition getIrMetadataRuleDefinition() {
                return irmetadataRuleDefinition;
        }

}