All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.commercetools.sunrise.search.facetedsearch.AbstractFacetedSearchSelectorControllerComponent Maven / Gradle / Ivy

The newest version!
package com.commercetools.sunrise.search.facetedsearch;

import com.commercetools.sunrise.framework.components.controllers.ControllerComponent;
import com.commercetools.sunrise.framework.hooks.application.PageDataReadyHook;
import com.commercetools.sunrise.framework.viewmodels.PageData;
import com.commercetools.sunrise.search.facetedsearch.viewmodels.AbstractFacetSelectorListViewModelFactory;
import com.commercetools.sunrise.search.facetedsearch.viewmodels.WithFacetedSearchViewModel;
import io.sphere.sdk.models.Base;
import io.sphere.sdk.search.PagedSearchResult;

import javax.annotation.Nullable;

public abstract class AbstractFacetedSearchSelectorControllerComponent extends Base implements ControllerComponent, PageDataReadyHook {

    private final FacetedSearchFormSettingsList settings;
    private final AbstractFacetSelectorListViewModelFactory facetSelectorListViewModelFactory;

    protected AbstractFacetedSearchSelectorControllerComponent(final FacetedSearchFormSettingsList settings,
                                                               final AbstractFacetSelectorListViewModelFactory facetSelectorListViewModelFactory) {
        this.settings = settings;
        this.facetSelectorListViewModelFactory = facetSelectorListViewModelFactory;
    }

    protected final FacetedSearchFormSettingsList getSettings() {
        return settings;
    }

    @Nullable
    protected abstract PagedSearchResult getPagedSearchResult();

    @Override
    public void onPageDataReady(final PageData pageData) {
        final PagedSearchResult pagedSearchResult = getPagedSearchResult();
        if (pagedSearchResult != null && pageData.getContent() instanceof WithFacetedSearchViewModel) {
            final WithFacetedSearchViewModel content = (WithFacetedSearchViewModel) pageData.getContent();
            content.setFacets(facetSelectorListViewModelFactory.create(pagedSearchResult));
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy