Subversion Repositories SmartDukaan

Rev

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

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;

import in.shop2020.metamodel.util.MetaModelComponent;

/**
 * Represents un-structured data about Slide, Feature and Bullet. It is used
 * judiciously by content developers to store multi-media content in support
 * component they are attached to.
 * 
 * @author naveen
 *
 */
public class FreeformContent extends MetaModelComponent {
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        // Un-structured text only
        private List<String> freeformTexts;

        private Map<String, List<String>> mediaRefs;
        
    /**
     * 
     */
    public FreeformContent() {
    }

    /**
     * 
     * @param freeformText
     */
    public FreeformContent(String freeformText) {
        this.addFreeformText(freeformText);
    }

        /**
         * @param freeformTexts the freeformTexts to set
         */
        public void setFreeformTexts(List<String> freeformTexts) {
                this.freeformTexts = freeformTexts;
        }
        
        /**
         * 
         * @param fft
         */
        public void addFreeformText(String fft) {
                if(this.freeformTexts == null) {
                        this.freeformTexts = new ArrayList<String>();
                }
                
                this.freeformTexts.add(fft);
        }
        
        /**
         * @return the freeformTexts
         */
        public List<String> getFreeformTexts() {
                return freeformTexts;
        }

        
        /**
         * Return first free-form text
         * 
         * @return the freeformTexts
         */
        public String getFreeformText() {
                if(this.freeformTexts != null && this.freeformTexts.size() > 0) {
                        return this.freeformTexts.get(0);
                }
                
                return null;
        }

        public String[] getFreeformLines() {
                if(this.freeformTexts != null && this.freeformTexts.size() > 0) {
                        return this.freeformTexts.get(0).split("\n");
                }
                return null;
        }
        /**
         * Return list of free-form text separeted by new line
         * 
         * @return the freeformTexts
         */
        public List<String> getFreeformTextLines() {
                List<String> lines = null;
                if(this.freeformTexts != null && this.freeformTexts.size() > 0) {
                        lines = new ArrayList<String>();
                        StringTokenizer tokenizer = new StringTokenizer(this.freeformTexts.get(0), "\n");
                        while(tokenizer.hasMoreTokens()){
                                lines.add(tokenizer.nextToken());
                        }
                        return lines;
                }
                
                return null;
        }
        
        /**
         * Convenience method to add new image Refs
         * 
         * @param imgURL
         */
        public void addMedia(String type, String mediaRef) {
                if(this.mediaRefs == null) {
                        this.mediaRefs = new HashMap<String, List<String>>();
                }
                
                List<String> typeRefs = this.mediaRefs.get(type);
                if(typeRefs == null) {
                        typeRefs = new ArrayList<String>();
                        this.mediaRefs.put(type, typeRefs);
                }else {
                        for(String typeRef: typeRefs){
                                if(typeRef.compareTo(mediaRef)==0){
                                        return;
                                }
                        }
                }
                
                typeRefs.add(mediaRef);
        }

        
        /**
         * Convenience method to add new image Refs
         * 
         * @param imgURL
         */
        public void removeMedia(String type, String label) {
                if(this.mediaRefs == null) {
                        return;
                }
                
                List<String> typeRefs = this.mediaRefs.get(type);
                if(typeRefs == null) {
                        return;
                }
                typeRefs.remove(label);
        }


        /**
         * Convenience method to add new image Refs
         * 
         * @param imgURL
         */
        public void setMedia(String type, List<String> mediaRefs) {
                if(this.mediaRefs == null) {
                        this.mediaRefs = new HashMap<String, List<String>>();
                }
                
                this.mediaRefs.put(type, mediaRefs);
        }
        
        /**
         * @return the imageRefs
         */
        public List<String> getImageRefs() {
                if(this.mediaRefs != null) {
                        return this.mediaRefs.get("image");
                }
                
                return null;
        }
        
        /**
         * @return the youtubeURLs
         */
        public List<String> getYoutubeRefs() {
                if(this.mediaRefs != null) {
                        return this.mediaRefs.get("youtube");
                }
                
                return null;
        }

        public List<String> getImageLabels(){
                return getImageRefs();
                /*
                List<String> imageLabels = new ArrayList<String>();
                if(this.mediaRefs != null) {
                        List<String> allDetails = this.mediaRefs.get("image");
                        if( allDetails != null){
                                for(String allDetail: allDetails){
                                        StringTokenizer tokenizer = new StringTokenizer(allDetail,"~!~");
                                        String label = tokenizer.nextToken();
                                        imageLabels.add(label);
                                }
                        }
                }
                return imageLabels;
                */
        }
        
        public List<String> getYoutubeLabels(){
                return getYoutubeRefs();
                /*
                List<String> youtubeLabels = new ArrayList<String>();
                if(this.mediaRefs != null) {
                        List<String> allDetails = this.mediaRefs.get("youtube");
                        if( allDetails != null){
                                for(String allDetail: allDetails){
                                        StringTokenizer tokenizer = new StringTokenizer(allDetail,"~!~");
                                        String label = tokenizer.nextToken();
                                        youtubeLabels.add(label);
                                }
                        }
                }
                return youtubeLabels;
                */
        }
        
        public List<String> getAllLabels(){
                if(this.mediaRefs != null) {
                        List<String> allDetails = new ArrayList<String>();
                        List<String> allLabels = new ArrayList<String>();
                        if(this.mediaRefs.get("youtube") != null)
                                allDetails.addAll(this.mediaRefs.get("youtube"));
                        if(this.mediaRefs.get("image") != null)
                                allDetails.addAll(this.mediaRefs.get("image"));
                

                        for(String allDetail: allDetails){
                                StringTokenizer tokenizer = new StringTokenizer(allDetail,"~!~");
                                String label = tokenizer.nextToken();
                                allLabels.add(label);
                        }
                        return allLabels;
                }
                return null;
        }
        
        /**
         * @return the imageRefs
         */
        public List<Map<String, String>> getImageDetails() {
                if(this.mediaRefs != null) {
                        List<String> imageDetails = this.mediaRefs.get("image");
                        List<Map<String, String>> imageDetailsList = new ArrayList<Map<String,String>>();
                        if(imageDetails == null)
                                return null;
                        
                        for(String imageDetail: imageDetails){
                                StringTokenizer tokenizer = new StringTokenizer(imageDetail,"~!~");
                                String label = tokenizer.nextToken();
                                String name = tokenizer.nextToken();
                                HashMap<String, String> imageInfoMap = new HashMap<String, String>();
                                imageInfoMap.put("label", label);
                                imageInfoMap.put("name", name);
                                imageDetailsList.add(imageInfoMap);
                        }
                        return imageDetailsList;
                }
                
                return null;
        }
        
        /**
         * @return the youtubeURLs
         */
        public List<Map<String,String>> getVideoDetails() {
                if(this.mediaRefs != null) {
                        List<String> videoDetails = this.mediaRefs.get("youtube");
                        if(videoDetails == null)
                                return null;
                        List<Map<String, String>> videoDetailsList = new ArrayList<Map<String,String>>();
                        
                        for(String videoDetail: videoDetails){
                                StringTokenizer tokenizer = new StringTokenizer(videoDetail,"~!~");
                                String label = tokenizer.nextToken();
                                String url = tokenizer.nextToken();
                                StringTokenizer urlTokenizer = new StringTokenizer(url,"=");
                                urlTokenizer.nextToken();
                                String videoId = urlTokenizer.nextToken();
                                HashMap<String, String> videoInfoMap = new HashMap<String, String>();
                                videoInfoMap.put("label", label);
                                videoInfoMap.put("videoid", videoId);
                                videoDetailsList.add(videoInfoMap);
                        }
                        return videoDetailsList;
        
                }
                
                return null;
        }

        /* (non-Javadoc)
         * @see java.lang.Object#toString()
         */
        @Override
        public String toString() {
                return "FreeformContent [freeformTexts=" + freeformTexts
                                + ", mediaRefs=" + mediaRefs + "]";
        }

}