/*
 * Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

package com.amazonaws.services.geo.model;

import java.io.Serializable;

/**
 * <p>
 * A summary of the request sent by using
 * <code>SearchPlaceIndexForSuggestions</code>.
 * </p>
 */
public class SearchPlaceIndexForSuggestionsSummary implements Serializable {
    /**
     * <p>
     * Contains the coordinates for the optional bias position specified in the
     * request.
     * </p>
     * <p>
     * This parameter contains a pair of numbers. The first number represents
     * the X coordinate, or longitude; the second number represents the Y
     * coordinate, or latitude.
     * </p>
     * <p>
     * For example, <code>[-123.1174, 49.2847]</code> represents the position
     * with longitude <code>-123.1174</code> and latitude <code>49.2847</code>.
     * </p>
     */
    private java.util.List<Double> biasPosition;

    /**
     * <p>
     * The geospatial data provider attached to the place index resource
     * specified in the request. Values can be one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * Esri
     * </p>
     * </li>
     * <li>
     * <p>
     * Grab
     * </p>
     * </li>
     * <li>
     * <p>
     * Here
     * </p>
     * </li>
     * </ul>
     * <p>
     * For more information about data providers, see <a href=
     * "https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html"
     * >Amazon Location Service data providers</a>.
     * </p>
     */
    private String dataSource;

    /**
     * <p>
     * Contains the coordinates for the optional bounding box specified in the
     * request.
     * </p>
     */
    private java.util.List<Double> filterBBox;

    /**
     * <p>
     * The optional category filter specified in the request.
     * </p>
     */
    private java.util.List<String> filterCategories;

    /**
     * <p>
     * Contains the optional country filter specified in the request.
     * </p>
     */
    private java.util.List<String> filterCountries;

    /**
     * <p>
     * The preferred language used to return results. Matches the language in
     * the request. The value is a valid <a
     * href="https://tools.ietf.org/search/bcp47">BCP 47</a> language tag, for
     * example, <code>en</code> for English.
     * </p>
     * <p>
     * <b>Constraints:</b><br/>
     * <b>Length: </b>2 - 35<br/>
     */
    private String language;

    /**
     * <p>
     * Contains the optional result count limit specified in the request.
     * </p>
     */
    private Integer maxResults;

    /**
     * <p>
     * The free-form partial text input specified in the request.
     * </p>
     */
    private String text;

    /**
     * <p>
     * Contains the coordinates for the optional bias position specified in the
     * request.
     * </p>
     * <p>
     * This parameter contains a pair of numbers. The first number represents
     * the X coordinate, or longitude; the second number represents the Y
     * coordinate, or latitude.
     * </p>
     * <p>
     * For example, <code>[-123.1174, 49.2847]</code> represents the position
     * with longitude <code>-123.1174</code> and latitude <code>49.2847</code>.
     * </p>
     *
     * @return <p>
     *         Contains the coordinates for the optional bias position specified
     *         in the request.
     *         </p>
     *         <p>
     *         This parameter contains a pair of numbers. The first number
     *         represents the X coordinate, or longitude; the second number
     *         represents the Y coordinate, or latitude.
     *         </p>
     *         <p>
     *         For example, <code>[-123.1174, 49.2847]</code> represents the
     *         position with longitude <code>-123.1174</code> and latitude
     *         <code>49.2847</code>.
     *         </p>
     */
    public java.util.List<Double> getBiasPosition() {
        return biasPosition;
    }

    /**
     * <p>
     * Contains the coordinates for the optional bias position specified in the
     * request.
     * </p>
     * <p>
     * This parameter contains a pair of numbers. The first number represents
     * the X coordinate, or longitude; the second number represents the Y
     * coordinate, or latitude.
     * </p>
     * <p>
     * For example, <code>[-123.1174, 49.2847]</code> represents the position
     * with longitude <code>-123.1174</code> and latitude <code>49.2847</code>.
     * </p>
     *
     * @param biasPosition <p>
     *            Contains the coordinates for the optional bias position
     *            specified in the request.
     *            </p>
     *            <p>
     *            This parameter contains a pair of numbers. The first number
     *            represents the X coordinate, or longitude; the second number
     *            represents the Y coordinate, or latitude.
     *            </p>
     *            <p>
     *            For example, <code>[-123.1174, 49.2847]</code> represents the
     *            position with longitude <code>-123.1174</code> and latitude
     *            <code>49.2847</code>.
     *            </p>
     */
    public void setBiasPosition(java.util.Collection<Double> biasPosition) {
        if (biasPosition == null) {
            this.biasPosition = null;
            return;
        }

        this.biasPosition = new java.util.ArrayList<Double>(biasPosition);
    }

    /**
     * <p>
     * Contains the coordinates for the optional bias position specified in the
     * request.
     * </p>
     * <p>
     * This parameter contains a pair of numbers. The first number represents
     * the X coordinate, or longitude; the second number represents the Y
     * coordinate, or latitude.
     * </p>
     * <p>
     * For example, <code>[-123.1174, 49.2847]</code> represents the position
     * with longitude <code>-123.1174</code> and latitude <code>49.2847</code>.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param biasPosition <p>
     *            Contains the coordinates for the optional bias position
     *            specified in the request.
     *            </p>
     *            <p>
     *            This parameter contains a pair of numbers. The first number
     *            represents the X coordinate, or longitude; the second number
     *            represents the Y coordinate, or latitude.
     *            </p>
     *            <p>
     *            For example, <code>[-123.1174, 49.2847]</code> represents the
     *            position with longitude <code>-123.1174</code> and latitude
     *            <code>49.2847</code>.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withBiasPosition(Double... biasPosition) {
        if (getBiasPosition() == null) {
            this.biasPosition = new java.util.ArrayList<Double>(biasPosition.length);
        }
        for (Double value : biasPosition) {
            this.biasPosition.add(value);
        }
        return this;
    }

    /**
     * <p>
     * Contains the coordinates for the optional bias position specified in the
     * request.
     * </p>
     * <p>
     * This parameter contains a pair of numbers. The first number represents
     * the X coordinate, or longitude; the second number represents the Y
     * coordinate, or latitude.
     * </p>
     * <p>
     * For example, <code>[-123.1174, 49.2847]</code> represents the position
     * with longitude <code>-123.1174</code> and latitude <code>49.2847</code>.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param biasPosition <p>
     *            Contains the coordinates for the optional bias position
     *            specified in the request.
     *            </p>
     *            <p>
     *            This parameter contains a pair of numbers. The first number
     *            represents the X coordinate, or longitude; the second number
     *            represents the Y coordinate, or latitude.
     *            </p>
     *            <p>
     *            For example, <code>[-123.1174, 49.2847]</code> represents the
     *            position with longitude <code>-123.1174</code> and latitude
     *            <code>49.2847</code>.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withBiasPosition(
            java.util.Collection<Double> biasPosition) {
        setBiasPosition(biasPosition);
        return this;
    }

    /**
     * <p>
     * The geospatial data provider attached to the place index resource
     * specified in the request. Values can be one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * Esri
     * </p>
     * </li>
     * <li>
     * <p>
     * Grab
     * </p>
     * </li>
     * <li>
     * <p>
     * Here
     * </p>
     * </li>
     * </ul>
     * <p>
     * For more information about data providers, see <a href=
     * "https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html"
     * >Amazon Location Service data providers</a>.
     * </p>
     *
     * @return <p>
     *         The geospatial data provider attached to the place index resource
     *         specified in the request. Values can be one of the following:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         Esri
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         Grab
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         Here
     *         </p>
     *         </li>
     *         </ul>
     *         <p>
     *         For more information about data providers, see <a href=
     *         "https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html"
     *         >Amazon Location Service data providers</a>.
     *         </p>
     */
    public String getDataSource() {
        return dataSource;
    }

    /**
     * <p>
     * The geospatial data provider attached to the place index resource
     * specified in the request. Values can be one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * Esri
     * </p>
     * </li>
     * <li>
     * <p>
     * Grab
     * </p>
     * </li>
     * <li>
     * <p>
     * Here
     * </p>
     * </li>
     * </ul>
     * <p>
     * For more information about data providers, see <a href=
     * "https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html"
     * >Amazon Location Service data providers</a>.
     * </p>
     *
     * @param dataSource <p>
     *            The geospatial data provider attached to the place index
     *            resource specified in the request. Values can be one of the
     *            following:
     *            </p>
     *            <ul>
     *            <li>
     *            <p>
     *            Esri
     *            </p>
     *            </li>
     *            <li>
     *            <p>
     *            Grab
     *            </p>
     *            </li>
     *            <li>
     *            <p>
     *            Here
     *            </p>
     *            </li>
     *            </ul>
     *            <p>
     *            For more information about data providers, see <a href=
     *            "https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html"
     *            >Amazon Location Service data providers</a>.
     *            </p>
     */
    public void setDataSource(String dataSource) {
        this.dataSource = dataSource;
    }

    /**
     * <p>
     * The geospatial data provider attached to the place index resource
     * specified in the request. Values can be one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * Esri
     * </p>
     * </li>
     * <li>
     * <p>
     * Grab
     * </p>
     * </li>
     * <li>
     * <p>
     * Here
     * </p>
     * </li>
     * </ul>
     * <p>
     * For more information about data providers, see <a href=
     * "https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html"
     * >Amazon Location Service data providers</a>.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param dataSource <p>
     *            The geospatial data provider attached to the place index
     *            resource specified in the request. Values can be one of the
     *            following:
     *            </p>
     *            <ul>
     *            <li>
     *            <p>
     *            Esri
     *            </p>
     *            </li>
     *            <li>
     *            <p>
     *            Grab
     *            </p>
     *            </li>
     *            <li>
     *            <p>
     *            Here
     *            </p>
     *            </li>
     *            </ul>
     *            <p>
     *            For more information about data providers, see <a href=
     *            "https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html"
     *            >Amazon Location Service data providers</a>.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withDataSource(String dataSource) {
        this.dataSource = dataSource;
        return this;
    }

    /**
     * <p>
     * Contains the coordinates for the optional bounding box specified in the
     * request.
     * </p>
     *
     * @return <p>
     *         Contains the coordinates for the optional bounding box specified
     *         in the request.
     *         </p>
     */
    public java.util.List<Double> getFilterBBox() {
        return filterBBox;
    }

    /**
     * <p>
     * Contains the coordinates for the optional bounding box specified in the
     * request.
     * </p>
     *
     * @param filterBBox <p>
     *            Contains the coordinates for the optional bounding box
     *            specified in the request.
     *            </p>
     */
    public void setFilterBBox(java.util.Collection<Double> filterBBox) {
        if (filterBBox == null) {
            this.filterBBox = null;
            return;
        }

        this.filterBBox = new java.util.ArrayList<Double>(filterBBox);
    }

    /**
     * <p>
     * Contains the coordinates for the optional bounding box specified in the
     * request.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param filterBBox <p>
     *            Contains the coordinates for the optional bounding box
     *            specified in the request.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withFilterBBox(Double... filterBBox) {
        if (getFilterBBox() == null) {
            this.filterBBox = new java.util.ArrayList<Double>(filterBBox.length);
        }
        for (Double value : filterBBox) {
            this.filterBBox.add(value);
        }
        return this;
    }

    /**
     * <p>
     * Contains the coordinates for the optional bounding box specified in the
     * request.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param filterBBox <p>
     *            Contains the coordinates for the optional bounding box
     *            specified in the request.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withFilterBBox(
            java.util.Collection<Double> filterBBox) {
        setFilterBBox(filterBBox);
        return this;
    }

    /**
     * <p>
     * The optional category filter specified in the request.
     * </p>
     *
     * @return <p>
     *         The optional category filter specified in the request.
     *         </p>
     */
    public java.util.List<String> getFilterCategories() {
        return filterCategories;
    }

    /**
     * <p>
     * The optional category filter specified in the request.
     * </p>
     *
     * @param filterCategories <p>
     *            The optional category filter specified in the request.
     *            </p>
     */
    public void setFilterCategories(java.util.Collection<String> filterCategories) {
        if (filterCategories == null) {
            this.filterCategories = null;
            return;
        }

        this.filterCategories = new java.util.ArrayList<String>(filterCategories);
    }

    /**
     * <p>
     * The optional category filter specified in the request.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param filterCategories <p>
     *            The optional category filter specified in the request.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withFilterCategories(String... filterCategories) {
        if (getFilterCategories() == null) {
            this.filterCategories = new java.util.ArrayList<String>(filterCategories.length);
        }
        for (String value : filterCategories) {
            this.filterCategories.add(value);
        }
        return this;
    }

    /**
     * <p>
     * The optional category filter specified in the request.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param filterCategories <p>
     *            The optional category filter specified in the request.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withFilterCategories(
            java.util.Collection<String> filterCategories) {
        setFilterCategories(filterCategories);
        return this;
    }

    /**
     * <p>
     * Contains the optional country filter specified in the request.
     * </p>
     *
     * @return <p>
     *         Contains the optional country filter specified in the request.
     *         </p>
     */
    public java.util.List<String> getFilterCountries() {
        return filterCountries;
    }

    /**
     * <p>
     * Contains the optional country filter specified in the request.
     * </p>
     *
     * @param filterCountries <p>
     *            Contains the optional country filter specified in the request.
     *            </p>
     */
    public void setFilterCountries(java.util.Collection<String> filterCountries) {
        if (filterCountries == null) {
            this.filterCountries = null;
            return;
        }

        this.filterCountries = new java.util.ArrayList<String>(filterCountries);
    }

    /**
     * <p>
     * Contains the optional country filter specified in the request.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param filterCountries <p>
     *            Contains the optional country filter specified in the request.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withFilterCountries(String... filterCountries) {
        if (getFilterCountries() == null) {
            this.filterCountries = new java.util.ArrayList<String>(filterCountries.length);
        }
        for (String value : filterCountries) {
            this.filterCountries.add(value);
        }
        return this;
    }

    /**
     * <p>
     * Contains the optional country filter specified in the request.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param filterCountries <p>
     *            Contains the optional country filter specified in the request.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withFilterCountries(
            java.util.Collection<String> filterCountries) {
        setFilterCountries(filterCountries);
        return this;
    }

    /**
     * <p>
     * The preferred language used to return results. Matches the language in
     * the request. The value is a valid <a
     * href="https://tools.ietf.org/search/bcp47">BCP 47</a> language tag, for
     * example, <code>en</code> for English.
     * </p>
     * <p>
     * <b>Constraints:</b><br/>
     * <b>Length: </b>2 - 35<br/>
     *
     * @return <p>
     *         The preferred language used to return results. Matches the
     *         language in the request. The value is a valid <a
     *         href="https://tools.ietf.org/search/bcp47">BCP 47</a> language
     *         tag, for example, <code>en</code> for English.
     *         </p>
     */
    public String getLanguage() {
        return language;
    }

    /**
     * <p>
     * The preferred language used to return results. Matches the language in
     * the request. The value is a valid <a
     * href="https://tools.ietf.org/search/bcp47">BCP 47</a> language tag, for
     * example, <code>en</code> for English.
     * </p>
     * <p>
     * <b>Constraints:</b><br/>
     * <b>Length: </b>2 - 35<br/>
     *
     * @param language <p>
     *            The preferred language used to return results. Matches the
     *            language in the request. The value is a valid <a
     *            href="https://tools.ietf.org/search/bcp47">BCP 47</a> language
     *            tag, for example, <code>en</code> for English.
     *            </p>
     */
    public void setLanguage(String language) {
        this.language = language;
    }

    /**
     * <p>
     * The preferred language used to return results. Matches the language in
     * the request. The value is a valid <a
     * href="https://tools.ietf.org/search/bcp47">BCP 47</a> language tag, for
     * example, <code>en</code> for English.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     * <p>
     * <b>Constraints:</b><br/>
     * <b>Length: </b>2 - 35<br/>
     *
     * @param language <p>
     *            The preferred language used to return results. Matches the
     *            language in the request. The value is a valid <a
     *            href="https://tools.ietf.org/search/bcp47">BCP 47</a> language
     *            tag, for example, <code>en</code> for English.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withLanguage(String language) {
        this.language = language;
        return this;
    }

    /**
     * <p>
     * Contains the optional result count limit specified in the request.
     * </p>
     *
     * @return <p>
     *         Contains the optional result count limit specified in the
     *         request.
     *         </p>
     */
    public Integer getMaxResults() {
        return maxResults;
    }

    /**
     * <p>
     * Contains the optional result count limit specified in the request.
     * </p>
     *
     * @param maxResults <p>
     *            Contains the optional result count limit specified in the
     *            request.
     *            </p>
     */
    public void setMaxResults(Integer maxResults) {
        this.maxResults = maxResults;
    }

    /**
     * <p>
     * Contains the optional result count limit specified in the request.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param maxResults <p>
     *            Contains the optional result count limit specified in the
     *            request.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withMaxResults(Integer maxResults) {
        this.maxResults = maxResults;
        return this;
    }

    /**
     * <p>
     * The free-form partial text input specified in the request.
     * </p>
     *
     * @return <p>
     *         The free-form partial text input specified in the request.
     *         </p>
     */
    public String getText() {
        return text;
    }

    /**
     * <p>
     * The free-form partial text input specified in the request.
     * </p>
     *
     * @param text <p>
     *            The free-form partial text input specified in the request.
     *            </p>
     */
    public void setText(String text) {
        this.text = text;
    }

    /**
     * <p>
     * The free-form partial text input specified in the request.
     * </p>
     * <p>
     * Returns a reference to this object so that method calls can be chained
     * together.
     *
     * @param text <p>
     *            The free-form partial text input specified in the request.
     *            </p>
     * @return A reference to this updated object so that method calls can be
     *         chained together.
     */
    public SearchPlaceIndexForSuggestionsSummary withText(String text) {
        this.text = text;
        return this;
    }

    /**
     * Returns a string representation of this object; useful for testing and
     * debugging.
     *
     * @return A string representation of this object.
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getBiasPosition() != null)
            sb.append("BiasPosition: " + getBiasPosition() + ",");
        if (getDataSource() != null)
            sb.append("DataSource: " + getDataSource() + ",");
        if (getFilterBBox() != null)
            sb.append("FilterBBox: " + getFilterBBox() + ",");
        if (getFilterCategories() != null)
            sb.append("FilterCategories: " + getFilterCategories() + ",");
        if (getFilterCountries() != null)
            sb.append("FilterCountries: " + getFilterCountries() + ",");
        if (getLanguage() != null)
            sb.append("Language: " + getLanguage() + ",");
        if (getMaxResults() != null)
            sb.append("MaxResults: " + getMaxResults() + ",");
        if (getText() != null)
            sb.append("Text: " + getText());
        sb.append("}");
        return sb.toString();
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;

        hashCode = prime * hashCode
                + ((getBiasPosition() == null) ? 0 : getBiasPosition().hashCode());
        hashCode = prime * hashCode + ((getDataSource() == null) ? 0 : getDataSource().hashCode());
        hashCode = prime * hashCode + ((getFilterBBox() == null) ? 0 : getFilterBBox().hashCode());
        hashCode = prime * hashCode
                + ((getFilterCategories() == null) ? 0 : getFilterCategories().hashCode());
        hashCode = prime * hashCode
                + ((getFilterCountries() == null) ? 0 : getFilterCountries().hashCode());
        hashCode = prime * hashCode + ((getLanguage() == null) ? 0 : getLanguage().hashCode());
        hashCode = prime * hashCode + ((getMaxResults() == null) ? 0 : getMaxResults().hashCode());
        hashCode = prime * hashCode + ((getText() == null) ? 0 : getText().hashCode());
        return hashCode;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;

        if (obj instanceof SearchPlaceIndexForSuggestionsSummary == false)
            return false;
        SearchPlaceIndexForSuggestionsSummary other = (SearchPlaceIndexForSuggestionsSummary) obj;

        if (other.getBiasPosition() == null ^ this.getBiasPosition() == null)
            return false;
        if (other.getBiasPosition() != null
                && other.getBiasPosition().equals(this.getBiasPosition()) == false)
            return false;
        if (other.getDataSource() == null ^ this.getDataSource() == null)
            return false;
        if (other.getDataSource() != null
                && other.getDataSource().equals(this.getDataSource()) == false)
            return false;
        if (other.getFilterBBox() == null ^ this.getFilterBBox() == null)
            return false;
        if (other.getFilterBBox() != null
                && other.getFilterBBox().equals(this.getFilterBBox()) == false)
            return false;
        if (other.getFilterCategories() == null ^ this.getFilterCategories() == null)
            return false;
        if (other.getFilterCategories() != null
                && other.getFilterCategories().equals(this.getFilterCategories()) == false)
            return false;
        if (other.getFilterCountries() == null ^ this.getFilterCountries() == null)
            return false;
        if (other.getFilterCountries() != null
                && other.getFilterCountries().equals(this.getFilterCountries()) == false)
            return false;
        if (other.getLanguage() == null ^ this.getLanguage() == null)
            return false;
        if (other.getLanguage() != null && other.getLanguage().equals(this.getLanguage()) == false)
            return false;
        if (other.getMaxResults() == null ^ this.getMaxResults() == null)
            return false;
        if (other.getMaxResults() != null
                && other.getMaxResults().equals(this.getMaxResults()) == false)
            return false;
        if (other.getText() == null ^ this.getText() == null)
            return false;
        if (other.getText() != null && other.getText().equals(this.getText()) == false)
            return false;
        return true;
    }
}