Subversion Repositories SmartDukaan

Rev

Rev 199 | Rev 1050 | Go to most recent revision | 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.core.Entity;
import in.shop2020.metamodel.core.Slide;
import in.shop2020.metamodel.definitions.Catalog;
import in.shop2020.metamodel.definitions.Category;
import in.shop2020.metamodel.definitions.DefinitionsContainer;

/**
 * Utility class that supports core Entity class. All related 
 * objects are fetched from database and aggregated here.
 *
 * @author naveen
 *
 */
public class ExpandedEntity extends Entity {
        /**
         * Reference to original entity
         */
        private Entity entity;
        
        /**
         * Expanded from category ID
         */
        private Category category;
        
        /**
         * Expanded from list of slide IDs
         */
        private List<ExpandedSlide> expandedSlides;
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        /**
         * Takes Entity object as input and converts all references 
         * into corresponding detail objects
         * 
         * @param entity Entity object
         * @throws Exception 
         */
        public ExpandedEntity(Entity entity) throws Exception {
                super(entity.getID(), entity.getCategoryID());
                
                // Original entity
                this.setEntity(entity);
                
                // Copy rest of the properties from entity
                super.setBrand(entity.getBrand());
                super.setModelName(entity.getModelName());
                super.setModelNumber(entity.getModelNumber());
                super.setSlides(entity.getSlides());
                
                // Expand category id
                DefinitionsContainer defs = 
                        Catalog.getInstance().getDefinitionsContainer();
                
                this.category = defs.getCategory(entity.getCategoryID());
                
                // Expand slides
                this.expandedSlides = new ArrayList<ExpandedSlide>();
                List<Slide> slides = entity.getSlides();
                if(slides != null) {
                        for(Slide slide : slides) {
                                ExpandedSlide expSlide = new ExpandedSlide(slide);
                                
                                this.expandedSlides.add(expSlide);
                        }
                }
        }

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

        /**
         * @return the expandedSlides
         */
        public List<ExpandedSlide> getExpandedSlides() {
                return expandedSlides;
        }

        /**
         * @param entity the entity to set
         */
        public void setEntity(Entity entity) {
                this.entity = entity;
        }

        /**
         * @return the entity
         */
        public Entity getEntity() {
                return entity;
        }

        /**
         * Returns ExpandedSlide instance given slide definition ID
         * @param slideDefinitionID
         * @return ExpandedSlide 
         */
        public ExpandedSlide getExpandedSlide(long slideDefinitionID) {
                for(ExpandedSlide expSlide : this.expandedSlides) {
                        if(expSlide.getSlideDefinitionID() == slideDefinitionID) {
                                return expSlide;
                        }
                }
                
                return null;
        }
        
        
        /* (non-Javadoc)
         * @see java.lang.Object#toString()
         */
        @Override
        public String toString() {
                return "ExpandedEntity [category=" + category + ", expandedSlides="
                                + expandedSlides + ", toString()=" + super.toString() + "]";
        }
}