package com.liquidnet.service.slime.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.kylin.dto.vo.ticketSystem.CheckVo;
import com.liquidnet.service.slime.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<SlimeStationsVo> SLIME_STATIONS_VOS_ARRAY_LIST = new ArrayList<>();

    private static final ArrayList<SlimeFieldAppliesVo> SLIME_FIELD_APPLIES_VO_ARRAY_LIST = new ArrayList<>();
    private static final ArrayList<SlimeFieldCheckersVo> SLIME_FIELD_CHECKERS_VO_ARRAY_LIST = new ArrayList<>();

    private static final ArrayList<SlimeSponsorAppliesVo> SLIME_SPONSOR_APPLIES_VO_ARRAY_LIST = new ArrayList<>();

    private static final PagedResult<SlimeFieldsVo> slimeFieldsVoPagedResult = new PagedResult<>();

    private static final PagedResult<SlimeSponsorsVo> slimeSponsorsVoPagedResult = new PagedResult<>();

    private static final ArrayList<SlimeStationPerformanceVo> SLIME_STATION_PERFORMANCE_VO_ARRAY_LIST = new ArrayList<>();
    private static final ArrayList<SlimeStationTicketVo> SLIME_STATION_TICKET_VO_ARRAY_LIST = new ArrayList<>();
    private static final PagedResult<SlimeStationPerformanceVo> slimeStationPerformanceVoPagedResult = 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<SlimeAuthorizationPerformanceVo> permissionVoList = new ArrayList<>();
    private static final ArrayList<KylinTicketVo> kylinTicketVoArrayList = new ArrayList<>();
    private static final ArrayList<CheckVo> checkVoArrayList = new ArrayList<>();

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

    public static ArrayList<SlimeAuthorizationPerformanceVo> getPermissionVoList() {
        return (ArrayList<SlimeAuthorizationPerformanceVo>) 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<SlimeStationsVo> getSlimeStationsVosArrayList() {
        return (ArrayList<SlimeStationsVo>) SLIME_STATIONS_VOS_ARRAY_LIST.clone();
    }

    public static ArrayList<SlimeFieldAppliesVo> getSlimeFieldAppliesVoArrayList() {
        return (ArrayList<SlimeFieldAppliesVo>) SLIME_FIELD_APPLIES_VO_ARRAY_LIST.clone();
    }

    public static ArrayList<SlimeFieldCheckersVo> getSlimeFieldCheckersVoArrayList() {
        return (ArrayList<SlimeFieldCheckersVo>) SLIME_FIELD_CHECKERS_VO_ARRAY_LIST.clone();
    }

    public static PagedResult<SlimeFieldsVo> getSlimeFieldsVoPagedResult() {
        return slimeFieldsVoPagedResult.clone();
    }

    public static PagedResult<SlimeSponsorsVo> getSlimeSponsorsVoPagedResult() {
        return slimeSponsorsVoPagedResult.clone();
    }

    public static ArrayList<SlimeSponsorAppliesVo> getSlimeSponsorAppliesVoArrayList() {
        return (ArrayList<SlimeSponsorAppliesVo>) SLIME_SPONSOR_APPLIES_VO_ARRAY_LIST.clone();
    }

    public static ArrayList<SlimeStationPerformanceVo> getSlimeStationPerformanceVoArrayList() {
        return (ArrayList<SlimeStationPerformanceVo>) SLIME_STATION_PERFORMANCE_VO_ARRAY_LIST.clone();
    }

    public static ArrayList<SlimeStationTicketVo> getSlimeStationTicketVoArrayList() {
        return (ArrayList<SlimeStationTicketVo>) SLIME_STATION_TICKET_VO_ARRAY_LIST.clone();
    }

    public static PagedResult<SlimeStationPerformanceVo> getSlimeStationPerformanceVoPagedResult() {
        return slimeStationPerformanceVoPagedResult.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();
    }

    public static ArrayList<CheckVo> getCheckVoArrayList() {
        return (ArrayList<CheckVo>) checkVoArrayList.clone();
    }
}
