Subversion Repositories SmartDukaan

Rev

Rev 1229 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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

import java.util.ArrayList;
import java.util.List;

import in.shop2020.metamodel.definitions.Catalog;
import in.shop2020.metamodel.definitions.Category;
import in.shop2020.metamodel.definitions.CategoryFacetDefinition;
import in.shop2020.metamodel.definitions.DefinitionsContainer;
import in.shop2020.metamodel.definitions.FacetDefinition;
import in.shop2020.metamodel.definitions.FacetRuleDefinition;
import in.shop2020.util.Utils;

/**
 * Utility class to support CategoryFacetDefintion class. Expands all 
 * references into respect detail objects
 * 
 * @author rajveer
 *
 */
public class ExpandedCategoryFacetDefinition extends CategoryFacetDefinition {

        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        /**
         * Expanded Category ID
         */
        private Category category;
        
        /**
         * List of expanded facet rule definitions
         */
        private List<FacetDefinition> facetDefinitions;
        
        /**
         * Constructs Expanded version from CategoryFacetDefinition instance
         * 
         * @param categoryFacetDefinition
         * @throws Exception 
         */
        public ExpandedCategoryFacetDefinition(
                        CategoryFacetDefinition categoryFacetDefinition) throws Exception {
                super(categoryFacetDefinition.getCategoryID());
                
                // Copy other properties
                this.setFacetDefinitions(
                                categoryFacetDefinition.getFacetDefinitions());
                
                // Add expanded objects
                DefinitionsContainer defs = 
                        Catalog.getInstance().getDefinitionsContainer();
                
                // Category
                Category category = 
                        defs.getCategory(categoryFacetDefinition.getCategoryID());
                
                this.setCategory(category);
                
                // List of FacetDefinition objects
                List<FacetDefinition> facetDefinitions = 
                        categoryFacetDefinition.getFacetDefinitions();
                
                //Utils.info("facetRuleDefinitions=" + facetRuleDefinitions);
                
                
                for(FacetDefinition facetDef : facetDefinitions) {
                        //Utils.info("facetRuleDef=" + facetRuleDef);
                        
                        //FacetDefinition facetDefinition = new FacetDefinition(facetDef);
                        
                        //Utils.info("facetDefinition=" + facetDefinition);
                        
                        this.appendFacetDefinition(facetDef);
                }
                
                //Utils.info("facetDefinitions=" + this.facetDefinitions);
        }

        /**
         * @param category the category to set
         */
        public void setCategory(Category category) {
                this.category = category;
        }

        /**
         * @return the category
         */
        public Category getCategory() {
                return category;
        }

        /**
         * Utility method to add new elements
         * 
         * @param facetDefinition
         */
        public void appendFacetDefinition(
                        FacetDefinition facetDefinition) {
                if(this.facetDefinitions == null) {
                        this.facetDefinitions = 
                                new ArrayList<FacetDefinition>();
                }
                
                this.facetDefinitions.add(facetDefinition);
        }

        /**
         * @param facetDefinitions the facetDefinitions 
         * to set
         */
        public void setFacetDefinitions(
                        List<FacetDefinition> facetDefinitions) {
                this.facetDefinitions = facetDefinitions;
        }

        /**
         * @return the facetDefinitions
         */
        public List<FacetDefinition> getFacetDefinitions() {
                return facetDefinitions;
        }

        /* (non-Javadoc)
         * @see java.lang.Object#toString()
         */
        @Override
        public String toString() {
                return "ExpandedCategoryFacetDefinition [category=" + category
                                + ", facetDefinitions="
                                + facetDefinitions + ", getCategoryID()="
                                + getCategoryID() + ", getFacetRuleDefinitions()="
                                + getFacetDefinitions() + "]";
        }

}