Subversion Repositories SmartDukaan

Rev

Rev 5072 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.datalogger;

import in.shop2020.datalogger.event.AddAddress;
import in.shop2020.datalogger.event.AddToCart;
import in.shop2020.datalogger.event.CouponApplied;
import in.shop2020.datalogger.event.CouponRemoved;
import in.shop2020.datalogger.event.DeliveryEstimate;
import in.shop2020.datalogger.event.DeleteAddress;
import in.shop2020.datalogger.event.DeleteFromCart;
import in.shop2020.datalogger.event.Event;
import in.shop2020.datalogger.event.LoginSuccess;
import in.shop2020.datalogger.event.NewSession;
import in.shop2020.datalogger.event.OrderCreation;
import in.shop2020.datalogger.event.PaymentFailure;
import in.shop2020.datalogger.event.PaymentSuccess;
import in.shop2020.datalogger.event.ProceedToPay;
import in.shop2020.datalogger.event.ProductCompare;
import in.shop2020.datalogger.event.ProductSearch;
import in.shop2020.datalogger.event.ProductView;
import in.shop2020.datalogger.event.RechargeStatusEvent;
import in.shop2020.datalogger.event.RegisterDataIncomplete;
import in.shop2020.datalogger.event.RegisterFailedUserExists;
import in.shop2020.datalogger.event.RegisterSuccess;
import in.shop2020.datalogger.event.ResearchAdd;
import in.shop2020.datalogger.event.ResearchDelete;
import in.shop2020.datalogger.event.SetDefaultAddress;
import in.shop2020.datalogger.event.ShippingAccess;
import in.shop2020.datalogger.event.ShippingAddAddress;
import in.shop2020.datalogger.event.ShippingAddressChange;
import in.shop2020.datalogger.event.UpdateCartQuantity;
import in.shop2020.datalogger.event.UpdateCartQuantityFailed;
import in.shop2020.datalogger.event.ProviderFetchFailure;

public enum EventType {
    ADD_ADDRESS(AddAddress.class), 
    DELETE_ADDRESS(DeleteAddress.class),
    SET_DEFAULT_ADDRESS(SetDefaultAddress.class), 
    ADD_TO_CART(AddToCart.class),
    DELETE_FROM_CART(DeleteFromCart.class),
    UPDATE_CART_QUANTITY(UpdateCartQuantity.class),
    UPDATE_CART_QUANTITY_FAILED(UpdateCartQuantityFailed.class),
    PAYMENT_SUCCESS(PaymentSuccess.class),
    PAYMENT_FAILURE(PaymentFailure.class),
    PRODUCT_VIEW(ProductView.class),
    PRODUCT_SEARCH(ProductSearch.class),
    PRODUCT_COMPARE(ProductCompare.class), 
    LOGIN_FAILED(Event.class),
    LOGIN_SUCCESS(LoginSuccess.class),
    LOGOUT(Event.class),
    RESEARCH_ADD(ResearchAdd.class), 
    RESEARCH_DELETE(ResearchDelete.class),
    REGISTER_SUCCESS(RegisterSuccess.class), 
    REGISTER_FAILED_USER_EXISTS(RegisterFailedUserExists.class), 
    REGISTER_DATA_INCOMPLETE(RegisterDataIncomplete.class),
    SHIPPINIG_ACCESS(ShippingAccess.class), 
    SHIPPINIG_ADD_ADDRESS(ShippingAddAddress.class), 
    SHIPPINIG_ADD_CHANGE(ShippingAddressChange.class),
    ORDER_CREATION(OrderCreation.class),
    NEW_SESSION(NewSession.class), 
    COUPON_APPLIED(CouponApplied.class), 
    COUPON_REMOVED(CouponRemoved.class), 
    HOME_PAGE(Event.class),
    PROCEED_TO_PAY(ProceedToPay.class),
    CAPTCHA_SUCCESS(Event.class),
    CAPTCHA_FAILED(Event.class),
    DELIVERY_ESTIMATE(DeliveryEstimate.class), 
    RECHARGE_SUCCESSFUL(RechargeStatusEvent.class), 
    RECHARGE_PAYMENT_SUCCESSFUL(RechargeStatusEvent.class), 
    RECHARGE_PAYMENT_FAILED(RechargeStatusEvent.class), 
    PROVIDER_FETCH_FAILURE(ProviderFetchFailure.class);
    
    private final Class<? extends Event> clazz; 
    EventType(Class<? extends Event> clazz) {
        this.clazz = clazz;
    }
    
    /*
     * This method will remove the switch statment in createEvent method of Event for better design.
     * Need to look more into this.
     */
    /*
    public Event CreateEvent(EventType eType, String sessionId, long userId, String email, String[] logData) {
        try {
            return this.clazz.getConstructor(EventType.class, String.class,
                    long.class, String.class, String[].class).newInstance(eType,
                    sessionId, userId, email, logData);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }*/

}