Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.ui.util;


import in.shop2020.metamodel.core.Helpdoc;
import in.shop2020.metamodel.util.CreationUtils;
import in.shop2020.util.Utils;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;


/**
 * Command line utility to generate glossary files for our site
 * 
 * @author rajveer
 *
 */
public class HelpdocsGenerator {
        public static void main(String[] args) throws Exception {
                HelpdocsGenerator generator = new HelpdocsGenerator();
                generator.generateHelpdocFiles();
                generator.generateGlossaryFile();
        }

        private void generateGlossaryFile() {
                try {
                        Map<Long, Helpdoc> helpdocs = CreationUtils.getHelpdocs();
                        VelocityContext context = new VelocityContext();
                        String templateFile = Utils.VTL_SRC_PATH + "glossary.vm";
                        Map<String, Map<String, String>> params = new LinkedHashMap<String, Map<String,String>>();
                        Map<String, String> section1 = new TreeMap<String, String>();
                        Map<String, String> section2 = new TreeMap<String, String>();
                        Map<String, String> section3 = new TreeMap<String, String>();
                        Map<String, String> section4 = new TreeMap<String, String>();
                        params.put("0 - 9", section1);
                        params.put("A - H", section2);
                        params.put("I - P", section3);
                        params.put("Q - Z", section4);
                        for(Helpdoc helpdoc: helpdocs.values()){
                                String docname = helpdoc.getName();
                                char firstChar = docname.toUpperCase().charAt(0);
                                if(firstChar >= '0' && firstChar <= '9'){
                                        section1.put(docname, getFileName(docname));
                                }
                                if(firstChar >= 'A' && firstChar <= 'H'){
                                        section2.put(docname, getFileName(docname));
                                }
                                if(firstChar >= 'I' && firstChar <= 'P'){
                                        section3.put(docname, getFileName(docname));
                                }
                                if(firstChar >= 'Q' && firstChar <= 'Z'){
                                        section4.put(docname, getFileName(docname));
                                }
                        }
                        context.put("params", params);
                        String exportFileName = Utils.EXPORT_HELPDOCS_PATH + "glossary";
                        File exportFile = new File(exportFileName);
                        if(!exportFile.exists()) {
                                exportFile.createNewFile();
                        }
                        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(exportFile)));
                        Template template = Velocity.getTemplate(templateFile);
                        template.merge(context, writer);
                        writer.flush();
                        writer.close();
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
        
        private void generateHelpdocFiles() {
                try {
                        Map<Long, Helpdoc> helpdocs = CreationUtils.getHelpdocs();
                        VelocityContext context = new VelocityContext();
                        String templateFile = Utils.VTL_SRC_PATH + "helpdoc.vm";
                        for(Helpdoc helpdoc: helpdocs.values()){
                                context.put("helpdoc", helpdoc);
                                String exportFileName = Utils.EXPORT_HELPDOCS_PATH + getFileName(helpdoc.getName());
                                File exportFile = new File(exportFileName);
                                if(!exportFile.exists()) {
                                        exportFile.createNewFile();
                                }
                                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(exportFile)));
                                Template template = Velocity.getTemplate(templateFile);
                                template.merge(context, writer);
                                writer.flush();
                                writer.close();                         
                        }
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
        
        private String getFileName(String name){
                return name.toLowerCase().replace(' ', '-').replaceAll("/", "");
        }
        
}