Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package com.spice.profitmandi.dao.model;

import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class TodayOfferGroupKey {

    private final List<Integer> catalogOfferIds;
    private final List<Integer> schemeOfferIds;
    private final List<Integer> customerOfferIds;
    private final List<Integer> webOfferIds;

    public TodayOfferGroupKey(TodayOfferModel m) {

        this.catalogOfferIds = safe(m.getTodayCatalogOfferModels())
                .stream()
                .map(TodayCatalogOfferModel::getOfferId)
                .sorted()
                .collect(Collectors.toList());

        this.schemeOfferIds = safe(m.getSchemeOfferModels())
                .stream()
                .map(SchemeOfferModel::getSchemeId)
                .sorted()
                .collect(Collectors.toList());

        this.customerOfferIds = safe(m.getCustomerOfferItemModels())
                .stream()
                .map(CustomerOfferItemModel::getOfferId)
                .sorted()
                .collect(Collectors.toList());

        this.webOfferIds = safe(m.getWebOfferModels())
                .stream()
                .map(WebOfferModel::getId)
                .sorted()
                .collect(Collectors.toList());
    }

    private <T> List<T> safe(List<T> list) {
        return list == null ? Collections.emptyList() : list;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof TodayOfferGroupKey)) return false;
        TodayOfferGroupKey that = (TodayOfferGroupKey) o;
        return Objects.equals(catalogOfferIds, that.catalogOfferIds)
                && Objects.equals(schemeOfferIds, that.schemeOfferIds)
                && Objects.equals(customerOfferIds, that.customerOfferIds)
                && Objects.equals(webOfferIds, that.webOfferIds);
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                catalogOfferIds,
                schemeOfferIds,
                customerOfferIds,
                webOfferIds
        );
    }
}