package com.liquidnet.service.platform.utils;

import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.candy.entity.CandyCommonCoupon;
import com.liquidnet.service.candy.entity.CandyCouponCode;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
import com.liquidnet.service.goblin.dto.GoblinStoreMarketDto;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.*;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import com.liquidnet.service.goblin.dto.vo.ActivityExcelVo;
import com.mongodb.BasicDBObject;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * @author AnJiabin <anjiabin@zhengzai.tv>
 * @version V1.0
 * @Description: TODO
 * @class: ObjectUtil
 * @Package com.liquidnet.service.dragon.utils
 * @Copyright: LightNet @ Copyright (c) 2021
 * @date 2021/7/21 16:00
 */
@Component
public class ObjectUtil {
    private static final HashMap<String, Object> hashMapStringAndObject = new HashMap<String, Object>();
    private static final BasicDBObject basicDBObject = new BasicDBObject();

    public static HashMap<String, Object> cloneHashMapStringAndObject() {
        return (HashMap<String, Object>) hashMapStringAndObject.clone();
    }

    public static BasicDBObject cloneBasicDBObject() {
        return (BasicDBObject) basicDBObject.clone();
    }


    private static final ArrayList<AdamTagParentVo> adamTagParentVoArrayList = new ArrayList<>();
    private static final ArrayList<AdamTagVo> adamTagVoArrayList = new ArrayList<>();
    private static final ArrayList<AdamMemberOrderSimpleVo> adamMemberOrderSimpleVoArrayList = new ArrayList<>();
    private static final ArrayList<AdamThirdPartInfoVo> adamThirdPartInfoVoArrayList = new ArrayList<>();
    private static final ArrayList<AdamEntersVo> adamEntersVoArrayList = new ArrayList<>();
    private static final ArrayList<AdamAddressesVo> adamAddressesVoArrayList = new ArrayList<>();
    private static final ArrayList<AdamMemberOrderVo> adamMemberOrderVoArrayList = new ArrayList<>();
    private static final ArrayList<AdamProPerformMarkVo> adamProPerformMarkVoArrayList = new ArrayList<>();
    private static final ArrayList<CandyCommonCoupon> candyCommonCouponArrayList = new ArrayList<>();
    private static final ArrayList<CandyCouponCode> candyCouponCodeArrayList = new ArrayList<>();
    private static final ArrayList<CandyUserCoupon> candyUserCouponArrayList = new ArrayList<>();

    private static final PagedResult<AdamCollectVo> adamCollectVoPagedResult = new PagedResult<>();
    private static final PagedResult<AdamMemberOrderSimpleVo> adamMemberOrderSimpleVoPagedResult = new PagedResult<>();
    private static final PagedResult<AdamDisposedVo> adamDisposedVoPagedResult = new PagedResult<>();
    private static final PagedResult<AdamDisposedUserVo> adamDisposedUserVoPagedResult = new PagedResult<>();
    private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>();
    private static final ArrayList<KylinApiCameraDevicesVo> kylinApiCameraDevicesVoArrayList = new ArrayList<>();
    private static final ArrayList<SellDataOneVO> sellDataOneVOArrayList = new ArrayList<>();
    private static final ArrayList<GoblinNftExActivityVo> goblinNftExActivityVoArrayList = new ArrayList<>();
    private static final ArrayList<GoblinNftExCodeVo> goblinNftExCodeVoArrayList = new ArrayList<>();
    private static final ArrayList<GoblinNftSkuVo> goblinNftSkuVoArrayList = new ArrayList<>();
    private static final ArrayList<ActivityExcelVo> activityExcelVoArrayList = new ArrayList<>();
    private static final ArrayList<CodeExcelVo> codeExcelVoArrayList = new ArrayList<>();
    private static final ArrayList<GoblinNftExCodeTaskRelation> goblinNftExCodeTaskRelationArrayList = new ArrayList<>();
    private static final ArrayList<GoblinNftExCodeTask> goblinNftExCodeTaskArrayList = new ArrayList<>();
    private static final ArrayList<GoblinStoreMarketDto> goblinStoreMarketDtoArrayList = new ArrayList<>();
    private static final ArrayList<GoblinNftExCode> goblinNftExCodeArrayList = new ArrayList<>();
    private static final ArrayList<GoblinGoodsSkuInfoVo> goblinGoodsSkuInfoVo = new ArrayList<>();
    private static final ArrayList<GoblinNftTransferOrder> goblinNftTransferOrders = new ArrayList<>();
    private static final ArrayList<GoblinUserDigitalArtwork> goblinUserDigitalArtworks = new ArrayList<>();

    public static ArrayList<SellDataOneVO> getSellDataOneVOArrayList() {
        return (ArrayList<SellDataOneVO>) sellDataOneVOArrayList.clone();
    }

    public static ArrayList<GoblinGoodsSkuInfoVo> goblinGoodsSkuInfoVo() {
        return (ArrayList<GoblinGoodsSkuInfoVo>) goblinGoodsSkuInfoVo.clone();
    }

    public static ArrayList<AdamTagParentVo> getAdamTagParentVoArrayList() {
        return (ArrayList<AdamTagParentVo>) adamTagParentVoArrayList.clone();
    }

    public static ArrayList<AdamTagVo> getAdamTagVoArrayList() {
        return (ArrayList<AdamTagVo>) adamTagVoArrayList.clone();
    }

    public static ArrayList<AdamMemberOrderSimpleVo> getAdamMemberOrderSimpleVoArrayList() {
        return (ArrayList<AdamMemberOrderSimpleVo>) adamMemberOrderSimpleVoArrayList.clone();
    }

    public static ArrayList<AdamThirdPartInfoVo> getAdamThirdPartInfoVoArrayList() {
        return (ArrayList<AdamThirdPartInfoVo>) adamThirdPartInfoVoArrayList.clone();
    }

    public static ArrayList<AdamEntersVo> getAdamEntersVoArrayList() {
        return (ArrayList<AdamEntersVo>) adamEntersVoArrayList.clone();
    }

    public static ArrayList<AdamAddressesVo> getAdamAddressesVoArrayList() {
        return (ArrayList<AdamAddressesVo>) adamAddressesVoArrayList.clone();
    }

    public static ArrayList<AdamMemberOrderVo> getAdamMemberOrderVoArrayList() {
        return (ArrayList<AdamMemberOrderVo>) adamMemberOrderVoArrayList.clone();
    }

    public static ArrayList<AdamProPerformMarkVo> getAdamProPerformMarkVoArrayList() {
        return (ArrayList<AdamProPerformMarkVo>) adamProPerformMarkVoArrayList.clone();
    }

    public static ArrayList<CandyCommonCoupon> getCandyCommonCouponArrayList() {
        return (ArrayList<CandyCommonCoupon>) candyCommonCouponArrayList.clone();
    }

    public static ArrayList<CandyCouponCode> getCandyCouponCodeArrayList() {
        return (ArrayList<CandyCouponCode>) candyCouponCodeArrayList.clone();
    }

    public static ArrayList<CandyUserCoupon> getCandyUserCouponArrayList() {
        return (ArrayList<CandyUserCoupon>) candyUserCouponArrayList.clone();
    }

    public static PagedResult<AdamCollectVo> getAdamCollectVoPagedResult() {
        return adamCollectVoPagedResult.clone();
    }

    public static PagedResult<AdamMemberOrderSimpleVo> getAdamMemberOrderSimpleVoPagedResult() {
        return adamMemberOrderSimpleVoPagedResult.clone();
    }

    public static PagedResult<AdamDisposedVo> getAdamDisposedVoPagedResult() {
        return adamDisposedVoPagedResult.clone();
    }

    public static PagedResult<AdamDisposedUserVo> getAdamDisposedUserVoPagedResult() {
        return adamDisposedUserVoPagedResult.clone();
    }

    public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() {
        return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone();
    }

    public static ArrayList<GoblinStoreMarketDto> getGoblinStoreMarketDtoArrayList() {
        return (ArrayList<GoblinStoreMarketDto>) goblinStoreMarketDtoArrayList.clone();
    }

    public static ArrayList<KylinApiCameraDevicesVo> getKylinApiCameraDevicesVoArrayList() {
        return (ArrayList<KylinApiCameraDevicesVo>) kylinApiCameraDevicesVoArrayList.clone();
    }

    public static ArrayList<GoblinNftExActivityVo> getGoblinNftExActivityVoArrayList() {
        return (ArrayList<GoblinNftExActivityVo>) goblinNftExActivityVoArrayList.clone();
    }

    public static ArrayList<GoblinNftExCodeVo> getGoblinNftExCodeVoArrayList() {
        return (ArrayList<GoblinNftExCodeVo>) goblinNftExCodeVoArrayList.clone();
    }

    public static ArrayList<GoblinNftSkuVo> getGoblinNftSkuVoArrayList() {
        return (ArrayList<GoblinNftSkuVo>) goblinNftSkuVoArrayList.clone();
    }

    public static ArrayList<ActivityExcelVo> getActivityExcelVoArrayList() {
        return (ArrayList<ActivityExcelVo>) activityExcelVoArrayList.clone();
    }

    public static ArrayList<CodeExcelVo> getCodeExcelVoArrayList() {
        return (ArrayList<CodeExcelVo>) codeExcelVoArrayList.clone();
    }

    public static ArrayList<GoblinNftExCodeTaskRelation> getGoblinNftExCodeTaskRelationArrayList() {
        return (ArrayList<GoblinNftExCodeTaskRelation>) goblinNftExCodeTaskRelationArrayList.clone();
    }

    public static ArrayList<GoblinNftExCodeTask> getGoblinNftExCodeTaskArrayList() {
        return (ArrayList<GoblinNftExCodeTask>) goblinNftExCodeTaskArrayList.clone();
    }

    public static ArrayList<GoblinNftExCode> getGoblinNftExCodeArrayList(){
        return (ArrayList<GoblinNftExCode>) goblinNftExCodeArrayList.clone();
    }

    public static ArrayList<GoblinNftTransferOrder> getGoblinNftTransferOrderArrayList(){
        return (ArrayList<GoblinNftTransferOrder>) goblinNftTransferOrders.clone();
    }
}
