Rev 3225 | Rev 3715 | 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.model.v1.catalog.Item;import in.shop2020.model.v1.user.UserContextService.Client;import in.shop2020.serving.cache.EhcacheWrapper;import in.shop2020.thrift.clients.CatalogClient;import in.shop2020.thrift.clients.UserClient;import in.shop2020.utils.DataLogger;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.StringTokenizer;import net.sf.ehcache.CacheManager;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;import org.apache.struts2.convention.annotation.Results;import org.json.JSONException;import org.json.JSONObject;/**** @author rajveer**/@Results({@Result(name = "show", location = "entity-show.vm"),@Result(name = "redirect", location = "${redirectUrl}", type = "redirect")})public class EntityController extends BaseController {private static final long serialVersionUID = 1L;private static Logger log = Logger.getLogger(Class.class);private static final String PRODUCT_PROERTIES_SNIPPET_KEY = "PRODUCT_PROPERTIES";private static final String PRODUCT_SUMMARY_SNIPPET_KEY = "PRODUCT_SUMMARY";private static final String PRODUCT_SLIDEGUIDE_KEY = "SLIDEGUIDE";private String id;private String redirectUrl;private long productId;private boolean isMobile = false;private Map<String, String> snippets;public EntityController(){super();}// GET /*/1000001@Actions({@Action("/mobile-phones"),@Action("/mobile-accessories"),@Action("/tablets"),@Action("/entity")})public String show() throws SecurityException, IOException, JSONException {log.info("id=" + id);String entityUrl = "";String metaKeywords = "";String metaDescription = "";String pageTitle = "";String productName = "";String displayAccessories = "FALSE";try {setSnippets();htmlSnippets.put("PRODUCT_PROPERTIES", snippets.get(PRODUCT_PROERTIES_SNIPPET_KEY));JSONObject productPropertiesInJson = new JSONObject(htmlSnippets.get("PRODUCT_PROPERTIES"));entityUrl = productPropertiesInJson.getString("entityUrl");metaDescription = productPropertiesInJson.getString("metaDescription");metaKeywords = productPropertiesInJson.getString("metaKeywords");pageTitle = productPropertiesInJson.getString("title");productName = productPropertiesInJson.getString("name");displayAccessories = productPropertiesInJson.getString("displayAccessories");}catch (JSONException e) {log.error("Unable to parse product properties JSON", e);try {CatalogClient catalogClientService = new CatalogClient();in.shop2020.model.v1.catalog.InventoryService.Client client = catalogClientService.getClient();Item item = client.getItemsByCatalogId(productId).get(0);redirectUrl = "/" + item.getBrand().toLowerCase().replace(" ", "-");} catch (Exception e1) {log.error("Unable to get items by catalog id", e1);redirectUrl = "/";}log.info(redirectUrl);return "redirect";}String currentUrl = request.getRequestURL().toString();if (!currentUrl.contains(entityUrl)) {redirectUrl = entityUrl;return "redirect";}//Extracting base urlString rootUrl = currentUrl.split("/")[2];htmlSnippets.put("PRODUCT_SUMMARY", snippets.get(PRODUCT_SUMMARY_SNIPPET_KEY));htmlSnippets.put("PRODUCT_ID", productId + "");htmlSnippets.put("PRODUCT_NAME", productName);htmlSnippets.put("PRODUCT_URL", currentUrl);htmlSnippets.put("ROOT_URL", "http://" + rootUrl);htmlSnippets.put("SLIDE_GUIDE", snippets.get(PRODUCT_SLIDEGUIDE_KEY));htmlSnippets.put("PAGE_TITLE", pageTitle.trim());htmlSnippets.put("PAGE_METADESC", metaDescription);htmlSnippets.put("PAGE_METAKEYWORDS", metaKeywords);if(displayAccessories.equals("TRUE")){setMobile(true);}try {UserClient userServiceClient = new UserClient();Client client = userServiceClient.getClient();long itemId = Long.parseLong(id);long userId = userinfo.getUserId();if(userId != -1){client.updateBrowseHistory(userId, itemId);}} catch (Exception e) {log.warn("Unable to update the browsing history because of: ", e);}DataLogger.logData(EventType.PRODUCT_VIEW, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),productName, Long.toString(productId));return "show";}/**** @param id*/public void setId(String id) {StringTokenizer tokenizer = new StringTokenizer(id,"-");while(tokenizer.hasMoreTokens()){this.id = tokenizer.nextToken();}this.productId = Long.parseLong(this.id);}public Map<String,String> getHtmlSnippets(){System.out.println(" getHtmlSnippets is called");return htmlSnippets;}public String getSlideGuideSnippet(){return htmlSnippets.get("SLIDE_GUIDE");}public String getRedirectUrl(){return redirectUrl;}public String getProductSummarySnippet(){return htmlSnippets.get("PRODUCT_SUMMARY");}public String getPageTitleSnippet(){return htmlSnippets.get("PAGE_TITLE");}public String getPageMetaDescSnippet(){return htmlSnippets.get("PAGE_METADESC");}public String getPageMetaKeywordsSnippet(){return htmlSnippets.get("PAGE_METAKEYWORDS");}public String getProductName() {return htmlSnippets.get("PRODUCT_NAME");}public String getProductId() {return htmlSnippets.get("PRODUCT_ID");}public String getProductUrl() {return htmlSnippets.get("PRODUCT_URL");}public String getRootUrl() {return htmlSnippets.get("ROOT_URL");}/*** @param isMobile the isMobile to set*/public void setMobile(boolean isMobile) {this.isMobile = isMobile;}/*** @return the isMobile*/public boolean isMobile() {return isMobile;}private void setSnippets() {EhcacheWrapper<Long, Map<String, String>> productSnippetsCache = new EhcacheWrapper<Long, Map<String, String>>(EhcacheWrapper.PRODUCT_PAGE_SNIPPET_CACHE_NAME, CacheManager.create());snippets = productSnippetsCache.get(productId);if (snippets == null) {log.info("Getting product snippet for :" + productId);snippets = new HashMap<String, String>();snippets.put(PRODUCT_PROERTIES_SNIPPET_KEY, pageLoader.getProductPropertiesHtml(productId).trim());snippets.put(PRODUCT_SUMMARY_SNIPPET_KEY, pageLoader.getProductSummaryHtml(productId));snippets.put(PRODUCT_SLIDEGUIDE_KEY, pageLoader.getSlideGuideHtml(productId));productSnippetsCache.put(productId, snippets);return;}log.info("Loaded from cache product snippet for :" + productId);}}