Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.util;

import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;



public class LevelHierarchy {
        private static final int MAX_LIMIT = 60;

        
        private String alphabeticalTemplate = "Product starting with <b>{0}</b>";
        private String levelOneTitle = "Accessories Compatibility Index";
        //All urls will start with <i>generated</i> for SEOs 
        private String levelOneUrlTemplate;
        private String levelTwoTitle;
        private String path = Utils.EXPORT_PATH;
        private List<String> data; 
        private Map<String, Map<String, String>> dataMap;
        private String[] indentation = {"", "    ", "        ", "            ","                "};

        public LevelHierarchy(String alphabeticalTemplate, String levelOneTitle,
                        String levelTwoTitle, Map<String, Map<String, String>> dataMap) {
                super();
                this.alphabeticalTemplate = alphabeticalTemplate;
                this.levelOneTitle = levelOneTitle;
                this.levelTwoTitle = levelTwoTitle;
                this.dataMap = dataMap;
        }
        
        public void generatePages() {
                String hyphenatedTitle = levelOneTitle.toLowerCase().replaceAll(" +", "-");
                StringBuilder sb = new StringBuilder();
                String levelOneFileName = Utils.EXPORT_PARTNERS_CONTENT_PATH + hyphenatedTitle + ".html";
                List<String> sortedList = new ArrayList<String>(dataMap.keySet()); 
                Collections.sort(sortedList);
                for(String key : sortedList){
                        Map<String, String> map = dataMap.get(key);
                        sb.append("<h3>").append(MessageFormat.format(alphabeticalTemplate, key)).append("</h3>");
                        int counts =  map.size()/MAX_LIMIT + (map.size()%MAX_LIMIT==0 ? 0 : 1);
                        counts = counts > MAX_LIMIT ? MAX_LIMIT : counts;
                        Iterator<String> it = map.keySet().iterator();
                        for(int i=1; i<=counts; i++){
                                sb.append("<a style='padding:5px 3px 15px 3px;display:inline-block' href='/generated/").append(hyphenatedTitle)
                                .append("-" + key).append("-").append(i).append("'>").append(i).append("</a> ");
                                StringBuilder sb1 = new StringBuilder();
                                String levelTwoFileName = Utils.EXPORT_PARTNERS_CONTENT_PATH + hyphenatedTitle + "-" + key + "-" + i + ".html";
                                for(int j=0; j<MAX_LIMIT; j++){
                                        if(it.hasNext()){
                                                String name = it.next();
                                                String url = map.get(name);
                                                sb1.append(indentation[1] + "<div>\n");
                                                sb1.append(indentation[2] + "<a href='" + url + "'>" + name + "</a>\n");
                                                sb1.append(indentation[1] + "</div>\n");
                                        }else {
                                                break;
                                        }
                                }
                                try     {
                                        DBUtils.store(sb1.toString(), levelTwoFileName);
                                        
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                }
                try     {
                        DBUtils.store(sb.toString(), levelOneFileName);
                        
                } catch (Exception e) {
                        e.printStackTrace();
                }
                
        }

        public String getAlphabeticalTemplate() {
                return alphabeticalTemplate;
        }
        public List<String> getData() {
                return data;
        }
        public void setData(List<String> data) {
                this.data = data;
        }
        public void setAlphabeticalTemplate(String alphabeticalTemplate) {
                this.alphabeticalTemplate = alphabeticalTemplate;
        }
        public String getLevelOneTitle() {
                return levelOneTitle;
        }
        public void setLevelOneTitle(String levelOneTitle) {
                this.levelOneTitle = levelOneTitle;
        }
        public String getLevelOneUrlTemplate() {
                return levelOneUrlTemplate;
        }
        public void setLevelOneUrlTemplate(String levelOneUrlTemplate) {
                this.levelOneUrlTemplate = levelOneUrlTemplate;
        }
        public String getLevelTwoTitle() {
                return levelTwoTitle;
        }
        public void setLevelTwoTitle(String levelTwoTitle) {
                this.levelTwoTitle = levelTwoTitle;
        }
        
        public Map<String, Map<String, String>> getDataMap() {
                return dataMap;
        }
        
        public void setDataMap(Map<String, Map<String, String>> dataMap) {
                this.dataMap = dataMap;
        }
        public String getPath() {
                return path;
        }
        public void setPath(String path) {
                this.path = path;
        }
        
        public static void main(String args[]){
                String alphabeticalTemplate = "Product starting with <b>{0}</b>";
                String levelOneTitle = "Accessories Compatibility Index";
                String levelTwoTitle = "";
                Map<String, Map<String,String>> dataMap = new HashMap<String, Map<String,String>>();
                Map<String, String> m1 = new HashMap<String, String>();
                Map<String, String> m2 = new HashMap<String, String>();
                m1.put("abc", "abc-d");
                m1.put("abd", "abd-d");
                m2.put("bbc", "bbc-d");
                m2.put("bbd", "bbb-d");
                dataMap.put("a", m1);
                dataMap.put("b", m2);
                LevelHierarchy lh = new LevelHierarchy(alphabeticalTemplate, levelOneTitle, levelTwoTitle, dataMap);
                lh.generatePages();
        }
        
}