io.druid.segment.filter.Filters.java Source code

Java tutorial

Introduction

Here is the source code for io.druid.segment.filter.Filters.java

Source

/*
 * Druid - a distributed column store.
 * Copyright 2012 - 2015 Metamarkets Group Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License 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 io.druid.segment.filter;

import com.google.common.base.Function;
import com.google.common.collect.Lists;
import io.druid.query.filter.AndDimFilter;
import io.druid.query.filter.DimFilter;
import io.druid.query.filter.ExtractionDimFilter;
import io.druid.query.filter.Filter;
import io.druid.query.filter.JavaScriptDimFilter;
import io.druid.query.filter.NotDimFilter;
import io.druid.query.filter.OrDimFilter;
import io.druid.query.filter.RegexDimFilter;
import io.druid.query.filter.SearchQueryDimFilter;
import io.druid.query.filter.SelectorDimFilter;
import io.druid.query.filter.SpatialDimFilter;

import javax.annotation.Nullable;
import java.util.List;

/**
 */
public class Filters {
    public static List<Filter> convertDimensionFilters(List<DimFilter> filters) {
        return Lists.transform(filters, new Function<DimFilter, Filter>() {
            @Override
            public Filter apply(@Nullable DimFilter input) {
                return convertDimensionFilters(input);
            }
        });
    }

    public static Filter convertDimensionFilters(DimFilter dimFilter) {
        if (dimFilter == null) {
            return null;
        }

        Filter filter = null;
        if (dimFilter instanceof AndDimFilter) {
            filter = new AndFilter(convertDimensionFilters(((AndDimFilter) dimFilter).getFields()));
        } else if (dimFilter instanceof OrDimFilter) {
            filter = new OrFilter(convertDimensionFilters(((OrDimFilter) dimFilter).getFields()));
        } else if (dimFilter instanceof NotDimFilter) {
            filter = new NotFilter(convertDimensionFilters(((NotDimFilter) dimFilter).getField()));
        } else if (dimFilter instanceof SelectorDimFilter) {
            final SelectorDimFilter selectorDimFilter = (SelectorDimFilter) dimFilter;

            filter = new SelectorFilter(selectorDimFilter.getDimension(), selectorDimFilter.getValue());
        } else if (dimFilter instanceof ExtractionDimFilter) {
            final ExtractionDimFilter extractionDimFilter = (ExtractionDimFilter) dimFilter;

            filter = new ExtractionFilter(extractionDimFilter.getDimension(), extractionDimFilter.getValue(),
                    extractionDimFilter.getExtractionFn());
        } else if (dimFilter instanceof RegexDimFilter) {
            final RegexDimFilter regexDimFilter = (RegexDimFilter) dimFilter;

            filter = new RegexFilter(regexDimFilter.getDimension(), regexDimFilter.getPattern());
        } else if (dimFilter instanceof SearchQueryDimFilter) {
            final SearchQueryDimFilter searchQueryFilter = (SearchQueryDimFilter) dimFilter;

            filter = new SearchQueryFilter(searchQueryFilter.getDimension(), searchQueryFilter.getQuery());
        } else if (dimFilter instanceof JavaScriptDimFilter) {
            final JavaScriptDimFilter javaScriptDimFilter = (JavaScriptDimFilter) dimFilter;

            filter = new JavaScriptFilter(javaScriptDimFilter.getDimension(), javaScriptDimFilter.getFunction());
        } else if (dimFilter instanceof SpatialDimFilter) {
            final SpatialDimFilter spatialDimFilter = (SpatialDimFilter) dimFilter;

            filter = new SpatialFilter(spatialDimFilter.getDimension(), spatialDimFilter.getBound());
        }

        return filter;
    }
}