Subversion Repositories SmartDukaan

Rev

Rev 5155 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5004 varun.gupt 1
package in.shop2020.util;
2
 
3
import in.shop2020.metamodel.core.Bullet;
4
import in.shop2020.metamodel.core.Entity;
5
import in.shop2020.metamodel.core.Feature;
6
import in.shop2020.metamodel.core.PrimitiveDataObject;
7
import in.shop2020.metamodel.core.Slide;
8
import in.shop2020.metamodel.definitions.Catalog;
9
import in.shop2020.metamodel.definitions.DefinitionsContainer;
5404 amit.gupta 10
import in.shop2020.metamodel.util.CreationUtils;
5004 varun.gupt 11
 
5404 amit.gupta 12
import java.util.ArrayList;
13
import java.util.Arrays;
14
import java.util.HashMap;
5004 varun.gupt 15
import java.util.List;
5404 amit.gupta 16
import java.util.Map;
5004 varun.gupt 17
 
5404 amit.gupta 18
import org.apache.commons.lang.StringUtils;
19
 
5004 varun.gupt 20
public class ProductIndexGenerator {
21
	private String[] indentation = {"", "    ", "        ", "            ","                "};
22
	private List<Entity> entities;
23
	private DefinitionsContainer defContainer = Catalog.getInstance().getDefinitionsContainer();
5404 amit.gupta 24
	private Map<String, List<String>> brandSynonyms = new HashMap<String, List<String>>();
25
 
26
 
5004 varun.gupt 27
	public ProductIndexGenerator(List<Entity> entities)	{
5404 amit.gupta 28
		Map<String, String> brSynonyms = new HashMap<String, String>(); 
29
		try {
30
			brSynonyms =  CreationUtils.getSynonyms().get("brand");
31
			for(String brand : brSynonyms.keySet()){
32
				List<String> brandSyns = Arrays.asList((brand + "," + StringUtils.defaultString(brSynonyms.get(brand))).split(","));
33
				brandSynonyms.put(brand, brandSyns);
34
			}
35
		} catch (Exception e) {
36
			// TODO: handle exception
37
		}
5004 varun.gupt 38
		this.entities = entities;
39
	}
40
 
41
	private String getProductURL(Entity entity){
42
		in.shop2020.metamodel.definitions.Category parentCategory = defContainer.getCategory(entity.getCategoryID()).getParentCategory();
43
 
44
		String url = "http://www.saholic.com/" + parentCategory.getLabel().toLowerCase().replace(' ', '-') + "/";
45
		String productUrl = ((entity.getBrand() != null) ? entity.getBrand().trim() + " " : "").toLowerCase().replace(' ', '-')
46
        + "-" + ((entity.getModelName() != null) ? entity.getModelName().trim() + " " : "").toLowerCase().replace(' ', '-') 
47
	    + "-" + ((entity.getModelNumber() != null ) ? entity.getModelNumber().trim() + " ": "" ).toLowerCase().replace(' ', '-')
48
        + "-" + entity.getID();
49
		productUrl = productUrl.replaceAll("/", "-");
50
		url = url + productUrl;
51
		url = url.replaceAll("-+", "-");
52
		return url;
53
	}
54
 
55
	public void generate()	{
56
		StringBuilder sb = new StringBuilder();
57
 
58
		for (Entity entity: entities)	{
59
			String brand = entity.getBrand();
5404 amit.gupta 60
			try{
5004 varun.gupt 61
			String url = getProductURL(entity);
62
 
63
 
64
			Slide slide = entity.getSlide(Utils.SUMMARY_SLIDE_DEFINITION_ID);
5404 amit.gupta 65
			List<String> modelNameSyn = new ArrayList<String>();
66
			modelNameSyn.add(entity.getModelName());
67
			List<String> modelNumberSyn = new ArrayList<String>();
68
			modelNumberSyn.add(entity.getModelNumber());
5004 varun.gupt 69
 
70
			for(Feature feature: slide.getFeatures())	{
71
 
72
				if(feature.getFeatureDefinitionID() == 120156)	{
73
					List<Bullet> bullets =  feature.getBullets();
74
 
75
					if(bullets != null)	{
76
						for(Bullet bullet: bullets){
77
							PrimitiveDataObject pdo = (PrimitiveDataObject) bullet.getDataObject();
5404 amit.gupta 78
							modelNameSyn.add(pdo.getValue());
5004 varun.gupt 79
						}
80
					}
81
				} else if(feature.getFeatureDefinitionID() == 120157)	{
82
					List<Bullet> bullets =  feature.getBullets();
83
 
84
					if(bullets != null)	{
85
						for(Bullet bullet: bullets)	{
86
							PrimitiveDataObject pdo = (PrimitiveDataObject)bullet.getDataObject();
5404 amit.gupta 87
							modelNumberSyn.add(pdo.getValue());
5004 varun.gupt 88
						}
89
					}
90
				}
91
			}
5404 amit.gupta 92
			for(String br : getBrandSynonyms(brand)) {
93
				for (String mName : modelNameSyn){
94
					for (String mNumber : modelNumberSyn){
95
						sb.append("<div>\n");
96
						sb.append(indentation[1] + "<a href='" + url + "'>");
97
						sb.append(br + " " + mName + " " + mNumber);
98
						sb.append("</div>\n");
99
						sb.append("</a>\n");
100
					}
101
				}
102
			}
103
			}catch(Exception e){
104
				e.printStackTrace();
105
			}
5004 varun.gupt 106
		}
107
		String indexFilename = Utils.EXPORT_PARTNERS_CONTENT_PATH + "productindex.html";
108
 
109
		try	{
110
			DBUtils.store(sb.toString(), indexFilename);
111
 
112
		} catch (Exception e) {
113
			e.printStackTrace();
114
		}
115
	}
5404 amit.gupta 116
 
117
	private List<String> getBrandSynonyms(String brand) {
118
		if(!brandSynonyms.containsKey(brand)){
119
			List<String> list = new ArrayList<String>();
120
			list.add(brand);
121
			brandSynonyms.put(brand, list);
122
		}
123
		return brandSynonyms.get(brand);
124
	}
125
 
126
	public static void main(String[] args) {
127
		try {
128
			List<Entity> entities = new ArrayList<Entity>(CreationUtils.getEntities().values());
129
			ProductIndexGenerator generator = new ProductIndexGenerator(entities);
130
			generator.generate();
131
		} catch (Exception e) {
132
			e.printStackTrace();
133
		}
134
	}
5004 varun.gupt 135
}