package com.jeeplus.database.datamodel.service.mapstruct;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jeeplus.database.datamodel.domain.DataMeta;
import com.jeeplus.database.datamodel.service.dto.DataMetaDTO;
import com.jeeplus.database.datamodel.service.dto.DataSetDTO;
import com.jeeplus.sys.service.dto.UserDTO;
import org.springframework.stereotype.Component;

import javax.annotation.Generated;
import java.util.ArrayList;
import java.util.List;

@Generated(
        value = "org.mapstruct.ap.MappingProcessor",
        date = "2022-08-18T16:46:53+0800",
        comments = "version: 1.4.1.Final, compiler: javac, environment: Java 1.8.0_221 (Oracle Corporation)"
)
@Component
public class DataMetaWrapperImpl implements DataMetaWrapper {

    @Override
    public List <DataMeta> toEntity(List <DataMetaDTO> arg0) {
        if ( arg0 == null ) {
            return null;
        }

        List <DataMeta> list = new ArrayList <DataMeta> ( arg0.size ( ) );
        for (DataMetaDTO dataMetaDTO : arg0) {
            list.add ( toEntity ( dataMetaDTO ) );
        }

        return list;
    }

    @Override
    public List <DataMetaDTO> toDTO(List <DataMeta> arg0) {
        if ( arg0 == null ) {
            return null;
        }

        List <DataMetaDTO> list = new ArrayList <DataMetaDTO> ( arg0.size ( ) );
        for (DataMeta dataMeta : arg0) {
            list.add ( toDTO ( dataMeta ) );
        }

        return list;
    }

    @Override
    public Page <DataMeta> toEntity(Page <DataMetaDTO> arg0) {
        if ( arg0 == null ) {
            return null;
        }

        Page <DataMeta> page = new Page <DataMeta> ( );

        page.setPages ( arg0.getPages ( ) );
        page.setRecords ( toEntity ( arg0.getRecords ( ) ) );
        page.setTotal ( arg0.getTotal ( ) );
        page.setSize ( arg0.getSize ( ) );
        page.setCurrent ( arg0.getCurrent ( ) );
        page.setSearchCount ( arg0.isSearchCount ( ) );
        page.setOptimizeCountSql ( arg0.isOptimizeCountSql ( ) );
        page.setHitCount ( arg0.isHitCount ( ) );
        List <OrderItem> list1 = arg0.getOrders ( );
        if ( list1 != null ) {
            page.setOrders ( new ArrayList <OrderItem> ( list1 ) );
        }
        page.setCountId ( arg0.getCountId ( ) );
        page.setMaxLimit ( arg0.getMaxLimit ( ) );

        return page;
    }

    @Override
    public Page <DataMetaDTO> toDTO(Page <DataMeta> arg0) {
        if ( arg0 == null ) {
            return null;
        }

        Page <DataMetaDTO> page = new Page <DataMetaDTO> ( );

        page.setPages ( arg0.getPages ( ) );
        page.setRecords ( toDTO ( arg0.getRecords ( ) ) );
        page.setTotal ( arg0.getTotal ( ) );
        page.setSize ( arg0.getSize ( ) );
        page.setCurrent ( arg0.getCurrent ( ) );
        page.setSearchCount ( arg0.isSearchCount ( ) );
        page.setOptimizeCountSql ( arg0.isOptimizeCountSql ( ) );
        page.setHitCount ( arg0.isHitCount ( ) );
        List <OrderItem> list1 = arg0.getOrders ( );
        if ( list1 != null ) {
            page.setOrders ( new ArrayList <OrderItem> ( list1 ) );
        }
        page.setCountId ( arg0.getCountId ( ) );
        page.setMaxLimit ( arg0.getMaxLimit ( ) );

        return page;
    }

    @Override
    public DataMeta toEntity(DataMetaDTO dto) {
        if ( dto == null ) {
            return null;
        }

        DataMeta dataMeta = new DataMeta ( );

        dataMeta.setDataSetId ( dtoDataSetDTOId ( dto ) );
        dataMeta.setCreateById ( dtoCreateById ( dto ) );
        dataMeta.setUpdateById ( dtoUpdateById ( dto ) );
        dataMeta.setId ( dto.getId ( ) );
        dataMeta.setCreateTime ( dto.getCreateTime ( ) );
        dataMeta.setUpdateTime ( dto.getUpdateTime ( ) );
        dataMeta.setDelFlag ( dto.getDelFlag ( ) );
        dataMeta.setName ( dto.getName ( ) );
        dataMeta.setLabel ( dto.getLabel ( ) );
        dataMeta.setType ( dto.getType ( ) );
        dataMeta.setIsNeed ( dto.getIsNeed ( ) );
        dataMeta.setSort ( dto.getSort ( ) );

        return dataMeta;
    }

    @Override
    public DataMetaDTO toDTO(DataMeta entity) {
        if ( entity == null ) {
            return null;
        }

        DataMetaDTO dataMetaDTO = new DataMetaDTO ( );

        dataMetaDTO.setDataSetDTO ( dataMetaToDataSetDTO ( entity ) );
        dataMetaDTO.setCreateBy ( dataMetaToUserDTO ( entity ) );
        dataMetaDTO.setUpdateBy ( dataMetaToUserDTO1 ( entity ) );
        dataMetaDTO.setId ( entity.getId ( ) );
        dataMetaDTO.setCreateTime ( entity.getCreateTime ( ) );
        dataMetaDTO.setUpdateTime ( entity.getUpdateTime ( ) );
        dataMetaDTO.setDelFlag ( entity.getDelFlag ( ) );
        dataMetaDTO.setName ( entity.getName ( ) );
        dataMetaDTO.setLabel ( entity.getLabel ( ) );
        dataMetaDTO.setType ( entity.getType ( ) );
        dataMetaDTO.setIsNeed ( entity.getIsNeed ( ) );
        dataMetaDTO.setSort ( entity.getSort ( ) );

        return dataMetaDTO;
    }

    private String dtoDataSetDTOId(DataMetaDTO dataMetaDTO) {
        if ( dataMetaDTO == null ) {
            return null;
        }
        DataSetDTO dataSetDTO = dataMetaDTO.getDataSetDTO ( );
        if ( dataSetDTO == null ) {
            return null;
        }
        String id = dataSetDTO.getId ( );
        if ( id == null ) {
            return null;
        }
        return id;
    }

    private String dtoCreateById(DataMetaDTO dataMetaDTO) {
        if ( dataMetaDTO == null ) {
            return null;
        }
        UserDTO createBy = dataMetaDTO.getCreateBy ( );
        if ( createBy == null ) {
            return null;
        }
        String id = createBy.getId ( );
        if ( id == null ) {
            return null;
        }
        return id;
    }

    private String dtoUpdateById(DataMetaDTO dataMetaDTO) {
        if ( dataMetaDTO == null ) {
            return null;
        }
        UserDTO updateBy = dataMetaDTO.getUpdateBy ( );
        if ( updateBy == null ) {
            return null;
        }
        String id = updateBy.getId ( );
        if ( id == null ) {
            return null;
        }
        return id;
    }

    protected DataSetDTO dataMetaToDataSetDTO(DataMeta dataMeta) {
        if ( dataMeta == null ) {
            return null;
        }

        DataSetDTO dataSetDTO = new DataSetDTO ( );

        dataSetDTO.setId ( dataMeta.getDataSetId ( ) );

        return dataSetDTO;
    }

    protected UserDTO dataMetaToUserDTO(DataMeta dataMeta) {
        if ( dataMeta == null ) {
            return null;
        }

        UserDTO userDTO = new UserDTO ( );

        userDTO.setId ( dataMeta.getCreateById ( ) );

        return userDTO;
    }

    protected UserDTO dataMetaToUserDTO1(DataMeta dataMeta) {
        if ( dataMeta == null ) {
            return null;
        }

        UserDTO userDTO = new UserDTO ( );

        userDTO.setId ( dataMeta.getUpdateById ( ) );

        return userDTO;
    }
}
