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

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

Introduction

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

Prototype

public boolean isLocalized() 

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();/* w  ww  .j  a  va  2 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();
}

From source file:org.rsc.liferay.solr.SolrIndexWriter.java

License:Open Source License

protected SolrInputDocument getSolrInputDocument(Document document) {
    SolrInputDocument solrInputDocument = new SolrInputDocument();

    Collection<Field> fields = document.getFields().values();

    for (Field field : fields) {
        String name = field.getName();
        float boost = field.getBoost();

        if (ArrayUtil.contains(Field.UNSCORED_FIELD_NAMES, name)) {
            boost = _UNSCORED_FIELDS_BOOST;
        }//  w ww.java 2  s  .  c  o m

        if (!field.isLocalized()) {
            for (String value : field.getValues()) {
                if (Validator.isNull(value)) {
                    continue;
                }

                solrInputDocument.addField(name, value.trim(), boost);
            }
        } 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)) {
                    solrInputDocument.addField(name, value.trim(), boost);
                }

                String localizedName = DocumentImpl.getLocalizedName(locale, name);

                solrInputDocument.addField(localizedName, value.trim(), boost);
            }
        }
    }

    return solrInputDocument;
}