Subversion Repositories SmartDukaan

Rev

Rev 9280 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
9218 amit.gupta 1
package in.shop2020.util;
2
 
3
import in.shop2020.metamodel.core.Entity;
4
import in.shop2020.metamodel.core.Feature;
5
import in.shop2020.metamodel.core.Media;
6
import in.shop2020.metamodel.core.Slide;
7
import in.shop2020.metamodel.definitions.Catalog;
8
import in.shop2020.metamodel.definitions.DefinitionsContainer;
9
import in.shop2020.metamodel.definitions.SlideDefinition;
10
import in.shop2020.metamodel.util.ContentPojo;
11
import in.shop2020.metamodel.util.ExpandedBullet;
12
import in.shop2020.metamodel.util.ExpandedFeature;
13
import in.shop2020.metamodel.util.ImagePojo;
14
import in.shop2020.metamodel.util.ItemPojo;
15
import in.shop2020.metamodel.util.ProductPojo;
16
import in.shop2020.metamodel.util.Specification;
17
import in.shop2020.metamodel.util.SpecificationGroup;
18
import in.shop2020.storage.mongo.StorageManager;
19
import in.shop2020.ui.util.NewVUI;
20
 
21
import java.text.MessageFormat;
22
import java.util.ArrayList;
23
import java.util.Arrays;
24
import java.util.Collection;
25
import java.util.List;
26
 
27
import org.apache.commons.lang.StringUtils;
28
import org.apache.commons.logging.Log;
29
import org.apache.commons.logging.LogFactory;
30
 
31
public class PojoCreator {
32
	private static final String IMG_URL_TEMPLATE ="http://static{0}.saholic.com/images/media/{1}/{2}";
33
    private static Log log = LogFactory.getLog(PojoCreator.class);
34
	private static DefinitionsContainer defs = Catalog.getInstance().getDefinitionsContainer();
35
 
36
	public void createAndStoreContentPojo(Entity entity){
37
		try {
38
			ContentPojo cp = new ContentPojo(EntityUtils.getProductName(entity), getKeySpecs(entity), getDetailedSpecs(entity), getWarranty());
39
			setImages(entity, cp);
40
			//StorageManager sm  = StorageManager.getStorageManager();
41
			StorageManager.insertOrUpdateById(StorageManager.views.siteContent, entity.getID(), cp);
42
		} catch (Exception e){
43
			log.info("Could not generate Pojo for entity:" + entity.getID());
44
			e.printStackTrace();
45
		}
46
	}
47
 
48
	private List<SpecificationGroup> getDetailedSpecs(Entity entity) throws Exception {
49
		List<SpecificationGroup> spGroups = new ArrayList<SpecificationGroup>();
50
		for (Slide slide : entity.getSlides()){
51
			if(slide != null) {
52
				long slideDefinitionId = slide.getSlideDefinitionID();
53
				if(slideDefinitionId == 130054l || slideDefinitionId == 130001l || slideDefinitionId == 130025l) continue;
54
 
55
				SlideDefinition slideDef = defs.getSlideDefinition(slideDefinitionId);
56
				List<Specification> specs = new ArrayList<Specification>();
57
				SpecificationGroup spGroup = new SpecificationGroup(slideDef.getLabel(), specs);
58
 
59
				if(slideDefinitionId == 130043l){
60
					List<String> values = new ArrayList<String>();
61
					List<Slide> slides= slide.getChildrenSlides();
62
					if(slides != null){
63
						for(Slide sl : slides){
64
							//For capacity slide
65
							if ( sl.getSlideDefinitionID() == 130046l){
66
								String one = "";
67
								String two = "";
68
								String three = "";
69
								List<Slide> capacityChildren = sl.getChildrenSlides();
70
								if(capacityChildren != null && capacityChildren.size()>0){
71
									for(Slide capSlide : capacityChildren){
72
										if (capSlide != null){
73
											if(capSlide.getSlideDefinitionID() == 130048l){
74
												one = "Talk time";
75
											}else if (capSlide.getSlideDefinitionID() == 130049l){
76
												one = "Standby time";
77
											}
78
											List<Feature> fs = capSlide.getFeatures();
79
											List<String> values1 = new ArrayList<String>();
80
											if(fs!=null){
81
												for(Feature f: fs){
82
													if (f != null){
83
														ExpandedFeature expFeature = new ExpandedFeature(f);
84
														two = expFeature.getFeatureDefinition().getLabel();
85
														List<ExpandedBullet> expBullets = expFeature.getExpandedBullets();
86
														if(expBullets != null){
87
															for(ExpandedBullet bullet : expBullets){
88
																if(bullet != null) {
89
																	three = bullet.displayText();
90
																	values1.add(MessageFormat.format(Utils.CAPACITY_TEMPLATE, one,two, three));
91
																}
92
															}
93
														}
94
													}
95
												}
96
											}
97
											if(values1.size()>0){
98
												values.add(StringUtils.join(values1,","));
99
											}
100
										}
101
									}
102
								}
103
								List<Feature> capacityFeatures = sl.getFeatures(); 
104
								if(capacityFeatures != null){
105
									for(Feature f: capacityFeatures){
106
										if (f != null){
107
											ExpandedFeature expFeature = new ExpandedFeature(f);
108
											String fLabel = expFeature.getFeatureDefinition().getLabel();
109
											List<ExpandedBullet> expBullets = expFeature.getExpandedBullets();
110
											List<String> bulletValuesList = new ArrayList<String>();
111
											if(expBullets != null){
112
												for(ExpandedBullet bullet : expBullets){
113
													if(bullet != null) {
114
														String value = bullet.displayText();
115
														if(value != null && !value.trim().equals("")){
116
															bulletValuesList.add(bullet.displayText());
117
														}
118
													}
119
												}
120
											}
121
											if(bulletValuesList.size() > 0){
122
												values.add(fLabel  +  " - " + StringUtils.join(bulletValuesList, ","));
123
											}
124
										}
125
									}
126
								}
127
								if(values.size()>0){
128
									Specification spec = new Specification("Capacity", values);
129
									specs.add(spec);
130
								}
131
							}
132
						}
133
					}
134
				}
135
				for(Feature f : slide.getFeatures()) {
136
					List<String> sb = new ArrayList<String>();
137
					if (f != null){
138
						ExpandedFeature expFeature = new ExpandedFeature(f);
139
						expFeature.getFeatureDefinition().getLabel();
140
						List<ExpandedBullet> expBullets = expFeature.getExpandedBullets();
141
						if(expBullets != null){
142
							for(ExpandedBullet bullet : expBullets){
143
								if(bullet != null) {
144
									String displayText = bullet.displayText();
145
									if(!displayText.trim().equals("")){
146
										sb.add(bullet.displayText());
147
									}
148
								}
149
							}
150
						}
151
						if(sb.size()>0){
152
							Specification spec = new Specification(expFeature.getFeatureDefinition().getLabel(), Arrays.asList(StringUtils.join(sb,",")));
153
							specs.add(spec);
154
						}
155
					}
156
				}
157
				spGroups.add(spGroup);
158
			}
159
		}
160
		return spGroups;
161
	}
162
 
163
	private void setImages(Entity entity, ContentPojo cp) {
164
 
165
		String fileNamePrefix = EntityUtils.getMediaPrefix(entity);
166
		List<ImagePojo> images = new ArrayList<ImagePojo>();
167
		List<Slide> slides = entity.getSlides();
168
		String entityNumber = entity.getID() + "";
169
		if(slides!=null){
170
 
171
			for(Slide slide : slides){
172
				if (slide != null){
173
					if(slide.getSlideDefinitionID() == 130054l){
174
						Media m = slide.getFreeformContent().getMedias().get("default");
175
						cp.setDefaultImageUrl(MessageFormat.format(IMG_URL_TEMPLATE, entity.getID()%3, entityNumber, NewVUI.computeNewFileName(fileNamePrefix, NewVUI.DEFAULT_JPG, String.valueOf(m.getCreationTime().getTime()))));
176
						cp.setThumbnailImageUrl(MessageFormat.format(IMG_URL_TEMPLATE, entity.getID()%3, entityNumber, NewVUI.computeNewFileName(fileNamePrefix, NewVUI.THUMBNAIL_JPG, String.valueOf(m.getCreationTime().getTime()))));
177
						cp.setIconImageUrl(MessageFormat.format(IMG_URL_TEMPLATE, entity.getID()%3, entityNumber, NewVUI.computeNewFileName(fileNamePrefix, NewVUI.ICON_JPG, String.valueOf(m.getCreationTime().getTime()))));
178
					}
179
					else if(slide.getFreeformContent() !=null && slide.getFreeformContent().getMedias() !=null){
180
						Collection<Media> medias = slide.getFreeformContent().getMedias().values();
181
						for (Media media : medias){
182
							if(media.getType().equals(Media.Type.IMAGE)){
183
								ImagePojo ip = new ImagePojo(media.getLabel(), MessageFormat.format(IMG_URL_TEMPLATE, entity.getID()%3, entityNumber, NewVUI.computeNewFileName(fileNamePrefix, media.getFileName(), String.valueOf(media.getCreationTime().getTime()))));
184
								images.add(ip);
185
							}
186
						}
187
					}
188
				}
189
			}
190
		}
191
		cp.setImages(images);
192
 
193
	}
194
 
195
	private String getWarranty() {
196
		// TODO Auto-generated method stub
197
		return null;
198
	}
199
 
200
	private List<String> getKeySpecs(Entity entity) throws Exception {
201
		List<String> keySpecs = new ArrayList<String>();
202
		Slide summarySlide = entity.getSlide(130054l);
203
		List<Feature> summaryFeatures = summarySlide.getFeatures();
204
		if(summaryFeatures != null){
205
			for(Feature f : summaryFeatures) {
206
				if(f.getFeatureDefinitionID()==120081l){
207
					ExpandedFeature expFeature = new ExpandedFeature(f);
208
					expFeature.getFeatureDefinition().getLabel();
209
					List<ExpandedBullet> expBullets = expFeature.getExpandedBullets();
210
					if(expBullets != null){
211
						for(ExpandedBullet bullet : expBullets){
212
							if(bullet != null) {
213
								keySpecs.add(bullet.displayText());
214
							}
215
						}
216
					}
217
					break;
218
				}
219
			}
220
		}
221
		return keySpecs;
222
	}
223
 
224
	private List<String> getPackageContents(Entity entity){
225
		List<String> packageContents = null;
226
		Slide summarySlide = entity.getSlide(130025l);
227
		List<String> freeformTexts = summarySlide.getFreeformContent().getFreeformTexts();
228
		if(freeformTexts.size()>0){
229
			packageContents = Arrays.asList(StringUtils.join(freeformTexts, "\r\n").split("\r\n"));
230
		}
231
		return packageContents; 
232
	}
233
 
234
	public static void main (String [] args) throws Exception{
235
		PojoCreator creator = new PojoCreator();
236
		//System.out.println(creator.getShortContent(1007425l));
237
	}
238
 
239
	public void updateCatalogInfo(long entityId, double sellingPrice, double mrp, String offerText, List<ItemPojo> items) {
240
		ContentPojo cp = new ContentPojo(entityId);
241
		cp.setPrice(sellingPrice);
242
		cp.setMrp(mrp);
243
		cp.setOfferText(offerText);
244
		cp.setItems(items);
245
 
246
		StorageManager.addById(StorageManager.views.siteContent, entityId, cp);
247
	}
248
}