/**
* Copyright (c) Codice Foundation
* <p/>
* This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser
* General Public License as published by the Free Software Foundation, either version 3 of the
* License, or any later version.
* <p/>
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. A copy of the GNU Lesser General Public License
* is distributed along with this program and can be found at
* <http://www.gnu.org/licenses/lgpl.html>.
*/
package ddf.catalog.source.solr;
import java.util.HashMap;
import java.util.Map;
import ddf.catalog.data.AttributeType.AttributeFormat;
/**
* Provides the mappings between {@link AttributeFormat} objects and the correct Solr suffix and
* vice versa
*
*/
public class SchemaFields {
public static final String OBJECT_SUFFIX = "_obj";
public static final String LONG_SUFFIX = "_lng";
public static final String INTEGER_SUFFIX = "_int";
public static final String SHORT_SUFFIX = "_shr";
public static final String FLOAT_SUFFIX = "_flt";
public static final String DOUBLE_SUFFIX = "_dbl";
public static final String BOOLEAN_SUFFIX = "_bln";
public static final String GEO_SUFFIX = "_geo";
public static final String TEXT_SUFFIX = "_txt";
public static final String WHITESPACE_TEXT_SUFFIX = "_ws";
public static final String XML_SUFFIX = "_xml";
public static final String DATE_SUFFIX = "_tdt";
public static final String BINARY_SUFFIX = "_bin";
public static final String TOKENIZED = "_tokenized";
public static final String HAS_CASE = "_has_case";
public static final String TEXT_PATH = "_tpt";
public static final String INDEXED = "_index";
public static final String METACARD_TYPE_FIELD_NAME = "metacard_type_name" + TEXT_SUFFIX;
public static final String METACARD_TYPE_OBJECT_FIELD_NAME = "metacard_type" + OBJECT_SUFFIX;
private static final Map<String, AttributeFormat> SUFFIX_TO_FORMAT_MAP = new HashMap<>();
private static final Map<AttributeFormat, String> FORMAT_TO_SUFFIX_MAP = new HashMap<>();
static {
SUFFIX_TO_FORMAT_MAP.put(GEO_SUFFIX, AttributeFormat.GEOMETRY);
SUFFIX_TO_FORMAT_MAP.put(DATE_SUFFIX, AttributeFormat.DATE);
SUFFIX_TO_FORMAT_MAP.put(BINARY_SUFFIX, AttributeFormat.BINARY);
SUFFIX_TO_FORMAT_MAP.put(XML_SUFFIX, AttributeFormat.XML);
SUFFIX_TO_FORMAT_MAP.put(TEXT_SUFFIX, AttributeFormat.STRING);
SUFFIX_TO_FORMAT_MAP.put(BOOLEAN_SUFFIX, AttributeFormat.BOOLEAN);
SUFFIX_TO_FORMAT_MAP.put(DOUBLE_SUFFIX, AttributeFormat.DOUBLE);
SUFFIX_TO_FORMAT_MAP.put(FLOAT_SUFFIX, AttributeFormat.FLOAT);
SUFFIX_TO_FORMAT_MAP.put(INTEGER_SUFFIX, AttributeFormat.INTEGER);
SUFFIX_TO_FORMAT_MAP.put(LONG_SUFFIX, AttributeFormat.LONG);
SUFFIX_TO_FORMAT_MAP.put(SHORT_SUFFIX, AttributeFormat.SHORT);
SUFFIX_TO_FORMAT_MAP.put(OBJECT_SUFFIX, AttributeFormat.OBJECT);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.GEOMETRY, GEO_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.DATE, DATE_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.BINARY, BINARY_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.XML, XML_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.STRING, TEXT_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.BOOLEAN, BOOLEAN_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.DOUBLE, DOUBLE_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.FLOAT, FLOAT_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.INTEGER, INTEGER_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.LONG, LONG_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.SHORT, SHORT_SUFFIX);
FORMAT_TO_SUFFIX_MAP.put(AttributeFormat.OBJECT, OBJECT_SUFFIX);
}
public AttributeFormat getFormat(String suffix) {
return SUFFIX_TO_FORMAT_MAP.get(suffix);
}
public String getFieldSuffix(AttributeFormat attributeFormat) {
return FORMAT_TO_SUFFIX_MAP.get(attributeFormat);
}
}