Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.creation.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.CategorySlideDefinition;
import in.shop2020.metamodel.definitions.EditorialImportance;

/**
 * 
 * @author naveen
 *
 */
public class ContentValidator {
        /**
         * 
         * @param entity
         * @return
         * @throws Exception 
         */
        public boolean validate(Entity entity) throws Exception {
                List<Long> slideDefIDs = this.getSlideDefinitionIDs(entity);
                
                if(slideDefIDs == null) {
                        return false;
                }
                
                List<Long> requiredSlideDefIDs = entity.getSlideSequence();
                
                if(requiredSlideDefIDs == null) {
                        requiredSlideDefIDs = new ArrayList<Long>();
                        
                        List<CategorySlideDefinition> catSlideDefs = 
                                Catalog.getInstance().getDefinitionsContainer().
                                getCategorySlideDefinitions(entity.getCategoryID());
                        
                        for(CategorySlideDefinition catSlideDef : catSlideDefs) {
                                if(catSlideDef.getEditorialImportance() == 
                                        EditorialImportance.MANDATORY) {
                                        requiredSlideDefIDs.add(
                                                        new Long(catSlideDef.getSlideDefintionID()));
                                }
                        }
                }
                
                for(Long requiredSlideDefID : requiredSlideDefIDs) {
                        if(!slideDefIDs.contains(requiredSlideDefID)) {
                                return false;
                        }
                }
                
                // Validate required features per slide
                // TODO
                
                // Validate bullets per feature
                // TODO
                return true;
        }
        
        /**
         * 
         * @param entity
         * @return
         */
        private List<Long> getSlideDefinitionIDs(Entity entity) {
                List<Long> slideDefIDs = new ArrayList<Long>();
                List<Slide> slides = entity.getSlides();
                if(slides == null) {
                        return null;
                }
                
                for(Slide slide : slides) {
                        slideDefIDs.add(new Long(slide.getSlideDefinitionID()));
                }
                
                return slideDefIDs;
        }
}