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

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

Introduction

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

Prototype

public String getValue() 

Source Link

Usage

From source file:com.liferay.alloy.mvc.BaseAlloyControllerImpl.java

License:Open Source License

protected JSONObject toJSONObject(Document document) {
    JSONObject jsonObject = JSONFactoryUtil.createJSONObject();

    Map<String, Field> fields = document.getFields();

    for (String key : fields.keySet()) {
        Field field = fields.get(key);

        jsonObject.put(field.getName(), field.getValue());
    }/*from w  ww .  j  a  va  2 s  .  com*/

    return jsonObject;
}

From source file:com.liferay.journal.test.util.FieldValuesAssert.java

License:Open Source License

private static Map<String, String> _getFieldValues(String prefix, Document document) {

    Map<String, Field> fieldsMap = document.getFields();

    Set<Entry<String, Field>> entrySet = fieldsMap.entrySet();

    Stream<Entry<String, Field>> entries = entrySet.stream();

    Stream<Entry<String, Field>> prefixedEntries = entries.filter(entry -> {
        String name = entry.getKey();

        return name.startsWith(prefix);
    });/* w w w. j a  va 2 s . c  o m*/

    return prefixedEntries.collect(Collectors.toMap(Map.Entry::getKey, entry -> {
        Field field = entry.getValue();

        return field.getValue();
    }));
}

From source file:com.rivetlogic.portal.search.elasticsearch.indexer.document.ElasticsearchDocumentJSONBuilder.java

License:Open Source License

/**
 * Convert to json./*  www.j ava2 s  .c om*/
 * 
 * @param document
 *            the document
 * @return the string
 */
public ElasticserachJSONDocument convertToJSON(final Document document) {

    Map<String, Field> fields = document.getFields();
    ElasticserachJSONDocument elasticserachJSONDocument = new ElasticserachJSONDocument();

    try {
        XContentBuilder contentBuilder = XContentFactory.jsonBuilder().startObject();

        Field classnameField = document.getField(ElasticsearchIndexerConstants.ENTRY_CLASSNAME);
        String entryClassName = (classnameField == null) ? "" : classnameField.getValue();

        /**
         * Handle all error scenarios prior to conversion
         */
        if (isDocumentHidden(document)) {
            elasticserachJSONDocument.setError(true);
            elasticserachJSONDocument
                    .setErrorMessage(ElasticserachJSONDocument.DocumentError.HIDDEN_DOCUMENT.toString());
            return elasticserachJSONDocument;
        }
        if (entryClassName.isEmpty()) {
            elasticserachJSONDocument.setError(true);
            elasticserachJSONDocument
                    .setErrorMessage(ElasticserachJSONDocument.DocumentError.MISSING_ENTRYCLASSNAME.toString());
            return elasticserachJSONDocument;
        }
        if (isExcludedType(entryClassName)) {
            elasticserachJSONDocument.setError(true);
            elasticserachJSONDocument.setErrorMessage("Index Type:" + entryClassName + StringPool.COMMA
                    + ElasticserachJSONDocument.DocumentError.EXCLUDED_TYPE.toString());
            return elasticserachJSONDocument;
        }

        /**
         * To avoid multiple documents for versioned assets such as Journal articles, DL entry etc
         * the primary Id will be Indextype + Entry class PK. The primary Id is to maintain uniqueness
         * in ES server database and nothing to do with UID or is not used for any other purpose.
         */
        Field classPKField = document.getField(ElasticsearchIndexerConstants.ENTRY_CLASSPK);
        String entryClassPK = (classPKField == null) ? "" : classPKField.getValue();
        if (entryClassPK.isEmpty()) {
            elasticserachJSONDocument.setError(true);
            elasticserachJSONDocument
                    .setErrorMessage(ElasticserachJSONDocument.DocumentError.MISSING_CLASSPK.toString());
            return elasticserachJSONDocument;
        }

        /** Replace '.' by '_' in Entry class name,since '.' is not recommended by Elasticsearch in Index type */
        String indexType = entryClassName.replace(StringPool.PERIOD, StringPool.UNDERLINE);
        elasticserachJSONDocument.setIndexType(indexType);

        elasticserachJSONDocument.setId(indexType + entryClassPK);

        /** Create a JSON string for remaining fields of document */
        for (Iterator<Map.Entry<String, Field>> it = fields.entrySet().iterator(); it.hasNext();) {
            Map.Entry<String, Field> entry = it.next();
            Field field = entry.getValue();
            contentBuilder.field(entry.getKey(), field.getValue());
        }
        contentBuilder.endObject();

        elasticserachJSONDocument.setJsonDocument(contentBuilder.string());
        if (_log.isDebugEnabled()) {
            _log.debug("Liferay Document converted to ESJSON document successfully:" + contentBuilder.string());
        }
    } catch (IOException e) {
        _log.error("IO Error during converstion of Liferay Document to JSON format" + e.getMessage());
    }
    return elasticserachJSONDocument;
}

From source file:com.rivetlogic.portal.search.elasticsearch.indexer.document.ElasticsearchDocumentJSONBuilder.java

License:Open Source License

/**
 * Check if liferay Document is of type hidden.
 *
 * @param document the document/*from  w  w  w  .j  ava2 s  .c o m*/
 * @return true, if is document hidden
 */
private boolean isDocumentHidden(Document document) {
    Field hiddenField = document.getField(ElasticsearchIndexerConstants.HIDDEN);
    String hiddenFlag = (hiddenField == null) ? "" : hiddenField.getValue();
    if (StringPool.TRUE.equalsIgnoreCase(hiddenFlag)) {
        return true;
    }
    return false;
}

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();/*ww w. ja  va  2  s  .  co  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();
}