package com.liquidnet.service.merchant.util;

import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.kylin.dao.PerformancePartnerListDao;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformancePartnerListVo;
import com.liquidnet.service.kylin.dto.vo.partner.TicketTimesTicketCreatePartnerVo;
import com.liquidnet.service.merchant.dto.vo.*;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.WriteModel;
import org.bson.Document;

import java.util.ArrayList;

public class ObjectUtil {
    private static final ArrayList<MerchantStationsVo> merchantStationsVosArrayList = new ArrayList<>();

    private static final ArrayList<MerchantFieldAppliesVo> merchantFieldAppliesVoArrayList = new ArrayList<>();
    private static final ArrayList<MerchantFieldCheckersVo> merchantFieldCheckersVoArrayList = new ArrayList<>();

    private static final ArrayList<MerchantSponsorAppliesVo> merchantSponsorAppliesVoArrayList = new ArrayList<>();

    private static final PagedResult<MerchantFieldsVo> merchantFieldsVoPagedResult = new PagedResult<>();

    private static final PagedResult<MerchantSponsorsVo> merchantSponsorsVoPagedResult = new PagedResult<>();

    private static final ArrayList<MerchantStationPerformanceVo> merchantStationPerformanceVoArrayList = new ArrayList<>();
    private static final ArrayList<MerchantStationTicketVo> merchantStationTicketVoArrayList = new ArrayList<>();
    private static final PagedResult<MerchantStationPerformanceVo> merchantStationPerformanceVoPagedResult = new PagedResult<>();

    private static final BasicDBObject basicDBObject = new BasicDBObject();
    private static final ArrayList<WriteModel<Document>> writeModelDocumentArrayList = new ArrayList<>();


    private static final ArrayList<PerformancePartnerListDao> performancePartnerListDaoArrayList = new ArrayList<>();
    private static final ArrayList<TicketTimesTicketCreatePartnerVo> ticketTimesTicketCreatePartnerVoList = new ArrayList<>();
    private static final ArrayList<KylinPerformancePartnerListVo> performancePartnerListVo = new ArrayList<>();
    private static final ArrayList<MerchantAuthorizationPerformanceVo> permissionVoList = new ArrayList<>();
    private static final ArrayList<KylinTicketVo> kylinTicketVoArrayList = new ArrayList<>();

    public static ArrayList<PerformancePartnerListDao> getPerformancePartnerListDaoArrayList() {
        return (ArrayList<PerformancePartnerListDao>) performancePartnerListDaoArrayList.clone();
    }

    public static ArrayList<MerchantAuthorizationPerformanceVo> getPermissionVoList() {
        return (ArrayList<MerchantAuthorizationPerformanceVo>) permissionVoList.clone();
    }

    public static ArrayList<KylinPerformancePartnerListVo> getKylinPerformancePartnerListVo() {
        return (ArrayList<KylinPerformancePartnerListVo>) performancePartnerListVo.clone();
    }

    public static ArrayList<TicketTimesTicketCreatePartnerVo> getTicketTimesTicketCreatePartnerVoList() {
        return (ArrayList<TicketTimesTicketCreatePartnerVo>) ticketTimesTicketCreatePartnerVoList.clone();
    }

    public static ArrayList<MerchantStationsVo> getMerchantStationsVosArrayList() {
        return (ArrayList<MerchantStationsVo>) merchantStationsVosArrayList.clone();
    }

    public static ArrayList<MerchantFieldAppliesVo> getMerchantFieldAppliesVoArrayList() {
        return (ArrayList<MerchantFieldAppliesVo>) merchantFieldAppliesVoArrayList.clone();
    }

    public static ArrayList<MerchantFieldCheckersVo> getMerchantFieldCheckersVoArrayList() {
        return (ArrayList<MerchantFieldCheckersVo>) merchantFieldCheckersVoArrayList.clone();
    }

    public static PagedResult<MerchantFieldsVo> getMerchantFieldsVoPagedResult() {
        return merchantFieldsVoPagedResult.clone();
    }

    public static PagedResult<MerchantSponsorsVo> getMerchantSponsorsVoPagedResult() {
        return merchantSponsorsVoPagedResult.clone();
    }

    public static ArrayList<MerchantSponsorAppliesVo> getMerchantSponsorAppliesVoArrayList() {
        return (ArrayList<MerchantSponsorAppliesVo>) merchantSponsorAppliesVoArrayList.clone();
    }

    public static ArrayList<MerchantStationPerformanceVo> getMerchantStationPerformanceVoArrayList() {
        return (ArrayList<MerchantStationPerformanceVo>) merchantStationPerformanceVoArrayList.clone();
    }

    public static ArrayList<MerchantStationTicketVo> getMerchantStationTicketVoArrayList() {
        return (ArrayList<MerchantStationTicketVo>) merchantStationTicketVoArrayList.clone();
    }

    public static PagedResult<MerchantStationPerformanceVo> getMerchantStationPerformanceVoPagedResult() {
        return merchantStationPerformanceVoPagedResult.clone();
    }

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

    public static ArrayList<WriteModel<Document>> getWriteModelDocumentArrayList() {
        return (ArrayList<WriteModel<Document>>) writeModelDocumentArrayList.clone();
    }

    public static ArrayList<KylinTicketVo> getKylinTicketVoArrayList() {
        return (ArrayList<KylinTicketVo>) kylinTicketVoArrayList.clone();
    }
}
