net.di2e.ecdr.commons.query.QueryConfigurationImpl.java Source code

Java tutorial

Introduction

Here is the source code for net.di2e.ecdr.commons.query.QueryConfigurationImpl.java

Source

/**
 * Copyright (C) 2014 Cohesive Integrations, LLC (info@cohesiveintegrations.com)
 *
 * 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 net.di2e.ecdr.commons.query;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import net.di2e.ecdr.api.query.QueryConfiguration;
import net.di2e.ecdr.commons.constants.SearchConstants;
import net.di2e.ecdr.commons.util.SearchUtils;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class QueryConfigurationImpl implements QueryConfiguration {

    private static final Logger LOGGER = LoggerFactory.getLogger(QueryConfigurationImpl.class);

    private int defaultCount = 100;
    private long defaultTimeoutMillis = 300000;
    private String defaultDateType = "effective";
    private String defaultDateTypeCustom = null;
    private double defaultRadius = 50000;
    private String defaultResponseFormat = SearchConstants.ATOM_RESPONSE_FORMAT;
    private String defaultResponseFormatCustom = null;
    private boolean defaultFuzzySearch = true;
    private boolean defaultDeduplication = false;

    private String defaultQueryLanguage = SearchConstants.CDR_KEYWORD_QUERY_LANGUAGE;
    private String defaultQueryLanguageCustom = null;
    private int queryRequestCacheSize = 1000;

    private Map<String, String> parameterExtensionMap = SearchUtils.convertToMap("uid=id");
    private List<String> parameterPropertyList = Arrays.asList(new String[] { "oid", "path" });
    private List<String> headerPropertyList = Arrays.asList(new String[] { "EMID" });

    @Override
    public int getDefaultCount() {
        return defaultCount;
    }

    public void setDefaultCount(int count) {
        LOGGER.debug("ConfigUpdate: Updating the default count to [{}]", defaultCount);
        this.defaultCount = count;
    }

    @Override
    public long getDefaultTimeoutMillis() {
        return defaultTimeoutMillis;
    }

    public void setDefaultTimeoutSeconds(long seconds) {
        LOGGER.debug("ConfigUpdate: Updating the default timeout (in seconds) to [{}]", seconds);
        this.defaultTimeoutMillis = seconds * 1000L;
    }

    @Override
    public String getDefaultDateType() {
        return StringUtils.defaultIfBlank(defaultDateTypeCustom, defaultDateType);
    }

    public void setDefaultDateType(String dateType) {
        if (StringUtils.isNotBlank(dateType)) {
            LOGGER.debug("ConfigUpdate: Updating the default dateType to [{}]", dateType);
            this.defaultDateType = dateType;
        } else {
            LOGGER.debug(
                    "ConfigUpdateError: Configuration update for defaultDateType in endpoint was empty or null so leaving at existing value for [{}]",
                    defaultDateType);
        }
    }

    public void setDefaultDateTypeCustom(String dateType) {
        LOGGER.debug("ConfigUpdate: Updating the default dateType custom value to [{}]", dateType);
        this.defaultDateTypeCustom = dateType;
    }

    @Override
    public double getDefaultRadius() {
        return defaultRadius;
    }

    public void setDefaultRadiusMeters(double radius) {
        LOGGER.debug("ConfigUpdate: Updating the default radius (in meters) to [{}]", radius);
        this.defaultRadius = radius;
    }

    @Override
    public String getDefaultResponseFormat() {
        return StringUtils.defaultIfBlank(defaultResponseFormatCustom, defaultResponseFormat);
    }

    public void setDefaultResponseFormat(String format) {
        if (StringUtils.isNotBlank(format)) {
            LOGGER.debug("ConfigUpdate: Updating the default response format to [{}]", format);
            this.defaultResponseFormat = format;
        } else {
            LOGGER.debug(
                    "ConfigUpdateError: Configuration update for defaultResponseFormat in endpoint was empty or null so leaving at existing value for [{}]",
                    defaultResponseFormat);
        }
    }

    public void setDefaultResponseFormatCustom(String format) {
        LOGGER.debug("ConfigUpdate: Updating the default response format custom override value to [{}]", format);
        this.defaultResponseFormatCustom = format;
    }

    @Override
    public boolean isDefaultFuzzySearch() {
        return defaultFuzzySearch;
    }

    public void setDefaultFuzzySearch(boolean fuzzy) {
        LOGGER.debug("ConfigUpdate: Updating the default fuzzy search value to [{}]", fuzzy);
        this.defaultFuzzySearch = fuzzy;
    }

    @Override
    public boolean isDefaultDeduplication() {
        return defaultDeduplication;
    }

    public void setDefaultDeduplication(boolean dedup) {
        LOGGER.debug("ConfigUpdate: Updating the default deduplication value to [{}]", dedup);
        this.defaultDeduplication = dedup;
    }

    @Override
    public String getDefaultQueryLanguage() {
        return StringUtils.defaultIfBlank(defaultQueryLanguageCustom, defaultQueryLanguage);
    }

    public void setDefaultQueryLanguage(String lang) {
        LOGGER.debug("ConfigUpdate: Updating the default query language to [{}]", lang);
        this.defaultQueryLanguage = lang;
    }

    public void setDefaultQueryLanguageCustom(String lang) {
        LOGGER.debug("ConfigUpdate: Updating the default query language custom value to [{}]", lang);
        this.defaultQueryLanguageCustom = lang;
    }

    @Override
    public Map<String, String> getParameterExtensionMap() {
        return parameterExtensionMap;
    }

    public void setParameterExtensionMap(List<String> paramList) {
        Map<String, String> paramMap = SearchUtils.convertToMap(paramList);
        LOGGER.debug("ConfigUpdate: Updating the default parameter extension map value to [{}]", paramMap);
        this.parameterExtensionMap = paramMap;
    }

    @Override
    public List<String> getParameterPropertyList() {
        return parameterPropertyList;
    }

    public void setParameterPropertyList(List<String> propList) {
        LOGGER.debug("ConfigUpdate: Updating the default parameter property map value to [{}]", propList);
        this.parameterPropertyList = propList;
    }

    @Override
    public List<String> getHeaderPropertyList() {
        return headerPropertyList;
    }

    public void setHeaderPropertyList(List<String> propList) {
        LOGGER.debug("ConfigUpdate: Updating the default HTTP Header property map value to [{}]", propList);
        this.headerPropertyList = propList;
    }

    @Override
    public int getQueryRequestCacheSize() {
        return queryRequestCacheSize;
    }

    public void setQueryRequestCacheSize(int size) {
        LOGGER.debug("ConfigUpdate: Updating the query request cache size value to [{}]", size);
        queryRequestCacheSize = size;
    }

}