Subversion Repositories SmartDukaan

Rev

Rev 12620 | Rev 13425 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
9269 amit.gupta 1
package in.shop2020.mobileapi.serving.utils;
9103 anupam.sin 2
 
3
import in.shop2020.config.ConfigException;
12620 amit.gupta 4
import in.shop2020.model.v1.catalog.ExclusiveAffiliateItemInfo;
9103 anupam.sin 5
import in.shop2020.model.v1.order.LineItem;
6
import in.shop2020.model.v1.order.Order;
7
import in.shop2020.model.v1.order.RechargeOrderStatus;
8
import in.shop2020.model.v1.order.RechargePlan;
9
import in.shop2020.model.v1.order.RechargeType;
10
import in.shop2020.model.v1.user.Cart;
11
import in.shop2020.model.v1.user.Line;
12620 amit.gupta 12
import in.shop2020.thrift.clients.CatalogClient;
9103 anupam.sin 13
import in.shop2020.thrift.clients.TransactionClient;
14
import in.shop2020.thrift.clients.config.ConfigClient;
15
 
16
import java.util.ArrayList;
17
import java.util.Arrays;
18
import java.util.Collections;
12620 amit.gupta 19
import java.util.Date;
9103 anupam.sin 20
import java.util.HashMap;
21
import java.util.List;
22
import java.util.Map;
23
 
24
import javax.mail.internet.AddressException;
25
import javax.mail.internet.InternetAddress;
26
 
27
import org.apache.commons.lang.StringUtils;
28
import org.apache.log4j.Logger;
29
 
30
public class Utils {
31
    private static Logger logger = Logger.getLogger(Utils.class);
32
 
33
	public static final String EXPORT_ENTITIES_PATH = getExportPath();
34
	public static final String EXPORT_JAVASCRIPT_CONTENT_PATH = "/var/lib/tomcat6/webapps/export/javascripts/";
11038 amit.gupta 35
	public static final String STATIC_SERVER_PATH = "http://static1.saholic.com/images/mobileapi/";
9103 anupam.sin 36
	public static final long ROOT_CATEGORY = 10000;
37
	public static final long MOBILE_PHONES_CATEGORY = 10001;
38
	public static final long MOBILE_ACCESSORIES_CATEGORY = 10011;
39
	public static final long TABLETS_CATEGORY = 10010;
40
    public static final long LAPTOPS_CATEGORY = 10050;
41
    public static final long CAMERAS_CATEGORY = 11001;
42
 
43
    static Map<Long, String> providersMap;
44
    static Map<Long, String> mobileProvidersMap;
45
    static Map<Long, String> dthProvidersMap;
46
    static Map<Long, List<RechargePlan>> operatorPlanMap = new HashMap<Long, List<RechargePlan>>(); 
47
    private static Map<String, Map<String, String>> uriOperatorMap = new HashMap<String, Map<String,String>>();
12620 amit.gupta 48
    static Map<Long, ExclusiveAffiliateItemInfo> exclusiveAffiliateItems = null;
49
    static long fifteenMinsCounter = 0l;
9103 anupam.sin 50
 
51
    public static final List<RechargeOrderStatus> refundableRechargeStatusList = new ArrayList<RechargeOrderStatus>(Arrays.asList(new RechargeOrderStatus[] 
52
                                                                                                                                                     {RechargeOrderStatus.RECHARGE_FAILED, 
53
                                                                                                                                                      RechargeOrderStatus.RECHARGE_FAILED_REFUNDED}));
54
 
55
    public static Map<RechargeOrderStatus, String> statusMap = new HashMap<RechargeOrderStatus, String>();
56
 
57
    //public static final List<String> multiValuedFacet = Arrays.asList("F_50006");
58
 
9269 amit.gupta 59
    public static final  List<String>rootfacetDefIDs = Arrays.asList("F_50010","F_50011", "F_50001", "F_50028");
9103 anupam.sin 60
    public static final  String availabilityFacet = "F_50028";
61
	public static final Map<String, String> FACET_LABEL_MAP = Collections.unmodifiableMap(
62
			new HashMap<String, String>(){
63
				/**
64
				 * 
65
				 */
66
				private static final long serialVersionUID = 1L;
67
 
68
				{
69
					put("F_50010","Category");
70
					put("F_50011","Sub Category");
71
					put("F_50002","Price");
72
					put("F_50001","Brand");
73
					put("F_50006","Data Connectivity");
74
					put("F_50007","Camera Resolution");
75
					put("F_50012","Display");
76
					put("F_50013","Operating System");
77
					put("F_50014","RAM");
78
					put("F_50015","Storage Capacity");
79
					put("F_50017","Processor");
80
					put("F_50018","Capacity");
81
					put("F_50019","Class");
82
					put("F_50020","Capacity");
83
					put("F_50021","Capacity");
84
					put("F_50022","Type");
85
					put("F_50023","Interface");
86
					//Resolution for Composite
87
					put("F_50024","Resolution");
88
					put("F_50025","Optical Zoom");
89
					put("F_50026","Display Size");
90
					//Resolution for DSLR
91
					put("F_50027","Resolution");
92
					put("F_50028","Availability");
93
					put("F_50031","Operating System");
94
					put("F_50032","Screen Size");	//Screen size for mobiles
95
					put("F_50033","Screen Size");	//Screen size for laptop
96
					put("F_50034","Screen Size"); 	//Screen size for tablets
97
					put("F_50035","Operating System"); 	//Screen size for tablets
98
					put("F_50036","Camera Resolution"); 	//Screen size for tablets
99
					put("F_50037","Voice Call Facility"); 	//Screen size for tablets
9475 amit.gupta 100
					put("F_50038","Mobile Type");
12151 amit.gupta 101
					put("F_50039", "Your Deals");
9103 anupam.sin 102
				}
103
		});
104
 
105
    static {
106
        statusMap.put(RechargeOrderStatus.PAYMENT_FAILED, "Payment Unsuccessful");
107
        statusMap.put(RechargeOrderStatus.PAYMENT_SUCCESSFUL, "Processing Recharge");
108
        statusMap.put(RechargeOrderStatus.RECHARGE_FAILED, "Recharge Failed");
109
        statusMap.put(RechargeOrderStatus.RECHARGE_FAILED_REFUNDED, "Recharge Failed");
110
        statusMap.put(RechargeOrderStatus.RECHARGE_SUCCESSFUL, "Recharge Successful");
111
        statusMap.put(RechargeOrderStatus.REFUNDED, "Amount Refunded");
112
        statusMap.put(RechargeOrderStatus.PARTIALLY_REFUNDED, "Amount Refunded");
113
 
114
        TransactionClient tcl;
115
        try {
116
            tcl = new TransactionClient();
117
            mobileProvidersMap = tcl.getClient().getServiceProviders(RechargeType.MOBILE, true);
118
            dthProvidersMap = tcl.getClient().getServiceProviders(RechargeType.DTH, true);
119
//            providersMap.putAll(mobileProvidersMap);
120
//            providersMap.putAll(dthProvidersMap);
121
            for (Long operatorId : mobileProvidersMap.keySet()) {
122
                List<RechargePlan> plans = tcl.getClient().getPlansForOperator(operatorId);
123
                if (!plans.isEmpty()) {
124
                    operatorPlanMap.put(operatorId, plans);
125
                }
126
            }
127
            for (Long operatorId : mobileProvidersMap.keySet()) {
128
            	Map<String,String> valueMap = new HashMap<String,String>();
129
            	valueMap.put("Id", operatorId+"");
130
                valueMap.put("Name", mobileProvidersMap.get(operatorId)+"");
131
                valueMap.put("ServiceType", "1");
132
                valueMap.put("ServiceName", "Prepaid Mobile");
133
                uriOperatorMap.put(mobileProvidersMap.get(operatorId).toLowerCase().trim().replace(" ", "-")+"-online-recharge", valueMap);
134
            }
135
            for (Long operatorId : dthProvidersMap.keySet()) {
136
            	Map<String,String> valueMap = new HashMap<String,String>();
137
            	valueMap.put("Id", operatorId+"");
138
            	valueMap.put("Name", dthProvidersMap.get(operatorId)+"");
139
                valueMap.put("ServiceType", "2");
140
                valueMap.put("ServiceName", "DTH TV");
141
                uriOperatorMap.put(dthProvidersMap.get(operatorId).toLowerCase().trim().replace(" ", "-")+"-online-recharge", valueMap);
142
            }
143
 
144
            Map<String,String> valueMap = new HashMap<String,String>();
145
            valueMap.put("Id", "0");
146
	    	valueMap.put("Name", "Mobile and DTH");
147
	        valueMap.put("ServiceType", "1");
148
	        valueMap.put("ServiceName", "");
149
	        uriOperatorMap.put("recharge", valueMap);
150
//            providersMap.putAll(tcl.getClient().getServiceProviders(RechargeType.DTH));
151
 
152
 
153
        } catch (Exception e) {
154
            logger.error("Could not get providers", e);
155
        }
156
    }
157
 
158
 
159
 
160
	private static String getExportPath(){
161
		String exportPath=null;
162
		ConfigClient client = ConfigClient.getClient();
163
		try{
164
			exportPath = client.get("export_entities_path");
165
		}catch(ConfigException ce){
166
			logger.error("Unable to read export path from the config client: ", ce);
167
			logger.warn("Setting the default export path");
168
			exportPath = "/var/lib/tomcat6/webapps/export/html/entities/";
169
		}
170
		return exportPath;
171
	}
172
 
173
	public static boolean validatePin(String pincode) {
174
		int pin;
175
		try {
176
			pin = Integer.parseInt(pincode);
177
		}
178
		catch (NumberFormatException e) {
179
			return false;
180
		}
181
 
182
		if (pin < 100000 || pin > 999999) {
183
			return false;
184
		}
185
		return true;
186
	}
187
 
188
	public static boolean isValidEmail(String emailAddress)	{
189
 
190
		if(emailAddress == null || emailAddress.isEmpty())	{
191
			return false;
192
		}
193
		try {
194
			InternetAddress address = new InternetAddress(emailAddress, true);
195
			address.validate();
196
			return true;
197
 
198
		} catch (AddressException e) {
199
			logger.error(emailAddress + " is not valid email address ", e);
200
			return false;
201
		}
202
	}
203
 
204
	public static boolean validatePhone(String phone) {
205
		long iPhone;
206
		try {
207
    		iPhone = Long.parseLong(phone);
208
		}
209
		catch (NumberFormatException e) {
210
			return false;
211
		}
212
 
213
		if (iPhone < 1000000000l || iPhone > 9999999999l) {
214
			return false;
215
		}
216
		return true;
217
	}
218
 
219
	public static String getItemIdStringInCart(Cart cart) {
220
	    List<String> itemIds = new ArrayList<String>();
221
        for (Line line : cart.getLines()) {
222
            itemIds.add(Long.toString(line.getItemId()));
223
        }
224
        return StringUtils.join(itemIds, '_');
225
    }
226
 
227
	public static String getItemIdStringFromOrders(List<Order> orders) {
228
        List<String> itemIds = new ArrayList<String>();
229
        if (orders != null) {
230
            for (Order order : orders) {
231
                for (LineItem lItem : order.getLineitems()) {
232
                    itemIds.add(Long.toString(lItem.getItem_id()));
233
                }
234
            }
235
        }
236
        return StringUtils.join(itemIds, '_');
237
    }
238
 
239
 
240
 
241
	public static String getRechargeProviderName(long providerId) {
242
            return providersMap.get(providerId);
243
	}
244
 
245
    public static Map<Long, String> getMobileProvidersMap() {
246
        return mobileProvidersMap;
247
    }
248
 
249
    public static Map<Long, String> getDthProvidersMap() {
250
        return dthProvidersMap;
251
    }
252
 
253
    public static Map<Long, List<RechargePlan>> getOperatorPlanMap() {
254
        return operatorPlanMap;
255
    }
256
 
257
    public static Map<String, Map<String, String>> getUriOperatorMap(){
258
    	return uriOperatorMap;
259
	}
260
 
261
    public static Map<String, String> getOperatorByUri(String uri){
262
    	return uriOperatorMap.get(uri);
263
	}
12620 amit.gupta 264
 
265
 
266
 
267
	public static Map<Long, ExclusiveAffiliateItemInfo> getExclusiveAffiliateItems(){
268
		try{
12626 amit.gupta 269
			Long currentTime = new Date().getTime();
12620 amit.gupta 270
			CatalogClient client = new CatalogClient();
12626 amit.gupta 271
			if(exclusiveAffiliateItems == null || fifteenMinsCounter < currentTime) {
12620 amit.gupta 272
				exclusiveAffiliateItems = client.getClient().getExAffiliateItemInfo();
273
				fifteenMinsCounter = new Date().getTime() + 15*60000;
274
			}
275
		}catch(Exception ce){
276
			logger.error("Unable to fetch exclusive items from catalog", ce);
277
		}
278
		return exclusiveAffiliateItems;
279
	}
9103 anupam.sin 280
}