Rev 2944 | Rev 5322 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.serving.controllers;import in.shop2020.datalogger.EventType;import in.shop2020.serving.utils.FileUtils;import in.shop2020.serving.utils.Utils;import in.shop2020.utils.DataLogger;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Actions;import org.apache.struts2.convention.annotation.Result;/**** @author rajveer**/@Result(name = "show", location = "compare-show.vm")public class CompareController extends BaseController {private static final long serialVersionUID = 1L;private static Logger logger = Logger.getLogger(Class.class);List<String> slides = new ArrayList<String>();private List<String> productList;private List<String> productNames;private Map<String, String> snippets;private List<String> unComparedSlides;private List<String> commonSlides;private Map<String, String> slideNameImportanceMap;private Map<String, Map<String, Double>> productSlideScores;private List<String> importances = new ArrayList<String>();public CompareController() {super();importances.add("V. Imp");importances.add("Imp");importances.add("Not Imp");}@Actions({@Action("/compare-mobile-phones"),@Action("/compare")})public String index() throws SecurityException, IOException {productList = new ArrayList<String>();if(request.getParameter("p1") != null){this.productList.add(request.getParameter("p1"));}if(request.getParameter("p2") != null){this.productList.add(request.getParameter("p2"));}if(request.getParameter("p3") != null){this.productList.add(request.getParameter("p3"));}if(request.getParameter("p4") != null){this.productList.add(request.getParameter("p4"));}if(request.getParameter("p5") != null){this.productList.add(request.getParameter("p5"));}DataLogger.logData(EventType.PRODUCT_COMPARE, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),StringUtils.join(productList, ", "));return "show";}public List<String> getSlideNames() {productNames = new ArrayList<String>();slideNameImportanceMap = new LinkedHashMap<String, String>();productSlideScores = new LinkedHashMap<String, Map<String, Double>>();for (String productId : productList) {File f = new File(Utils.EXPORT_ENTITIES_PATH + productId + File.separator + "SlideNamesSnippet.html");FileInputStream fis = null;try {fis = new FileInputStream(f);BufferedReader br = new BufferedReader(new InputStreamReader(fis));String line;boolean isProductName = true;;Map<String, Double> slideScores = new LinkedHashMap<String, Double>();while((line = br.readLine()) != null){if(isProductName){productNames.add(line);productSlideScores.put(line, slideScores);isProductName = false;continue;}String[] parts = line.split("!!!");String slideName = parts[0];String importance = parts[1];double score = Double.parseDouble(parts[2]);if(score > 0){if(!slideNameImportanceMap.containsKey(slideName)){if(!importance.equals("None")){slideNameImportanceMap.put(slideName, importance);}}if(!slideScores.containsKey(slideName)){slideScores.put(slideName, score);}}if(!slides.contains(slideName)){slides.add(slideName);}}} catch (IOException e) {logger.error("Error while reading snippet", e);}}logger.info(productNames);unComparedSlides = new ArrayList<String>();for(String slideName: slides){if(!slideNameImportanceMap.containsKey(slideName)){unComparedSlides.add(slideName);}}return slides;}public List<String> getUncomparedSlides(){return this.unComparedSlides;}public List<String> getcommonSlides(){return this.commonSlides;}public List<Double> getOverallScores(){List<Double> overallScores = new ArrayList<Double>();for(String productId : productSlideScores.keySet()){Map<String, Double> slideScores = productSlideScores.get(productId);double commulativeWeightedScore = 0.0;double commulativeWeights = 0.0;for(String slideName: slideNameImportanceMap.keySet()){double score = 0.0;if(slideScores.get(slideName) != null){score = slideScores.get(slideName);}String importance = slideNameImportanceMap.get(slideName);if(importance.equals("V. Imp")){commulativeWeightedScore += score*55;commulativeWeights += 55;}if(importance.equals("Imp")){commulativeWeightedScore += score*30;commulativeWeights += 30;}if(importance.equals("Not Imp")){commulativeWeightedScore += score*15;commulativeWeights += 15;}}double weightedScore = commulativeWeightedScore/commulativeWeights;DecimalFormat oneDForm = new DecimalFormat("#.#");weightedScore = Double.valueOf(oneDForm.format(weightedScore));overallScores.add(weightedScore);}return overallScores;}public Map<String, String> getSnippets(){if (productList != null) {snippets = new LinkedHashMap<String, String>();for (String productId : productList) {try {snippets.put(productId, FileUtils.read(Utils.EXPORT_ENTITIES_PATH + productId + File.separator + "ComparisonSnippet.html"));} catch (IOException e) {logger.error(e);}}}this.commonSlides = new ArrayList<String>();return snippets;}public Map<String, String> getProductSummarySnippets(){if (productList != null) {snippets = new LinkedHashMap<String, String>();for (String productId : productList) {try {snippets.put(productId, FileUtils.read(Utils.EXPORT_ENTITIES_PATH + productId + File.separator + "CompareProductSummarySnippet.html"));} catch (IOException e) {logger.error(e);}}}return snippets;}public Map<String, String> getProductSnippets(){if (productList != null) {snippets = new LinkedHashMap<String, String>();for (String productId : productList) {try {snippets.put(productId, FileUtils.read(Utils.EXPORT_ENTITIES_PATH + productId + File.separator + "CompareProductSnippet.html"));} catch (IOException e) {logger.error(e);}}}return snippets;}public List<String> getProductList(){return this.productList;}public List<String> getProductNames(){return this.productNames;}public Map<String, String> getSlideNameImportanceMap(){return this.slideNameImportanceMap;}public Map<String, Map<String, Double>> getProductSlideScores(){return this.productSlideScores;}public List<String> getImportances(){return this.importances;}}