Example usage for com.liferay.portal.kernel.search Field getNumericClass

List of usage examples for com.liferay.portal.kernel.search Field getNumericClass

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.search Field getNumericClass.

Prototype

public Class<? extends Number> getNumericClass() 

Source Link

Usage

From source file:com.rknowsys.portal.search.elastic.ElasticsearchIndexWriter.java

License:Open Source License

private String getElasticsearchDocument(Document document) throws IOException {

    XContentBuilder xContentBuilder = XContentFactory.jsonBuilder();

    xContentBuilder.startObject();//from w w w  .j ava2 s. c  o m

    Map<String, Field> fields = document.getFields();
    for (Field field : fields.values()) {
        String name = field.getName();

        if (!field.isLocalized()) {

            if (field.isNumeric()) {
                Class clazz = field.getNumericClass();
                if (clazz.equals(Double.class)) {
                    double[] values = GetterUtil.getDoubleValues(field.getValues());
                    if (values.length > 1) {
                        xContentBuilder.field(name, values);
                    } else {
                        xContentBuilder.field(name, values[0]);
                    }
                } else if (clazz.equals(Float.class)) {
                    float[] values = GetterUtil.getFloatValues(field.getValues());
                    if (values.length > 1) {
                        xContentBuilder.field(name, values);
                    } else {
                        xContentBuilder.field(name, values[0]);
                    }
                } else if (clazz.equals(Integer.class)) {
                    int[] values = GetterUtil.getIntegerValues(field.getValues());
                    if (values.length > 1) {
                        xContentBuilder.field(name, values);
                    } else {
                        xContentBuilder.field(name, values[0]);
                    }
                } else {
                    long[] values = GetterUtil.getLongValues(field.getValues());
                    if (values.length > 1) {
                        xContentBuilder.field(name, values);
                    } else {
                        xContentBuilder.field(name, values[0]);
                    }
                }
            } else {

                if (field.getValues().length > 1) {
                    xContentBuilder.field(name, field.getValues());
                } else {
                    xContentBuilder.field(name, field.getValue());
                }
            }
        } else {
            Map<Locale, String> localizedValues = field.getLocalizedValues();

            for (Map.Entry<Locale, String> entry : localizedValues.entrySet()) {

                String value = entry.getValue();

                if (Validator.isNull(value)) {
                    continue;
                }

                Locale locale = entry.getKey();

                String languageId = LocaleUtil.toLanguageId(locale);

                String defaultLanguageId = LocaleUtil.toLanguageId(LocaleUtil.getDefault());

                if (languageId.equals(defaultLanguageId)) {
                    xContentBuilder.field(name, value.trim());
                }

                String localizedName = DocumentImpl.getLocalizedName(LocaleUtil.fromLanguageId(languageId),
                        name);

                xContentBuilder.field(localizedName, value.trim());
            }
        }
    }

    xContentBuilder.endObject();

    return xContentBuilder.string();
}