Source: map/filters/builders/AbstractBuilder.js

/**
 * Represents an abstract builder for creating filter parameters.
 * @memberof vef.map.filters.builders
 */
class AbstractBuilder {

    static getFilterParams(harmonizedFilters) {
        const filters_and = [];
        for (let key in harmonizedFilters) {
            const filters_or = [];
            for (let i = 0; i < harmonizedFilters[key].length; ++i) {
                const values = harmonizedFilters[key][i];
                switch (values[0]) {
                    case "bt":
                        filters_or.push(this.bt(key, values[1], values[2]));
                        break;
                    case "eq":
                        filters_or.push(this.eq(key, values[1]));
                        break;
                    case "like":
                        filters_or.push(this.like(key, values[1]));
                        break;
                    case "gt":
                        filters_or.push(this.gt(key, values[1]));
                        break;
                    case "gteq":
                        filters_or.push(this.gteq(key, values[1]));
                        break;
                    case "lt":
                        filters_or.push(this.lt(key, values[1]));
                        break;
                    case "lteq":
                        filters_or.push(this.lteq(key, values[1]));
                        break;
                    case "bbox":
                        filters_or.push(this.bbox(key, values[1], values[2], values[3], values[4]));
                        break;
                    case "null":
                        filters_or.push(this.null(key));
                        break;
                }
            }
            filters_and.push(this.or(filters_or));
        }

        return this.and(filters_and);
    }

    static bt(property, begin, end) { }
    static eq(property, value) { }
    static like(property, value) { }
    static gt(property, value) { }
    static gteq(property, value) { }
    static lt(property, value) { }
    static lteq(property, value) { }
    static bbox(key, latMin, lngMin, latMax, lngMax) { }
    static null(property) { }
    static or(filters) { }
    static and(filters) { }
}

export { AbstractBuilder };